From d855e99fc6fe3387e5aa719c3c18b888cdbec6f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 11 Jun 2023 16:39:45 +0000 Subject: [PATCH 001/194] chore(deps): update dependency @types/dockerode to v3.3.19 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index cfa0856c21..5323fb0a88 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16450,12 +16450,12 @@ __metadata: linkType: hard "@types/dockerode@npm:^3.3.0, @types/dockerode@npm:^3.3.8": - version: 3.3.18 - resolution: "@types/dockerode@npm:3.3.18" + version: 3.3.19 + resolution: "@types/dockerode@npm:3.3.19" dependencies: "@types/docker-modem": "*" "@types/node": "*" - checksum: 7ad51a0d6db9343637760a86e3d2ffd2c706db545630806ebfda428f5e8f5e458d4c6cb46657832b0638df7caee7c6922fcfbdc9271f88084e236adddaba7fa2 + checksum: 96d6cd3811a778d12382432413c3b0a935912c175ca939c77aaa0db2630c205daf14d5fa52e458a6fd44355c444f4fa1bd821e0364d4d0b6388061b5fe889431 languageName: node linkType: hard From 10f14dc54008ad2b44ba650c63cedc6926f46042 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 14 Jun 2023 00:38:16 +0000 Subject: [PATCH 002/194] chore(deps): update dependency @types/node to v16.18.36 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index 28635dd94c..f6722184fe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17086,9 +17086,9 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": - version: 20.3.0 - resolution: "@types/node@npm:20.3.0" - checksum: 613e878174febc0104dae210088645cbb5096a19ae5fdf57fbc06fa6ef71755b839858c2b313fb8c1df8b7c6660e1b5f7a64db2126af9d47d1d9238e2bc0a86d + version: 20.3.1 + resolution: "@types/node@npm:20.3.1" + checksum: 63a393ab6d947be17320817b35d7277ef03728e231558166ed07ee30b09fd7c08861be4d746f10fdc63ca7912e8cd023939d4eab887ff6580ff704ff24ed810c languageName: node linkType: hard @@ -17107,9 +17107,9 @@ __metadata: linkType: hard "@types/node@npm:^14.14.31": - version: 14.18.50 - resolution: "@types/node@npm:14.18.50" - checksum: afaa48355811f377f1f7e70b397ef26297024ebc213cf9338d230d2f5ef228a9bf6a36800aa0952c519ac64f02cee8506c7bdf6e96b0abe0d90636bfce7804ae + version: 14.18.51 + resolution: "@types/node@npm:14.18.51" + checksum: 0960a31d2ac605763fe79c8edcee3cb48257d345ce417c019d84ff5d8cd92dd0937674814ab3f169346b4259c29f640556006bcb2c54cfb3e63fa0cf728d320e languageName: node linkType: hard @@ -17121,16 +17121,16 @@ __metadata: linkType: hard "@types/node@npm:^16.0.0, @types/node@npm:^16.11.26, @types/node@npm:^16.9.2": - version: 16.18.35 - resolution: "@types/node@npm:16.18.35" - checksum: 68e3015eb24f009d2b5a7ad959d1e1090016847248f22242c520b75a2780eb19e2d212e775e68022ed474fac00bcc8edaebcd02712f1dfee542efa23e2a4027e + version: 16.18.36 + resolution: "@types/node@npm:16.18.36" + checksum: a9d138fa1269079c60daad6984713dc0b713983f8b34a83edbc6d7957b2e38beab9b2598c9fe99f19d073e20bc212a18aaf82eabdc23ef64dce7d2089a9aab2a languageName: node linkType: hard "@types/node@npm:^18.11.17": - version: 18.16.17 - resolution: "@types/node@npm:18.16.17" - checksum: 2f7e3a552d525ef4b7a2620ef5ef59b3fdfb1d8ab20627b537e090732b35c2bd103944933d347a319cc7d478b3866b0d1bc3d629ee5899ca663a4547ca078cee + version: 18.16.18 + resolution: "@types/node@npm:18.16.18" + checksum: d32d8a0a04cd3f5ecb361bcb42f3a07623881ac90d680e06bf626defb3c663a94860d11690babe607cfe67265eceeb8a59ba5fe40c0e49f5a1b01e0088640469 languageName: node linkType: hard From ee15011939fc42d638e6ba0588f8f5f3d5d723c4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 16 Jun 2023 10:27:59 +0000 Subject: [PATCH 003/194] fix(deps): update dependency @apollo/server to v4.7.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 984d84a1fd..83532a710f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -182,8 +182,8 @@ __metadata: linkType: hard "@apollo/server@npm:^4.0.0": - version: 4.7.3 - resolution: "@apollo/server@npm:4.7.3" + version: 4.7.4 + resolution: "@apollo/server@npm:4.7.4" dependencies: "@apollo/cache-control-types": ^1.0.2 "@apollo/server-gateway-interface": ^1.1.0 @@ -213,7 +213,7 @@ __metadata: whatwg-mimetype: ^3.0.0 peerDependencies: graphql: ^16.6.0 - checksum: afc97f4f2280a1b541efee92de4d6296c72109d4c0db59db534a0e47055494a24e28c6892c5fb612966ef4d024dae3ce6906022e8a44ab351449d9da0ecca5d7 + checksum: 8cdde1ead8b0cae3ce6063ae8ca979c0a56c35b474a52a9b76b14eb9f95ecd715d40a760b9c1ec4d3690ea5b6cac71fb4cd990b4b76fbeeed4d62b963d5510eb languageName: node linkType: hard From de605e4ebb7c31d8123903cbc45f84dfd1f12392 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 16 Jun 2023 20:13:14 +0000 Subject: [PATCH 004/194] fix(deps): update dependency @apollo/server to v4.7.4 [security] Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 15eea1a789..3653c92fc0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -182,8 +182,8 @@ __metadata: linkType: hard "@apollo/server@npm:^4.0.0": - version: 4.7.3 - resolution: "@apollo/server@npm:4.7.3" + version: 4.7.4 + resolution: "@apollo/server@npm:4.7.4" dependencies: "@apollo/cache-control-types": ^1.0.2 "@apollo/server-gateway-interface": ^1.1.0 @@ -213,7 +213,7 @@ __metadata: whatwg-mimetype: ^3.0.0 peerDependencies: graphql: ^16.6.0 - checksum: afc97f4f2280a1b541efee92de4d6296c72109d4c0db59db534a0e47055494a24e28c6892c5fb612966ef4d024dae3ce6906022e8a44ab351449d9da0ecca5d7 + checksum: 8cdde1ead8b0cae3ce6063ae8ca979c0a56c35b474a52a9b76b14eb9f95ecd715d40a760b9c1ec4d3690ea5b6cac71fb4cd990b4b76fbeeed4d62b963d5510eb languageName: node linkType: hard From 37978d288f3edc6c86c2315611d01652f3fba223 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Mon, 19 Jun 2023 10:31:17 +0200 Subject: [PATCH 005/194] Change IconComponent type to be compatible with MUI5 Signed-off-by: Philipp Hugenroth --- packages/core-plugin-api/src/icons/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-plugin-api/src/icons/types.ts b/packages/core-plugin-api/src/icons/types.ts index d7dca27bf9..3e90c2eac4 100644 --- a/packages/core-plugin-api/src/icons/types.ts +++ b/packages/core-plugin-api/src/icons/types.ts @@ -33,5 +33,5 @@ import { ComponentType } from 'react'; * @public */ export type IconComponent = ComponentType<{ - fontSize?: 'default' | 'small' | 'large'; + fontSize?: 'inherit' | 'medium' | 'large' | 'small'; }>; From 13426ebd1235267373208936e1c507d860069585 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Mon, 19 Jun 2023 10:34:29 +0200 Subject: [PATCH 006/194] Add Changeset Signed-off-by: Philipp Hugenroth --- .changeset/thin-countries-battle.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/thin-countries-battle.md diff --git a/.changeset/thin-countries-battle.md b/.changeset/thin-countries-battle.md new file mode 100644 index 0000000000..27fc49ff16 --- /dev/null +++ b/.changeset/thin-countries-battle.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-plugin-api': patch +--- + +Change `IconComponent` type to be compatible with Material UI v5 icons. From d43de19df96bebe6c1382e581fdb0fdf276d7ef8 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Mon, 19 Jun 2023 10:42:41 +0200 Subject: [PATCH 007/194] Update api-reports Signed-off-by: Philipp Hugenroth --- packages/core-plugin-api/api-report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 227b9b9816..110a071f98 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -503,7 +503,7 @@ export const googleAuthApiRef: ApiRef< // @public export type IconComponent = ComponentType<{ - fontSize?: 'default' | 'small' | 'large'; + fontSize?: 'inherit' | 'medium' | 'large' | 'small'; }>; // @public From e205b3e6ede8c64601fc87e26e778f064181c6c9 Mon Sep 17 00:00:00 2001 From: Mihailo Vlajkovic Date: Thu, 25 May 2023 17:44:24 +0200 Subject: [PATCH 008/194] Add name parameter to CustomErrorBase class Signed-off-by: Mihailo Vlajkovic --- .changeset/dirty-wasps-draw.md | 5 ++ packages/errors/src/errors/CustomErrorBase.ts | 5 +- packages/errors/src/errors/common.ts | 46 +++++++++++++++---- 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 .changeset/dirty-wasps-draw.md diff --git a/.changeset/dirty-wasps-draw.md b/.changeset/dirty-wasps-draw.md new file mode 100644 index 0000000000..89857259fb --- /dev/null +++ b/.changeset/dirty-wasps-draw.md @@ -0,0 +1,5 @@ +--- +'@backstage/errors': patch +--- + +Added a new parameter "name" to "CustomErrorBase" and updated all the existing extensions to use it diff --git a/packages/errors/src/errors/CustomErrorBase.ts b/packages/errors/src/errors/CustomErrorBase.ts index b831d4eea3..03bee4b4d9 100644 --- a/packages/errors/src/errors/CustomErrorBase.ts +++ b/packages/errors/src/errors/CustomErrorBase.ts @@ -19,6 +19,7 @@ import { isError } from './assertion'; /** * A base class that custom Error classes can inherit from. + * @param name This is useful when you extend this base class to pass a custom name that will be included in the error message * * @public * @example @@ -38,7 +39,7 @@ export class CustomErrorBase extends Error { */ readonly cause?: Error | undefined; - constructor(message?: string, cause?: Error | unknown) { + constructor(message?: string, cause?: Error | unknown, name?: string) { let fullMessage = message; if (cause !== undefined) { const causeStr = stringifyError(cause); @@ -53,7 +54,7 @@ export class CustomErrorBase extends Error { Error.captureStackTrace?.(this, this.constructor); - this.name = this.constructor.name; + this.name = name || 'CustomErrorBase'; this.cause = isError(cause) ? cause : undefined; } } diff --git a/packages/errors/src/errors/common.ts b/packages/errors/src/errors/common.ts index a2ea20e99f..e8663490f6 100644 --- a/packages/errors/src/errors/common.ts +++ b/packages/errors/src/errors/common.ts @@ -33,21 +33,33 @@ import { CustomErrorBase } from './CustomErrorBase'; * * @public */ -export class InputError extends CustomErrorBase {} +export class InputError extends CustomErrorBase { + constructor(message?: string, cause?: Error | unknown) { + super(message, cause, 'InputError'); + } +} /** * The request requires authentication, which was not properly supplied. * * @public */ -export class AuthenticationError extends CustomErrorBase {} +export class AuthenticationError extends CustomErrorBase { + constructor(message?: string, cause?: Error | unknown) { + super(message, cause, 'AuthenticationError'); + } +} /** * The authenticated caller is not allowed to perform this request. * * @public */ -export class NotAllowedError extends CustomErrorBase {} +export class NotAllowedError extends CustomErrorBase { + constructor(message?: string, cause?: Error | unknown) { + super(message, cause, 'NotAllowedError'); + } +} /** * The requested resource could not be found. @@ -57,7 +69,11 @@ export class NotAllowedError extends CustomErrorBase {} * * @public */ -export class NotFoundError extends CustomErrorBase {} +export class NotFoundError extends CustomErrorBase { + constructor(message?: string, cause?: Error | unknown) { + super(message, cause, 'NotFoundError'); + } +} /** * The request could not complete due to a conflict in the current state of the @@ -65,21 +81,33 @@ export class NotFoundError extends CustomErrorBase {} * * @public */ -export class ConflictError extends CustomErrorBase {} +export class ConflictError extends CustomErrorBase { + constructor(message?: string, cause?: Error | unknown) { + super(message, cause, 'ConflictError'); + } +} /** * The requested resource has not changed since last request. * * @public */ -export class NotModifiedError extends CustomErrorBase {} +export class NotModifiedError extends CustomErrorBase { + constructor(message?: string, cause?: Error | unknown) { + super(message, cause, 'NotModifiedError'); + } +} /** * The server does not support the functionality required to fulfill the request. * * @public */ -export class NotImplementedError extends CustomErrorBase {} +export class NotImplementedError extends CustomErrorBase { + constructor(message?: string, cause?: Error | unknown) { + super(message, cause, 'NotImplementedError'); + } +} /** * The server is not ready to handle the request. @@ -98,8 +126,6 @@ export class ServiceUnavailableError extends CustomErrorBase {} */ export class ForwardedError extends CustomErrorBase { constructor(message: string, cause: Error | unknown) { - super(message, cause); - - this.name = isError(cause) ? cause.name : 'Error'; + super(message, cause, isError(cause) ? cause.name : 'Error'); } } From a95b7dfa96df20db668ae0416e9292ab468deca5 Mon Sep 17 00:00:00 2001 From: Mihailo Vlajkovic Date: Fri, 2 Jun 2023 18:51:40 +0200 Subject: [PATCH 009/194] Set this.name in all error classes Signed-off-by: Mihailo Vlajkovic --- .changeset/dirty-wasps-draw.md | 2 +- packages/errors/src/errors/CustomErrorBase.ts | 5 ++-- packages/errors/src/errors/common.ts | 25 +++++++++++++------ 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/.changeset/dirty-wasps-draw.md b/.changeset/dirty-wasps-draw.md index 89857259fb..5686191cab 100644 --- a/.changeset/dirty-wasps-draw.md +++ b/.changeset/dirty-wasps-draw.md @@ -2,4 +2,4 @@ '@backstage/errors': patch --- -Added a new parameter "name" to "CustomErrorBase" and updated all the existing extensions to use it +Set `this.name` in all error classes that extend `CustomErrorBase` class to their actual name diff --git a/packages/errors/src/errors/CustomErrorBase.ts b/packages/errors/src/errors/CustomErrorBase.ts index 03bee4b4d9..c7990080c5 100644 --- a/packages/errors/src/errors/CustomErrorBase.ts +++ b/packages/errors/src/errors/CustomErrorBase.ts @@ -19,7 +19,6 @@ import { isError } from './assertion'; /** * A base class that custom Error classes can inherit from. - * @param name This is useful when you extend this base class to pass a custom name that will be included in the error message * * @public * @example @@ -39,7 +38,7 @@ export class CustomErrorBase extends Error { */ readonly cause?: Error | undefined; - constructor(message?: string, cause?: Error | unknown, name?: string) { + constructor(message?: string, cause?: Error | unknown) { let fullMessage = message; if (cause !== undefined) { const causeStr = stringifyError(cause); @@ -54,7 +53,7 @@ export class CustomErrorBase extends Error { Error.captureStackTrace?.(this, this.constructor); - this.name = name || 'CustomErrorBase'; + this.name = 'CustomErrorBase'; this.cause = isError(cause) ? cause : undefined; } } diff --git a/packages/errors/src/errors/common.ts b/packages/errors/src/errors/common.ts index e8663490f6..11b0056f69 100644 --- a/packages/errors/src/errors/common.ts +++ b/packages/errors/src/errors/common.ts @@ -35,7 +35,8 @@ import { CustomErrorBase } from './CustomErrorBase'; */ export class InputError extends CustomErrorBase { constructor(message?: string, cause?: Error | unknown) { - super(message, cause, 'InputError'); + super(message, cause); + this.name = 'InputError'; } } @@ -46,7 +47,8 @@ export class InputError extends CustomErrorBase { */ export class AuthenticationError extends CustomErrorBase { constructor(message?: string, cause?: Error | unknown) { - super(message, cause, 'AuthenticationError'); + super(message, cause); + this.name = 'AuthenticationError'; } } @@ -57,7 +59,8 @@ export class AuthenticationError extends CustomErrorBase { */ export class NotAllowedError extends CustomErrorBase { constructor(message?: string, cause?: Error | unknown) { - super(message, cause, 'NotAllowedError'); + super(message, cause); + this.name = 'NotAllowedError'; } } @@ -71,7 +74,8 @@ export class NotAllowedError extends CustomErrorBase { */ export class NotFoundError extends CustomErrorBase { constructor(message?: string, cause?: Error | unknown) { - super(message, cause, 'NotFoundError'); + super(message, cause); + this.name = 'NotFoundError'; } } @@ -83,7 +87,8 @@ export class NotFoundError extends CustomErrorBase { */ export class ConflictError extends CustomErrorBase { constructor(message?: string, cause?: Error | unknown) { - super(message, cause, 'ConflictError'); + super(message, cause); + this.name = 'ConflictError'; } } @@ -94,7 +99,8 @@ export class ConflictError extends CustomErrorBase { */ export class NotModifiedError extends CustomErrorBase { constructor(message?: string, cause?: Error | unknown) { - super(message, cause, 'NotModifiedError'); + super(message, cause); + this.name = 'NotModifiedError'; } } @@ -105,7 +111,8 @@ export class NotModifiedError extends CustomErrorBase { */ export class NotImplementedError extends CustomErrorBase { constructor(message?: string, cause?: Error | unknown) { - super(message, cause, 'NotImplementedError'); + super(message, cause); + this.name = 'NotImplementedError'; } } @@ -126,6 +133,8 @@ export class ServiceUnavailableError extends CustomErrorBase {} */ export class ForwardedError extends CustomErrorBase { constructor(message: string, cause: Error | unknown) { - super(message, cause, isError(cause) ? cause.name : 'Error'); + super(message, cause); + + this.name = isError(cause) ? cause.name : 'Error'; } } From f2865d6aeadffca7bc10bc2f940727569e88a8f4 Mon Sep 17 00:00:00 2001 From: Mihailo Vlajkovic Date: Mon, 12 Jun 2023 14:14:09 +0200 Subject: [PATCH 010/194] Shorter class body Signed-off-by: Mihailo Vlajkovic --- packages/errors/api-report.md | 35 ++++++++++++++++++++++------ packages/errors/src/errors/common.ts | 35 ++++++---------------------- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/packages/errors/api-report.md b/packages/errors/api-report.md index 0d405d8ba6..cb7cf14204 100644 --- a/packages/errors/api-report.md +++ b/packages/errors/api-report.md @@ -9,10 +9,16 @@ import { JsonObject } from '@backstage/types'; export function assertError(value: unknown): asserts value is ErrorLike; // @public -export class AuthenticationError extends CustomErrorBase {} +export class AuthenticationError extends CustomErrorBase { + // (undocumented) + name: string; +} // @public -export class ConflictError extends CustomErrorBase {} +export class ConflictError extends CustomErrorBase { + // (undocumented) + name: string; +} // @public export type ConsumedResponse = { @@ -73,22 +79,37 @@ export class ForwardedError extends CustomErrorBase { } // @public -export class InputError extends CustomErrorBase {} +export class InputError extends CustomErrorBase { + // (undocumented) + name: string; +} // @public export function isError(value: unknown): value is ErrorLike; // @public -export class NotAllowedError extends CustomErrorBase {} +export class NotAllowedError extends CustomErrorBase { + // (undocumented) + name: string; +} // @public -export class NotFoundError extends CustomErrorBase {} +export class NotFoundError extends CustomErrorBase { + // (undocumented) + name: string; +} // @public -export class NotImplementedError extends CustomErrorBase {} +export class NotImplementedError extends CustomErrorBase { + // (undocumented) + name: string; +} // @public -export class NotModifiedError extends CustomErrorBase {} +export class NotModifiedError extends CustomErrorBase { + // (undocumented) + name: string; +} // @public export function parseErrorResponseBody( diff --git a/packages/errors/src/errors/common.ts b/packages/errors/src/errors/common.ts index 11b0056f69..af5b7d370e 100644 --- a/packages/errors/src/errors/common.ts +++ b/packages/errors/src/errors/common.ts @@ -34,10 +34,7 @@ import { CustomErrorBase } from './CustomErrorBase'; * @public */ export class InputError extends CustomErrorBase { - constructor(message?: string, cause?: Error | unknown) { - super(message, cause); - this.name = 'InputError'; - } + name = 'InputError'; } /** @@ -46,10 +43,7 @@ export class InputError extends CustomErrorBase { * @public */ export class AuthenticationError extends CustomErrorBase { - constructor(message?: string, cause?: Error | unknown) { - super(message, cause); - this.name = 'AuthenticationError'; - } + name = 'AuthenticationError'; } /** @@ -58,10 +52,7 @@ export class AuthenticationError extends CustomErrorBase { * @public */ export class NotAllowedError extends CustomErrorBase { - constructor(message?: string, cause?: Error | unknown) { - super(message, cause); - this.name = 'NotAllowedError'; - } + name = 'NotAllowedError'; } /** @@ -73,10 +64,7 @@ export class NotAllowedError extends CustomErrorBase { * @public */ export class NotFoundError extends CustomErrorBase { - constructor(message?: string, cause?: Error | unknown) { - super(message, cause); - this.name = 'NotFoundError'; - } + name = 'NotFoundError'; } /** @@ -86,10 +74,7 @@ export class NotFoundError extends CustomErrorBase { * @public */ export class ConflictError extends CustomErrorBase { - constructor(message?: string, cause?: Error | unknown) { - super(message, cause); - this.name = 'ConflictError'; - } + name = 'ConflictError'; } /** @@ -98,10 +83,7 @@ export class ConflictError extends CustomErrorBase { * @public */ export class NotModifiedError extends CustomErrorBase { - constructor(message?: string, cause?: Error | unknown) { - super(message, cause); - this.name = 'NotModifiedError'; - } + name = 'NotModifiedError'; } /** @@ -110,10 +92,7 @@ export class NotModifiedError extends CustomErrorBase { * @public */ export class NotImplementedError extends CustomErrorBase { - constructor(message?: string, cause?: Error | unknown) { - super(message, cause); - this.name = 'NotImplementedError'; - } + name = 'NotImplementedError'; } /** From c27fe32467687ddfe6bafb080cd2a88f6526df1c Mon Sep 17 00:00:00 2001 From: Mihailo Vlajkovic Date: Tue, 13 Jun 2023 15:44:30 +0200 Subject: [PATCH 011/194] Resolve PR discussion Signed-off-by: Mihailo Vlajkovic --- packages/errors/api-report.md | 14 +++++++------- packages/errors/src/errors/CustomErrorBase.ts | 5 ++++- packages/errors/src/errors/common.ts | 14 +++++++------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/packages/errors/api-report.md b/packages/errors/api-report.md index cb7cf14204..3ece63035b 100644 --- a/packages/errors/api-report.md +++ b/packages/errors/api-report.md @@ -11,13 +11,13 @@ export function assertError(value: unknown): asserts value is ErrorLike; // @public export class AuthenticationError extends CustomErrorBase { // (undocumented) - name: string; + name: 'AuthenticationError'; } // @public export class ConflictError extends CustomErrorBase { // (undocumented) - name: string; + name: 'ConflictError'; } // @public @@ -81,7 +81,7 @@ export class ForwardedError extends CustomErrorBase { // @public export class InputError extends CustomErrorBase { // (undocumented) - name: string; + name: 'InputError'; } // @public @@ -90,25 +90,25 @@ export function isError(value: unknown): value is ErrorLike; // @public export class NotAllowedError extends CustomErrorBase { // (undocumented) - name: string; + name: 'NotAllowedError'; } // @public export class NotFoundError extends CustomErrorBase { // (undocumented) - name: string; + name: 'NotFoundError'; } // @public export class NotImplementedError extends CustomErrorBase { // (undocumented) - name: string; + name: 'NotImplementedError'; } // @public export class NotModifiedError extends CustomErrorBase { // (undocumented) - name: string; + name: 'NotModifiedError'; } // @public diff --git a/packages/errors/src/errors/CustomErrorBase.ts b/packages/errors/src/errors/CustomErrorBase.ts index c7990080c5..af3c10956f 100644 --- a/packages/errors/src/errors/CustomErrorBase.ts +++ b/packages/errors/src/errors/CustomErrorBase.ts @@ -53,7 +53,10 @@ export class CustomErrorBase extends Error { Error.captureStackTrace?.(this, this.constructor); - this.name = 'CustomErrorBase'; + if (!this.name) { + this.name = this.constructor.name; + } + this.cause = isError(cause) ? cause : undefined; } } diff --git a/packages/errors/src/errors/common.ts b/packages/errors/src/errors/common.ts index af5b7d370e..861c3a7c3a 100644 --- a/packages/errors/src/errors/common.ts +++ b/packages/errors/src/errors/common.ts @@ -34,7 +34,7 @@ import { CustomErrorBase } from './CustomErrorBase'; * @public */ export class InputError extends CustomErrorBase { - name = 'InputError'; + name = 'InputError' as const; } /** @@ -43,7 +43,7 @@ export class InputError extends CustomErrorBase { * @public */ export class AuthenticationError extends CustomErrorBase { - name = 'AuthenticationError'; + name = 'AuthenticationError' as const; } /** @@ -52,7 +52,7 @@ export class AuthenticationError extends CustomErrorBase { * @public */ export class NotAllowedError extends CustomErrorBase { - name = 'NotAllowedError'; + name = 'NotAllowedError' as const; } /** @@ -64,7 +64,7 @@ export class NotAllowedError extends CustomErrorBase { * @public */ export class NotFoundError extends CustomErrorBase { - name = 'NotFoundError'; + name = 'NotFoundError' as const; } /** @@ -74,7 +74,7 @@ export class NotFoundError extends CustomErrorBase { * @public */ export class ConflictError extends CustomErrorBase { - name = 'ConflictError'; + name = 'ConflictError' as const; } /** @@ -83,7 +83,7 @@ export class ConflictError extends CustomErrorBase { * @public */ export class NotModifiedError extends CustomErrorBase { - name = 'NotModifiedError'; + name = 'NotModifiedError' as const; } /** @@ -92,7 +92,7 @@ export class NotModifiedError extends CustomErrorBase { * @public */ export class NotImplementedError extends CustomErrorBase { - name = 'NotImplementedError'; + name = 'NotImplementedError' as const; } /** From de7ca810f2a67c3a6612369d4abf76b84eca4131 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Jun 2023 11:58:00 +0000 Subject: [PATCH 012/194] fix(deps): update dependency @swc/core to v1.3.66 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- microsite/yarn.lock | 86 ++++++++++++++++++++++----------------------- storybook/yarn.lock | 86 ++++++++++++++++++++++----------------------- yarn.lock | 86 ++++++++++++++++++++++----------------------- 3 files changed, 129 insertions(+), 129 deletions(-) diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 3c19a6e05c..269f752352 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2604,90 +2604,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-arm64@npm:1.3.62" +"@swc/core-darwin-arm64@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-darwin-arm64@npm:1.3.66" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-x64@npm:1.3.62" +"@swc/core-darwin-x64@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-darwin-x64@npm:1.3.66" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.62" +"@swc/core-linux-arm-gnueabihf@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.62" +"@swc/core-linux-arm64-gnu@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.62" +"@swc/core-linux-arm64-musl@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.62" +"@swc/core-linux-x64-gnu@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-musl@npm:1.3.62" +"@swc/core-linux-x64-musl@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-x64-musl@npm:1.3.66" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.62" +"@swc/core-win32-arm64-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.62" +"@swc/core-win32-ia32-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.62" +"@swc/core-win32-x64-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.62 - resolution: "@swc/core@npm:1.3.62" + version: 1.3.66 + resolution: "@swc/core@npm:1.3.66" dependencies: - "@swc/core-darwin-arm64": 1.3.62 - "@swc/core-darwin-x64": 1.3.62 - "@swc/core-linux-arm-gnueabihf": 1.3.62 - "@swc/core-linux-arm64-gnu": 1.3.62 - "@swc/core-linux-arm64-musl": 1.3.62 - "@swc/core-linux-x64-gnu": 1.3.62 - "@swc/core-linux-x64-musl": 1.3.62 - "@swc/core-win32-arm64-msvc": 1.3.62 - "@swc/core-win32-ia32-msvc": 1.3.62 - "@swc/core-win32-x64-msvc": 1.3.62 + "@swc/core-darwin-arm64": 1.3.66 + "@swc/core-darwin-x64": 1.3.66 + "@swc/core-linux-arm-gnueabihf": 1.3.66 + "@swc/core-linux-arm64-gnu": 1.3.66 + "@swc/core-linux-arm64-musl": 1.3.66 + "@swc/core-linux-x64-gnu": 1.3.66 + "@swc/core-linux-x64-musl": 1.3.66 + "@swc/core-win32-arm64-msvc": 1.3.66 + "@swc/core-win32-ia32-msvc": 1.3.66 + "@swc/core-win32-x64-msvc": 1.3.66 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -2714,7 +2714,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: a7a0d9ffdb8a2b0050e0ff89fdb86fe189d9bcb7f91cb6847f1bfe3e2b520a87ea2e83692dfd80b6d541fb5addb2194769484516b8ca6d3c62ad80f1c79a9368 + checksum: e6029c648ba47c522bed51a9f2fee606f82de1f9233e2e89197e43b0a4867054174ca05e825e688cdc4de332221c0da2e12ba7ba875549e8b5432aa70fe19263 languageName: node linkType: hard diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 4143a2fa67..eccd7e656e 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2943,90 +2943,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-arm64@npm:1.3.62" +"@swc/core-darwin-arm64@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-darwin-arm64@npm:1.3.66" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-x64@npm:1.3.62" +"@swc/core-darwin-x64@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-darwin-x64@npm:1.3.66" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.62" +"@swc/core-linux-arm-gnueabihf@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.62" +"@swc/core-linux-arm64-gnu@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.62" +"@swc/core-linux-arm64-musl@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.62" +"@swc/core-linux-x64-gnu@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-musl@npm:1.3.62" +"@swc/core-linux-x64-musl@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-x64-musl@npm:1.3.66" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.62" +"@swc/core-win32-arm64-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.62" +"@swc/core-win32-ia32-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.62" +"@swc/core-win32-x64-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.62 - resolution: "@swc/core@npm:1.3.62" + version: 1.3.66 + resolution: "@swc/core@npm:1.3.66" dependencies: - "@swc/core-darwin-arm64": 1.3.62 - "@swc/core-darwin-x64": 1.3.62 - "@swc/core-linux-arm-gnueabihf": 1.3.62 - "@swc/core-linux-arm64-gnu": 1.3.62 - "@swc/core-linux-arm64-musl": 1.3.62 - "@swc/core-linux-x64-gnu": 1.3.62 - "@swc/core-linux-x64-musl": 1.3.62 - "@swc/core-win32-arm64-msvc": 1.3.62 - "@swc/core-win32-ia32-msvc": 1.3.62 - "@swc/core-win32-x64-msvc": 1.3.62 + "@swc/core-darwin-arm64": 1.3.66 + "@swc/core-darwin-x64": 1.3.66 + "@swc/core-linux-arm-gnueabihf": 1.3.66 + "@swc/core-linux-arm64-gnu": 1.3.66 + "@swc/core-linux-arm64-musl": 1.3.66 + "@swc/core-linux-x64-gnu": 1.3.66 + "@swc/core-linux-x64-musl": 1.3.66 + "@swc/core-win32-arm64-msvc": 1.3.66 + "@swc/core-win32-ia32-msvc": 1.3.66 + "@swc/core-win32-x64-msvc": 1.3.66 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -3053,7 +3053,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: a7a0d9ffdb8a2b0050e0ff89fdb86fe189d9bcb7f91cb6847f1bfe3e2b520a87ea2e83692dfd80b6d541fb5addb2194769484516b8ca6d3c62ad80f1c79a9368 + checksum: e6029c648ba47c522bed51a9f2fee606f82de1f9233e2e89197e43b0a4867054174ca05e825e688cdc4de332221c0da2e12ba7ba875549e8b5432aa70fe19263 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 2aae5cde7f..9dd6909f0d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15947,90 +15947,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-arm64@npm:1.3.62" +"@swc/core-darwin-arm64@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-darwin-arm64@npm:1.3.66" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-darwin-x64@npm:1.3.62" +"@swc/core-darwin-x64@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-darwin-x64@npm:1.3.66" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.62" +"@swc/core-linux-arm-gnueabihf@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.62" +"@swc/core-linux-arm64-gnu@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.62" +"@swc/core-linux-arm64-musl@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.62" +"@swc/core-linux-x64-gnu@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-linux-x64-musl@npm:1.3.62" +"@swc/core-linux-x64-musl@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-linux-x64-musl@npm:1.3.66" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.62" +"@swc/core-win32-arm64-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.62" +"@swc/core-win32-ia32-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.62": - version: 1.3.62 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.62" +"@swc/core-win32-x64-msvc@npm:1.3.66": + version: 1.3.66 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.62 - resolution: "@swc/core@npm:1.3.62" + version: 1.3.66 + resolution: "@swc/core@npm:1.3.66" dependencies: - "@swc/core-darwin-arm64": 1.3.62 - "@swc/core-darwin-x64": 1.3.62 - "@swc/core-linux-arm-gnueabihf": 1.3.62 - "@swc/core-linux-arm64-gnu": 1.3.62 - "@swc/core-linux-arm64-musl": 1.3.62 - "@swc/core-linux-x64-gnu": 1.3.62 - "@swc/core-linux-x64-musl": 1.3.62 - "@swc/core-win32-arm64-msvc": 1.3.62 - "@swc/core-win32-ia32-msvc": 1.3.62 - "@swc/core-win32-x64-msvc": 1.3.62 + "@swc/core-darwin-arm64": 1.3.66 + "@swc/core-darwin-x64": 1.3.66 + "@swc/core-linux-arm-gnueabihf": 1.3.66 + "@swc/core-linux-arm64-gnu": 1.3.66 + "@swc/core-linux-arm64-musl": 1.3.66 + "@swc/core-linux-x64-gnu": 1.3.66 + "@swc/core-linux-x64-musl": 1.3.66 + "@swc/core-win32-arm64-msvc": 1.3.66 + "@swc/core-win32-ia32-msvc": 1.3.66 + "@swc/core-win32-x64-msvc": 1.3.66 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -16057,7 +16057,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: a7a0d9ffdb8a2b0050e0ff89fdb86fe189d9bcb7f91cb6847f1bfe3e2b520a87ea2e83692dfd80b6d541fb5addb2194769484516b8ca6d3c62ad80f1c79a9368 + checksum: e6029c648ba47c522bed51a9f2fee606f82de1f9233e2e89197e43b0a4867054174ca05e825e688cdc4de332221c0da2e12ba7ba875549e8b5432aa70fe19263 languageName: node linkType: hard From 398c005ec39279daf497ff8b8eeaeaa9ed05d22f Mon Sep 17 00:00:00 2001 From: Stefan Petrovic Date: Tue, 20 Jun 2023 19:40:02 +0200 Subject: [PATCH 013/194] added some clarification in azure org importer docs Signed-off-by: Stefan Petrovic --- docs/integrations/azure/org.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index f855b29bb9..8b7bd3c5b8 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -37,7 +37,7 @@ catalog: ``` Finally, register the plugin in `catalog.ts`. -For large organizations, this plugin can take a long time, so be careful setting low frequency / timeouts. +For large organizations, this plugin can take a long time, so be careful setting low frequency / timeouts and importing a large amount of users / groups for the first try. ```ts title="packages/backend/src/plugins/catalog.ts" /* highlight-add-next-line */ @@ -106,7 +106,7 @@ To grant the managed identity the same permissions as mentioned in _App Registra ## Filtering imported Users and Groups By default, the plugin will import all users and groups from your directory. -This can be customized through [filters](https://learn.microsoft.com/en-us/graph/filter-query-parameter) and [search](https://learn.microsoft.com/en-us/graph/search-query-parameter) queries. +This can be customized through [filters](https://learn.microsoft.com/en-us/graph/filter-query-parameter) and [search](https://learn.microsoft.com/en-us/graph/search-query-parameter) queries. Keep in mind that if you omit filters and search queries for the user or group properties, the plugin will automatically import all available users or groups. ### Groups From eebcb8753f96af2ea621813d71f44f7273d898a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 20 Jun 2023 20:48:27 +0200 Subject: [PATCH 014/194] run deleteWithEagerPruningOfChildren test without transactions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/forty-onions-kick.md | 5 ++ .../src/database/DefaultProviderDatabase.ts | 2 +- .../deleteWithEagerPruningOfChildren.test.ts | 62 +++++++++++-------- .../deleteWithEagerPruningOfChildren.ts | 8 +-- 4 files changed, 45 insertions(+), 32 deletions(-) create mode 100644 .changeset/forty-onions-kick.md diff --git a/.changeset/forty-onions-kick.md b/.changeset/forty-onions-kick.md new file mode 100644 index 0000000000..74be2c142e --- /dev/null +++ b/.changeset/forty-onions-kick.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Run the `deleteWithEagerPruningOfChildren` test without transactions, to try to get rid of CI flakiness diff --git a/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts b/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts index a0d376327b..2a97d1f2a9 100644 --- a/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts +++ b/plugins/catalog-backend/src/database/DefaultProviderDatabase.ts @@ -81,7 +81,7 @@ export class DefaultProviderDatabase implements ProviderDatabase { if (toRemove.length) { const removedCount = await deleteWithEagerPruningOfChildren({ - tx, + knex: tx, entityRefs: toRemove, sourceKey: options.sourceKey, }); diff --git a/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.test.ts b/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.test.ts index e3cc813c96..dcd87613de 100644 --- a/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.test.ts +++ b/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.test.ts @@ -34,26 +34,6 @@ describe('deleteWithEagerPruningOfChildren', () => { return knex; } - async function run( - knex: Knex, - options: { entityRefs: string[]; sourceKey: string }, - ): Promise { - let result: number; - await knex.transaction( - async tx => { - // We can't return here, as knex swallows the return type in case the - // transaction is rolled back: - // https://github.com/knex/knex/blob/e37aeaa31c8ef9c1b07d2e4d3ec6607e557d800d/lib/transaction.js#L136 - result = await deleteWithEagerPruningOfChildren({ tx, ...options }); - }, - { - // If we explicitly trigger a rollback, don't fail. - doNotRejectOnRollback: true, - }, - ); - return result!; - } - async function insertReference( knex: Knex, ...refs: DbRefreshStateReferencesRow[] @@ -110,7 +90,11 @@ describe('deleteWithEagerPruningOfChildren', () => { { source_key: 'P1', target_entity_ref: 'E4' }, { source_key: 'P2', target_entity_ref: 'E5' }, ); - await run(knex, { sourceKey: 'P1', entityRefs: ['E1', 'E3'] }); + await deleteWithEagerPruningOfChildren({ + knex, + sourceKey: 'P1', + entityRefs: ['E1', 'E3'], + }); await expect(remainingEntities(knex)).resolves.toEqual(['E4', 'E5']); }, ); @@ -139,7 +123,11 @@ describe('deleteWithEagerPruningOfChildren', () => { { source_key: 'P1', target_entity_ref: 'E1' }, { source_key: 'P1', target_entity_ref: 'E2' }, ); - await run(knex, { sourceKey: 'P1', entityRefs: ['E1'] }); + await deleteWithEagerPruningOfChildren({ + knex, + sourceKey: 'P1', + entityRefs: ['E1'], + }); await expect(remainingEntities(knex)).resolves.toEqual(['E2']); }, ); @@ -167,7 +155,11 @@ describe('deleteWithEagerPruningOfChildren', () => { { source_key: 'P2', target_entity_ref: 'E3' }, { source_entity_ref: 'E3', target_entity_ref: 'E2' }, ); - await run(knex, { sourceKey: 'P1', entityRefs: ['E1'] }); + await deleteWithEagerPruningOfChildren({ + knex, + sourceKey: 'P1', + entityRefs: ['E1'], + }); await expect(remainingEntities(knex)).resolves.toEqual(['E2', 'E3']); }, ); @@ -195,7 +187,11 @@ describe('deleteWithEagerPruningOfChildren', () => { { source_key: 'P1', target_entity_ref: 'E3' }, { source_entity_ref: 'E3', target_entity_ref: 'E2' }, ); - await run(knex, { sourceKey: 'P1', entityRefs: ['E1'] }); + await deleteWithEagerPruningOfChildren({ + knex, + sourceKey: 'P1', + entityRefs: ['E1'], + }); await expect(remainingEntities(knex)).resolves.toEqual(['E2', 'E3']); }, ); @@ -228,14 +224,22 @@ describe('deleteWithEagerPruningOfChildren', () => { { source_entity_ref: 'E3', target_entity_ref: 'E5' }, { source_entity_ref: 'E5', target_entity_ref: 'E6' }, ); - await run(knex, { sourceKey: 'P1', entityRefs: ['E1'] }); + await deleteWithEagerPruningOfChildren({ + knex, + sourceKey: 'P1', + entityRefs: ['E1'], + }); await expect(remainingEntities(knex)).resolves.toEqual([ 'E3', 'E4', 'E5', 'E6', ]); - await run(knex, { sourceKey: 'P1', entityRefs: ['E3'] }); + await deleteWithEagerPruningOfChildren({ + knex, + sourceKey: 'P1', + entityRefs: ['E3'], + }); await expect(remainingEntities(knex)).resolves.toEqual([]); }, ); @@ -263,7 +267,11 @@ describe('deleteWithEagerPruningOfChildren', () => { { source_key: 'P1', target_entity_ref: 'E3' }, { source_key: 'P2', target_entity_ref: 'E4' }, ); - await run(knex, { sourceKey: 'P1', entityRefs: ['E2', 'E3', 'E4'] }); + await deleteWithEagerPruningOfChildren({ + knex, + sourceKey: 'P1', + entityRefs: ['E2', 'E3', 'E4'], + }); await expect(remainingEntities(knex)).resolves.toEqual([ 'E1', 'E2', diff --git a/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.ts b/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.ts index 33da37bc55..027860fcc6 100644 --- a/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.ts +++ b/plugins/catalog-backend/src/database/operations/provider/deleteWithEagerPruningOfChildren.ts @@ -26,17 +26,17 @@ import { DbRefreshStateReferencesRow } from '../../tables'; * the removal of their parents. */ export async function deleteWithEagerPruningOfChildren(options: { - tx: Knex.Transaction; + knex: Knex | Knex.Transaction; entityRefs: string[]; sourceKey: string; }): Promise { - const { tx, entityRefs, sourceKey } = options; + const { knex, entityRefs, sourceKey } = options; // Split up the operation by (large) chunks, so that we do not hit database // limits for the number of permitted bindings on a precompiled statement let removedCount = 0; for (const refs of lodash.chunk(entityRefs, 1000)) { - removedCount += await tx + removedCount += await knex .delete() .from('refresh_state') .whereIn('entity_ref', orphans => @@ -186,7 +186,7 @@ export async function deleteWithEagerPruningOfChildren(options: { // Delete the references that originate only from this entity provider. Note // that there may be more than one entity provider making a "claim" for a // given root entity, if they emit with the same location key. - await tx('refresh_state_references') + await knex('refresh_state_references') .where('source_key', '=', sourceKey) .whereIn('target_entity_ref', refs) .delete(); From 68531cc70e1fb90c8b545ac900c07aaf69ce7588 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Tue, 20 Jun 2023 21:15:14 +0200 Subject: [PATCH 015/194] remove some circular imports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/purple-starfishes-design.md | 8 ++++ .../src/layout/ItemCard/ItemCard.stories.tsx | 2 +- .../src/layout/ItemCard/ItemCard.tsx | 2 +- .../src/layout/Sidebar/SidebarGroup.tsx | 2 +- .../src/providers/GithubOrgEntityProvider.ts | 46 +++++++++---------- plugins/nomad/src/Router.tsx | 24 ++-------- plugins/nomad/src/annotations.ts | 35 ++++++++++++++ .../EntityNomadAllocationListTable.tsx | 2 +- .../EntityNomadJobVersionListCard.tsx | 2 +- plugins/nomad/src/components/index.ts | 5 +- plugins/nomad/src/index.ts | 5 +- .../PlaylistSortPicker/PlaylistSortPicker.tsx | 2 +- 12 files changed, 82 insertions(+), 53 deletions(-) create mode 100644 .changeset/purple-starfishes-design.md create mode 100644 plugins/nomad/src/annotations.ts diff --git a/.changeset/purple-starfishes-design.md b/.changeset/purple-starfishes-design.md new file mode 100644 index 0000000000..d10602ee3d --- /dev/null +++ b/.changeset/purple-starfishes-design.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/core-components': patch +'@backstage/plugin-playlist': patch +'@backstage/plugin-nomad': patch +--- + +Break some internal circular import chains diff --git a/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx b/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx index 1ba3dec3fd..a03ad9be41 100644 --- a/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx +++ b/packages/core-components/src/layout/ItemCard/ItemCard.stories.tsx @@ -22,7 +22,7 @@ import CardMedia from '@material-ui/core/CardMedia'; import Typography from '@material-ui/core/Typography'; import React from 'react'; import { MemoryRouter } from 'react-router-dom'; -import { LinkButton } from '../../components'; +import { LinkButton } from '../../components/LinkButton/LinkButton'; import { ItemCardGrid } from './ItemCardGrid'; import { ItemCardHeader } from './ItemCardHeader'; diff --git a/packages/core-components/src/layout/ItemCard/ItemCard.tsx b/packages/core-components/src/layout/ItemCard/ItemCard.tsx index 0b1ee34c0c..3d9963760b 100644 --- a/packages/core-components/src/layout/ItemCard/ItemCard.tsx +++ b/packages/core-components/src/layout/ItemCard/ItemCard.tsx @@ -21,7 +21,7 @@ import CardContent from '@material-ui/core/CardContent'; import CardMedia from '@material-ui/core/CardMedia'; import Chip from '@material-ui/core/Chip'; import React, { ReactNode } from 'react'; -import { LinkButton } from '../../components'; +import { LinkButton } from '../../components/LinkButton/LinkButton'; import { ItemCardHeader } from './ItemCardHeader'; type ItemCardProps = { diff --git a/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx b/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx index 1eb1423c61..1dd61d3170 100644 --- a/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx +++ b/packages/core-components/src/layout/Sidebar/SidebarGroup.tsx @@ -22,7 +22,7 @@ import BottomNavigationAction, { import { makeStyles } from '@material-ui/core/styles'; import React, { useContext } from 'react'; import { useLocation } from 'react-router-dom'; -import { Link } from '../../components'; +import { Link } from '../../components/Link/Link'; import { SidebarConfig, SidebarConfigContext } from './config'; import { MobileSidebarContext } from './MobileSidebar'; import { useSidebarPinState } from './SidebarPinStateContext'; diff --git a/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts index c181510a67..bf82607c6b 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubOrgEntityProvider.ts @@ -28,48 +28,46 @@ import { ScmIntegrations, SingleInstanceGithubCredentialsProvider, } from '@backstage/integration'; -import { EventParams } from '@backstage/plugin-events-node'; -import { EventSubscriber } from '@backstage/plugin-events-node'; import { EntityProvider, EntityProviderConnection, } from '@backstage/plugin-catalog-node'; +import { EventParams, EventSubscriber } from '@backstage/plugin-events-node'; import { graphql } from '@octokit/graphql'; import { + MembershipEvent, OrganizationEvent, OrganizationMemberAddedEvent, OrganizationMemberRemovedEvent, - TeamEvent, TeamEditedEvent, - MembershipEvent, + TeamEvent, } from '@octokit/webhooks-types'; import { merge } from 'lodash'; import * as uuid from 'uuid'; import { Logger } from 'winston'; -import { - assignGroupsToUsers, - buildOrgHierarchy, - defaultOrganizationTeamTransformer, - defaultUserTransformer, - getOrganizationTeams, - getOrganizationUsers, - GithubTeam, - parseGithubOrgUrl, -} from '../lib'; -import { TeamTransformer, UserTransformer } from '../lib'; -import { - createAddEntitiesOperation, - createRemoveEntitiesOperation, - createReplaceEntitiesOperation, - DeferredEntitiesBuilder, - getOrganizationTeam, - getOrganizationTeamsFromUsers, -} from '../lib/github'; import { ANNOTATION_GITHUB_TEAM_SLUG, ANNOTATION_GITHUB_USER_LOGIN, } from '../lib/annotation'; -import { splitTeamSlug } from '../lib/util'; +import { + TeamTransformer, + UserTransformer, + defaultOrganizationTeamTransformer, + defaultUserTransformer, +} from '../lib/defaultTransformers'; +import { + DeferredEntitiesBuilder, + GithubTeam, + createAddEntitiesOperation, + createRemoveEntitiesOperation, + createReplaceEntitiesOperation, + getOrganizationTeam, + getOrganizationTeams, + getOrganizationTeamsFromUsers, + getOrganizationUsers, +} from '../lib/github'; +import { assignGroupsToUsers, buildOrgHierarchy } from '../lib/org'; +import { parseGithubOrgUrl, splitTeamSlug } from '../lib/util'; /** * Options for {@link GithubOrgEntityProvider}. diff --git a/plugins/nomad/src/Router.tsx b/plugins/nomad/src/Router.tsx index d7e6db1b44..4a3377779a 100644 --- a/plugins/nomad/src/Router.tsx +++ b/plugins/nomad/src/Router.tsx @@ -15,29 +15,15 @@ */ import React from 'react'; -import { Entity } from '@backstage/catalog-model'; import { useEntity } from '@backstage/plugin-catalog-react'; import { MissingAnnotationEmptyState } from '@backstage/core-components'; import { Route, Routes } from 'react-router-dom'; import { EntityNomadAllocationListTable } from './components/EntityNomadAllocationListTable/EntityNomadAllocationListTable'; - -/** @public */ -export const NOMAD_NAMESPACE_ANNOTATION = 'nomad.io/namespace'; - -/** @public */ -export const NOMAD_JOB_ID_ANNOTATION = 'nomad.io/job-id'; - -/** @public */ -export const NOMAD_GROUP_ANNOTATION = 'nomad.io/group'; - -/** @public */ -export const isNomadJobIDAvailable = (entity: Entity) => - Boolean(entity.metadata.annotations?.[NOMAD_JOB_ID_ANNOTATION]); - -/** @public */ -export const isNomadAllocationsAvailable = (entity: Entity) => - Boolean(entity.metadata.annotations?.[NOMAD_JOB_ID_ANNOTATION]) || - Boolean(entity.metadata.annotations?.[NOMAD_GROUP_ANNOTATION]); +import { + NOMAD_GROUP_ANNOTATION, + NOMAD_JOB_ID_ANNOTATION, + isNomadAllocationsAvailable, +} from './annotations'; export const EmbeddedRouter = () => { const { entity } = useEntity(); diff --git a/plugins/nomad/src/annotations.ts b/plugins/nomad/src/annotations.ts new file mode 100644 index 0000000000..9854288e5d --- /dev/null +++ b/plugins/nomad/src/annotations.ts @@ -0,0 +1,35 @@ +/* + * 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 { Entity } from '@backstage/catalog-model'; + +/** @public */ +export const NOMAD_NAMESPACE_ANNOTATION = 'nomad.io/namespace'; + +/** @public */ +export const NOMAD_JOB_ID_ANNOTATION = 'nomad.io/job-id'; + +/** @public */ +export const NOMAD_GROUP_ANNOTATION = 'nomad.io/group'; + +/** @public */ +export const isNomadJobIDAvailable = (entity: Entity) => + Boolean(entity.metadata.annotations?.[NOMAD_JOB_ID_ANNOTATION]); + +/** @public */ +export const isNomadAllocationsAvailable = (entity: Entity) => + Boolean(entity.metadata.annotations?.[NOMAD_JOB_ID_ANNOTATION]) || + Boolean(entity.metadata.annotations?.[NOMAD_GROUP_ANNOTATION]); diff --git a/plugins/nomad/src/components/EntityNomadAllocationListTable/EntityNomadAllocationListTable.tsx b/plugins/nomad/src/components/EntityNomadAllocationListTable/EntityNomadAllocationListTable.tsx index 6d7a79c002..cc19d1ec53 100644 --- a/plugins/nomad/src/components/EntityNomadAllocationListTable/EntityNomadAllocationListTable.tsx +++ b/plugins/nomad/src/components/EntityNomadAllocationListTable/EntityNomadAllocationListTable.tsx @@ -35,7 +35,7 @@ import { NOMAD_JOB_ID_ANNOTATION, NOMAD_NAMESPACE_ANNOTATION, isNomadAllocationsAvailable, -} from '../../Router'; +} from '../../annotations'; import useAsync from 'react-use/lib/useAsync'; type rowType = Allocation & { nomadAddr: string }; diff --git a/plugins/nomad/src/components/EntityNomadJobVersionListCard/EntityNomadJobVersionListCard.tsx b/plugins/nomad/src/components/EntityNomadJobVersionListCard/EntityNomadJobVersionListCard.tsx index 0c1863b95e..bb4e4b0fad 100644 --- a/plugins/nomad/src/components/EntityNomadJobVersionListCard/EntityNomadJobVersionListCard.tsx +++ b/plugins/nomad/src/components/EntityNomadJobVersionListCard/EntityNomadJobVersionListCard.tsx @@ -30,7 +30,7 @@ import { NOMAD_JOB_ID_ANNOTATION, NOMAD_NAMESPACE_ANNOTATION, isNomadJobIDAvailable, -} from '../../Router'; +} from '../../annotations'; import OpenInNewIcon from '@material-ui/icons/OpenInNew'; import { Chip } from '@material-ui/core'; diff --git a/plugins/nomad/src/components/index.ts b/plugins/nomad/src/components/index.ts index 3951061b23..dcdae8cc99 100644 --- a/plugins/nomad/src/components/index.ts +++ b/plugins/nomad/src/components/index.ts @@ -13,7 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { EntityNomadJobVersionListCard } from './EntityNomadJobVersionListCard/EntityNomadJobVersionListCard'; -import { EntityNomadAllocationListTable } from './EntityNomadAllocationListTable/EntityNomadAllocationListTable'; -export { EntityNomadJobVersionListCard, EntityNomadAllocationListTable }; +export { EntityNomadJobVersionListCard } from './EntityNomadJobVersionListCard/EntityNomadJobVersionListCard'; +export { EntityNomadAllocationListTable } from './EntityNomadAllocationListTable/EntityNomadAllocationListTable'; diff --git a/plugins/nomad/src/index.ts b/plugins/nomad/src/index.ts index 3785a5c7b5..d139935f1f 100644 --- a/plugins/nomad/src/index.ts +++ b/plugins/nomad/src/index.ts @@ -18,4 +18,7 @@ export { EntityNomadJobVersionListCard, EntityNomadAllocationListTable, } from './plugin'; -export { isNomadAllocationsAvailable, isNomadJobIDAvailable } from './Router'; +export { + isNomadAllocationsAvailable, + isNomadJobIDAvailable, +} from './annotations'; diff --git a/plugins/playlist/src/components/PlaylistSortPicker/PlaylistSortPicker.tsx b/plugins/playlist/src/components/PlaylistSortPicker/PlaylistSortPicker.tsx index 21c961eb91..01e3bd08ff 100644 --- a/plugins/playlist/src/components/PlaylistSortPicker/PlaylistSortPicker.tsx +++ b/plugins/playlist/src/components/PlaylistSortPicker/PlaylistSortPicker.tsx @@ -26,7 +26,7 @@ import SwapVertIcon from '@material-ui/icons/SwapVert'; import React from 'react'; import useEffectOnce from 'react-use/lib/useEffectOnce'; -import { usePlaylistList } from '../../hooks'; +import { usePlaylistList } from '../../hooks/usePlaylistList'; import { PlaylistSortCompareFunction } from '../../types'; export const enum DefaultPlaylistSortTypes { From 5c1c10adac8fe82f1f52178d788f68d425b14701 Mon Sep 17 00:00:00 2001 From: Niklas Aronsson Date: Tue, 20 Jun 2023 21:40:56 +0200 Subject: [PATCH 016/194] Added support for the new backend system for the entity feedback plugin Signed-off-by: Niklas Aronsson --- .changeset/short-rabbits-roll.md | 5 ++ packages/backend-next/package.json | 1 + packages/backend-next/src/index.ts | 4 ++ plugins/entity-feedback-backend/README.md | 15 ++++++ plugins/entity-feedback-backend/api-report.md | 4 ++ plugins/entity-feedback-backend/package.json | 1 + plugins/entity-feedback-backend/src/index.ts | 1 + plugins/entity-feedback-backend/src/plugin.ts | 52 +++++++++++++++++++ yarn.lock | 2 + 9 files changed, 85 insertions(+) create mode 100644 .changeset/short-rabbits-roll.md create mode 100644 plugins/entity-feedback-backend/src/plugin.ts diff --git a/.changeset/short-rabbits-roll.md b/.changeset/short-rabbits-roll.md new file mode 100644 index 0000000000..4ed0768485 --- /dev/null +++ b/.changeset/short-rabbits-roll.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-entity-feedback-backend': patch +--- + +Added support for the new backend system diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index e13078890a..bc7d5e666f 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -30,6 +30,7 @@ "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", + "@backstage/plugin-entity-feedback-backend": "workspace:^", "@backstage/plugin-kubernetes-backend": "workspace:^", "@backstage/plugin-permission-backend": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index cdba12e0e3..900062d61b 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -30,12 +30,16 @@ import { searchModuleTechDocsCollator } from '@backstage/plugin-search-backend-m import { searchPlugin } from '@backstage/plugin-search-backend/alpha'; import { techdocsPlugin } from '@backstage/plugin-techdocs-backend/alpha'; import { todoPlugin } from '@backstage/plugin-todo-backend'; +import { entityFeedbackPlugin } from '@backstage/plugin-entity-feedback-backend'; import { catalogModuleUnprocessedEntities } from '@backstage/plugin-catalog-backend-module-unprocessed'; const backend = createBackend(); backend.add(appPlugin({ appPackageName: 'example-app' })); +// Entity Feedback +backend.add(entityFeedbackPlugin()); + // Todo backend.add(todoPlugin()); diff --git a/plugins/entity-feedback-backend/README.md b/plugins/entity-feedback-backend/README.md index ef180dbae5..99489e28b2 100644 --- a/plugins/entity-feedback-backend/README.md +++ b/plugins/entity-feedback-backend/README.md @@ -48,3 +48,18 @@ async function main() { apiRouter.use(notFoundHandler()); ``` + +### New Backend System + +The Entity Feedback backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: +In your `packages/backend/src/index.ts` make the following changes: + +```diff ++ import { entityFeedbackPlugin } from '@backstage/plugin-entity-feedback-backend'; + +const backend = createBackend(); ++ backend.add(entityFeedbackPlugin()); +// ... other feature additions + +backend.start(); +``` diff --git a/plugins/entity-feedback-backend/api-report.md b/plugins/entity-feedback-backend/api-report.md index 3909ac3056..3e8f90220e 100644 --- a/plugins/entity-feedback-backend/api-report.md +++ b/plugins/entity-feedback-backend/api-report.md @@ -3,6 +3,7 @@ > 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 express from 'express'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { Logger } from 'winston'; @@ -12,6 +13,9 @@ import { PluginEndpointDiscovery } from '@backstage/backend-common'; // @public (undocumented) export function createRouter(options: RouterOptions): Promise; +// @public +export const entityFeedbackPlugin: () => BackendFeature; + // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index c09b011533..7cf3c40ffe 100644 --- a/plugins/entity-feedback-backend/package.json +++ b/plugins/entity-feedback-backend/package.json @@ -23,6 +23,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", diff --git a/plugins/entity-feedback-backend/src/index.ts b/plugins/entity-feedback-backend/src/index.ts index b3c4139eed..74e545de04 100644 --- a/plugins/entity-feedback-backend/src/index.ts +++ b/plugins/entity-feedback-backend/src/index.ts @@ -20,3 +20,4 @@ * @packageDocumentation */ export * from './service/router'; +export { entityFeedbackPlugin } from './plugin'; diff --git a/plugins/entity-feedback-backend/src/plugin.ts b/plugins/entity-feedback-backend/src/plugin.ts new file mode 100644 index 0000000000..6a4ff442ce --- /dev/null +++ b/plugins/entity-feedback-backend/src/plugin.ts @@ -0,0 +1,52 @@ +/* + * 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service/router'; + +/** + * The Entity Feedback backend plugin. + * + * @public + */ +export const entityFeedbackPlugin = createBackendPlugin({ + pluginId: 'entity-feedback', + register(env) { + env.registerInit({ + deps: { + discovery: coreServices.discovery, + database: coreServices.database, + identity: coreServices.identity, + logger: coreServices.logger, + httpRouter: coreServices.httpRouter, + }, + async init({ database, discovery, identity, logger, httpRouter }) { + httpRouter.use( + await createRouter({ + database, + discovery, + identity, + logger: loggerToWinstonLogger(logger), + }), + ); + }, + }); + }, +}); diff --git a/yarn.lock b/yarn.lock index bd1fbc6204..01cfd96a84 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6288,6 +6288,7 @@ __metadata: resolution: "@backstage/plugin-entity-feedback-backend@workspace:plugins/entity-feedback-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-client": "workspace:^" "@backstage/catalog-model": "workspace:^" @@ -24658,6 +24659,7 @@ __metadata: "@backstage/plugin-auth-node": "workspace:^" "@backstage/plugin-catalog-backend": "workspace:^" "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^" + "@backstage/plugin-entity-feedback-backend": "workspace:^" "@backstage/plugin-kubernetes-backend": "workspace:^" "@backstage/plugin-permission-backend": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" From 6e446c053c09e66d3cb923923966c2241610cfbb Mon Sep 17 00:00:00 2001 From: Patrick Jungermann Date: Wed, 21 Jun 2023 09:36:32 +0200 Subject: [PATCH 017/194] docs: fix doc for allowed chars for `metadata.tags` Relates-to: PR #18330 Signed-off-by: Patrick Jungermann --- docs/features/software-catalog/descriptor-format.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/software-catalog/descriptor-format.md b/docs/features/software-catalog/descriptor-format.md index 1c9825d5ca..0be2bf0292 100644 --- a/docs/features/software-catalog/descriptor-format.md +++ b/docs/features/software-catalog/descriptor-format.md @@ -351,7 +351,7 @@ component, like `java` or `go`. This field is optional, and currently has no special semantics. -Each tag must be sequences of `[a-z0-9]` separated by `-`, at most 63 characters +Each tag must be sequences of `[a-z0-9:+#]` separated by `-`, at most 63 characters in total. ### `links` [optional] From 6279ac339c087bdcfbfd77df03a4db9aa32d55c7 Mon Sep 17 00:00:00 2001 From: Drew Hill Date: Wed, 21 Jun 2023 10:14:48 -0400 Subject: [PATCH 018/194] Rename improperly named plugin file Signed-off-by: Drew Hill --- ...e-devops-wiki => search-backend-module-azure-devops-wiki.yaml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename microsite/data/plugins/{search-backend-module-azure-devops-wiki => search-backend-module-azure-devops-wiki.yaml} (100%) diff --git a/microsite/data/plugins/search-backend-module-azure-devops-wiki b/microsite/data/plugins/search-backend-module-azure-devops-wiki.yaml similarity index 100% rename from microsite/data/plugins/search-backend-module-azure-devops-wiki rename to microsite/data/plugins/search-backend-module-azure-devops-wiki.yaml From d2120cdf651a998f01aaeeb9eb460a0900ec5dcf Mon Sep 17 00:00:00 2001 From: Andrew Hill Date: Wed, 21 Jun 2023 11:13:00 -0400 Subject: [PATCH 019/194] Remove extra space from YAML file Signed-off-by: Drew Hill --- .../data/plugins/search-backend-module-azure-devops-wiki.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/search-backend-module-azure-devops-wiki.yaml b/microsite/data/plugins/search-backend-module-azure-devops-wiki.yaml index 0f421abfa8..02d4131cce 100644 --- a/microsite/data/plugins/search-backend-module-azure-devops-wiki.yaml +++ b/microsite/data/plugins/search-backend-module-azure-devops-wiki.yaml @@ -3,7 +3,7 @@ title: Azure DevOps Wiki Search author: Drew Hill authorUrl: https://github.com/arhill05 category: Search -description: Index wiki articles from an Azure DevOps wiki into Backstage to allow you to search them with the Backstage Search feature. +description: Index wiki articles from an Azure DevOps wiki into Backstage to allow you to search them with the Backstage Search feature. documentation: https://github.com/arhill05/backstage-plugin-search-backend-module-azure-devops-wiki#readme iconUrl: img/ado-wiki-search-icon.png npmPackageName: '@mdude2314/backstage-plugin-search-backend-module-azure-devops-wiki' From e354b17113005acd98a255ee36d891857ade542e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Jun 2023 20:08:17 +0000 Subject: [PATCH 020/194] Update dependency webpack to v5.88.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- storybook/yarn.lock | 26 +++++++++++++------------- yarn.lock | 26 +++++++++++++------------- 2 files changed, 26 insertions(+), 26 deletions(-) diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 4143a2fa67..e1e7679a8e 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -5513,13 +5513,13 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.14.1": - version: 5.14.1 - resolution: "enhanced-resolve@npm:5.14.1" +"enhanced-resolve@npm:^5.15.0": + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: ad2a31928b6649eed40d364838449587f731baa63863e83d2629bebaa8be1eabac18b90f89c1784bc805b0818363e99b22547159edd485d7e5ccf18cdc640642 + checksum: fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11 languageName: node linkType: hard @@ -10282,14 +10282,14 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2": - version: 3.1.2 - resolution: "schema-utils@npm:3.1.2" +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: 39683edfe3beff018cdb1ae4fa296fc55cea13a080aa2b4d9351895cd64b22ba4d87e2e548c2a2ac1bc76e60980670adb0f413a58104479f1a0c12e5663cb8ca + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 languageName: node linkType: hard @@ -11863,8 +11863,8 @@ __metadata: linkType: hard "webpack@npm:^5.73.0": - version: 5.85.0 - resolution: "webpack@npm:5.85.0" + version: 5.88.0 + resolution: "webpack@npm:5.88.0" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -11875,7 +11875,7 @@ __metadata: acorn-import-assertions: ^1.9.0 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.14.1 + enhanced-resolve: ^5.15.0 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 @@ -11885,7 +11885,7 @@ __metadata: loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.1.2 + schema-utils: ^3.2.0 tapable: ^2.1.1 terser-webpack-plugin: ^5.3.7 watchpack: ^2.4.0 @@ -11895,7 +11895,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: b013be9fbc7f6810d1f229f570c70710ddbc7290f817411acffe4214b2b6c783a041ab1f2005d9e1109f4ab21c136f0f8d8c067a5fb64f20a82dcbc1ee0d3f42 + checksum: 9fd1568b34ec2e99ba97c8509a15ab2576ec80c396e7015551ec814b24cfc11de173acba3e114dafe95f1a6d460781b09d6201e6a1fb15110e1d01a09f61a283 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index bd1fbc6204..b26f00c347 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23378,13 +23378,13 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.14.1": - version: 5.14.1 - resolution: "enhanced-resolve@npm:5.14.1" +"enhanced-resolve@npm:^5.15.0": + version: 5.15.0 + resolution: "enhanced-resolve@npm:5.15.0" dependencies: graceful-fs: ^4.2.4 tapable: ^2.2.0 - checksum: ad2a31928b6649eed40d364838449587f731baa63863e83d2629bebaa8be1eabac18b90f89c1784bc805b0818363e99b22547159edd485d7e5ccf18cdc640642 + checksum: fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11 languageName: node linkType: hard @@ -37635,14 +37635,14 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.1.2": - version: 3.1.2 - resolution: "schema-utils@npm:3.1.2" +"schema-utils@npm:^3.0.0, schema-utils@npm:^3.1.1, schema-utils@npm:^3.2.0": + version: 3.3.0 + resolution: "schema-utils@npm:3.3.0" dependencies: "@types/json-schema": ^7.0.8 ajv: ^6.12.5 ajv-keywords: ^3.5.2 - checksum: 39683edfe3beff018cdb1ae4fa296fc55cea13a080aa2b4d9351895cd64b22ba4d87e2e548c2a2ac1bc76e60980670adb0f413a58104479f1a0c12e5663cb8ca + checksum: ea56971926fac2487f0757da939a871388891bc87c6a82220d125d587b388f1704788f3706e7f63a7b70e49fc2db974c41343528caea60444afd5ce0fe4b85c0 languageName: node linkType: hard @@ -41492,8 +41492,8 @@ __metadata: linkType: hard "webpack@npm:^5, webpack@npm:^5.70.0": - version: 5.85.0 - resolution: "webpack@npm:5.85.0" + version: 5.88.0 + resolution: "webpack@npm:5.88.0" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -41504,7 +41504,7 @@ __metadata: acorn-import-assertions: ^1.9.0 browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^5.14.1 + enhanced-resolve: ^5.15.0 es-module-lexer: ^1.2.1 eslint-scope: 5.1.1 events: ^3.2.0 @@ -41514,7 +41514,7 @@ __metadata: loader-runner: ^4.2.0 mime-types: ^2.1.27 neo-async: ^2.6.2 - schema-utils: ^3.1.2 + schema-utils: ^3.2.0 tapable: ^2.1.1 terser-webpack-plugin: ^5.3.7 watchpack: ^2.4.0 @@ -41524,7 +41524,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: b013be9fbc7f6810d1f229f570c70710ddbc7290f817411acffe4214b2b6c783a041ab1f2005d9e1109f4ab21c136f0f8d8c067a5fb64f20a82dcbc1ee0d3f42 + checksum: 9fd1568b34ec2e99ba97c8509a15ab2576ec80c396e7015551ec814b24cfc11de173acba3e114dafe95f1a6d460781b09d6201e6a1fb15110e1d01a09f61a283 languageName: node linkType: hard From e65ad0989461cfb2476ba316d83a27decb689b3f Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 22 Jun 2023 12:39:46 +0200 Subject: [PATCH 021/194] chore: body is not a buffer, let's make it a Readable first Signed-off-by: blam --- packages/backend-common/src/reading/AzureUrlReader.ts | 2 +- .../backend-common/src/reading/BitbucketCloudUrlReader.ts | 2 +- .../backend-common/src/reading/BitbucketServerUrlReader.ts | 2 +- packages/backend-common/src/reading/BitbucketUrlReader.ts | 2 +- packages/backend-common/src/reading/GerritUrlReader.ts | 2 +- packages/backend-common/src/reading/GithubUrlReader.ts | 3 +-- packages/backend-common/src/reading/GitlabUrlReader.ts | 2 +- .../backend-common/src/reading/tree/TarArchiveResponse.ts | 4 +++- 8 files changed, 10 insertions(+), 9 deletions(-) diff --git a/packages/backend-common/src/reading/AzureUrlReader.ts b/packages/backend-common/src/reading/AzureUrlReader.ts index 26fe3f4a12..94abf3a178 100644 --- a/packages/backend-common/src/reading/AzureUrlReader.ts +++ b/packages/backend-common/src/reading/AzureUrlReader.ts @@ -158,7 +158,7 @@ export class AzureUrlReader implements UrlReader { } return await this.deps.treeResponseFactory.fromZipArchive({ - stream: archiveAzureResponse.body as unknown as Readable, + stream: Readable.from(archiveAzureResponse.body), etag: commitSha, filter, subpath, diff --git a/packages/backend-common/src/reading/BitbucketCloudUrlReader.ts b/packages/backend-common/src/reading/BitbucketCloudUrlReader.ts index 1522b7678d..93587cd6ae 100644 --- a/packages/backend-common/src/reading/BitbucketCloudUrlReader.ts +++ b/packages/backend-common/src/reading/BitbucketCloudUrlReader.ts @@ -160,7 +160,7 @@ export class BitbucketCloudUrlReader implements UrlReader { } return await this.deps.treeResponseFactory.fromTarArchive({ - stream: archiveResponse.body as unknown as Readable, + stream: Readable.from(archiveResponse.body), subpath: filepath, etag: lastCommitShortHash, filter: options?.filter, diff --git a/packages/backend-common/src/reading/BitbucketServerUrlReader.ts b/packages/backend-common/src/reading/BitbucketServerUrlReader.ts index 2b6b5a1f8f..8e2f1708c4 100644 --- a/packages/backend-common/src/reading/BitbucketServerUrlReader.ts +++ b/packages/backend-common/src/reading/BitbucketServerUrlReader.ts @@ -151,7 +151,7 @@ export class BitbucketServerUrlReader implements UrlReader { } return await this.deps.treeResponseFactory.fromTarArchive({ - stream: archiveResponse.body as unknown as Readable, + stream: Readable.from(archiveResponse.body), subpath: filepath, etag: lastCommitShortHash, filter: options?.filter, diff --git a/packages/backend-common/src/reading/BitbucketUrlReader.ts b/packages/backend-common/src/reading/BitbucketUrlReader.ts index 3a34c725c6..090fe9098d 100644 --- a/packages/backend-common/src/reading/BitbucketUrlReader.ts +++ b/packages/backend-common/src/reading/BitbucketUrlReader.ts @@ -171,7 +171,7 @@ export class BitbucketUrlReader implements UrlReader { } return await this.deps.treeResponseFactory.fromTarArchive({ - stream: archiveBitbucketResponse.body as unknown as Readable, + stream: Readable.from(archiveBitbucketResponse.body), subpath: filepath, etag: lastCommitShortHash, filter: options?.filter, diff --git a/packages/backend-common/src/reading/GerritUrlReader.ts b/packages/backend-common/src/reading/GerritUrlReader.ts index 5d86e5d9ac..417eca2e57 100644 --- a/packages/backend-common/src/reading/GerritUrlReader.ts +++ b/packages/backend-common/src/reading/GerritUrlReader.ts @@ -204,7 +204,7 @@ export class GerritUrlReader implements UrlReader { }); const tarArchive = Readable.from(data); return await this.deps.treeResponseFactory.fromTarArchive({ - stream: tarArchive as unknown as Readable, + stream: Readable.from(tarArchive), subpath: filePath === '/' ? undefined : filePath, etag: branchInfo.revision, filter: options?.filter, diff --git a/packages/backend-common/src/reading/GithubUrlReader.ts b/packages/backend-common/src/reading/GithubUrlReader.ts index 8300127c5b..764431386d 100644 --- a/packages/backend-common/src/reading/GithubUrlReader.ts +++ b/packages/backend-common/src/reading/GithubUrlReader.ts @@ -238,7 +238,7 @@ export class GithubUrlReader implements UrlReader { return await this.deps.treeResponseFactory.fromTarArchive({ // TODO(Rugvip): Underlying implementation of fetch will be node-fetch, we probably want // to stick to using that in exclusively backend code. - stream: archive.body as unknown as Readable, + stream: Readable.from(archive.body), subpath, etag: sha, filter: options?.filter, @@ -347,7 +347,6 @@ export class GithubUrlReader implements UrlReader { init: RequestInit, ): Promise { const urlAsString = url.toString(); - const response = await fetch(urlAsString, init); if (!response.ok) { diff --git a/packages/backend-common/src/reading/GitlabUrlReader.ts b/packages/backend-common/src/reading/GitlabUrlReader.ts index ab59c19b16..178e65b40a 100644 --- a/packages/backend-common/src/reading/GitlabUrlReader.ts +++ b/packages/backend-common/src/reading/GitlabUrlReader.ts @@ -229,7 +229,7 @@ export class GitlabUrlReader implements UrlReader { } return await this.deps.treeResponseFactory.fromTarArchive({ - stream: archiveGitLabResponse.body as unknown as Readable, + stream: Readable.from(archiveGitLabResponse.body), subpath: filepath, etag: commitSha, filter: options?.filter, diff --git a/packages/backend-common/src/reading/tree/TarArchiveResponse.ts b/packages/backend-common/src/reading/tree/TarArchiveResponse.ts index 493e283c5f..eeda6e25f3 100644 --- a/packages/backend-common/src/reading/tree/TarArchiveResponse.ts +++ b/packages/backend-common/src/reading/tree/TarArchiveResponse.ts @@ -151,7 +151,9 @@ export class TarArchiveResponse implements ReadTreeResponse { const strip = this.subPath ? this.subPath.split('/').length : 1; let filterError: Error | undefined = undefined; - + this.stream.on('error', console.error); + this.stream.on('close', console.error); + console.log('we are here!'); await pipeline( this.stream, tar.extract({ From 0e9d7d70e44b7d54d0282a763f407fc287361ef3 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Thu, 22 Jun 2023 12:41:47 +0200 Subject: [PATCH 022/194] Add Union to consider v4 & v5 Signed-off-by: Philipp Hugenroth --- packages/core-plugin-api/api-report.md | 11 ++++++++--- packages/core-plugin-api/src/icons/types.ts | 14 +++++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/core-plugin-api/api-report.md b/packages/core-plugin-api/api-report.md index 110a071f98..5577d94359 100644 --- a/packages/core-plugin-api/api-report.md +++ b/packages/core-plugin-api/api-report.md @@ -502,9 +502,14 @@ export const googleAuthApiRef: ApiRef< >; // @public -export type IconComponent = ComponentType<{ - fontSize?: 'inherit' | 'medium' | 'large' | 'small'; -}>; +export type IconComponent = ComponentType< + | { + fontSize?: 'large' | 'small' | 'default'; + } + | { + fontSize?: 'medium' | 'large' | 'small'; + } +>; // @public export type IdentityApi = { diff --git a/packages/core-plugin-api/src/icons/types.ts b/packages/core-plugin-api/src/icons/types.ts index 3e90c2eac4..22af0a5737 100644 --- a/packages/core-plugin-api/src/icons/types.ts +++ b/packages/core-plugin-api/src/icons/types.ts @@ -32,6 +32,14 @@ import { ComponentType } from 'react'; * * @public */ -export type IconComponent = ComponentType<{ - fontSize?: 'inherit' | 'medium' | 'large' | 'small'; -}>; + +export type IconComponent = ComponentType< + /* MUI v4 */ + | { + fontSize?: 'large' | 'small' | 'default'; + } + /* MUI v5: https://mui.com/material-ui/migration/v5-component-changes/#icon */ + | { + fontSize?: 'medium' | 'large' | 'small'; + } +>; From 2e0637835bb16ed6f3fb0004cb9993ce94b6af58 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 22 Jun 2023 12:44:43 +0200 Subject: [PATCH 023/194] chore: cleanup Signed-off-by: blam --- packages/backend-common/src/reading/GerritUrlReader.ts | 2 +- packages/backend-common/src/reading/tree/TarArchiveResponse.ts | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/backend-common/src/reading/GerritUrlReader.ts b/packages/backend-common/src/reading/GerritUrlReader.ts index 417eca2e57..8ac5452a4c 100644 --- a/packages/backend-common/src/reading/GerritUrlReader.ts +++ b/packages/backend-common/src/reading/GerritUrlReader.ts @@ -204,7 +204,7 @@ export class GerritUrlReader implements UrlReader { }); const tarArchive = Readable.from(data); return await this.deps.treeResponseFactory.fromTarArchive({ - stream: Readable.from(tarArchive), + stream: tarArchive, subpath: filePath === '/' ? undefined : filePath, etag: branchInfo.revision, filter: options?.filter, diff --git a/packages/backend-common/src/reading/tree/TarArchiveResponse.ts b/packages/backend-common/src/reading/tree/TarArchiveResponse.ts index eeda6e25f3..e1529c196a 100644 --- a/packages/backend-common/src/reading/tree/TarArchiveResponse.ts +++ b/packages/backend-common/src/reading/tree/TarArchiveResponse.ts @@ -151,9 +151,6 @@ export class TarArchiveResponse implements ReadTreeResponse { const strip = this.subPath ? this.subPath.split('/').length : 1; let filterError: Error | undefined = undefined; - this.stream.on('error', console.error); - this.stream.on('close', console.error); - console.log('we are here!'); await pipeline( this.stream, tar.extract({ From 787ddcc5ef99077d7e9b704220047f35d26ec3f6 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 22 Jun 2023 12:46:28 +0200 Subject: [PATCH 024/194] chore: added changeset Signed-off-by: blam --- .changeset/many-ants-poke.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/many-ants-poke.md diff --git a/.changeset/many-ants-poke.md b/.changeset/many-ants-poke.md new file mode 100644 index 0000000000..57856e0ef2 --- /dev/null +++ b/.changeset/many-ants-poke.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +use `Readable.from` to convert the buffer to explicitly convert the buffer to a `Readable` stream From 39bbbc52612da56f0862e8b5082bdfa5caf9286b Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 22 Jun 2023 12:56:18 +0200 Subject: [PATCH 025/194] chore: too many words in the changeset and not enough sense Signed-off-by: blam --- .changeset/many-ants-poke.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/many-ants-poke.md b/.changeset/many-ants-poke.md index 57856e0ef2..e6d94fdee5 100644 --- a/.changeset/many-ants-poke.md +++ b/.changeset/many-ants-poke.md @@ -2,4 +2,4 @@ '@backstage/backend-common': patch --- -use `Readable.from` to convert the buffer to explicitly convert the buffer to a `Readable` stream +use `Readable.from` to explicitly convert the `buffer` from `node-fetch` to a `Readable` stream From 8b5a6ac778968162a35ad351d843f23e0462664b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 22 Jun 2023 16:28:18 +0200 Subject: [PATCH 026/194] try to work better with minified code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- packages/errors/src/errors/CustomErrorBase.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/errors/src/errors/CustomErrorBase.ts b/packages/errors/src/errors/CustomErrorBase.ts index af3c10956f..ea9c91f173 100644 --- a/packages/errors/src/errors/CustomErrorBase.ts +++ b/packages/errors/src/errors/CustomErrorBase.ts @@ -22,8 +22,11 @@ import { isError } from './assertion'; * * @public * @example - *```ts - * class MyCustomError extends CustomErrorBase {} + * + * ```ts + * class MyCustomError extends CustomErrorBase { + * name = 'MyCustomError' as const; + * } * * const e = new MyCustomError('Some message', cause); * // e.name === 'MyCustomError' @@ -53,8 +56,11 @@ export class CustomErrorBase extends Error { Error.captureStackTrace?.(this, this.constructor); - if (!this.name) { - this.name = this.constructor.name; + if (!this.name || this.name === 'Error') { + const baseName = this.constructor.name; + if (baseName !== 'Error') { + this.name = this.constructor.name; + } } this.cause = isError(cause) ? cause : undefined; From cb200dbb803871d69ee99ea877bdcebc129d6c18 Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Thu, 22 Jun 2023 15:05:37 -0400 Subject: [PATCH 027/194] feat(lighthouse): add more verbose components for "no audits found" case Signed-off-by: Frank Kong --- .changeset/lemon-cycles-enjoy.md | 7 ++ .../AuditList/AuditListForEntity.tsx | 67 ++++++++++++++++--- .../Cards/LastLighthouseAuditCard.tsx | 11 ++- .../src/hooks/useWebsiteForEntity.ts | 6 +- 4 files changed, 81 insertions(+), 10 deletions(-) create mode 100644 .changeset/lemon-cycles-enjoy.md diff --git a/.changeset/lemon-cycles-enjoy.md b/.changeset/lemon-cycles-enjoy.md new file mode 100644 index 0000000000..ff77d0d3d8 --- /dev/null +++ b/.changeset/lemon-cycles-enjoy.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-lighthouse': patch +--- + +Added more verbose components (used to render `null`) when no audits for a website corresponding to the provided url was found +Added `Create New Audit` button for the `AuditListForEntity` component used by `EntityLighthouseContent` and `EmbeddedRouter` +Removed error alert from `errorApi` if error was due to no audits being found for a website (empty database query result) diff --git a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx index 6251a9ba34..950cc5e7b3 100644 --- a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx +++ b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx @@ -13,19 +13,70 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import React from 'react'; +import React, { ReactNode } from 'react'; import { AuditListTable } from './AuditListTable'; import { useWebsiteForEntity } from '../../hooks/useWebsiteForEntity'; -import { Progress } from '@backstage/core-components'; +import { LIGHTHOUSE_WEBSITE_URL_ANNOTATION } from '../../../constants'; +import { + Content, + ContentHeader, + InfoCard, + Progress, + WarningPanel, +} from '@backstage/core-components'; +import { Button } from '@material-ui/core'; +import { resolvePath, useNavigate } from 'react-router-dom'; +import { useEntity } from '@backstage/plugin-catalog-react'; +import { useRouteRef } from '@backstage/core-plugin-api'; +import { rootRouteRef } from '../../plugin'; +import LighthouseSupportButton from '../SupportButton'; export const AuditListForEntity = () => { const { value, loading, error } = useWebsiteForEntity(); - if (loading) { - return ; - } - if (error || !value) { - return null; + const { entity } = useEntity(); + const navigate = useNavigate(); + const fromPath = useRouteRef(rootRouteRef)?.() ?? '../'; + + let createAuditButtonUrl = 'create-audit'; + const websiteUrl = + entity.metadata.annotations?.[LIGHTHOUSE_WEBSITE_URL_ANNOTATION] ?? ''; + if (websiteUrl) { + createAuditButtonUrl += `?url=${encodeURIComponent(websiteUrl)}`; } - return ; + let content: ReactNode = null; + content = ( + + + + + + + + ); + + if (loading) { + content = ; + } else if ( + error && + !error.message.includes('no audited website found for url') + ) { + // We only want to display this warning panel when its caused by an error other than no audits for the website + content = ( + + {error.message} + + ); + } + + return {content}; }; diff --git a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx index af5ce94487..8245d558e1 100644 --- a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx +++ b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.tsx @@ -23,6 +23,7 @@ import { import { useWebsiteForEntity } from '../../hooks/useWebsiteForEntity'; import AuditStatusIcon from '../AuditStatusIcon'; import { + EmptyState, InfoCard, InfoCardVariants, Progress, @@ -30,6 +31,7 @@ import { StatusOK, StatusWarning, StructuredMetadataTable, + WarningPanel, } from '@backstage/core-components'; const LighthouseCategoryScoreStatus = (props: { score: number }) => { @@ -105,7 +107,14 @@ export const LastLighthouseAuditCard = (props: { content = ; } if (error) { - content = null; + // We only want to display this warning panel when its caused by an error other than no audits being found for the website + content = error.message.includes('no audited website found for url') ? ( + + ) : ( + + {error.message} + + ); } if (website) { content = ( diff --git a/plugins/lighthouse/src/hooks/useWebsiteForEntity.ts b/plugins/lighthouse/src/hooks/useWebsiteForEntity.ts index 3f7709fee0..1237209749 100644 --- a/plugins/lighthouse/src/hooks/useWebsiteForEntity.ts +++ b/plugins/lighthouse/src/hooks/useWebsiteForEntity.ts @@ -31,7 +31,11 @@ export const useWebsiteForEntity = () => { () => lighthouseApi.getWebsiteByUrl(websiteUrl), [websiteUrl], ); - if (response.error) { + // Do not display error alert if its due to no audits found for a website + if ( + response.error && + !response.error.message.includes('no audited website found for url') + ) { errorApi.post(response.error); } return response; From 7d774f971c94e30743974c72c0a2a240a61260f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 23 Jun 2023 15:32:28 +0000 Subject: [PATCH 028/194] fix(deps): update dependency @mui/material to v5.13.6 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 191 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 99 insertions(+), 92 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8768ef26be..9ac91f1f86 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3502,12 +3502,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.21.0 - resolution: "@babel/runtime@npm:7.21.0" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.22.5 + resolution: "@babel/runtime@npm:7.22.5" dependencies: regenerator-runtime: ^0.13.11 - checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab + checksum: 12a50b7de2531beef38840d17af50c55a094253697600cee255311222390c68eed704829308d4fd305e1b3dfbce113272e428e9d9d45b1730e0fede997eaceb1 languageName: node linkType: hard @@ -10285,16 +10285,16 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.10.7": - version: 11.10.7 - resolution: "@emotion/cache@npm:11.10.7" +"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/cache@npm:11.11.0" dependencies: - "@emotion/memoize": ^0.8.0 - "@emotion/sheet": ^1.2.1 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - stylis: 4.1.3 - checksum: 6b1efed2dffc93dac419409d91f6d57a200d858ec5ffa4b7c30080fdbd93db431ff86bb779c5b8830b8373f3c5dd754d9beb386604ed2667c7d55608ff653dfc + "@emotion/memoize": ^0.8.1 + "@emotion/sheet": ^1.2.2 + "@emotion/utils": ^1.2.1 + "@emotion/weak-memoize": ^0.3.1 + stylis: 4.2.0 + checksum: 8eb1dc22beaa20c21a2e04c284d5a2630a018a9d51fb190e52de348c8d27f4e8ca4bbab003d68b4f6cd9cc1c569ca747a997797e0f76d6c734a660dc29decf08 languageName: node linkType: hard @@ -10312,19 +10312,19 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/is-prop-valid@npm:1.2.0" +"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0, @emotion/is-prop-valid@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/is-prop-valid@npm:1.2.1" dependencies: - "@emotion/memoize": ^0.8.0 - checksum: cc7a19850a4c5b24f1514665289442c8c641709e6f7711067ad550e05df331da0692a16148e85eda6f47e31b3261b64d74c5e25194d053223be16231f969d633 + "@emotion/memoize": ^0.8.1 + checksum: 8f42dc573a3fad79b021479becb639b8fe3b60bdd1081a775d32388bca418ee53074c7602a4c845c5f75fa6831eb1cbdc4d208cc0299f57014ed3a02abcad16a languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 +"@emotion/memoize@npm:^0.8.0, @emotion/memoize@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/memoize@npm:0.8.1" + checksum: a19cc01a29fcc97514948eaab4dc34d8272e934466ed87c07f157887406bc318000c69ae6f813a9001c6a225364df04249842a50e692ef7a9873335fbcc141b0 languageName: node linkType: hard @@ -10365,10 +10365,10 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/sheet@npm:1.2.1" - checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 +"@emotion/sheet@npm:^1.2.2": + version: 1.2.2 + resolution: "@emotion/sheet@npm:1.2.2" + checksum: d973273c9c15f1c291ca2269728bf044bd3e92a67bca87943fa9ec6c3cd2b034f9a6bfe95ef1b5d983351d128c75b547b43ff196a00a3875f7e1d269793cecfe languageName: node linkType: hard @@ -10425,17 +10425,17 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/utils@npm:1.2.0" - checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd +"@emotion/utils@npm:^1.2.0, @emotion/utils@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/utils@npm:1.2.1" + checksum: e0b44be0705b56b079c55faff93952150be69e79b660ae70ddd5b6e09fc40eb1319654315a9f34bb479d7f4ec94be6068c061abbb9e18b9778ae180ad5d97c73 languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0": - version: 0.3.0 - resolution: "@emotion/weak-memoize@npm:0.3.0" - checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 +"@emotion/weak-memoize@npm:^0.3.0, @emotion/weak-memoize@npm:^0.3.1": + version: 0.3.1 + resolution: "@emotion/weak-memoize@npm:0.3.1" + checksum: b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 languageName: node linkType: hard @@ -13012,15 +13012,15 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-alpha.127": - version: 5.0.0-alpha.127 - resolution: "@mui/base@npm:5.0.0-alpha.127" +"@mui/base@npm:5.0.0-beta.5": + version: 5.0.0-beta.5 + resolution: "@mui/base@npm:5.0.0-beta.5" dependencies: - "@babel/runtime": ^7.21.0 - "@emotion/is-prop-valid": ^1.2.0 + "@babel/runtime": ^7.22.5 + "@emotion/is-prop-valid": ^1.2.1 "@mui/types": ^7.2.4 - "@mui/utils": ^5.12.0 - "@popperjs/core": ^2.11.7 + "@mui/utils": ^5.13.6 + "@popperjs/core": ^2.11.8 clsx: ^1.2.1 prop-types: ^15.8.1 react-is: ^18.2.0 @@ -13031,28 +13031,28 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 330baeef1fdaa513707f295e07a3436af24d0831a18109ed877f76b86cf1f392309833d33a2c7ca250db79fdf53f5e88c2618f876f50dbbbf9323bbf08e367e7 + checksum: d258f4735be3d7b3c48cbc97a3194817e86f9eb569ba311d6707e6ffc016c02bdbbfa26f2b9571953f2514e32c1247901777dc52e3f8b3e6d3736d0330178305 languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.12.2": - version: 5.12.2 - resolution: "@mui/core-downloads-tracker@npm:5.12.2" - checksum: d748bdc56df6fdfe6712550a94263cf094c53ddcb70f6a8f633caf23927edf5ac88b1f888429d895fe2a5045b27eb7aa9826ccee5b917e31973667d604ed87fe +"@mui/core-downloads-tracker@npm:^5.13.4": + version: 5.13.4 + resolution: "@mui/core-downloads-tracker@npm:5.13.4" + checksum: 2d709a3efe2d11e82a6c369b0b47dc2d488f292a3213083102e6afbf009282c18cdb4b263c0cf6194e5c0cdfd4c735e180e25704015003851459b682bb53e2c8 languageName: node linkType: hard "@mui/material@npm:^5.12.2": - version: 5.12.2 - resolution: "@mui/material@npm:5.12.2" + version: 5.13.6 + resolution: "@mui/material@npm:5.13.6" dependencies: - "@babel/runtime": ^7.21.0 - "@mui/base": 5.0.0-alpha.127 - "@mui/core-downloads-tracker": ^5.12.2 - "@mui/system": ^5.12.1 + "@babel/runtime": ^7.22.5 + "@mui/base": 5.0.0-beta.5 + "@mui/core-downloads-tracker": ^5.13.4 + "@mui/system": ^5.13.6 "@mui/types": ^7.2.4 - "@mui/utils": ^5.12.0 - "@types/react-transition-group": ^4.4.5 + "@mui/utils": ^5.13.6 + "@types/react-transition-group": ^4.4.6 clsx: ^1.2.1 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13071,16 +13071,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: a3464dfbcc496164967e134d6f1d40e060ee02fc2ddb5fcf648ca85580efdbd5eff5aab6a73486d0a7f329f7299127b52501a13993bb131cbd4e310c7f2e633f + checksum: 0c8936d8c1c20ecf1efc64dcd3f7101053255a720a907802a004abd7c96f49622c402e4d5cea42d9c1950a10dcbaf445cfb7da2ae7f239c733eadd8ec287ceab languageName: node linkType: hard -"@mui/private-theming@npm:^5.12.0": - version: 5.12.0 - resolution: "@mui/private-theming@npm:5.12.0" +"@mui/private-theming@npm:^5.13.1": + version: 5.13.1 + resolution: "@mui/private-theming@npm:5.13.1" dependencies: "@babel/runtime": ^7.21.0 - "@mui/utils": ^5.12.0 + "@mui/utils": ^5.13.1 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -13088,16 +13088,16 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 761bc7a57e1643c2c4c327886882fa5efc7bacae1c6fffe6be4197f49d337261c916a883d96996445efcdedc0672251725c1e5b264b6250d6c9527fd0cafcc62 + checksum: 7211eba333a595ebfb964f7f5a561fba89ad06fc3db9e7bba795f9230afd687aa7a66d1a2fddf9dc5a73e1044729f7b3061ae461bb25eed64068ca08e018a38b languageName: node linkType: hard -"@mui/styled-engine@npm:^5.12.0": - version: 5.12.0 - resolution: "@mui/styled-engine@npm:5.12.0" +"@mui/styled-engine@npm:^5.13.2": + version: 5.13.2 + resolution: "@mui/styled-engine@npm:5.13.2" dependencies: "@babel/runtime": ^7.21.0 - "@emotion/cache": ^11.10.7 + "@emotion/cache": ^11.11.0 csstype: ^3.1.2 prop-types: ^15.8.1 peerDependencies: @@ -13109,19 +13109,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 4a415473cf62aa05012f667dd2e9b1dc2fb175be5b0c4d0b8df541e2dac3d7db410e920e0d5910c8e2b8996a4fb51f74d79483e2878a9b5c0d334498f5537d74 + checksum: e99f49755406b55a1595bf5d2727f0c0e3fd9f914dce1ea3b6cac826efe05038f8e4bde52580bd6a5a4c62ad59e5582bdde6c17abc10d80e61a64da168803391 languageName: node linkType: hard -"@mui/system@npm:^5.12.1": - version: 5.12.1 - resolution: "@mui/system@npm:5.12.1" +"@mui/system@npm:^5.13.6": + version: 5.13.6 + resolution: "@mui/system@npm:5.13.6" dependencies: - "@babel/runtime": ^7.21.0 - "@mui/private-theming": ^5.12.0 - "@mui/styled-engine": ^5.12.0 + "@babel/runtime": ^7.22.5 + "@mui/private-theming": ^5.13.1 + "@mui/styled-engine": ^5.13.2 "@mui/types": ^7.2.4 - "@mui/utils": ^5.12.0 + "@mui/utils": ^5.13.6 clsx: ^1.2.1 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13137,7 +13137,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: b951959bf5e5af581319354c044f441d97849ff120cfec111d2ed5e7fa05efd63721acff96f48093b8e2bdeb5ccbe35c48613fb925be2b58c596447d10dbed3e + checksum: 978426ce5f3fe43ab536eec6f03a11845766c3640cc1da00c81e44f1d61f5c1bb53a33a28a70d83338183f818a04bdd8fb7c483824266aa8d46add5724186ae4 languageName: node linkType: hard @@ -13153,18 +13153,18 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.12.0": - version: 5.12.0 - resolution: "@mui/utils@npm:5.12.0" +"@mui/utils@npm:^5.13.1, @mui/utils@npm:^5.13.6": + version: 5.13.6 + resolution: "@mui/utils@npm:5.13.6" dependencies: - "@babel/runtime": ^7.21.0 + "@babel/runtime": ^7.22.5 "@types/prop-types": ^15.7.5 - "@types/react-is": ^16.7.1 || ^17.0.0 + "@types/react-is": ^18.2.0 prop-types: ^15.8.1 react-is: ^18.2.0 peerDependencies: react: ^17.0.0 || ^18.0.0 - checksum: 87b2c7468803b083f50af28d7c215c45291e73fef16570848b596d0f1cde1fc613c20e8951f431217b31451de254744abd50eda5013dedec4982420b5bf1c6b6 + checksum: b5d3fff9153b6104d732b01363410a6472f06869d48e73d3d1ee38cf2b1255eaafb1afb90c48bb446143d312a434fd30e7b1664bf10941a2c610b7759cfd0a2e languageName: node linkType: hard @@ -14121,10 +14121,10 @@ __metadata: languageName: node linkType: hard -"@popperjs/core@npm:^2.11.7": - version: 2.11.7 - resolution: "@popperjs/core@npm:2.11.7" - checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19 +"@popperjs/core@npm:^2.11.8": + version: 2.11.8 + resolution: "@popperjs/core@npm:2.11.8" + checksum: e5c69fdebf52a4012f6a1f14817ca8e9599cb1be73dd1387e1785e2ed5e5f0862ff817f420a87c7fc532add1f88a12e25aeb010ffcbdc98eace3d55ce2139cf0 languageName: node linkType: hard @@ -17337,12 +17337,12 @@ __metadata: languageName: node linkType: hard -"@types/react-is@npm:^16.7.1 || ^17.0.0": - version: 17.0.3 - resolution: "@types/react-is@npm:17.0.3" +"@types/react-is@npm:^18.2.0": + version: 18.2.1 + resolution: "@types/react-is@npm:18.2.1" dependencies: "@types/react": "*" - checksum: 6abb7c47d54f012272650df8a962a28bd82f219291e5ef8b4dfa7fe0bb98ae243b060bf9fbe8ceff6213141794855a006db194b490b00ffd15842ae19d0ce1f0 + checksum: b44c3262efa2c68fa6fe2beb9ef86170b18305469461a3f97aa14943cc033cb21a26944f718bdb6434eea6e8f7fcba251c4f45b65b897a3fcf751b5a6003cf82 languageName: node linkType: hard @@ -17394,12 +17394,12 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.5": - version: 4.4.5 - resolution: "@types/react-transition-group@npm:4.4.5" +"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.6": + version: 4.4.6 + resolution: "@types/react-transition-group@npm:4.4.6" dependencies: "@types/react": "*" - checksum: 265f1c74061556708ffe8d15559e35c60d6c11478c9950d3735575d2c116ca69f461d85effa06d73a613eb8b73c84fd32682feb57cf7c5f9e4284021dbca25b0 + checksum: 0872143821d7ee20a1d81e965f8b1e837837f11cd2206973f1f98655751992d9390304d58bac192c9cd923eca95bff107d8c9e3364a180240d5c2a6fd70fd7c3 languageName: node linkType: hard @@ -39174,13 +39174,20 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.3, stylis@npm:^4.0.6": +"stylis@npm:4.1.3": version: 4.1.3 resolution: "stylis@npm:4.1.3" checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 languageName: node linkType: hard +"stylis@npm:4.2.0, stylis@npm:^4.0.6": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 0eb6cc1b866dc17a6037d0a82ac7fa877eba6a757443e79e7c4f35bacedbf6421fadcab4363b39667b43355cbaaa570a3cde850f776498e5450f32ed2f9b7584 + languageName: node + linkType: hard + "subscriptions-transport-ws@npm:^0.11.0": version: 0.11.0 resolution: "subscriptions-transport-ws@npm:0.11.0" From 4cf1f437e56debe9507774bbad15855406f9bb7d Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 23 Jun 2023 11:29:20 -0400 Subject: [PATCH 029/194] test(lighthouse): update lighthouse test files Signed-off-by: Frank Kong --- .changeset/lemon-cycles-enjoy.md | 6 +- .github/vale/Vocab/Backstage/accept.txt | 1 + .../AuditList/AuditListForEntity.test.tsx | 75 ++++++++++++++++--- .../AuditList/AuditListForEntity.tsx | 11 +-- .../Cards/LastLighthouseAuditCard.test.tsx | 36 ++++++++- .../src/hooks/useWebsiteForEntity.test.tsx | 17 +++++ 6 files changed, 120 insertions(+), 26 deletions(-) diff --git a/.changeset/lemon-cycles-enjoy.md b/.changeset/lemon-cycles-enjoy.md index ff77d0d3d8..1df7905030 100644 --- a/.changeset/lemon-cycles-enjoy.md +++ b/.changeset/lemon-cycles-enjoy.md @@ -2,6 +2,6 @@ '@backstage/plugin-lighthouse': patch --- -Added more verbose components (used to render `null`) when no audits for a website corresponding to the provided url was found -Added `Create New Audit` button for the `AuditListForEntity` component used by `EntityLighthouseContent` and `EmbeddedRouter` -Removed error alert from `errorApi` if error was due to no audits being found for a website (empty database query result) +Added more verbose components (used to render `null`) when no audits for a website corresponding to the provided url were found. +Added `Create New Audit` button for the `AuditListForEntity` component used by `EntityLighthouseContent` and `EmbeddedRouter`. +Removed error alert from `errorApi` if error was due to no audits being found for a website (empty database query result). diff --git a/.github/vale/Vocab/Backstage/accept.txt b/.github/vale/Vocab/Backstage/accept.txt index 901e890318..627e0aa0f3 100644 --- a/.github/vale/Vocab/Backstage/accept.txt +++ b/.github/vale/Vocab/Backstage/accept.txt @@ -409,6 +409,7 @@ unregistration untracked upsert upvote +url URIs URLs utils diff --git a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx index d1ed72c3fb..42b02692a9 100644 --- a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx +++ b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.test.tsx @@ -26,16 +26,31 @@ import { lighthouseApiRef } from '../../api'; import { useWebsiteForEntity } from '../../hooks/useWebsiteForEntity'; import * as data from '../../__fixtures__/website-list-response.json'; import { AuditListForEntity } from './AuditListForEntity'; +import { rootRouteRef } from '../../plugin'; +import { fireEvent, screen } from '@testing-library/react'; jest.mock('../../hooks/useWebsiteForEntity', () => ({ useWebsiteForEntity: jest.fn(), })); +jest.mock('react-router-dom', () => { + const actual = jest.requireActual('react-router-dom'); + const mockNavigation = jest.fn(); + return { + ...actual, + useNavigate: jest.fn(() => mockNavigation), + }; +}); + const useWebsiteForEntityMock = useWebsiteForEntity as jest.Mock; const websiteListResponse = data as WebsiteListResponse; const entityWebsite = websiteListResponse.items[0]; +const testAppOptions = { + mountedRoutes: { '/': rootRouteRef }, +}; + describe('', () => { afterEach(() => { jest.resetAllMocks(); @@ -73,39 +88,77 @@ describe('', () => { loading: false, error: null, }); - const { findByText } = await renderInTestApp(subject()); - expect(await findByText(entityWebsite.url)).toBeInTheDocument(); + const rendered = await renderInTestApp(subject(), testAppOptions); + const create_audit_button = await rendered.findByText('Create New Audit'); + const support_button = await rendered.findByText('Support'); + expect(await rendered.findByText(entityWebsite.url)).toBeInTheDocument(); + expect(await rendered.findByText('Latest Audit')).toBeInTheDocument(); + expect(create_audit_button).toBeInTheDocument(); + expect(support_button).toBeInTheDocument(); }); - it('renders a Progress element where the data is loading', async () => { + it('renders a Progress element when the data is loading', async () => { useWebsiteForEntityMock.mockReturnValue({ value: null, loading: true, error: null, }); - const { findByTestId } = await renderInTestApp(subject()); + const { findByTestId } = await renderInTestApp(subject(), testAppOptions); expect(await findByTestId('progress')).toBeInTheDocument(); }); - it('renders nothing where there is an error loading data', async () => { + it('renders a WarningPanel when there is an error loading data', async () => { useWebsiteForEntityMock.mockReturnValue({ value: null, loading: false, - error: 'error', + error: { name: 'error', message: 'error loading data' }, }); - const { queryByTestId } = await renderInTestApp(subject()); - expect(queryByTestId('AuditListTable')).toBeNull(); + await renderInTestApp(subject(), testAppOptions); + const expandIcon = screen.getByText('Error: Could not load audit list.'); + fireEvent.click(expandIcon); + expect( + screen.getByText('Error: Could not load audit list.'), + ).toBeInTheDocument(); + expect(screen.getByText('error loading data')).toBeInTheDocument(); }); - it('renders nothing where there is not data', async () => { + it('renders an empty table when there is no data', async () => { useWebsiteForEntityMock.mockReturnValue({ value: null, loading: false, error: null, }); - const { queryByTestId } = await renderInTestApp(subject()); - expect(queryByTestId('AuditListTable')).toBeNull(); + const rendered = await renderInTestApp(subject(), testAppOptions); + const create_audit_button = await rendered.findByText('Create New Audit'); + const support_button = await rendered.findByText('Support'); + expect( + await rendered.findByText('No records to display'), + ).toBeInTheDocument(); + expect(await rendered.findByText('Latest Audit')).toBeInTheDocument(); + expect(create_audit_button).toBeInTheDocument(); + expect(support_button).toBeInTheDocument(); + }); + + it('renders an empty table when there is no data and error loading data due to empty database query result', async () => { + useWebsiteForEntityMock.mockReturnValue({ + value: null, + loading: false, + error: { + name: 'error', + message: 'no audited website found for url unit-test-url', + }, + }); + + const rendered = await renderInTestApp(subject(), testAppOptions); + const create_audit_button = await rendered.findByText('Create New Audit'); + const support_button = await rendered.findByText('Support'); + expect( + await rendered.findByText('No records to display'), + ).toBeInTheDocument(); + expect(await rendered.findByText('Latest Audit')).toBeInTheDocument(); + expect(create_audit_button).toBeInTheDocument(); + expect(support_button).toBeInTheDocument(); }); }); diff --git a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx index 950cc5e7b3..4c8de4d786 100644 --- a/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx +++ b/plugins/lighthouse/src/components/AuditList/AuditListForEntity.tsx @@ -57,19 +57,14 @@ export const AuditListForEntity = () => { - + ); if (loading) { content = ; - } else if ( - error && - !error.message.includes('no audited website found for url') - ) { + } + if (error && !error.message.includes('no audited website found for url')) { // We only want to display this warning panel when its caused by an error other than no audits for the website content = ( diff --git a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.test.tsx b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.test.tsx index 09b21fd028..fd54dd99c8 100644 --- a/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.test.tsx +++ b/plugins/lighthouse/src/components/Cards/LastLighthouseAuditCard.test.tsx @@ -26,6 +26,7 @@ import { import { useWebsiteForEntity } from '../../hooks/useWebsiteForEntity'; import * as data from '../../__fixtures__/website-list-response.json'; import { LastLighthouseAuditCard } from './LastLighthouseAuditCard'; +import { fireEvent, screen } from '@testing-library/react'; jest.mock('../../hooks/useWebsiteForEntity', () => ({ useWebsiteForEntity: jest.fn(), @@ -147,17 +148,22 @@ describe('', () => { (useWebsiteForEntity as jest.Mock).mockReturnValue({ value: null, loading: false, - error: 'error', + error: { name: 'error', message: 'error loading data' }, }); }); - it('renders nothing', async () => { - const { queryByTestId } = await renderInTestApp( + it('renders a WarningPanel', async () => { + await renderInTestApp( , ); - expect(queryByTestId('AuditListTable')).toBeNull(); + const expandIcon = screen.getByText('Error: Could not load audit list.'); + fireEvent.click(expandIcon); + expect( + screen.getByText('Error: Could not load audit list.'), + ).toBeInTheDocument(); + expect(screen.getByText('error loading data')).toBeInTheDocument(); }); }); @@ -179,4 +185,26 @@ describe('', () => { expect(queryByTestId('AuditListTable')).toBeNull(); }); }); + + describe('where error was due to an empty database query result', () => { + beforeEach(() => { + (useWebsiteForEntity as jest.Mock).mockReturnValue({ + value: null, + loading: false, + error: { + name: 'error', + message: 'no audited website found for url unit-test-url', + }, + }); + }); + + it('renders EmptyState card', async () => { + const rendered = await renderInTestApp( + + + , + ); + expect(rendered.getByText('No Audits Found')).toBeInTheDocument(); + }); + }); }); diff --git a/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx b/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx index 7ab717c57d..199ede3049 100644 --- a/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx +++ b/plugins/lighthouse/src/hooks/useWebsiteForEntity.test.tsx @@ -98,4 +98,21 @@ describe('useWebsiteForEntity', () => { expect(mockErrorApi.post).toHaveBeenCalledWith(error); }); }); + + describe('where there is an error regarding "no audited websites for url"', () => { + const error = new Error('no audited website found for url unit-test-url'); + + beforeEach(() => { + (mockLighthouseApi.getWebsiteByUrl as jest.Mock).mockRejectedValueOnce( + error, + ); + }); + + it('does not post the error to the error api and returns the error to the caller', async () => { + const { result, waitForNextUpdate } = subject(); + await waitForNextUpdate(); + expect(result.current?.error).toBe(error); + expect(mockErrorApi.post).not.toHaveBeenCalledWith(error); + }); + }); }); From 7e0f558fbc37554eb3433ac970d748dc266f208b Mon Sep 17 00:00:00 2001 From: snehaljos Date: Sat, 24 Jun 2023 09:51:16 +0530 Subject: [PATCH 030/194] #1804 issue fix Signed-off-by: snehaljos --- .changeset/purple-feet-approve.md | 5 +++++ .../core-components/src/layout/Content/Content.tsx | 5 ----- packages/core-components/src/layout/Header/Header.tsx | 10 +++++++++- 3 files changed, 14 insertions(+), 6 deletions(-) create mode 100644 .changeset/purple-feet-approve.md diff --git a/.changeset/purple-feet-approve.md b/.changeset/purple-feet-approve.md new file mode 100644 index 0000000000..3d4fae478c --- /dev/null +++ b/.changeset/purple-feet-approve.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': minor +--- + +The 'Skip to content' button on click focus on the main article tag and skip the h1 tag. Users are not able to identify which page they are currently. Now this minor fix will change the behaviour o the button and focus on the h1 tag on the page diff --git a/packages/core-components/src/layout/Content/Content.tsx b/packages/core-components/src/layout/Content/Content.tsx index a26f74710d..f949e0d3fc 100644 --- a/packages/core-components/src/layout/Content/Content.tsx +++ b/packages/core-components/src/layout/Content/Content.tsx @@ -17,7 +17,6 @@ import { makeStyles, Theme } from '@material-ui/core/styles'; import classNames from 'classnames'; import React, { PropsWithChildren } from 'react'; -import { useContent } from '../Sidebar'; /** @public */ export type BackstageContentClassKey = 'root' | 'stretch' | 'noPadding'; @@ -64,13 +63,9 @@ type Props = { export function Content(props: PropsWithChildren) { const { className, stretch, noPadding, children, ...restProps } = props; - const { contentRef } = useContent(); - const classes = useStyles(); return (
{ + const { contentRef } = useContent(); + const FinalTitle = ( - + {pageTitle} ); From 320e89143a231338f90b2b3fad5caaea4e4ba6d1 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Sat, 17 Jun 2023 11:56:57 -0500 Subject: [PATCH 031/194] Updated CODEOWNERS and added to marketplace Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .github/CODEOWNERS | 6 ++++++ microsite/data/plugins/devtools.yaml | 10 ++++++++++ microsite/data/plugins/linguist.yaml | 10 ++++++++++ microsite/static/img/devtools.svg | 1 + microsite/static/img/linguist.svg | 1 + 5 files changed, 28 insertions(+) create mode 100644 microsite/data/plugins/devtools.yaml create mode 100644 microsite/data/plugins/linguist.yaml create mode 100644 microsite/static/img/devtools.svg create mode 100644 microsite/static/img/linguist.svg diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 33097b505a..82a9eb499d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -39,6 +39,9 @@ yarn.lock @backstage/maintainers @back /plugins/code-coverage-backend @backstage/maintainers @alde @nissayeva /plugins/cost-insights @backstage/maintainers @backstage/silver-lining /plugins/cost-insights-* @backstage/maintainers @backstage/silver-lining +/plugins/devtools @backstage/maintainers @awanlin +/plugins/devtools-backend @backstage/maintainers @awanlin +/plugins/devtools-common @backstage/maintainers @awanlin /plugins/entity-feedback @backstage/maintainers @kuangp /plugins/entity-feedback-* @backstage/maintainers @kuangp /plugins/events-backend @backstage/maintainers @pjungermann @@ -64,6 +67,9 @@ yarn.lock @backstage/maintainers @back /plugins/kafka-backend @backstage/maintainers @nirga @andrewthauer /plugins/kubernetes @backstage/maintainers @backstage/kubernetes-maintainers /plugins/kubernetes-* @backstage/maintainers @backstage/kubernetes-maintainers +/plugins/linguist @backstage/maintainers @awanlin +/plugins/linguist-backend @backstage/maintainers @awanlin +/plugins/linguist-common @backstage/maintainers @awanlin /plugins/microsoft-calendar @backstage/maintainers @abhay-soni-developer @NishkarshRaj /plugins/newrelic-dashboard @backstage/maintainers @mufaddal7 /plugins/permission-* @backstage/permission-maintainers diff --git a/microsite/data/plugins/devtools.yaml b/microsite/data/plugins/devtools.yaml new file mode 100644 index 0000000000..b531195c04 --- /dev/null +++ b/microsite/data/plugins/devtools.yaml @@ -0,0 +1,10 @@ +--- +title: 'DevTools' +author: Keyloop +authorUrl: https://keyloop.com/ +category: Tools +description: Tools for helping with the Ops side of running a Backstage instance +documentation: https://github.com/backstage/backstage/blob/master/plugins/devtools/README.md +iconUrl: /img/devtools.svg +npmPackageName: '@backstage/plugin-devtools' +addedDate: '2023-06-17' diff --git a/microsite/data/plugins/linguist.yaml b/microsite/data/plugins/linguist.yaml new file mode 100644 index 0000000000..d76936391c --- /dev/null +++ b/microsite/data/plugins/linguist.yaml @@ -0,0 +1,10 @@ +--- +title: 'Linguist' +author: Keyloop +authorUrl: https://keyloop.com/ +category: Metadata +description: View the programming language break down for your entities within the Software Catalog +documentation: https://github.com/backstage/backstage/blob/master/plugins/linguist/README.md +iconUrl: /img/linguist.svg +npmPackageName: '@backstage/plugin-linguist' +addedDate: '2023-06-17' diff --git a/microsite/static/img/devtools.svg b/microsite/static/img/devtools.svg new file mode 100644 index 0000000000..6bd5dc17c5 --- /dev/null +++ b/microsite/static/img/devtools.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/microsite/static/img/linguist.svg b/microsite/static/img/linguist.svg new file mode 100644 index 0000000000..3cddc1affc --- /dev/null +++ b/microsite/static/img/linguist.svg @@ -0,0 +1 @@ + \ No newline at end of file From 5804a63c8a631bd3ab51dd92ea0e3e451348ac3e Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Mon, 26 Jun 2023 11:11:28 +0200 Subject: [PATCH 032/194] Revert "fix(deps): update dependency @mui/material to v5.13.6" Signed-off-by: blam --- yarn.lock | 191 ++++++++++++++++++++++++++---------------------------- 1 file changed, 92 insertions(+), 99 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9ac91f1f86..8768ef26be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3502,12 +3502,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.22.5 - resolution: "@babel/runtime@npm:7.22.5" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.21.0 + resolution: "@babel/runtime@npm:7.21.0" dependencies: regenerator-runtime: ^0.13.11 - checksum: 12a50b7de2531beef38840d17af50c55a094253697600cee255311222390c68eed704829308d4fd305e1b3dfbce113272e428e9d9d45b1730e0fede997eaceb1 + checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab languageName: node linkType: hard @@ -10285,16 +10285,16 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.11.0": - version: 11.11.0 - resolution: "@emotion/cache@npm:11.11.0" +"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.10.7": + version: 11.10.7 + resolution: "@emotion/cache@npm:11.10.7" dependencies: - "@emotion/memoize": ^0.8.1 - "@emotion/sheet": ^1.2.2 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 - stylis: 4.2.0 - checksum: 8eb1dc22beaa20c21a2e04c284d5a2630a018a9d51fb190e52de348c8d27f4e8ca4bbab003d68b4f6cd9cc1c569ca747a997797e0f76d6c734a660dc29decf08 + "@emotion/memoize": ^0.8.0 + "@emotion/sheet": ^1.2.1 + "@emotion/utils": ^1.2.0 + "@emotion/weak-memoize": ^0.3.0 + stylis: 4.1.3 + checksum: 6b1efed2dffc93dac419409d91f6d57a200d858ec5ffa4b7c30080fdbd93db431ff86bb779c5b8830b8373f3c5dd754d9beb386604ed2667c7d55608ff653dfc languageName: node linkType: hard @@ -10312,19 +10312,19 @@ __metadata: languageName: node linkType: hard -"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0, @emotion/is-prop-valid@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/is-prop-valid@npm:1.2.1" +"@emotion/is-prop-valid@npm:^1.1.0, @emotion/is-prop-valid@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/is-prop-valid@npm:1.2.0" dependencies: - "@emotion/memoize": ^0.8.1 - checksum: 8f42dc573a3fad79b021479becb639b8fe3b60bdd1081a775d32388bca418ee53074c7602a4c845c5f75fa6831eb1cbdc4d208cc0299f57014ed3a02abcad16a + "@emotion/memoize": ^0.8.0 + checksum: cc7a19850a4c5b24f1514665289442c8c641709e6f7711067ad550e05df331da0692a16148e85eda6f47e31b3261b64d74c5e25194d053223be16231f969d633 languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0, @emotion/memoize@npm:^0.8.1": - version: 0.8.1 - resolution: "@emotion/memoize@npm:0.8.1" - checksum: a19cc01a29fcc97514948eaab4dc34d8272e934466ed87c07f157887406bc318000c69ae6f813a9001c6a225364df04249842a50e692ef7a9873335fbcc141b0 +"@emotion/memoize@npm:^0.8.0": + version: 0.8.0 + resolution: "@emotion/memoize@npm:0.8.0" + checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 languageName: node linkType: hard @@ -10365,10 +10365,10 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.2": - version: 1.2.2 - resolution: "@emotion/sheet@npm:1.2.2" - checksum: d973273c9c15f1c291ca2269728bf044bd3e92a67bca87943fa9ec6c3cd2b034f9a6bfe95ef1b5d983351d128c75b547b43ff196a00a3875f7e1d269793cecfe +"@emotion/sheet@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/sheet@npm:1.2.1" + checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 languageName: node linkType: hard @@ -10425,17 +10425,17 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0, @emotion/utils@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/utils@npm:1.2.1" - checksum: e0b44be0705b56b079c55faff93952150be69e79b660ae70ddd5b6e09fc40eb1319654315a9f34bb479d7f4ec94be6068c061abbb9e18b9778ae180ad5d97c73 +"@emotion/utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/utils@npm:1.2.0" + checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0, @emotion/weak-memoize@npm:^0.3.1": - version: 0.3.1 - resolution: "@emotion/weak-memoize@npm:0.3.1" - checksum: b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 +"@emotion/weak-memoize@npm:^0.3.0": + version: 0.3.0 + resolution: "@emotion/weak-memoize@npm:0.3.0" + checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 languageName: node linkType: hard @@ -13012,15 +13012,15 @@ __metadata: languageName: node linkType: hard -"@mui/base@npm:5.0.0-beta.5": - version: 5.0.0-beta.5 - resolution: "@mui/base@npm:5.0.0-beta.5" +"@mui/base@npm:5.0.0-alpha.127": + version: 5.0.0-alpha.127 + resolution: "@mui/base@npm:5.0.0-alpha.127" dependencies: - "@babel/runtime": ^7.22.5 - "@emotion/is-prop-valid": ^1.2.1 + "@babel/runtime": ^7.21.0 + "@emotion/is-prop-valid": ^1.2.0 "@mui/types": ^7.2.4 - "@mui/utils": ^5.13.6 - "@popperjs/core": ^2.11.8 + "@mui/utils": ^5.12.0 + "@popperjs/core": ^2.11.7 clsx: ^1.2.1 prop-types: ^15.8.1 react-is: ^18.2.0 @@ -13031,28 +13031,28 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: d258f4735be3d7b3c48cbc97a3194817e86f9eb569ba311d6707e6ffc016c02bdbbfa26f2b9571953f2514e32c1247901777dc52e3f8b3e6d3736d0330178305 + checksum: 330baeef1fdaa513707f295e07a3436af24d0831a18109ed877f76b86cf1f392309833d33a2c7ca250db79fdf53f5e88c2618f876f50dbbbf9323bbf08e367e7 languageName: node linkType: hard -"@mui/core-downloads-tracker@npm:^5.13.4": - version: 5.13.4 - resolution: "@mui/core-downloads-tracker@npm:5.13.4" - checksum: 2d709a3efe2d11e82a6c369b0b47dc2d488f292a3213083102e6afbf009282c18cdb4b263c0cf6194e5c0cdfd4c735e180e25704015003851459b682bb53e2c8 +"@mui/core-downloads-tracker@npm:^5.12.2": + version: 5.12.2 + resolution: "@mui/core-downloads-tracker@npm:5.12.2" + checksum: d748bdc56df6fdfe6712550a94263cf094c53ddcb70f6a8f633caf23927edf5ac88b1f888429d895fe2a5045b27eb7aa9826ccee5b917e31973667d604ed87fe languageName: node linkType: hard "@mui/material@npm:^5.12.2": - version: 5.13.6 - resolution: "@mui/material@npm:5.13.6" + version: 5.12.2 + resolution: "@mui/material@npm:5.12.2" dependencies: - "@babel/runtime": ^7.22.5 - "@mui/base": 5.0.0-beta.5 - "@mui/core-downloads-tracker": ^5.13.4 - "@mui/system": ^5.13.6 + "@babel/runtime": ^7.21.0 + "@mui/base": 5.0.0-alpha.127 + "@mui/core-downloads-tracker": ^5.12.2 + "@mui/system": ^5.12.1 "@mui/types": ^7.2.4 - "@mui/utils": ^5.13.6 - "@types/react-transition-group": ^4.4.6 + "@mui/utils": ^5.12.0 + "@types/react-transition-group": ^4.4.5 clsx: ^1.2.1 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13071,16 +13071,16 @@ __metadata: optional: true "@types/react": optional: true - checksum: 0c8936d8c1c20ecf1efc64dcd3f7101053255a720a907802a004abd7c96f49622c402e4d5cea42d9c1950a10dcbaf445cfb7da2ae7f239c733eadd8ec287ceab + checksum: a3464dfbcc496164967e134d6f1d40e060ee02fc2ddb5fcf648ca85580efdbd5eff5aab6a73486d0a7f329f7299127b52501a13993bb131cbd4e310c7f2e633f languageName: node linkType: hard -"@mui/private-theming@npm:^5.13.1": - version: 5.13.1 - resolution: "@mui/private-theming@npm:5.13.1" +"@mui/private-theming@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/private-theming@npm:5.12.0" dependencies: "@babel/runtime": ^7.21.0 - "@mui/utils": ^5.13.1 + "@mui/utils": ^5.12.0 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -13088,16 +13088,16 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 7211eba333a595ebfb964f7f5a561fba89ad06fc3db9e7bba795f9230afd687aa7a66d1a2fddf9dc5a73e1044729f7b3061ae461bb25eed64068ca08e018a38b + checksum: 761bc7a57e1643c2c4c327886882fa5efc7bacae1c6fffe6be4197f49d337261c916a883d96996445efcdedc0672251725c1e5b264b6250d6c9527fd0cafcc62 languageName: node linkType: hard -"@mui/styled-engine@npm:^5.13.2": - version: 5.13.2 - resolution: "@mui/styled-engine@npm:5.13.2" +"@mui/styled-engine@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/styled-engine@npm:5.12.0" dependencies: "@babel/runtime": ^7.21.0 - "@emotion/cache": ^11.11.0 + "@emotion/cache": ^11.10.7 csstype: ^3.1.2 prop-types: ^15.8.1 peerDependencies: @@ -13109,19 +13109,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: e99f49755406b55a1595bf5d2727f0c0e3fd9f914dce1ea3b6cac826efe05038f8e4bde52580bd6a5a4c62ad59e5582bdde6c17abc10d80e61a64da168803391 + checksum: 4a415473cf62aa05012f667dd2e9b1dc2fb175be5b0c4d0b8df541e2dac3d7db410e920e0d5910c8e2b8996a4fb51f74d79483e2878a9b5c0d334498f5537d74 languageName: node linkType: hard -"@mui/system@npm:^5.13.6": - version: 5.13.6 - resolution: "@mui/system@npm:5.13.6" +"@mui/system@npm:^5.12.1": + version: 5.12.1 + resolution: "@mui/system@npm:5.12.1" dependencies: - "@babel/runtime": ^7.22.5 - "@mui/private-theming": ^5.13.1 - "@mui/styled-engine": ^5.13.2 + "@babel/runtime": ^7.21.0 + "@mui/private-theming": ^5.12.0 + "@mui/styled-engine": ^5.12.0 "@mui/types": ^7.2.4 - "@mui/utils": ^5.13.6 + "@mui/utils": ^5.12.0 clsx: ^1.2.1 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13137,7 +13137,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: 978426ce5f3fe43ab536eec6f03a11845766c3640cc1da00c81e44f1d61f5c1bb53a33a28a70d83338183f818a04bdd8fb7c483824266aa8d46add5724186ae4 + checksum: b951959bf5e5af581319354c044f441d97849ff120cfec111d2ed5e7fa05efd63721acff96f48093b8e2bdeb5ccbe35c48613fb925be2b58c596447d10dbed3e languageName: node linkType: hard @@ -13153,18 +13153,18 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.13.1, @mui/utils@npm:^5.13.6": - version: 5.13.6 - resolution: "@mui/utils@npm:5.13.6" +"@mui/utils@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/utils@npm:5.12.0" dependencies: - "@babel/runtime": ^7.22.5 + "@babel/runtime": ^7.21.0 "@types/prop-types": ^15.7.5 - "@types/react-is": ^18.2.0 + "@types/react-is": ^16.7.1 || ^17.0.0 prop-types: ^15.8.1 react-is: ^18.2.0 peerDependencies: react: ^17.0.0 || ^18.0.0 - checksum: b5d3fff9153b6104d732b01363410a6472f06869d48e73d3d1ee38cf2b1255eaafb1afb90c48bb446143d312a434fd30e7b1664bf10941a2c610b7759cfd0a2e + checksum: 87b2c7468803b083f50af28d7c215c45291e73fef16570848b596d0f1cde1fc613c20e8951f431217b31451de254744abd50eda5013dedec4982420b5bf1c6b6 languageName: node linkType: hard @@ -14121,10 +14121,10 @@ __metadata: languageName: node linkType: hard -"@popperjs/core@npm:^2.11.8": - version: 2.11.8 - resolution: "@popperjs/core@npm:2.11.8" - checksum: e5c69fdebf52a4012f6a1f14817ca8e9599cb1be73dd1387e1785e2ed5e5f0862ff817f420a87c7fc532add1f88a12e25aeb010ffcbdc98eace3d55ce2139cf0 +"@popperjs/core@npm:^2.11.7": + version: 2.11.7 + resolution: "@popperjs/core@npm:2.11.7" + checksum: 5b6553747899683452a1d28898c1b39173a4efd780e74360bfcda8eb42f1c5e819602769c81a10920fc68c881d07fb40429604517d499567eac079cfa6470f19 languageName: node linkType: hard @@ -17337,12 +17337,12 @@ __metadata: languageName: node linkType: hard -"@types/react-is@npm:^18.2.0": - version: 18.2.1 - resolution: "@types/react-is@npm:18.2.1" +"@types/react-is@npm:^16.7.1 || ^17.0.0": + version: 17.0.3 + resolution: "@types/react-is@npm:17.0.3" dependencies: "@types/react": "*" - checksum: b44c3262efa2c68fa6fe2beb9ef86170b18305469461a3f97aa14943cc033cb21a26944f718bdb6434eea6e8f7fcba251c4f45b65b897a3fcf751b5a6003cf82 + checksum: 6abb7c47d54f012272650df8a962a28bd82f219291e5ef8b4dfa7fe0bb98ae243b060bf9fbe8ceff6213141794855a006db194b490b00ffd15842ae19d0ce1f0 languageName: node linkType: hard @@ -17394,12 +17394,12 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.6": - version: 4.4.6 - resolution: "@types/react-transition-group@npm:4.4.6" +"@types/react-transition-group@npm:^4.2.0, @types/react-transition-group@npm:^4.4.5": + version: 4.4.5 + resolution: "@types/react-transition-group@npm:4.4.5" dependencies: "@types/react": "*" - checksum: 0872143821d7ee20a1d81e965f8b1e837837f11cd2206973f1f98655751992d9390304d58bac192c9cd923eca95bff107d8c9e3364a180240d5c2a6fd70fd7c3 + checksum: 265f1c74061556708ffe8d15559e35c60d6c11478c9950d3735575d2c116ca69f461d85effa06d73a613eb8b73c84fd32682feb57cf7c5f9e4284021dbca25b0 languageName: node linkType: hard @@ -39174,20 +39174,13 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.3": +"stylis@npm:4.1.3, stylis@npm:^4.0.6": version: 4.1.3 resolution: "stylis@npm:4.1.3" checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 languageName: node linkType: hard -"stylis@npm:4.2.0, stylis@npm:^4.0.6": - version: 4.2.0 - resolution: "stylis@npm:4.2.0" - checksum: 0eb6cc1b866dc17a6037d0a82ac7fa877eba6a757443e79e7c4f35bacedbf6421fadcab4363b39667b43355cbaaa570a3cde850f776498e5450f32ed2f9b7584 - languageName: node - linkType: hard - "subscriptions-transport-ws@npm:^0.11.0": version: 0.11.0 resolution: "subscriptions-transport-ws@npm:0.11.0" From 6adb6f41711ab70916de8be7e8072643e4227f16 Mon Sep 17 00:00:00 2001 From: Eric Peterson Date: Wed, 21 Jun 2023 10:54:47 +0200 Subject: [PATCH 033/194] Pass flag from command down to function Signed-off-by: Eric Peterson --- .changeset/cli-always-yarn-pack-freal.md | 5 +++++ packages/cli/src/commands/buildWorkspace.ts | 7 ++++++- 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/cli-always-yarn-pack-freal.md diff --git a/.changeset/cli-always-yarn-pack-freal.md b/.changeset/cli-always-yarn-pack-freal.md new file mode 100644 index 0000000000..b58ffea857 --- /dev/null +++ b/.changeset/cli-always-yarn-pack-freal.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fixed the `--alwaysYarnPack` flag on the`backstage-cli build-workspace` command. diff --git a/packages/cli/src/commands/buildWorkspace.ts b/packages/cli/src/commands/buildWorkspace.ts index 97bf2f1239..685e4b1cb0 100644 --- a/packages/cli/src/commands/buildWorkspace.ts +++ b/packages/cli/src/commands/buildWorkspace.ts @@ -17,12 +17,17 @@ import fs from 'fs-extra'; import { createDistWorkspace } from '../lib/packager'; -export default async (dir: string, packages: string[]) => { +type Options = { + alwaysYarnPack?: boolean; +}; + +export default async (dir: string, packages: string[], options: Options) => { if (!(await fs.pathExists(dir))) { throw new Error(`Target workspace directory doesn't exist, '${dir}'`); } await createDistWorkspace(packages, { targetDir: dir, + alwaysYarnPack: options.alwaysYarnPack, }); }; From df5fa4a219b1e80f678a129ba82accd627e26ad4 Mon Sep 17 00:00:00 2001 From: Tobias Graf Date: Mon, 26 Jun 2023 08:39:30 +0200 Subject: [PATCH 034/194] docs: fix react error in homepage getting started Signed-off-by: Tobias Graf --- docs/getting-started/homepage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started/homepage.md b/docs/getting-started/homepage.md index 9c6f6380a1..04dfb13d6a 100644 --- a/docs/getting-started/homepage.md +++ b/docs/getting-started/homepage.md @@ -40,7 +40,7 @@ Inside your `packages/app` directory, create a new file where our new homepage c ```tsx import React from 'react'; -export const homePage = ( +export const HomePage = () => ( /* We will shortly compose a pretty homepage here. */

Welcome to Backstage!

); From f73b456da2828df852cf8127cd7e96ee573fb5a5 Mon Sep 17 00:00:00 2001 From: Ant Weiss Date: Mon, 26 Jun 2023 11:38:51 +0300 Subject: [PATCH 035/194] Fix some english in writing-custom-actions.md Fixing a few minor grammar issues that caught my eye. Signed-off-by: Ant Weiss --- docs/features/software-templates/writing-custom-actions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index f04940a418..c2f14d0ca0 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -4,8 +4,8 @@ title: Writing Custom Actions description: How to write your own actions --- -If you're wanting to extend the functionality of the Scaffolder, you can do so -by writing custom actions which can be used along side our +If you want to extend the functionality of the Scaffolder, you can do so +by writing custom actions which can be used alongside our [built-in actions](./builtin-actions.md). > Note: When adding custom actions, the actions array will **replace the @@ -65,7 +65,7 @@ The `createTemplateAction` takes an object which specifies the following: - `schema.input` - A `zod` or JSON schema object for input values to your function - `schema.output` - A `zod` or JSON schema object for values which are output from the function using `ctx.output` -- `handler` - the actual code which is run part of the action, with a context +- `handler` - the actual code which is run as part of the action, with a context You can also choose to define your custom action using JSON schema instead of `zod`: From 3424cbfe5f4a9d2a77e212aae17ee515b4d1aa7b Mon Sep 17 00:00:00 2001 From: Frank Kong Date: Fri, 23 Jun 2023 17:09:39 -0400 Subject: [PATCH 036/194] fix(dynatrace): update link that "View Entity in Dynatrace" redirects user to Signed-off-by: Frank Kong --- .changeset/mighty-shoes-refuse.md | 5 +++ .../Problems/ProblemsList/ProblemsList.tsx | 31 ++++++++++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .changeset/mighty-shoes-refuse.md diff --git a/.changeset/mighty-shoes-refuse.md b/.changeset/mighty-shoes-refuse.md new file mode 100644 index 0000000000..ec17e5e357 --- /dev/null +++ b/.changeset/mighty-shoes-refuse.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-dynatrace': patch +--- + +updated the link that the "View Entity in Dynatrace" redirects the user to. diff --git a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx index 2ee0dda48d..9a4ef4d9b9 100644 --- a/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx +++ b/plugins/dynatrace/src/components/Problems/ProblemsList/ProblemsList.tsx @@ -43,6 +43,31 @@ const cardContents = ( ); }; +const dynatraceEntityPrefixes = (idPrefix: string): string => { + switch (idPrefix) { + case 'APPLICATION': + return '#uemapplications/uemappmetrics;uemapplicationId='; + + case 'SERVICE': + return '#services/serviceOverview;id='; + + case `MOBILE_APPLICATION`: + return '#mobileappoverview;appID='; + + case 'SYNTHETIC_TEST': + return 'ui/browser-monitor/'; + + case 'KUBERNETES_CLUSTER': + return 'ui/kubernetes/'; + + case 'PROCESS_GROUP_INSTANCE': + return '#processdetails;id='; + + default: + return 'ui/entity/'; + } +}; + export const ProblemsList = (props: ProblemsListProps) => { const { dynatraceEntityId } = props; const configApi = useApi(configApiRef); @@ -54,6 +79,10 @@ export const ProblemsList = (props: ProblemsListProps) => { }, [dynatraceApi, dynatraceEntityId]); const problems = value?.problems; + const deepLinkPrefix = dynatraceEntityPrefixes( + `${dynatraceEntityId.split('-')[0]}`, + ); + if (loading) { return ; } else if (error) { @@ -65,7 +94,7 @@ export const ProblemsList = (props: ProblemsListProps) => { subheader={`Last 2 hours - ${dynatraceEntityId}`} deepLink={{ title: 'View Entity in Dynatrace', - link: `${dynatraceBaseUrl}/#serviceOverview;id=${dynatraceEntityId}`, + link: `${dynatraceBaseUrl}/${deepLinkPrefix}${dynatraceEntityId}`, }} > {cardContents(problems || [], dynatraceBaseUrl)} From ff6687e996abb78790206d9c46cdb1684cf57a6c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:13:58 +0000 Subject: [PATCH 037/194] chore(deps): update dependency @testing-library/dom to v8.20.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8768ef26be..5c637d3833 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15843,18 +15843,18 @@ __metadata: linkType: hard "@testing-library/dom@npm:^8.0.0, @testing-library/dom@npm:^8.1.0": - version: 8.20.0 - resolution: "@testing-library/dom@npm:8.20.0" + version: 8.20.1 + resolution: "@testing-library/dom@npm:8.20.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 "@types/aria-query": ^5.0.1 - aria-query: ^5.0.0 + aria-query: 5.1.3 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 + lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: 1e599129a2fe91959ce80900a0a4897232b89e2a8e22c1f5950c36d39c97629ea86b4986b60b173b5525a05de33fde1e35836ea597b03de78cc51b122835c6f0 + checksum: 06fc8dc67849aadb726cbbad0e7546afdf8923bd39acb64c576d706249bd7d0d05f08e08a31913fb621162e3b9c2bd0dce15964437f030f9fa4476326fdd3007 languageName: node linkType: hard @@ -18976,7 +18976,7 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": +"aria-query@npm:5.1.3, aria-query@npm:^5.0.0, aria-query@npm:^5.1.3": version: 5.1.3 resolution: "aria-query@npm:5.1.3" dependencies: @@ -30904,12 +30904,12 @@ __metadata: languageName: node linkType: hard -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" bin: lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 + checksum: 1ee98b4580246fd90dd54da6e346fb1caefcf05f677c686d9af237a157fdea3fd7c83a4bc58f858cd5b10a34d27afe0fdcbd0505a47e0590726a873dc8b8f65d languageName: node linkType: hard From e4273c75e32db0535c162fc9ba8509ebda9bf123 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:15:40 +0000 Subject: [PATCH 038/194] fix(deps): update dependency @roadiehq/backstage-plugin-buildkite to v2.1.11 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8768ef26be..5509413e5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14351,8 +14351,8 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-buildkite@npm:^2.0.8": - version: 2.1.10 - resolution: "@roadiehq/backstage-plugin-buildkite@npm:2.1.10" + version: 2.1.11 + resolution: "@roadiehq/backstage-plugin-buildkite@npm:2.1.11" dependencies: "@backstage/catalog-model": ^1.3.0 "@backstage/core-components": ^0.13.1 @@ -14370,7 +14370,7 @@ __metadata: react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 7463cecec0329d5b19cb539a234699d6857234a045c5eb5b1589643b2d6e2817c0942274a71aa788047c32270fc095d9e27bb389cd0fe4430058fc1e43f572d7 + checksum: 7458942f74b259782b116b50424665cd8130a00e7bd9b900499c3fdc34c67916aa382f947fcceb1b87a539842efc8f6466518e9fd74507055d4225ed28886913 languageName: node linkType: hard From ee498650972279c8d65668163463763519060cca Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:16:08 +0000 Subject: [PATCH 039/194] fix(deps): update dependency @rollup/plugin-yaml to v4.1.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8768ef26be..69906bd2e4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14507,8 +14507,8 @@ __metadata: linkType: hard "@rollup/plugin-yaml@npm:^4.0.0": - version: 4.1.0 - resolution: "@rollup/plugin-yaml@npm:4.1.0" + version: 4.1.1 + resolution: "@rollup/plugin-yaml@npm:4.1.1" dependencies: "@rollup/pluginutils": ^5.0.1 js-yaml: ^4.1.0 @@ -14518,7 +14518,7 @@ __metadata: peerDependenciesMeta: rollup: optional: true - checksum: e8dcfbb6032ebd493e3cf1f3fcc7ee7e50509e3848a283ab21c743ec59b65b587d3755f744c7135f49db97aee1fc7eee818375519f293e7227e278ccf9d8b3dc + checksum: 99c8f9d4a354056bec8a9398786777203d87db32db0cad681f65ee896cbbbb8a61ace0b1c3d801622782ccf28e56eac6cdde950541fb1f7b3e651ad9c705d5c3 languageName: node linkType: hard From 6621d47abe6cd32b31dc609a79aaa3c08989f882 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:16:35 +0000 Subject: [PATCH 040/194] fix(deps): update dependency @tanstack/react-query to v4.29.17 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8768ef26be..b53b6eb132 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15768,18 +15768,19 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:4.29.11": - version: 4.29.11 - resolution: "@tanstack/query-core@npm:4.29.11" - checksum: 2a17223f34e99e17d564a15206668eb79324da72e630a47cf41690f92fb091a8669bdc89e9ab1b0d8f0e3e8f579529cfb0aa6f10b4fc58ea81cc7e5caede9229 +"@tanstack/query-core@npm:4.29.17": + version: 4.29.17 + resolution: "@tanstack/query-core@npm:4.29.17" + checksum: 0440d58a566fc3d6791a27eae439f497acc0142cb629ca0fb6e536f9c0a29d150b816ae33c9375411582da0b849a2ef141ef3b2284b8b313d5a4d6671b2548a3 languageName: node linkType: hard "@tanstack/react-query@npm:^4.1.3": - version: 4.29.12 - resolution: "@tanstack/react-query@npm:4.29.12" + version: 4.29.17 + resolution: "@tanstack/react-query@npm:4.29.17" dependencies: - "@tanstack/query-core": 4.29.11 + "@tanstack/query-core": 4.29.17 + client-only: 0.0.1 use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -15790,7 +15791,7 @@ __metadata: optional: true react-native: optional: true - checksum: aea231af648688c5eafdbbda0667034221cca8b77e00690ab54950b7cc0296d14646931aee44fc5f18d5ce4d683b5d234b053eed5c0a5c340bbbacdab873a70b + checksum: 5630dcb93100a48165464188aef2f53ed8e6bcb65669ff919f0916b7a21b58c7e21b06f4e4a331d1b9bfb8a89677266e79bc2a3bc80af62d763b08b3b195f7ea languageName: node linkType: hard @@ -20804,6 +20805,13 @@ __metadata: languageName: node linkType: hard +"client-only@npm:0.0.1": + version: 0.0.1 + resolution: "client-only@npm:0.0.1" + checksum: 0c16bf660dadb90610553c1d8946a7fdfb81d624adea073b8440b7d795d5b5b08beb3c950c6a2cf16279365a3265158a236876d92bce16423c485c322d7dfaf8 + languageName: node + linkType: hard + "clipboard@npm:^2.0.4": version: 2.0.11 resolution: "clipboard@npm:2.0.11" From 764f05acc1ff07fcfb78a5ee3c9de45e781c1754 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:29:42 +0000 Subject: [PATCH 041/194] chore(deps): update dependency @frsource/cypress-plugin-visual-regression-diff to v3.3.10 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 74 +++++++++++++++++++++++++++---------------------------- 1 file changed, 36 insertions(+), 38 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8768ef26be..8ed4c8e9e6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10882,27 +10882,27 @@ __metadata: languageName: node linkType: hard -"@frsource/base64@npm:1.0.14": - version: 1.0.14 - resolution: "@frsource/base64@npm:1.0.14" - checksum: 9a5b718e4ac12fd1b5bfdefcdf669fb0a125599fb6cd55564da3beeccd7a5707f58bc41f572268a8120af15ccca32355e8384341561f738397521020e0c2564c +"@frsource/base64@npm:1.0.17": + version: 1.0.17 + resolution: "@frsource/base64@npm:1.0.17" + checksum: a01689ef785516ff0b7460f55792685fc782f8507518768396acb9283270d50a8149774f3acd5fa690ccd5a48b5ec4ace90a491458ffdd9e9f591c6b23eb5da5 languageName: node linkType: hard "@frsource/cypress-plugin-visual-regression-diff@npm:^3.2.8": - version: 3.3.9 - resolution: "@frsource/cypress-plugin-visual-regression-diff@npm:3.3.9" + version: 3.3.10 + resolution: "@frsource/cypress-plugin-visual-regression-diff@npm:3.3.10" dependencies: - "@frsource/base64": 1.0.14 - glob: 8.0.3 + "@frsource/base64": 1.0.17 + glob: 8.1.0 meta-png: 1.0.6 move-file: 2.1.0 pixelmatch: 5.3.0 pngjs: 7.0.0 - sharp: 0.31.2 + sharp: 0.32.1 peerDependencies: cypress: ">=4.5.0" - checksum: da3bfaec2d54a314e8bcda915f85e9bc9f7cf53224e588a24ab594d7f0047ad9b5bbda3be8d6f63602f8612d2c7e35c8ca4de307b4f9eb098e04c3af593f090c + checksum: 879954ecba8829fd870379a1f4150a511fceab4c5a5c3df8abbab54e655e6560d52d925109364ea7f2d3484467ed5e9c3e4cfaf0058c12bbfbfc21d76ed79b40 languageName: node linkType: hard @@ -26143,16 +26143,16 @@ __metadata: languageName: node linkType: hard -"glob@npm:8.0.3": - version: 8.0.3 - resolution: "glob@npm:8.0.3" +"glob@npm:8.1.0, glob@npm:^8.0.0, glob@npm:^8.0.1, glob@npm:^8.0.3": + version: 8.1.0 + resolution: "glob@npm:8.1.0" dependencies: fs.realpath: ^1.0.0 inflight: ^1.0.4 inherits: 2 minimatch: ^5.0.1 once: ^1.3.0 - checksum: 50bcdea19d8e79d8de5f460b1939ffc2b3299eac28deb502093fdca22a78efebc03e66bf54f0abc3d3d07d8134d19a32850288b7440d77e072aa55f9d33b18c5 + checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 languageName: node linkType: hard @@ -26185,19 +26185,6 @@ __metadata: languageName: node linkType: hard -"glob@npm:^8.0.0, glob@npm:^8.0.1, glob@npm:^8.0.3": - version: 8.1.0 - resolution: "glob@npm:8.1.0" - dependencies: - fs.realpath: ^1.0.0 - inflight: ^1.0.4 - inherits: 2 - minimatch: ^5.0.1 - once: ^1.3.0 - checksum: 92fbea3221a7d12075f26f0227abac435de868dd0736a17170663783296d0dd8d3d532a5672b4488a439bf5d7fb85cdd07c11185d6cd39184f0385cbdfb86a47 - languageName: node - linkType: hard - "global-agent@npm:^3.0.0": version: 3.0.0 resolution: "global-agent@npm:3.0.0" @@ -32564,12 +32551,12 @@ __metadata: languageName: node linkType: hard -"node-addon-api@npm:^5.0.0": - version: 5.1.0 - resolution: "node-addon-api@npm:5.1.0" +"node-addon-api@npm:^6.1.0": + version: 6.1.0 + resolution: "node-addon-api@npm:6.1.0" dependencies: node-gyp: latest - checksum: 2508bd2d2981945406243a7bd31362fc7af8b70b8b4d65f869c61731800058fb818cc2fd36c8eac714ddd0e568cc85becf5e165cebbdf7b5024d5151bbc75ea1 + checksum: 3a539510e677cfa3a833aca5397300e36141aca064cdc487554f2017110709a03a95da937e98c2a14ec3c626af7b2d1b6dabe629a481f9883143d0d5bff07bf2 languageName: node linkType: hard @@ -37761,7 +37748,18 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:~7.3.0": +"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0": + version: 7.5.3 + resolution: "semver@npm:7.5.3" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 9d58db16525e9f749ad0a696a1f27deabaa51f66e91d2fa2b0db3de3e9644e8677de3b7d7a03f4c15bc81521e0c3916d7369e0572dbde250d9bedf5194e2a8a7 + languageName: node + linkType: hard + +"semver@npm:~7.3.0": version: 7.3.8 resolution: "semver@npm:7.3.8" dependencies: @@ -37961,20 +37959,20 @@ __metadata: languageName: node linkType: hard -"sharp@npm:0.31.2": - version: 0.31.2 - resolution: "sharp@npm:0.31.2" +"sharp@npm:0.32.1": + version: 0.32.1 + resolution: "sharp@npm:0.32.1" dependencies: color: ^4.2.3 detect-libc: ^2.0.1 - node-addon-api: ^5.0.0 + node-addon-api: ^6.1.0 node-gyp: latest prebuild-install: ^7.1.1 - semver: ^7.3.8 + semver: ^7.5.0 simple-get: ^4.0.1 tar-fs: ^2.1.1 tunnel-agent: ^0.6.0 - checksum: 076717b7a073ea47bb522ff2931b74b6608daeb6f7ae334e4848d47fdf4d23bcb18cd49044fd5fb27ef27a1a4aa87d141894d67d1c4bb15a6e2e63cf4dbe329e + checksum: 99f50df380442aa8f3f952dd6f2e27634f9cab249cce47aa7f1a97c468334979ea94d71555f782aae5f5016e44b7832799f1c5ea1cb3ca975c089acd00e62e2e languageName: node linkType: hard From 92c86678fc59a876636e6b8c047b55d6d46495ba Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:05:29 +0000 Subject: [PATCH 042/194] Bump semver from 7.3.7 to 7.5.3 in /cypress Bumps [semver](https://github.com/npm/node-semver) from 7.3.7 to 7.5.3. - [Release notes](https://github.com/npm/node-semver/releases) - [Changelog](https://github.com/npm/node-semver/blob/main/CHANGELOG.md) - [Commits](https://github.com/npm/node-semver/compare/v7.3.7...v7.5.3) --- updated-dependencies: - dependency-name: semver dependency-type: indirect ... Signed-off-by: dependabot[bot] --- cypress/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cypress/yarn.lock b/cypress/yarn.lock index 36dd0b056d..290f441c4c 100644 --- a/cypress/yarn.lock +++ b/cypress/yarn.lock @@ -1230,13 +1230,13 @@ __metadata: linkType: hard "semver@npm:^7.3.2": - version: 7.3.7 - resolution: "semver@npm:7.3.7" + version: 7.5.3 + resolution: "semver@npm:7.5.3" dependencies: lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: 2fa3e877568cd6ce769c75c211beaed1f9fce80b28338cadd9d0b6c40f2e2862bafd62c19a6cff42f3d54292b7c623277bcab8816a2b5521cf15210d43e75232 + checksum: 9d58db16525e9f749ad0a696a1f27deabaa51f66e91d2fa2b0db3de3e9644e8677de3b7d7a03f4c15bc81521e0c3916d7369e0572dbde250d9bedf5194e2a8a7 languageName: node linkType: hard From 4b3cf4b58f183d00429b11bda15869b8f6738810 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:06:42 +0000 Subject: [PATCH 043/194] fix(deps): update dependency @roadiehq/backstage-plugin-github-insights to v2.3.14 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 8ed4c8e9e6..e32b5a74c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14375,8 +14375,8 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-github-insights@npm:^2.0.5": - version: 2.3.13 - resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.13" + version: 2.3.14 + resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.14" dependencies: "@backstage/catalog-model": ^1.3.0 "@backstage/core-components": ^0.13.1 @@ -14398,7 +14398,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 - checksum: eb555d1b4bab82cd6cf66ea823b35fedb72d1ca3a6615b619d6cd2ff24af131501346b9ac2b1dcfb83f5d69b42ac95fb96f081e644a82b75a77a71b45344f2fc + checksum: 990667bcbdbd9f2504b4c020b79bd1e809c165ac4ff93f277fe3be9e9a1247ed4e2034f992146c5e7a153aa8d268c06e3777b693a9337564117be43d321f894c languageName: node linkType: hard From e49e52b1754a22dc3a027daf5628a6269bcafb1f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:32:31 +0000 Subject: [PATCH 044/194] fix(deps): update dependency @roadiehq/backstage-plugin-github-pull-requests to v2.5.12 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index fb33e31b8f..f78504bc5b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14403,8 +14403,8 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-github-pull-requests@npm:^2.2.7": - version: 2.5.11 - resolution: "@roadiehq/backstage-plugin-github-pull-requests@npm:2.5.11" + version: 2.5.12 + resolution: "@roadiehq/backstage-plugin-github-pull-requests@npm:2.5.12" dependencies: "@backstage/catalog-model": ^1.3.0 "@backstage/core-components": ^0.13.1 @@ -14427,7 +14427,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 - checksum: fe7c6cd35bbf23b4464fe94dbbd9a085b1b164bab214e095e6efc4e7ec5b5ca19670a9384541d83eeaa1a6d6ba2aa22a3f457c7166165ec0f078f18c2355e3e1 + checksum: 4113de2eb3f207e05581033c05879c98d858ef3534fb1256d5dc4f8e1f4cc33e0530952d4fd74c62df063c22af6c1e0f28af770bd55d8b41b4402df68450f98c languageName: node linkType: hard From ed465b1c05cb303b167cebea5eac3f2c43896315 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 11:42:34 +0000 Subject: [PATCH 045/194] fix(deps): update dependency @azure/identity to v3.2.3 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 47 ++++++++++++++++++++--------------------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/yarn.lock b/yarn.lock index fb33e31b8f..99b243f0c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1985,8 +1985,8 @@ __metadata: linkType: hard "@azure/identity@npm:^3.2.1": - version: 3.2.2 - resolution: "@azure/identity@npm:3.2.2" + version: 3.2.3 + resolution: "@azure/identity@npm:3.2.3" dependencies: "@azure/abort-controller": ^1.0.0 "@azure/core-auth": ^1.3.0 @@ -1995,16 +1995,16 @@ __metadata: "@azure/core-tracing": ^1.0.0 "@azure/core-util": ^1.0.0 "@azure/logger": ^1.0.0 - "@azure/msal-browser": ^2.32.2 - "@azure/msal-common": ^9.0.2 - "@azure/msal-node": ^1.14.6 + "@azure/msal-browser": ^2.37.1 + "@azure/msal-common": ^13.1.0 + "@azure/msal-node": ^1.17.3 events: ^3.0.0 jws: ^4.0.0 open: ^8.0.0 stoppable: ^1.1.0 tslib: ^2.2.0 uuid: ^8.3.0 - checksum: cbedd293ed6360d98c87148686a1be3a38aad3eaeadcaa7d73e79469904aac2f949a1be67e868d3fd295e749a24ad91bc389ddb82d8574dd173c0583767ec6bf + checksum: 8f74831a358f41490056fb1978d9214542f5e7a788cc607ded3c475e1e61784da2cb6409434cb736c66291c24b755dbab42ec7b93b218ca535dce3363183c64b languageName: node linkType: hard @@ -2045,37 +2045,30 @@ __metadata: languageName: node linkType: hard -"@azure/msal-browser@npm:^2.32.2": - version: 2.37.0 - resolution: "@azure/msal-browser@npm:2.37.0" +"@azure/msal-browser@npm:^2.37.1": + version: 2.37.1 + resolution: "@azure/msal-browser@npm:2.37.1" dependencies: - "@azure/msal-common": 13.0.0 - checksum: e57d04517d51db4b608da6ca127c89e5c134b42743b00e95d8f1aae011d1cc6d5c02fb4f72cd0f96636e500a3eeee7c4884cd537ac8796bbd50f0ff9ac983b4e + "@azure/msal-common": 13.1.0 + checksum: 920b892bcdbc10f5e736e87363cb5964e48e8dcaf20f777f634308a5bc25550a7b02f62e826c1e3b50212e47e14435f9c3a4f72befc955392f0c4327e62518d0 languageName: node linkType: hard -"@azure/msal-common@npm:13.0.0": - version: 13.0.0 - resolution: "@azure/msal-common@npm:13.0.0" - checksum: 89f56f9fbf0edffa6023d46c6970dd37a9ad571b7d2952fdef41950ec2f3b4b3fd22d9841e2caaf52619ad97ab415ed22c30797cdb896f459eb665d3d97f778a +"@azure/msal-common@npm:13.1.0, @azure/msal-common@npm:^13.1.0": + version: 13.1.0 + resolution: "@azure/msal-common@npm:13.1.0" + checksum: db21145f824f02f63a10fa7e1a356445e0c9e945bb1685a964416f1788a89fca165302d990cdfffb7e794b92dac1c90e4934ed018e92056682f863b0eec82587 languageName: node linkType: hard -"@azure/msal-common@npm:^9.0.2": - version: 9.0.2 - resolution: "@azure/msal-common@npm:9.0.2" - checksum: 5a44d23b1d0f80d3e2221d157c1bd48bdfd19f5a4ac2fc58c73c52ffd25868c1760ea27ad0408931e07f552adc19764757bf91f7bec59258d9d931274df15657 - languageName: node - linkType: hard - -"@azure/msal-node@npm:^1.14.6": - version: 1.17.2 - resolution: "@azure/msal-node@npm:1.17.2" +"@azure/msal-node@npm:^1.17.3": + version: 1.17.3 + resolution: "@azure/msal-node@npm:1.17.3" dependencies: - "@azure/msal-common": 13.0.0 + "@azure/msal-common": 13.1.0 jsonwebtoken: ^9.0.0 uuid: ^8.3.0 - checksum: 5ac809dae6b02ab7de2aafb85733501ba6c3268f1d9371bc857215dad9d47e4f6e10b3e58ebda49504b375c96934761e9734acc241d3bc34d3b4cdeaabdf102e + checksum: 6afc815116196e481dd7f2c142b9935dce1fa2b225c87c5e3615d83ecc00e4ff65295f512a9b03349a71c8cf19d6c25e0551dd33a55a4550f77dfa98ccbbc0fd languageName: node linkType: hard From 07ad3155a885c5ce467ea9fdd8e88a8d6a25ac28 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 12:06:43 +0000 Subject: [PATCH 046/194] fix(deps): update dependency @roadiehq/backstage-plugin-travis-ci to v2.1.11 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c0e50f93b1..9551d56c4b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14432,8 +14432,8 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-travis-ci@npm:^2.0.5": - version: 2.1.10 - resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.10" + version: 2.1.11 + resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.11" dependencies: "@backstage/catalog-model": ^1.3.0 "@backstage/core-components": ^0.13.1 @@ -14453,7 +14453,7 @@ __metadata: react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 974422b46513af167bb34057e196cd27bb48224690a16f9f42540fe8c85ddc51201fc71fc1ded023825932b4fcbdb3787a3dab74ce174c4694db9f3d2d465921 + checksum: 1da335f35de55e77bafdf4893fd1a66d3fa5b5adc05a6d88a97b484bd4c4a5ac3c23e6a2104ceef64fcbdf45f950d489536ceb3ec01e0f3f51dbae9392159a62 languageName: node linkType: hard From 59fe41f4da1766107d0dca5e4353721c8a0f3756 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 12:07:09 +0000 Subject: [PATCH 047/194] fix(deps): update dependency @uiw/react-codemirror to v4.21.5 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index c0e50f93b1..8fed326263 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18127,9 +18127,9 @@ __metadata: languageName: node linkType: hard -"@uiw/codemirror-extensions-basic-setup@npm:4.21.3": - version: 4.21.3 - resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.21.3" +"@uiw/codemirror-extensions-basic-setup@npm:4.21.5": + version: 4.21.5 + resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.21.5" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/commands": ^6.0.0 @@ -18146,19 +18146,19 @@ __metadata: "@codemirror/search": ">=6.0.0" "@codemirror/state": ">=6.0.0" "@codemirror/view": ">=6.0.0" - checksum: 6e6081c363391192c9f83c8277cc6e9de15ac6d9ad54a1318a165dae17a0ac944c2ed0fac6c955cf89dfefbd2c66ccac4ca43a085002dd70f580a02ca725fd46 + checksum: 8684dbc75c37b9942a1545914378291203feda78ff7196fdf50584f5bdf6176b4387a2b1d7f911dde2fdec108aefcf40273497ba8725ae10a69b264e9e6633ac languageName: node linkType: hard "@uiw/react-codemirror@npm:^4.9.3": - version: 4.21.3 - resolution: "@uiw/react-codemirror@npm:4.21.3" + version: 4.21.5 + resolution: "@uiw/react-codemirror@npm:4.21.5" dependencies: "@babel/runtime": ^7.18.6 "@codemirror/commands": ^6.1.0 "@codemirror/state": ^6.1.1 "@codemirror/theme-one-dark": ^6.0.0 - "@uiw/codemirror-extensions-basic-setup": 4.21.3 + "@uiw/codemirror-extensions-basic-setup": 4.21.5 codemirror: ^6.0.0 peerDependencies: "@babel/runtime": ">=7.11.0" @@ -18168,7 +18168,7 @@ __metadata: codemirror: ">=6.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 7864f63b23283c2cab85e1bfce6cc00b0cd8787867ad878b359fa047676f70eac0b96d68d98dc0925ed8b2f6ba4e1cc4ee7196ddc70053bacbd5ca0948e67944 + checksum: b3c8c9134b1e8520488682be0a711bbe3283e1323673ed9b0a1a53ee572684311d9a495c73b572e226963b6d0f235215f5da87ef9ab194ee7e6e6ffd74340211 languageName: node linkType: hard From f06f0e46ba882fec8e575d8908d5561edbb5a41a Mon Sep 17 00:00:00 2001 From: Aramis Date: Sun, 4 Jun 2023 16:33:32 -0400 Subject: [PATCH 048/194] feat(catalog-plugin): Add support for setting placeholder resolvers. Signed-off-by: Aramis --- .changeset/sour-humans-begin.md | 6 +++++ plugins/catalog-backend/api-report.md | 8 +++--- .../src/modules/core/PlaceholderProcessor.ts | 20 +++++++++++--- .../src/service/CatalogPlugin.ts | 18 +++++++++++++ plugins/catalog-node/alpha-api-report.md | 3 +++ plugins/catalog-node/api-report.md | 24 +++++++++++++++++ plugins/catalog-node/src/extensions.ts | 2 ++ plugins/catalog-node/src/processing/index.ts | 8 +++++- plugins/catalog-node/src/processing/types.ts | 26 +++++++++++++++++++ 9 files changed, 106 insertions(+), 9 deletions(-) create mode 100644 .changeset/sour-humans-begin.md diff --git a/.changeset/sour-humans-begin.md b/.changeset/sour-humans-begin.md new file mode 100644 index 0000000000..1f090f1c89 --- /dev/null +++ b/.changeset/sour-humans-begin.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend': minor +'@backstage/plugin-catalog-node': minor +--- + +Support placeholder resolvers in the CatalogPlugin, also moves `PlaceholderResolver` and related types from `@backstage/plugin-catalog-backend` to `@backstage/plugin-catalog-node`. diff --git a/plugins/catalog-backend/api-report.md b/plugins/catalog-backend/api-report.md index 3e97442dd4..84d8de4753 100644 --- a/plugins/catalog-backend/api-report.md +++ b/plugins/catalog-backend/api-report.md @@ -410,12 +410,12 @@ export type PlaceholderProcessorOptions = { integrations: ScmIntegrationRegistry; }; -// @public (undocumented) +// @public @deprecated (undocumented) export type PlaceholderResolver = ( params: PlaceholderResolverParams, ) => Promise; -// @public (undocumented) +// @public @deprecated (undocumented) export type PlaceholderResolverParams = { key: string; value: JsonValue; @@ -425,10 +425,10 @@ export type PlaceholderResolverParams = { emit: CatalogProcessorEmit_2; }; -// @public (undocumented) +// @public @deprecated (undocumented) export type PlaceholderResolverRead = (url: string) => Promise; -// @public (undocumented) +// @public @deprecated (undocumented) export type PlaceholderResolverResolveUrl = ( url: string, base: string, diff --git a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts index 79fcee960c..ee61e931e3 100644 --- a/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts +++ b/plugins/catalog-backend/src/modules/core/PlaceholderProcessor.ts @@ -26,16 +26,25 @@ import { processingResult, } from '@backstage/plugin-catalog-node'; -/** @public */ +/** + * @public + * @deprecated Use the exported value from `@backstage/plugin-catalog-node` instead. + */ export type PlaceholderResolverRead = (url: string) => Promise; -/** @public */ +/** + * @public + * @deprecated Use the exported value from `@backstage/plugin-catalog-node` instead. + */ export type PlaceholderResolverResolveUrl = ( url: string, base: string, ) => string; -/** @public */ +/** + * @public + * @deprecated Use the exported value from `@backstage/plugin-catalog-node` instead. + */ export type PlaceholderResolverParams = { key: string; value: JsonValue; @@ -45,7 +54,10 @@ export type PlaceholderResolverParams = { emit: CatalogProcessorEmit; }; -/** @public */ +/** + * @public + * @deprecated Use the exported value from `@backstage/plugin-catalog-node` instead. + */ export type PlaceholderResolver = ( params: PlaceholderResolverParams, ) => Promise; diff --git a/plugins/catalog-backend/src/service/CatalogPlugin.ts b/plugins/catalog-backend/src/service/CatalogPlugin.ts index e0399c1683..d77b034517 100644 --- a/plugins/catalog-backend/src/service/CatalogPlugin.ts +++ b/plugins/catalog-backend/src/service/CatalogPlugin.ts @@ -27,10 +27,12 @@ import { EntityProvider, } from '@backstage/plugin-catalog-node'; import { loggerToWinstonLogger } from '@backstage/backend-common'; +import { PlaceholderResolver } from '../modules'; class CatalogExtensionPointImpl implements CatalogProcessingExtensionPoint { #processors = new Array(); #entityProviders = new Array(); + #placeholderResolvers: Record = {}; addProcessor( ...processors: Array> @@ -44,6 +46,14 @@ class CatalogExtensionPointImpl implements CatalogProcessingExtensionPoint { this.#entityProviders.push(...providers.flat()); } + addPlaceholderResolver(key: string, resolver: PlaceholderResolver) { + if (key in this.#placeholderResolvers) + throw new Error( + `A placeholder resolver for '${key}' has already been set up, please check your config.`, + ); + this.#placeholderResolvers[key] = resolver; + } + get processors() { return this.#processors; } @@ -51,6 +61,10 @@ class CatalogExtensionPointImpl implements CatalogProcessingExtensionPoint { get entityProviders() { return this.#entityProviders; } + + get placeholderResolvers() { + return this.#placeholderResolvers; + } } /** @@ -99,6 +113,10 @@ export const catalogPlugin = createBackendPlugin({ }); builder.addProcessor(...processingExtensions.processors); builder.addEntityProvider(...processingExtensions.entityProviders); + Object.entries(processingExtensions.placeholderResolvers).forEach( + ([key, resolver]) => builder.setPlaceholderResolver(key, resolver), + ); + const { processingEngine, router } = await builder.build(); await processingEngine.start(); diff --git a/plugins/catalog-node/alpha-api-report.md b/plugins/catalog-node/alpha-api-report.md index ba1bcd47b2..082228a58e 100644 --- a/plugins/catalog-node/alpha-api-report.md +++ b/plugins/catalog-node/alpha-api-report.md @@ -7,6 +7,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { CatalogProcessor } from '@backstage/plugin-catalog-node'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; +import { PlaceholderResolver } from '@backstage/plugin-catalog-node'; import { ServiceRef } from '@backstage/backend-plugin-api'; // @alpha (undocumented) @@ -16,6 +17,8 @@ export interface CatalogProcessingExtensionPoint { ...providers: Array> ): void; // (undocumented) + addPlaceholderResolver(key: string, resolver: PlaceholderResolver): void; + // (undocumented) addProcessor( ...processors: Array> ): void; diff --git a/plugins/catalog-node/api-report.md b/plugins/catalog-node/api-report.md index 47a8e66ca9..34d7a4bc9b 100644 --- a/plugins/catalog-node/api-report.md +++ b/plugins/catalog-node/api-report.md @@ -152,6 +152,30 @@ export function locationSpecToLocationEntity(opts: { // @public export function locationSpecToMetadataName(location: LocationSpec_2): string; +// @public (undocumented) +export type PlaceholderResolver = ( + params: PlaceholderResolverParams, +) => Promise; + +// @public (undocumented) +export type PlaceholderResolverParams = { + key: string; + value: JsonValue; + baseUrl: string; + read: PlaceholderResolverRead; + resolveUrl: PlaceholderResolverResolveUrl; + emit: CatalogProcessorEmit; +}; + +// @public (undocumented) +export type PlaceholderResolverRead = (url: string) => Promise; + +// @public (undocumented) +export type PlaceholderResolverResolveUrl = ( + url: string, + base: string, +) => string; + // @public export const processingResult: Readonly<{ readonly notFoundError: ( diff --git a/plugins/catalog-node/src/extensions.ts b/plugins/catalog-node/src/extensions.ts index 0466af36b0..5225ad7545 100644 --- a/plugins/catalog-node/src/extensions.ts +++ b/plugins/catalog-node/src/extensions.ts @@ -17,6 +17,7 @@ import { createExtensionPoint } from '@backstage/backend-plugin-api'; import { EntityProvider, CatalogProcessor, + PlaceholderResolver, } from '@backstage/plugin-catalog-node'; /** @@ -29,6 +30,7 @@ export interface CatalogProcessingExtensionPoint { addEntityProvider( ...providers: Array> ): void; + addPlaceholderResolver(key: string, resolver: PlaceholderResolver): void; } /** diff --git a/plugins/catalog-node/src/processing/index.ts b/plugins/catalog-node/src/processing/index.ts index 90b87aa850..40cee63e25 100644 --- a/plugins/catalog-node/src/processing/index.ts +++ b/plugins/catalog-node/src/processing/index.ts @@ -14,4 +14,10 @@ * limitations under the License. */ -export type { DeferredEntity } from './types'; +export type { + DeferredEntity, + PlaceholderResolver, + PlaceholderResolverParams, + PlaceholderResolverRead, + PlaceholderResolverResolveUrl, +} from './types'; diff --git a/plugins/catalog-node/src/processing/types.ts b/plugins/catalog-node/src/processing/types.ts index 25e76faea3..b98e2da1b7 100644 --- a/plugins/catalog-node/src/processing/types.ts +++ b/plugins/catalog-node/src/processing/types.ts @@ -15,6 +15,8 @@ */ import { Entity } from '@backstage/catalog-model'; +import { JsonValue } from '@backstage/types'; +import { CatalogProcessorEmit } from '../api'; /** * Entities that are not yet processed. @@ -24,3 +26,27 @@ export type DeferredEntity = { entity: Entity; locationKey?: string; }; + +/** @public */ +export type PlaceholderResolverRead = (url: string) => Promise; + +/** @public */ +export type PlaceholderResolverResolveUrl = ( + url: string, + base: string, +) => string; + +/** @public */ +export type PlaceholderResolverParams = { + key: string; + value: JsonValue; + baseUrl: string; + read: PlaceholderResolverRead; + resolveUrl: PlaceholderResolverResolveUrl; + emit: CatalogProcessorEmit; +}; + +/** @public */ +export type PlaceholderResolver = ( + params: PlaceholderResolverParams, +) => Promise; From 5969639fd07581e6b159b33f69067347597fa362 Mon Sep 17 00:00:00 2001 From: Heikki Hellgren Date: Thu, 15 Jun 2023 14:20:40 +0300 Subject: [PATCH 049/194] feat: allow specifying custom title for DevToolsLayout Signed-off-by: Heikki Hellgren --- .changeset/angry-phones-wash.md | 5 +++++ plugins/devtools/api-report.md | 4 +++- .../src/components/DevToolsLayout/DevToolsLayout.tsx | 10 ++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 .changeset/angry-phones-wash.md diff --git a/.changeset/angry-phones-wash.md b/.changeset/angry-phones-wash.md new file mode 100644 index 0000000000..ac59a924a2 --- /dev/null +++ b/.changeset/angry-phones-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-devtools': patch +--- + +Allow specifying custom title for `DevToolsLayout` diff --git a/plugins/devtools/api-report.md b/plugins/devtools/api-report.md index c9cfbf77e5..3e3fb99ff7 100644 --- a/plugins/devtools/api-report.md +++ b/plugins/devtools/api-report.md @@ -15,12 +15,14 @@ export const ConfigContent: () => JSX.Element; // @public export const DevToolsLayout: { - ({ children }: DevToolsLayoutProps): JSX.Element; + ({ children, title, subtitle }: DevToolsLayoutProps): JSX.Element; Route: (props: SubRoute) => null; }; // @public (undocumented) export type DevToolsLayoutProps = { + title?: string; + subtitle?: string; children?: default_2.ReactNode; }; diff --git a/plugins/devtools/src/components/DevToolsLayout/DevToolsLayout.tsx b/plugins/devtools/src/components/DevToolsLayout/DevToolsLayout.tsx index 12cd3f7666..ae9a337ced 100644 --- a/plugins/devtools/src/components/DevToolsLayout/DevToolsLayout.tsx +++ b/plugins/devtools/src/components/DevToolsLayout/DevToolsLayout.tsx @@ -40,6 +40,8 @@ attachComponentData(Route, 'core.gatherMountPoints', true); /** @public */ export type DevToolsLayoutProps = { + title?: string; + subtitle?: string; children?: React.ReactNode; }; @@ -56,7 +58,11 @@ export type DevToolsLayoutProps = { * ``` * @public */ -export const DevToolsLayout = ({ children }: DevToolsLayoutProps) => { +export const DevToolsLayout = ({ + children, + title, + subtitle, +}: DevToolsLayoutProps) => { const routes = useElementFilter(children, elements => elements .selectByComponentData({ @@ -70,7 +76,7 @@ export const DevToolsLayout = ({ children }: DevToolsLayoutProps) => { return ( -
+
); From a011d2316a582019f386b17ab864009142c45bc7 Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Thu, 22 Jun 2023 15:10:44 -0500 Subject: [PATCH 050/194] fix(core-components): Fix keyboard navigation & focus highlight on Select component. Signed-off-by: Carlos Esteban Lopez --- .changeset/twenty-seas-float.md | 5 +++++ packages/core-components/src/components/Select/Select.tsx | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/twenty-seas-float.md diff --git a/.changeset/twenty-seas-float.md b/.changeset/twenty-seas-float.md new file mode 100644 index 0000000000..3ee79ba4e5 --- /dev/null +++ b/.changeset/twenty-seas-float.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': patch +--- + +Fix keyboard navigation & focus highlight on Select component. diff --git a/packages/core-components/src/components/Select/Select.tsx b/packages/core-components/src/components/Select/Select.tsx index dbf5601112..918ce301fb 100644 --- a/packages/core-components/src/components/Select/Select.tsx +++ b/packages/core-components/src/components/Select/Select.tsx @@ -43,6 +43,9 @@ const BootstrapInput = withStyles( 'label + &': { marginTop: theme.spacing(3), }, + '&.Mui-focused > div[role=button]': { + borderColor: theme.palette.primary.main, + }, }, input: { borderRadius: theme.shape.borderRadius, @@ -75,7 +78,7 @@ const useStyles = makeStyles( (theme: Theme) => createStyles({ formControl: { - margin: `${theme.spacing(1)} 0px`, + margin: theme.spacing(1, 0), maxWidth: 300, }, label: { @@ -212,7 +215,6 @@ export function SelectComponent(props: SelectProps) { onClose={handleClose} input={} label={label} - tabIndex={0} renderValue={s => multiple && (value as any[]).length !== 0 ? ( From cf560401c83cda4fdb31d365951ae203966e871d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:24:19 +0000 Subject: [PATCH 051/194] fix(deps): update dependency eslint-plugin-jest to v27.2.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2537b094eb..cec2efc967 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24156,19 +24156,20 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^27.0.0": - version: 27.2.1 - resolution: "eslint-plugin-jest@npm:27.2.1" + version: 27.2.2 + resolution: "eslint-plugin-jest@npm:27.2.2" dependencies: "@typescript-eslint/utils": ^5.10.0 peerDependencies: "@typescript-eslint/eslint-plugin": ^5.0.0 eslint: ^7.0.0 || ^8.0.0 + jest: "*" peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true jest: optional: true - checksum: 579a4d26304cc6748b2e6dff6c965ea7a21b618d8b051eb02727d25cf5c7767f6db8ef5237531635ff77e242b983b973e7cb8c820a4d20d5bda73358c452a8ab + checksum: 98b63252d985f5dedf36ce9587dd4a0d24daf71ca8a997258343402c0d33ddd5070502378dafd9ac7fc0ef2e0d557b5c77f18e09ad73c71a52de8061db88293f languageName: node linkType: hard From 015439b5b6ca51d3674ab107710e063b74322056 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 14:24:41 +0000 Subject: [PATCH 052/194] fix(deps): update dependency rc-progress to v3.4.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .changeset/renovate-f316d5e.md | 7 +++++++ packages/core-components/package.json | 2 +- plugins/codescene/package.json | 2 +- plugins/sonarqube/package.json | 2 +- yarn.lock | 20 +++++++++++++++++--- 5 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 .changeset/renovate-f316d5e.md diff --git a/.changeset/renovate-f316d5e.md b/.changeset/renovate-f316d5e.md new file mode 100644 index 0000000000..bd390b9408 --- /dev/null +++ b/.changeset/renovate-f316d5e.md @@ -0,0 +1,7 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-codescene': patch +'@backstage/plugin-sonarqube': patch +--- + +Updated dependency `rc-progress` to `3.4.2`. diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 57eee79dad..9ed778b1d4 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -60,7 +60,7 @@ "pluralize": "^8.0.0", "prop-types": "^15.7.2", "qs": "^6.9.4", - "rc-progress": "3.4.1", + "rc-progress": "3.4.2", "react-helmet": "6.1.0", "react-hook-form": "^7.12.2", "react-markdown": "^8.0.0", diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 101d54f4ec..aa0119e2c9 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -30,7 +30,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "rc-progress": "3.4.1", + "rc-progress": "3.4.2", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 106bf409d7..ee126df343 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -47,7 +47,7 @@ "@material-ui/styles": "^4.10.0", "cross-fetch": "^3.1.5", "luxon": "^3.0.0", - "rc-progress": "3.4.1", + "rc-progress": "3.4.2", "react-use": "^17.2.4" }, "peerDependencies": { diff --git a/yarn.lock b/yarn.lock index 2537b094eb..cd4cb6ee3d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4176,7 +4176,7 @@ __metadata: pluralize: ^8.0.0 prop-types: ^15.7.2 qs: ^6.9.4 - rc-progress: 3.4.1 + rc-progress: 3.4.2 react-helmet: 6.1.0 react-hook-form: ^7.12.2 react-markdown: ^8.0.0 @@ -6072,7 +6072,7 @@ __metadata: "@types/node": "*" "@types/react": ^16.13.1 || ^17.0.0 msw: ^1.0.0 - rc-progress: 3.4.1 + rc-progress: 3.4.2 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 @@ -8898,7 +8898,7 @@ __metadata: cross-fetch: ^3.1.5 luxon: ^3.0.0 msw: ^1.0.0 - rc-progress: 3.4.1 + rc-progress: 3.4.2 react-use: ^17.2.4 peerDependencies: react: ^16.13.1 || ^17.0.0 @@ -35687,6 +35687,20 @@ __metadata: languageName: node linkType: hard +"rc-progress@npm:3.4.2": + version: 3.4.2 + resolution: "rc-progress@npm:3.4.2" + dependencies: + "@babel/runtime": ^7.10.1 + classnames: ^2.2.6 + rc-util: ^5.16.1 + peerDependencies: + react: ">=16.9.0" + react-dom: ">=16.9.0" + checksum: 738aa7a7d00c1a550884bcfa55e0a55bad799f97207889bc9b43c17d2c1b66b6a42e75d635a1c6cdb1696d01f8dddcf8d7d0656356b5871b46b63343db96777b + languageName: node + linkType: hard + "rc-util@npm:^5.16.1": version: 5.16.1 resolution: "rc-util@npm:5.16.1" From 851a355b0919be2e3f622f02b9621dd9aa08e9cc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 15:15:46 +0000 Subject: [PATCH 053/194] fix(deps): update octokit monorepo Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/yarn.lock b/yarn.lock index cec2efc967..697b463991 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13630,8 +13630,8 @@ __metadata: linkType: hard "@octokit/oauth-app@npm:^4.0.7, @octokit/oauth-app@npm:^4.2.0, @octokit/oauth-app@npm:^4.2.1": - version: 4.2.2 - resolution: "@octokit/oauth-app@npm:4.2.2" + version: 4.2.4 + resolution: "@octokit/oauth-app@npm:4.2.4" dependencies: "@octokit/auth-oauth-app": ^5.0.0 "@octokit/auth-oauth-user": ^2.0.0 @@ -13642,7 +13642,7 @@ __metadata: "@types/aws-lambda": ^8.10.83 fromentries: ^1.3.1 universal-user-agent: ^6.0.0 - checksum: a15a849fce7c9b95d3d28583ee20a3a6b4df3d972bf65506204e05ef36998b8bc3359f918524b090157153fb3461e222b7094894bd85374159e84ad774f06ccd + checksum: 6d9798c9e63e84f3cb3031ac3f06f45c6ea053fd201be9a07a508786fd400479d7d9f6f85707d0fff7f094a265c7e966a2fa4c884001b99f02ddd927bf499d06 languageName: node linkType: hard @@ -13775,14 +13775,14 @@ __metadata: languageName: node linkType: hard -"@octokit/request-error@npm:^3.0.0": - version: 3.0.1 - resolution: "@octokit/request-error@npm:3.0.1" +"@octokit/request-error@npm:^3.0.0, @octokit/request-error@npm:^v3.0.3": + version: 3.0.3 + resolution: "@octokit/request-error@npm:3.0.3" dependencies: - "@octokit/types": ^7.0.0 + "@octokit/types": ^9.0.0 deprecation: ^2.0.0 once: ^1.4.0 - checksum: ae386b5181b3cb66b844047a21d062b683cd7ec4daf70cb9868406c1a51608a72d683955e692c7cc6237d66a09b12c6bcf102a712985da68bcedcc3820117e75 + checksum: 5db0b514732686b627e6ed9ef1ccdbc10501f1b271a9b31f784783f01beee70083d7edcfeb35fbd7e569fa31fdd6762b1ff6b46101700d2d97e7e48e749520d0 languageName: node linkType: hard @@ -13801,8 +13801,8 @@ __metadata: linkType: hard "@octokit/request@npm:^6.0.0": - version: 6.2.6 - resolution: "@octokit/request@npm:6.2.6" + version: 6.2.8 + resolution: "@octokit/request@npm:6.2.8" dependencies: "@octokit/endpoint": ^7.0.0 "@octokit/request-error": ^3.0.0 @@ -13810,19 +13810,19 @@ __metadata: is-plain-object: ^5.0.0 node-fetch: ^2.6.7 universal-user-agent: ^6.0.0 - checksum: 0732fb60e20b0348fc61d856c9e234038e34f9ce062b04b968df18c2f106da094055d55c93f653284298b03e6dac2ea5a4b5c5a97686b529ed30447bd37f2773 + checksum: 3747106f50d7c462131ff995b13defdd78024b7becc40283f4ac9ea0af2391ff33a0bb476a05aa710346fe766d20254979079a1d6f626112015ba271fe38f3e2 languageName: node linkType: hard "@octokit/rest@npm:^19.0.3": - version: 19.0.11 - resolution: "@octokit/rest@npm:19.0.11" + version: 19.0.13 + resolution: "@octokit/rest@npm:19.0.13" dependencies: "@octokit/core": ^4.2.1 "@octokit/plugin-paginate-rest": ^6.1.2 "@octokit/plugin-request-log": ^1.0.4 "@octokit/plugin-rest-endpoint-methods": ^7.1.2 - checksum: 147518ad51d214ead88adc717b5fdc4f33317949d58c124f4069bdf07d2e6b49fa66861036b9e233aed71fcb88ff367a6da0357653484e466175ab4fb7183b3b + checksum: ca1553e3fe46efabffef60e68e4a228d4cc0f0d545daf7f019560f666d3e934c6f3a6402a42bbd786af4f3c0a6e69380776312f01b7d52998fe1bbdd1b068f69 languageName: node linkType: hard @@ -33189,8 +33189,8 @@ __metadata: linkType: hard "octokit@npm:^2.0.0, octokit@npm:^2.0.4": - version: 2.0.19 - resolution: "octokit@npm:2.0.19" + version: 2.1.0 + resolution: "octokit@npm:2.1.0" dependencies: "@octokit/app": ^13.1.5 "@octokit/core": ^4.2.1 @@ -33199,8 +33199,9 @@ __metadata: "@octokit/plugin-rest-endpoint-methods": ^7.1.1 "@octokit/plugin-retry": ^4.1.3 "@octokit/plugin-throttling": ^5.2.2 + "@octokit/request-error": ^v3.0.3 "@octokit/types": ^9.2.2 - checksum: cc0acd5427a3dc25f70ca0ffd2e828cc7bcd51c7e4586caf06e40353f87084addd4ed6df59d441b087b9cf597540069d21bc75c27b2836e78a59e5f9f3fbec38 + checksum: 612f3c40c0d8d330793476066fcf2a6ed77ad52690201d7c2df11044c4b3dfbefefbe13443ac4037a2128c6f13d59a2f481bc0b315b1bc650e5ff6da9a811e61 languageName: node linkType: hard From 7bdc8471d2d4e6a80faaff0e0f36b581231e1fd6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 26 Jun 2023 15:51:13 +0000 Subject: [PATCH 054/194] chore(deps): update dependency @storybook/testing-library to ^0.2.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- storybook/package.json | 2 +- storybook/yarn.lock | 556 +++++++++++++++++------------------------ 2 files changed, 230 insertions(+), 328 deletions(-) diff --git a/storybook/package.json b/storybook/package.json index 6f2161b64c..0f88ae634c 100644 --- a/storybook/package.json +++ b/storybook/package.json @@ -25,7 +25,7 @@ "@storybook/manager-webpack5": "^6.5.9", "@storybook/node-logger": "^6.5.9", "@storybook/react": "^6.5.9", - "@storybook/testing-library": "^0.1.0", + "@storybook/testing-library": "^0.2.0", "storybook-dark-mode": "^1.1.0", "typescript": "~4.7.0" }, diff --git a/storybook/yarn.lock b/storybook/yarn.lock index cc6dbbc07b..b72656352f 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -386,7 +386,7 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.18.11, @babel/parser@npm:^7.20.7": +"@babel/parser@npm:^7.12.11, @babel/parser@npm:^7.12.7, @babel/parser@npm:^7.18.10, @babel/parser@npm:^7.18.11": version: 7.21.4 resolution: "@babel/parser@npm:7.21.4" bin: @@ -1528,7 +1528,7 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.12.11, @babel/types@npm:^7.12.7, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.3.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": +"@babel/types@npm:^7.12.11, @babel/types@npm:^7.12.7, @babel/types@npm:^7.18.10, @babel/types@npm:^7.18.6, @babel/types@npm:^7.18.9, @babel/types@npm:^7.2.0, @babel/types@npm:^7.4.4, @babel/types@npm:^7.8.3": version: 7.21.4 resolution: "@babel/types@npm:7.21.4" dependencies: @@ -2130,20 +2130,6 @@ __metadata: languageName: node linkType: hard -"@storybook/channel-postmessage@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/channel-postmessage@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/global": ^5.0.0 - qs: ^6.10.0 - telejson: ^7.0.3 - checksum: ef175027b4b5794af263c6ec40f6caab02deb3c189598493f5612cd5745d9cada1427914dbf39aef01dbf3e71f4299d35cfcaaaad727c06da47850b56044032c - languageName: node - linkType: hard - "@storybook/channel-websocket@npm:6.5.16": version: 6.5.16 resolution: "@storybook/channel-websocket@npm:6.5.16" @@ -2168,13 +2154,6 @@ __metadata: languageName: node linkType: hard -"@storybook/channels@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/channels@npm:7.0.2" - checksum: 34ff0481a7f8bf613a9b1c9ffc3db4e48e8c80fea29d66b68a9c3b74d52040d87a5ed002d0e3e287813f33ad607440d46078e5e96367bf98713c72efb587d4a3 - languageName: node - linkType: hard - "@storybook/client-api@npm:6.5.16": version: 6.5.16 resolution: "@storybook/client-api@npm:6.5.16" @@ -2216,15 +2195,6 @@ __metadata: languageName: node linkType: hard -"@storybook/client-logger@npm:7.0.2, @storybook/client-logger@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": - version: 7.0.2 - resolution: "@storybook/client-logger@npm:7.0.2" - dependencies: - "@storybook/global": ^5.0.0 - checksum: 3deb50e8cde7777025753938e21318ee34c10237e29664cfb2dfd08f70d84b073961e1b546629e536ef53f26a91a9aed2c83223d7cfe1680787ecee7e39ce8a8 - languageName: node - linkType: hard - "@storybook/components@npm:6.5.16, @storybook/components@npm:^6.0.0": version: 6.5.16 resolution: "@storybook/components@npm:6.5.16" @@ -2352,13 +2322,6 @@ __metadata: languageName: node linkType: hard -"@storybook/core-events@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/core-events@npm:7.0.2" - checksum: 5bca4db82f582b939ba1aaba26aee3e8f9aa0a2d36728934b4d26dbe858b6f455a46ddcf4e8e6c7b3f5fa5b517716c503626febca08e53712d516f2ca105bf11 - languageName: node - linkType: hard - "@storybook/core-server@npm:6.5.16": version: 6.5.16 resolution: "@storybook/core-server@npm:6.5.16" @@ -2479,15 +2442,6 @@ __metadata: languageName: node linkType: hard -"@storybook/csf@npm:^0.1.0": - version: 0.1.0 - resolution: "@storybook/csf@npm:0.1.0" - dependencies: - type-fest: ^2.19.0 - checksum: f1784f2aff27d5c27ab897878b08e3b04a64e7f62da1ea95fd11bfe9f558300e55f0d483d58282e8254a4b4e8935201178e70c264ccc96104c67403215d651f0 - languageName: node - linkType: hard - "@storybook/docs-tools@npm:6.5.16": version: 6.5.16 resolution: "@storybook/docs-tools@npm:6.5.16" @@ -2503,26 +2457,6 @@ __metadata: languageName: node linkType: hard -"@storybook/global@npm:^5.0.0": - version: 5.0.0 - resolution: "@storybook/global@npm:5.0.0" - checksum: ede0ad35ec411fe31c61150dbd118fef344d1d0e72bf5d3502368e35cf68126f6b7ae4a0ab5e2ffe2f0baa3b4286f03ad069ba3e098e1725449ef08b7e154ba8 - languageName: node - linkType: hard - -"@storybook/instrumenter@npm:^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0": - version: 7.0.2 - resolution: "@storybook/instrumenter@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/global": ^5.0.0 - "@storybook/preview-api": 7.0.2 - checksum: 1f0fcd2fd6561030897558ee6fb363da23bbbc67f08d12204f885da9ffc90f180703b3fbd85f01758e0f7a066437ebd6af415d4eefcb9ddb1e8ad16fd37e3eae - languageName: node - linkType: hard - "@storybook/manager-webpack4@npm:6.5.16": version: 6.5.16 resolution: "@storybook/manager-webpack4@npm:6.5.16" @@ -2650,29 +2584,6 @@ __metadata: languageName: node linkType: hard -"@storybook/preview-api@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/preview-api@npm:7.0.2" - dependencies: - "@storybook/channel-postmessage": 7.0.2 - "@storybook/channels": 7.0.2 - "@storybook/client-logger": 7.0.2 - "@storybook/core-events": 7.0.2 - "@storybook/csf": ^0.1.0 - "@storybook/global": ^5.0.0 - "@storybook/types": 7.0.2 - "@types/qs": ^6.9.5 - dequal: ^2.0.2 - lodash: ^4.17.21 - memoizerific: ^1.11.3 - qs: ^6.10.0 - synchronous-promise: ^2.0.15 - ts-dedent: ^2.0.0 - util-deprecate: ^1.0.2 - checksum: 350811420c996c9616b59615fe2fe7785ec6590301ed3a6a54b07ca4b2bb45614f47b4cacf037c72ed1d7dd04a8647d0e99a4e2e0f23f91a0dc5d1e8f3486ee2 - languageName: node - linkType: hard - "@storybook/preview-web@npm:6.5.16": version: 6.5.16 resolution: "@storybook/preview-web@npm:6.5.16" @@ -2878,16 +2789,14 @@ __metadata: languageName: node linkType: hard -"@storybook/testing-library@npm:^0.1.0": - version: 0.1.0 - resolution: "@storybook/testing-library@npm:0.1.0" +"@storybook/testing-library@npm:^0.2.0": + version: 0.2.0 + resolution: "@storybook/testing-library@npm:0.2.0" dependencies: - "@storybook/client-logger": ^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0 - "@storybook/instrumenter": ^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0 - "@testing-library/dom": ^8.3.0 - "@testing-library/user-event": ^13.2.1 + "@testing-library/dom": ^9.0.0 + "@testing-library/user-event": ^14.0.0 ts-dedent: ^2.2.0 - checksum: a413110dafe80f8fe64da912fddb653bc3c695c94bd023b8cb918e519e9f94119bae559909bfb8ad229041a4f17a12b33425c61572270702c116d0b727b4d4ba + checksum: 1c1c16aea6f961de344f5d43bdfd2847bc5f44df1037c2e1383312bb6b842e2c17a805670fc9cfe1a8425f9e48e240fe5d025ab3d4802a198cfe9eb6ed8e7636 languageName: node linkType: hard @@ -2906,18 +2815,6 @@ __metadata: languageName: node linkType: hard -"@storybook/types@npm:7.0.2": - version: 7.0.2 - resolution: "@storybook/types@npm:7.0.2" - dependencies: - "@storybook/channels": 7.0.2 - "@types/babel__core": ^7.0.0 - "@types/express": ^4.7.0 - file-system-cache: ^2.0.0 - checksum: 329e271af5621619a8d17fff222e4170b62ca4b451bcb48b5a899d63bb8df211c5d3d8dafa2266ac3c9801bf64c4ac1aed73950a2f21da82333b19c448ea32e0 - languageName: node - linkType: hard - "@storybook/ui@npm:6.5.16": version: 6.5.16 resolution: "@storybook/ui@npm:6.5.16" @@ -3057,30 +2954,28 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^8.3.0": - version: 8.17.1 - resolution: "@testing-library/dom@npm:8.17.1" +"@testing-library/dom@npm:^9.0.0": + version: 9.3.1 + resolution: "@testing-library/dom@npm:9.3.1" dependencies: "@babel/code-frame": ^7.10.4 "@babel/runtime": ^7.12.5 - "@types/aria-query": ^4.2.0 - aria-query: ^5.0.0 + "@types/aria-query": ^5.0.1 + aria-query: 5.1.3 chalk: ^4.1.0 dom-accessibility-api: ^0.5.9 - lz-string: ^1.4.4 + lz-string: ^1.5.0 pretty-format: ^27.0.2 - checksum: e4df091fcf84c9eac4a6ee4c76674c1d562bf98732f0ac8820972d7718ab10397b672b9f082aace3cacd1f610fc77de6e1b6094e67afe1df0443bf22eb9deab2 + checksum: 8ee3136451644e39990edea93709c38cf1e8ce5306f3c66273ca00935963faa51ca74e8d92b02eb442ccb842cfa28ca62833e393e075eb269cf9bef6f5600663 languageName: node linkType: hard -"@testing-library/user-event@npm:^13.2.1": - version: 13.5.0 - resolution: "@testing-library/user-event@npm:13.5.0" - dependencies: - "@babel/runtime": ^7.12.5 +"@testing-library/user-event@npm:^14.0.0": + version: 14.4.3 + resolution: "@testing-library/user-event@npm:14.4.3" peerDependencies: "@testing-library/dom": ">=7.21.4" - checksum: 16319de685fbb7008f1ba667928f458b2d08196918002daca56996de80ef35e6d9de26e9e1ece7d00a004692b95a597cf9142fff0dc53f2f51606a776584f549 + checksum: 852c48ea6db1c9471b18276617c84fec4320771e466cd58339a732ca3fd73ad35e5a43ae14f51af51a8d0a150dcf60fcaab049ef367871207bea8f92c4b8195e languageName: node linkType: hard @@ -3091,70 +2986,10 @@ __metadata: languageName: node linkType: hard -"@types/aria-query@npm:^4.2.0": - version: 4.2.2 - resolution: "@types/aria-query@npm:4.2.2" - checksum: 6f2ce11d91e2d665f3873258db19da752d91d85d3679eb5efcdf9c711d14492287e1e4eb52613b28e60375841a9e428594e745b68436c963d8bad4bf72188df3 - languageName: node - linkType: hard - -"@types/babel__core@npm:^7.0.0": - version: 7.20.0 - resolution: "@types/babel__core@npm:7.20.0" - dependencies: - "@babel/parser": ^7.20.7 - "@babel/types": ^7.20.7 - "@types/babel__generator": "*" - "@types/babel__template": "*" - "@types/babel__traverse": "*" - checksum: 49b601a0a7637f1f387442c8156bd086cfd10ff4b82b0e1994e73a6396643b5435366fb33d6b604eade8467cca594ef97adcbc412aede90bb112ebe88d0ad6df - languageName: node - linkType: hard - -"@types/babel__generator@npm:*": - version: 7.6.4 - resolution: "@types/babel__generator@npm:7.6.4" - dependencies: - "@babel/types": ^7.0.0 - checksum: 20effbbb5f8a3a0211e95959d06ae70c097fb6191011b73b38fe86deebefad8e09ee014605e0fd3cdaedc73d158be555866810e9166e1f09e4cfd880b874dcb0 - languageName: node - linkType: hard - -"@types/babel__template@npm:*": - version: 7.4.1 - resolution: "@types/babel__template@npm:7.4.1" - dependencies: - "@babel/parser": ^7.1.0 - "@babel/types": ^7.0.0 - checksum: 649fe8b42c2876be1fd28c6ed9b276f78152d5904ec290b6c861d9ef324206e0a5c242e8305c421ac52ecf6358fa7e32ab7a692f55370484825c1df29b1596ee - languageName: node - linkType: hard - -"@types/babel__traverse@npm:*": - version: 7.18.3 - resolution: "@types/babel__traverse@npm:7.18.3" - dependencies: - "@babel/types": ^7.3.0 - checksum: d20953338b2f012ab7750932ece0a78e7d1645b0a6ff42d49be90f55e9998085da1374a9786a7da252df89555c6586695ba4d1d4b4e88ab2b9f306bcd35e00d3 - languageName: node - linkType: hard - -"@types/body-parser@npm:*": - version: 1.19.2 - resolution: "@types/body-parser@npm:1.19.2" - dependencies: - "@types/connect": "*" - "@types/node": "*" - checksum: e17840c7d747a549f00aebe72c89313d09fbc4b632b949b2470c5cb3b1cb73863901ae84d9335b567a79ec5efcfb8a28ff8e3f36bc8748a9686756b6d5681f40 - languageName: node - linkType: hard - -"@types/connect@npm:*": - version: 3.4.35 - resolution: "@types/connect@npm:3.4.35" - dependencies: - "@types/node": "*" - checksum: fe81351470f2d3165e8b12ce33542eef89ea893e36dd62e8f7d72566dfb7e448376ae962f9f3ea888547ce8b55a40020ca0e01d637fab5d99567673084542641 +"@types/aria-query@npm:^5.0.1": + version: 5.0.1 + resolution: "@types/aria-query@npm:5.0.1" + checksum: 69fd7cceb6113ed370591aef04b3fd0742e9a1b06dd045c43531448847b85de181495e4566f98e776b37c422a12fd71866e0a1dfd904c5ec3f84d271682901de languageName: node linkType: hard @@ -3192,29 +3027,6 @@ __metadata: languageName: node linkType: hard -"@types/express-serve-static-core@npm:^4.17.33": - version: 4.17.33 - resolution: "@types/express-serve-static-core@npm:4.17.33" - dependencies: - "@types/node": "*" - "@types/qs": "*" - "@types/range-parser": "*" - checksum: dce580d16b85f207445af9d4053d66942b27d0c72e86153089fa00feee3e96ae336b7bedb31ed4eea9e553c99d6dd356ed6e0928f135375d9f862a1a8015adf2 - languageName: node - linkType: hard - -"@types/express@npm:^4.7.0": - version: 4.17.17 - resolution: "@types/express@npm:4.17.17" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.33 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: 0196dacc275ac3ce89d7364885cb08e7fb61f53ca101f65886dbf1daf9b7eb05c0943e2e4bbd01b0cc5e50f37e0eea7e4cbe97d0304094411ac73e1b7998f4da - languageName: node - linkType: hard - "@types/glob@npm:*, @types/glob@npm:^7.1.1": version: 7.2.0 resolution: "@types/glob@npm:7.2.0" @@ -3285,13 +3097,6 @@ __metadata: languageName: node linkType: hard -"@types/mime@npm:*": - version: 3.0.1 - resolution: "@types/mime@npm:3.0.1" - checksum: 4040fac73fd0cea2460e29b348c1a6173da747f3a87da0dbce80dd7a9355a3d0e51d6d9a401654f3e5550620e3718b5a899b2ec1debf18424e298a2c605346e7 - languageName: node - linkType: hard - "@types/minimatch@npm:*": version: 3.0.5 resolution: "@types/minimatch@npm:3.0.5" @@ -3358,30 +3163,13 @@ __metadata: languageName: node linkType: hard -"@types/qs@npm:*, @types/qs@npm:^6.9.5": +"@types/qs@npm:^6.9.5": version: 6.9.7 resolution: "@types/qs@npm:6.9.7" checksum: 7fd6f9c25053e9b5bb6bc9f9f76c1d89e6c04f7707a7ba0e44cc01f17ef5284adb82f230f542c2d5557d69407c9a40f0f3515e8319afd14e1e16b5543ac6cdba languageName: node linkType: hard -"@types/range-parser@npm:*": - version: 1.2.4 - resolution: "@types/range-parser@npm:1.2.4" - checksum: b7c0dfd5080a989d6c8bb0b6750fc0933d9acabeb476da6fe71d8bdf1ab65e37c136169d84148034802f48378ab94e3c37bb4ef7656b2bec2cb9c0f8d4146a95 - languageName: node - linkType: hard - -"@types/serve-static@npm:*": - version: 1.15.1 - resolution: "@types/serve-static@npm:1.15.1" - dependencies: - "@types/mime": "*" - "@types/node": "*" - checksum: 2e078bdc1e458c7dfe69e9faa83cc69194b8896cce57cb745016580543c7ab5af07fdaa8ac1765eb79524208c81017546f66056f44d1204f812d72810613de36 - languageName: node - linkType: hard - "@types/source-list-map@npm:*": version: 0.1.2 resolution: "@types/source-list-map@npm:0.1.2" @@ -3871,10 +3659,12 @@ __metadata: languageName: node linkType: hard -"aria-query@npm:^5.0.0": - version: 5.0.0 - resolution: "aria-query@npm:5.0.0" - checksum: c41f98866c5a304561ee8cae55856711cddad6f3f85d8cb43cc5f79667078d9b8979ce32d244c1ff364e6463a4d0b6865804a33ccc717fed701b281cf7dc6296 +"aria-query@npm:5.1.3": + version: 5.1.3 + resolution: "aria-query@npm:5.1.3" + dependencies: + deep-equal: ^2.0.5 + checksum: 929ff95f02857b650fb4cbcd2f41072eee2f46159a6605ea03bf63aa572e35ffdff43d69e815ddc462e16e07de8faba3978afc2813650b4448ee18c9895d982b languageName: node linkType: hard @@ -3899,6 +3689,16 @@ __metadata: languageName: node linkType: hard +"array-buffer-byte-length@npm:^1.0.0": + version: 1.0.0 + resolution: "array-buffer-byte-length@npm:1.0.0" + dependencies: + call-bind: ^1.0.2 + is-array-buffer: ^3.0.1 + checksum: 044e101ce150f4804ad19c51d6c4d4cfa505c5b2577bd179256e4aa3f3f6a0a5e9874c78cd428ee566ac574c8a04d7ce21af9fe52e844abfdccb82b33035a7c3 + languageName: node + linkType: hard + "array-find-index@npm:^1.0.1": version: 1.0.2 resolution: "array-find-index@npm:1.0.2" @@ -4069,6 +3869,13 @@ __metadata: languageName: node linkType: hard +"available-typed-arrays@npm:^1.0.5": + version: 1.0.5 + resolution: "available-typed-arrays@npm:1.0.5" + checksum: 20eb47b3cefd7db027b9bbb993c658abd36d4edd3fe1060e83699a03ee275b0c9b216cc076ff3f2db29073225fb70e7613987af14269ac1fe2a19803ccc97f1a + languageName: node + linkType: hard + "axe-core@npm:^4.2.0": version: 4.4.3 resolution: "axe-core@npm:4.4.3" @@ -5192,6 +4999,32 @@ __metadata: languageName: node linkType: hard +"deep-equal@npm:^2.0.5": + version: 2.2.1 + resolution: "deep-equal@npm:2.2.1" + dependencies: + array-buffer-byte-length: ^1.0.0 + call-bind: ^1.0.2 + es-get-iterator: ^1.1.3 + get-intrinsic: ^1.2.0 + is-arguments: ^1.1.1 + is-array-buffer: ^3.0.2 + is-date-object: ^1.0.5 + is-regex: ^1.1.4 + is-shared-array-buffer: ^1.0.2 + isarray: ^2.0.5 + object-is: ^1.1.5 + object-keys: ^1.1.1 + object.assign: ^4.1.4 + regexp.prototype.flags: ^1.5.0 + side-channel: ^1.0.4 + which-boxed-primitive: ^1.0.2 + which-collection: ^1.0.1 + which-typed-array: ^1.1.9 + checksum: 561f0e001a07b2f1b80ff914d0b3d76964bbfc102f34c2128bc8039c0050e63b1a504a8911910e011d8cd1cd4b600a9686c049e327f4ef94420008efc42d25f4 + languageName: node + linkType: hard + "deep-is@npm:~0.1.3": version: 0.1.4 resolution: "deep-is@npm:0.1.4" @@ -5226,13 +5059,13 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3, define-properties@npm:^1.1.4": - version: 1.1.4 - resolution: "define-properties@npm:1.1.4" +"define-properties@npm:^1.1.2, define-properties@npm:^1.1.3, define-properties@npm:^1.1.4, define-properties@npm:^1.2.0": + version: 1.2.0 + resolution: "define-properties@npm:1.2.0" dependencies: has-property-descriptors: ^1.0.0 object-keys: ^1.1.1 - checksum: ce0aef3f9eb193562b5cfb79b2d2c86b6a109dfc9fdcb5f45d680631a1a908c06824ddcdb72b7573b54e26ace07f0a23420aaba0d5c627b34d2c1de8ef527e2b + checksum: e60aee6a19b102df4e2b1f301816804e81ab48bb91f00d0d935f269bf4b3f79c88b39e4f89eaa132890d23267335fd1140dfcd8d5ccd61031a0a2c41a54e33a6 languageName: node linkType: hard @@ -5292,13 +5125,6 @@ __metadata: languageName: node linkType: hard -"dequal@npm:^2.0.2": - version: 2.0.3 - resolution: "dequal@npm:2.0.3" - checksum: 8679b850e1a3d0ebbc46ee780d5df7b478c23f335887464023a631d1b9af051ad4a6595a44220f9ff8ff95a8ddccf019b5ad778a976fd7bbf77383d36f412f90 - languageName: node - linkType: hard - "destroy@npm:1.2.0": version: 1.2.0 resolution: "destroy@npm:1.2.0" @@ -5611,19 +5437,20 @@ __metadata: languageName: node linkType: hard -"es-get-iterator@npm:^1.0.2": - version: 1.1.2 - resolution: "es-get-iterator@npm:1.1.2" +"es-get-iterator@npm:^1.0.2, es-get-iterator@npm:^1.1.3": + version: 1.1.3 + resolution: "es-get-iterator@npm:1.1.3" dependencies: call-bind: ^1.0.2 - get-intrinsic: ^1.1.0 - has-symbols: ^1.0.1 - is-arguments: ^1.1.0 + get-intrinsic: ^1.1.3 + has-symbols: ^1.0.3 + is-arguments: ^1.1.1 is-map: ^2.0.2 is-set: ^2.0.2 - is-string: ^1.0.5 + is-string: ^1.0.7 isarray: ^2.0.5 - checksum: f75e66acb6a45686fa08b3ade9c9421a70d36a0c43ed4363e67f4d7aab2226cb73dd977cb48abbaf75721b946d3cd810682fcf310c7ad0867802fbf929b17dcf + stop-iteration-iterator: ^1.0.0 + checksum: 8fa118da42667a01a7c7529f8a8cca514feeff243feec1ce0bb73baaa3514560bd09d2b3438873cf8a5aaec5d52da248131de153b28e2638a061b6e4df13267d languageName: node linkType: hard @@ -5998,16 +5825,6 @@ __metadata: languageName: node linkType: hard -"file-system-cache@npm:^2.0.0": - version: 2.0.2 - resolution: "file-system-cache@npm:2.0.2" - dependencies: - fs-extra: ^11.1.0 - ramda: ^0.28.0 - checksum: ac4f9065132ac4593dbfb7c8fc4683cccc0f58823279763690fb3fca859cc5e6b4446c846af718354059695fa90db316be4ce19e16578bbb0feab4a9159e9fbc - languageName: node - linkType: hard - "fill-range@npm:^4.0.0": version: 4.0.0 resolution: "fill-range@npm:4.0.0" @@ -6122,6 +5939,15 @@ __metadata: languageName: node linkType: hard +"for-each@npm:^0.3.3": + version: 0.3.3 + resolution: "for-each@npm:0.3.3" + dependencies: + is-callable: ^1.1.3 + checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + languageName: node + linkType: hard + "for-in@npm:^1.0.2": version: 1.0.2 resolution: "for-in@npm:1.0.2" @@ -6237,17 +6063,6 @@ __metadata: languageName: node linkType: hard -"fs-extra@npm:^11.1.0": - version: 11.1.1 - resolution: "fs-extra@npm:11.1.1" - dependencies: - graceful-fs: ^4.2.0 - jsonfile: ^6.0.1 - universalify: ^2.0.0 - checksum: fb883c68245b2d777fbc1f2082c9efb084eaa2bbf9fddaa366130d196c03608eebef7fb490541276429ee1ca99f317e2d73e96f5ca0999eefedf5a624ae1edfd - languageName: node - linkType: hard - "fs-extra@npm:^9.0.0, fs-extra@npm:^9.0.1": version: 9.1.0 resolution: "fs-extra@npm:9.1.0" @@ -6321,7 +6136,7 @@ __metadata: languageName: node linkType: hard -"functions-have-names@npm:^1.2.2": +"functions-have-names@npm:^1.2.2, functions-have-names@npm:^1.2.3": version: 1.2.3 resolution: "functions-have-names@npm:1.2.3" checksum: c3f1f5ba20f4e962efb71344ce0a40722163e85bee2101ce25f88214e78182d2d2476aa85ef37950c579eb6cf6ee811c17b3101bb84004bb75655f3e33f3fdb5 @@ -6375,14 +6190,15 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.0, get-intrinsic@npm:^1.1.1": - version: 1.1.2 - resolution: "get-intrinsic@npm:1.1.2" +"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0": + version: 1.2.1 + resolution: "get-intrinsic@npm:1.2.1" dependencies: function-bind: ^1.1.1 has: ^1.0.3 + has-proto: ^1.0.1 has-symbols: ^1.0.3 - checksum: 252f45491f2ba88ebf5b38018020c7cc3279de54b1d67ffb70c0cdf1dfa8ab31cd56467b5d117a8b4275b7a4dde91f86766b163a17a850f036528a7b2faafb2b + checksum: 5b61d88552c24b0cf6fa2d1b3bc5459d7306f699de060d76442cce49a4721f52b8c560a33ab392cf5575b7810277d54ded9d4d39a1ea61855619ebc005aa7e5f languageName: node linkType: hard @@ -6544,6 +6360,15 @@ __metadata: languageName: node linkType: hard +"gopd@npm:^1.0.1": + version: 1.0.1 + resolution: "gopd@npm:1.0.1" + dependencies: + get-intrinsic: ^1.1.3 + checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 + languageName: node + linkType: hard + "graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": version: 4.2.10 resolution: "graceful-fs@npm:4.2.10" @@ -6608,7 +6433,14 @@ __metadata: languageName: node linkType: hard -"has-symbols@npm:^1.0.1, has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": +"has-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "has-proto@npm:1.0.1" + checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e + languageName: node + linkType: hard + +"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": version: 1.0.3 resolution: "has-symbols@npm:1.0.3" checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 @@ -7070,14 +6902,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.3": - version: 1.0.3 - resolution: "internal-slot@npm:1.0.3" +"internal-slot@npm:^1.0.3, internal-slot@npm:^1.0.4": + version: 1.0.5 + resolution: "internal-slot@npm:1.0.5" dependencies: - get-intrinsic: ^1.1.0 + get-intrinsic: ^1.2.0 has: ^1.0.3 side-channel: ^1.0.4 - checksum: 1944f92e981e47aebc98a88ff0db579fd90543d937806104d0b96557b10c1f170c51fb777b97740a8b6ddeec585fca8c39ae99fd08a8e058dfc8ab70937238bf + checksum: 97e84046bf9e7574d0956bd98d7162313ce7057883b6db6c5c7b5e5f05688864b0978ba07610c726d15d66544ffe4b1050107d93f8a39ebc59b15d8b429b497a languageName: node linkType: hard @@ -7146,7 +6978,7 @@ __metadata: languageName: node linkType: hard -"is-arguments@npm:^1.1.0": +"is-arguments@npm:^1.1.1": version: 1.1.1 resolution: "is-arguments@npm:1.1.1" dependencies: @@ -7156,6 +6988,17 @@ __metadata: languageName: node linkType: hard +"is-array-buffer@npm:^3.0.1, is-array-buffer@npm:^3.0.2": + version: 3.0.2 + resolution: "is-array-buffer@npm:3.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.2.0 + is-typed-array: ^1.1.10 + checksum: dcac9dda66ff17df9cabdc58214172bf41082f956eab30bb0d86bc0fab1e44b690fc8e1f855cf2481245caf4e8a5a006a982a71ddccec84032ed41f9d8da8c14 + languageName: node + linkType: hard + "is-arrayish@npm:^0.2.1": version: 0.2.1 resolution: "is-arrayish@npm:0.2.1" @@ -7205,10 +7048,10 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": - version: 1.2.4 - resolution: "is-callable@npm:1.2.4" - checksum: 1a28d57dc435797dae04b173b65d6d1e77d4f16276e9eff973f994eadcfdc30a017e6a597f092752a083c1103cceb56c91e3dadc6692fedb9898dfaba701575f +"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.4": + version: 1.2.7 + resolution: "is-callable@npm:1.2.7" + checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac languageName: node linkType: hard @@ -7239,7 +7082,7 @@ __metadata: languageName: node linkType: hard -"is-date-object@npm:^1.0.1": +"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" dependencies: @@ -7372,7 +7215,7 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.2": +"is-map@npm:^2.0.1, is-map@npm:^2.0.2": version: 2.0.2 resolution: "is-map@npm:2.0.2" checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 @@ -7451,7 +7294,7 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.2": +"is-set@npm:^2.0.1, is-set@npm:^2.0.2": version: 2.0.2 resolution: "is-set@npm:2.0.2" checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 @@ -7492,6 +7335,19 @@ __metadata: languageName: node linkType: hard +"is-typed-array@npm:^1.1.10": + version: 1.1.10 + resolution: "is-typed-array@npm:1.1.10" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + checksum: aac6ecb59d4c56a1cdeb69b1f129154ef462bbffe434cb8a8235ca89b42f258b7ae94073c41b3cb7bce37f6a1733ad4499f07882d5d5093a7ba84dfc4ebb8017 + languageName: node + linkType: hard + "is-utf8@npm:^0.2.0": version: 0.2.1 resolution: "is-utf8@npm:0.2.1" @@ -7499,6 +7355,13 @@ __metadata: languageName: node linkType: hard +"is-weakmap@npm:^2.0.1": + version: 2.0.1 + resolution: "is-weakmap@npm:2.0.1" + checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 + languageName: node + linkType: hard + "is-weakref@npm:^1.0.2": version: 1.0.2 resolution: "is-weakref@npm:1.0.2" @@ -7508,6 +7371,16 @@ __metadata: languageName: node linkType: hard +"is-weakset@npm:^2.0.1": + version: 2.0.2 + resolution: "is-weakset@npm:2.0.2" + dependencies: + call-bind: ^1.0.2 + get-intrinsic: ^1.1.1 + checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 + languageName: node + linkType: hard + "is-whitespace-character@npm:^1.0.0": version: 1.0.4 resolution: "is-whitespace-character@npm:1.0.4" @@ -7975,12 +7848,12 @@ __metadata: languageName: node linkType: hard -"lz-string@npm:^1.4.4": - version: 1.4.4 - resolution: "lz-string@npm:1.4.4" +"lz-string@npm:^1.5.0": + version: 1.5.0 + resolution: "lz-string@npm:1.5.0" bin: lz-string: bin/bin.js - checksum: 54e31238a61a84d8f664d9860a9fba7310c5b97a52c444f80543069bc084815eff40b8d4474ae1d93992fdf6c252dca37cf27f6adbeb4dbc3df2f3ac773d0e61 + checksum: 1ee98b4580246fd90dd54da6e346fb1caefcf05f677c686d9af237a157fdea3fd7c83a4bc58f858cd5b10a34d27afe0fdcbd0505a47e0590726a873dc8b8f65d languageName: node linkType: hard @@ -8680,6 +8553,16 @@ __metadata: languageName: node linkType: hard +"object-is@npm:^1.1.5": + version: 1.1.5 + resolution: "object-is@npm:1.1.5" + dependencies: + call-bind: ^1.0.2 + define-properties: ^1.1.3 + checksum: 989b18c4cba258a6b74dc1d74a41805c1a1425bce29f6cabb50dcb1a6a651ea9104a1b07046739a49a5bb1bc49727bcb00efd5c55f932f6ea04ec8927a7901fe + languageName: node + linkType: hard + "object-keys@npm:^1.1.1": version: 1.1.1 resolution: "object-keys@npm:1.1.1" @@ -8696,7 +8579,7 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2": +"object.assign@npm:^4.1.0, object.assign@npm:^4.1.2, object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" dependencies: @@ -9963,14 +9846,14 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.4.1, regexp.prototype.flags@npm:^1.4.3": - version: 1.4.3 - resolution: "regexp.prototype.flags@npm:1.4.3" +"regexp.prototype.flags@npm:^1.4.1, regexp.prototype.flags@npm:^1.4.3, regexp.prototype.flags@npm:^1.5.0": + version: 1.5.0 + resolution: "regexp.prototype.flags@npm:1.5.0" dependencies: call-bind: ^1.0.2 - define-properties: ^1.1.3 - functions-have-names: ^1.2.2 - checksum: 51228bae732592adb3ededd5e15426be25f289e9c4ef15212f4da73f4ec3919b6140806374b8894036a86020d054a8d2657d3fee6bb9b4d35d8939c20030b7a6 + define-properties: ^1.2.0 + functions-have-names: ^1.2.3 + checksum: c541687cdbdfff1b9a07f6e44879f82c66bbf07665f9a7544c5fd16acdb3ec8d1436caab01662d2fbcad403f3499d49ab0b77fbc7ef29ef961d98cc4bc9755b4 languageName: node linkType: hard @@ -10727,6 +10610,15 @@ __metadata: languageName: node linkType: hard +"stop-iteration-iterator@npm:^1.0.0": + version: 1.0.0 + resolution: "stop-iteration-iterator@npm:1.0.0" + dependencies: + internal-slot: ^1.0.4 + checksum: d04173690b2efa40e24ab70e5e51a3ff31d56d699550cfad084104ab3381390daccb36652b25755e420245f3b0737de66c1879eaa2a8d4fc0a78f9bf892fcb42 + languageName: node + linkType: hard + "store2@npm:^2.12.0": version: 2.14.2 resolution: "store2@npm:2.14.2" @@ -10772,7 +10664,7 @@ __metadata: "@storybook/manager-webpack5": ^6.5.9 "@storybook/node-logger": ^6.5.9 "@storybook/react": ^6.5.9 - "@storybook/testing-library": ^0.1.0 + "@storybook/testing-library": ^0.2.0 "@swc/core": ^1.3.46 react: ^17.0.2 react-dom: ^17.0.2 @@ -11071,15 +10963,6 @@ __metadata: languageName: node linkType: hard -"telejson@npm:^7.0.3": - version: 7.1.0 - resolution: "telejson@npm:7.1.0" - dependencies: - memoizerific: ^1.11.3 - checksum: 8000e43dc862a87ab1ca342a2635641923d55c2585f85ea8c7c60293681d6f920e8b9570cc12d90ecef286f065c176da5f769f42f4828ba18a626627bed1ac07 - languageName: node - linkType: hard - "terser-webpack-plugin@npm:^4.2.3": version: 4.2.3 resolution: "terser-webpack-plugin@npm:4.2.3" @@ -11309,13 +11192,6 @@ __metadata: languageName: node linkType: hard -"type-fest@npm:^2.19.0": - version: 2.19.0 - resolution: "type-fest@npm:2.19.0" - checksum: a4ef07ece297c9fba78fc1bd6d85dff4472fe043ede98bd4710d2615d15776902b595abf62bd78339ed6278f021235fb28a96361f8be86ed754f778973a0d278 - languageName: node - linkType: hard - "type-is@npm:~1.6.18": version: 1.6.18 resolution: "type-is@npm:1.6.18" @@ -11922,6 +11798,32 @@ __metadata: languageName: node linkType: hard +"which-collection@npm:^1.0.1": + version: 1.0.1 + resolution: "which-collection@npm:1.0.1" + dependencies: + is-map: ^2.0.1 + is-set: ^2.0.1 + is-weakmap: ^2.0.1 + is-weakset: ^2.0.1 + checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c + languageName: node + linkType: hard + +"which-typed-array@npm:^1.1.9": + version: 1.1.9 + resolution: "which-typed-array@npm:1.1.9" + dependencies: + available-typed-arrays: ^1.0.5 + call-bind: ^1.0.2 + for-each: ^0.3.3 + gopd: ^1.0.1 + has-tostringtag: ^1.0.0 + is-typed-array: ^1.1.10 + checksum: fe0178ca44c57699ca2c0e657b64eaa8d2db2372a4e2851184f568f98c478ae3dc3fdb5f7e46c384487046b0cf9e23241423242b277e03e8ba3dabc7c84c98ef + languageName: node + linkType: hard + "which@npm:^2.0.1, which@npm:^2.0.2": version: 2.0.2 resolution: "which@npm:2.0.2" From 1745959daf9844def1ec085986284d3bde1f6078 Mon Sep 17 00:00:00 2001 From: OscarDHdz Date: Fri, 23 Jun 2023 14:57:05 -0600 Subject: [PATCH 055/194] Add props to StackstormHome for Header Customization Signed-off-by: OscarDHdz --- .changeset/dull-onions-remember.md | 5 ++++ .../StackstormHome/StackstormHome.test.tsx | 15 +++++++++++ .../StackstormHome/StackstormHome.tsx | 26 ++++++++++++++----- 3 files changed, 40 insertions(+), 6 deletions(-) create mode 100644 .changeset/dull-onions-remember.md diff --git a/.changeset/dull-onions-remember.md b/.changeset/dull-onions-remember.md new file mode 100644 index 0000000000..f309bf5c4c --- /dev/null +++ b/.changeset/dull-onions-remember.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-stackstorm': patch +--- + +Add props to StackstormHome for Header Customization diff --git a/plugins/stackstorm/src/components/StackstormHome/StackstormHome.test.tsx b/plugins/stackstorm/src/components/StackstormHome/StackstormHome.test.tsx index 897cec61c1..e3db4c0cac 100644 --- a/plugins/stackstorm/src/components/StackstormHome/StackstormHome.test.tsx +++ b/plugins/stackstorm/src/components/StackstormHome/StackstormHome.test.tsx @@ -35,4 +35,19 @@ describe('StackstormHome', () => { ); expect(screen.getByText('Welcome to StackStorm!')).toBeInTheDocument(); }); + + it('should render props', async () => { + await renderInTestApp( + + Test Header Button]} + /> + , + ); + expect(screen.getByText('Test Title')).toBeInTheDocument(); + expect(screen.getByText('Test Subtitle')).toBeInTheDocument(); + expect(screen.getByText('Test Header Button')).toBeInTheDocument(); + }); }); diff --git a/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx b/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx index d96d45e82d..4c244f4891 100644 --- a/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx +++ b/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import React from 'react'; +import React, { Fragment } from 'react'; import { IconButton } from '@material-ui/core'; import { Header, @@ -27,12 +27,26 @@ import { ExecutionsTable } from '../ExecutionsTable'; import { PacksTable } from '../PacksTable/PacksTable'; import { ActionsList } from '../ActionsList'; -export const StackstormHome = () => ( +export type StackstormHomeProps = { + title?: string; + subtitle?: string; + headerButtons?: React.ReactNode[]; +}; +export const StackstormHome = (props: StackstormHomeProps) => ( -
- - - +
+ {props.headerButtons ? ( + props.headerButtons.map((headerButton, idx) => ( + {headerButton} + )) + ) : ( + + + + )}
From 2c486947315524d110219da35192bfd3479cd5c2 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Sat, 17 Jun 2023 11:15:19 -0500 Subject: [PATCH 056/194] Integrated Unprocessed Entities with DevTools Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/cyan-shirts-deny.md | 10 ++++ .changeset/lazy-frogs-destroy.md | 5 ++ .../devtools/CustomDevToolsPage.tsx | 7 +++ .../catalog-unprocessed-entities/README.md | 22 ++++++++- .../api-report.md | 3 ++ .../catalog-unprocessed-entities-failed.png | Bin 0 -> 178586 bytes .../catalog-unprocessed-entities-pending.png | Bin 0 -> 158509 bytes .../docs/catalog-unprocessed-entities-raw.png | Bin 0 -> 231333 bytes .../catalog-unprocessed-entities/package.json | 6 +++ .../src/components/FailedEntities.tsx | 2 +- .../src/components/PendingEntities.tsx | 2 +- .../src/components/UnprocessedEntities.tsx | 43 +++++++++++------- .../catalog-unprocessed-entities/src/index.ts | 1 + plugins/devtools/README.md | 43 ++++++++++++++++++ .../docs/catalog-unprocessed-entities-tab.png | Bin 0 -> 100475 bytes 15 files changed, 124 insertions(+), 20 deletions(-) create mode 100644 .changeset/cyan-shirts-deny.md create mode 100644 .changeset/lazy-frogs-destroy.md create mode 100644 plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-failed.png create mode 100644 plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-pending.png create mode 100644 plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-raw.png create mode 100644 plugins/devtools/docs/catalog-unprocessed-entities-tab.png diff --git a/.changeset/cyan-shirts-deny.md b/.changeset/cyan-shirts-deny.md new file mode 100644 index 0000000000..d6d3a2a2ba --- /dev/null +++ b/.changeset/cyan-shirts-deny.md @@ -0,0 +1,10 @@ +--- +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +The Catalog Unprocessed Entities plugin can now be integrated as a tab within the DevTools plugin + +- Added an export for `UnprocessedEntitiesContent` +- Updated the `README` with images of the features +- Adjusted the styles to fill in the available space +- Set the table page size to 20 as 40 was causing errors in the browser console diff --git a/.changeset/lazy-frogs-destroy.md b/.changeset/lazy-frogs-destroy.md new file mode 100644 index 0000000000..eb2b320e0a --- /dev/null +++ b/.changeset/lazy-frogs-destroy.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-devtools': patch +--- + +Updated the `README` with instructions on how to integrate the Catalog Unprocessed Entities plugin as a tab within DevTools diff --git a/packages/app/src/components/devtools/CustomDevToolsPage.tsx b/packages/app/src/components/devtools/CustomDevToolsPage.tsx index dfe70426aa..788b555c6d 100644 --- a/packages/app/src/components/devtools/CustomDevToolsPage.tsx +++ b/packages/app/src/components/devtools/CustomDevToolsPage.tsx @@ -21,6 +21,7 @@ import { } from '@backstage/plugin-devtools'; import { DevToolsLayout } from '@backstage/plugin-devtools'; import React from 'react'; +import { UnprocessedEntitiesContent } from '@backstage/plugin-catalog-unprocessed-entities'; const DevToolsPage = () => { return ( @@ -37,6 +38,12 @@ const DevToolsPage = () => { > + + + ); }; diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index fd824bec94..198d60b882 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -1,7 +1,27 @@ -# catalog-unprocessed-entities +# Catalog Unprocessed Entities + +## Features Frontend plugin to view unprocessed entities. +### Failed Entities + +You can see entities that are in a failed state: + +![Example of failed entities tab](./docs/catalog-unprocessed-entities-failed.png) + +### Pending Entities + +You can see entities that are in a pending state: + +![Example of pending entities tab](./docs/catalog-unprocessed-entities-pending.png) + +### Raw View + +In either of the failed or pending tabs you have the option to see the raw entity as JSON: + +![Example of raw entity](./docs/catalog-unprocessed-entities-raw.png) + ## Requirements Requires the `@backstage/plugin-catalog-backend-module-unprocessed` module to be installed. diff --git a/plugins/catalog-unprocessed-entities/api-report.md b/plugins/catalog-unprocessed-entities/api-report.md index b1e0d6f53d..940bc2b3a5 100644 --- a/plugins/catalog-unprocessed-entities/api-report.md +++ b/plugins/catalog-unprocessed-entities/api-report.md @@ -20,5 +20,8 @@ export const catalogUnprocessedEntitiesPlugin: BackstagePlugin< {} >; +// @public (undocumented) +export const UnprocessedEntitiesContent: () => JSX.Element; + // (No @packageDocumentation comment for this package) ``` diff --git a/plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-failed.png b/plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-failed.png new file mode 100644 index 0000000000000000000000000000000000000000..9a656546306539357fda5b07fe5989a46feec9ba GIT binary patch literal 178586 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 z

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 literal 0 HcmV?d00001 diff --git a/plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-pending.png b/plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-pending.png new file mode 100644 index 0000000000000000000000000000000000000000..d2924b0d7ed5db19f1ab9ef845b3945341f4ceb6 GIT binary patch literal 158509 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 P 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 Xg_xj3m!!ZU@JI8i?iI`>tB3yqDgpy$ literal 0 HcmV?d00001 diff --git a/plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-raw.png b/plugins/catalog-unprocessed-entities/docs/catalog-unprocessed-entities-raw.png new file mode 100644 index 0000000000000000000000000000000000000000..3b63b00cdacb1110adc2d7e0bf59fab99e270c57 GIT binary patch literal 231333 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�_f=GflqCXjj>ffl?XiU}> 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

F@1)sYr~IP) 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%0Dl zb*?N^D`LGMxo2z7?iHx`QnlE=59jJEeh3!T%=xak#3O0};dh+UEWeC+fsrEEe4XI) zwK*oSu2SlKUCF9J4%KN8`7imF)H!++puNq1!C++EbDTm-X2226 z4y|98Der^|99;~sn!CAZ0#7yo3mD&mVQ70aA5+eGAkI%IQw%o{3?;0Wm{00xoJjLE z?H&dO^clE7in&j~{byK}tYBhQvE5^1NH{(zXVrUq>TAIP#5Ed~Q6&={{D}7+@J~ui L{#~(%?w9`uk { return ( <> { return ( <>
({ + tabPanel: { + paddingLeft: '0px', + paddingRight: '0px', + }, +})); + +/** @public */ export const UnprocessedEntitiesContent = () => { + const classes = useStyles(); const [tab, setTab] = useState('failed'); const handleChange = (_event: React.ChangeEvent<{}>, tabValue: string) => { setTab(tabValue); }; return ( - - - - - - - - - - - - - - + + + + + + + + + + + + ); }; export const UnprocessedEntities = () => { return ( -
- +
+ + + ); }; diff --git a/plugins/catalog-unprocessed-entities/src/index.ts b/plugins/catalog-unprocessed-entities/src/index.ts index a65283926e..11ed24113f 100644 --- a/plugins/catalog-unprocessed-entities/src/index.ts +++ b/plugins/catalog-unprocessed-entities/src/index.ts @@ -17,3 +17,4 @@ export { catalogUnprocessedEntitiesPlugin, CatalogUnprocessedEntitiesPage, } from './plugin'; +export { UnprocessedEntitiesContent } from './components/UnprocessedEntities'; diff --git a/plugins/devtools/README.md b/plugins/devtools/README.md index 0ad7bfae61..09e76caaa4 100644 --- a/plugins/devtools/README.md +++ b/plugins/devtools/README.md @@ -44,6 +44,12 @@ Lists the status of configured External Dependencies based on your current runni ![Example of external dependencies tab](./docs/devtools-external-dependencies.png) +### Catalog Unprocessed Entities + +The [Catalog Unprocessed Entities plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog-unprocessed-entities) has an optional tab that you can also be added that will show unprocessed entities: + +![Example of unprocessed entities tab](./docs/catalog-unprocessed-entities-tab.png) + ## Setup The following sections will help you get the DevTools plugin setup and running. @@ -149,6 +155,43 @@ The DevTools plugin has been designed so that you can customize the tabs to suit With this setup you can add or remove the tabs as you'd like or add your own simply by editing your `CustomDevToolsPage.tsx` file +### Adding Tabs From Other Plugins + +You can also add tabs to show content from other plugins that fit well with the other DevTools content. + +#### Catalog Unprocessed Entities Tab + +Here's how to add the Catalog Unprocessed Entities tab: + +1. Install and setup the [Catalog Unprocessed Entities plugin](https://github.com/backstage/backstage/tree/master/plugins/catalog-unprocessed-entities) as per its documentation +2. Add the following import to your `CustomDevToolsPage.tsx`: + + `import { UnprocessedEntitiesContent } from '@backstage/plugin-catalog-unprocessed-entities';` + +3. Then add a new `DevToolsLayout.Route` to the end of your `DevToolsLayout` like this: + + ```diff + + + + + + + + + + + + + + + + + + ``` + +4. Now run `yarn dev` and navigate to the DevTools you'll see a new tab for Unprocessed Entities + ## Permissions The DevTools plugin supports the [permissions framework](https://backstage.io/docs/permissions/overview), the following sections outline how you can use them with the assumption that you have the permissions framework setup and working. diff --git a/plugins/devtools/docs/catalog-unprocessed-entities-tab.png b/plugins/devtools/docs/catalog-unprocessed-entities-tab.png new file mode 100644 index 0000000000000000000000000000000000000000..82afdcb7595cd9f08176c8576b2c6271942bbdb9 GIT binary patch literal 100475 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 literal 0 HcmV?d00001 From c2e53065353995abebbab4cf0a6290a16058b1ab Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Thu, 15 Jun 2023 18:40:37 -0500 Subject: [PATCH 057/194] feat(kubernetes-backend): Add WebSocket support to `kubernetes-backend` proxy. Signed-off-by: Carlos Esteban Lopez --- .changeset/khaki-rocks-do.md | 5 +++++ .../src/service/KubernetesProxy.ts | 14 ++++++++++---- 2 files changed, 15 insertions(+), 4 deletions(-) create mode 100644 .changeset/khaki-rocks-do.md diff --git a/.changeset/khaki-rocks-do.md b/.changeset/khaki-rocks-do.md new file mode 100644 index 0000000000..a9eb55d533 --- /dev/null +++ b/.changeset/khaki-rocks-do.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Add WebSocket support to `kubernetes-backend` proxy. diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts index 8e8fd54c77..7e03d863b8 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts @@ -135,20 +135,26 @@ export class KubernetesProxy { const logger = this.logger.child({ cluster: originalCluster.name }); middleware = createProxyMiddleware({ logProvider: () => logger, + ws: true, secure: !originalCluster.skipTLSVerify, changeOrigin: true, + pathRewrite: { [`^${originalReq.baseUrl}`]: '' }, router: async req => { - // Re-evaluate the cluster on each request, in case it has changed - const cluster = await this.getClusterForRequest(req); + const isWS = req.headers.upgrade === 'websocket'; + const cluster = isWS + ? originalCluster + : await this.getClusterForRequest(req); const url = new URL(cluster.url); + const ca = bufferFromFileOrString('', cluster.caData)?.toString(); + + // Re-evaluate the cluster on each request, in case it has changed return { protocol: url.protocol, host: url.hostname, port: url.port, - ca: bufferFromFileOrString('', cluster.caData)?.toString(), + ca, }; }, - pathRewrite: { [`^${originalReq.baseUrl}`]: '' }, onError: (error, req, res) => { const wrappedError = new ForwardedError( `Cluster '${originalCluster.name}' request error`, From 11fad09c74acf7a3da9d452204197626485e013d Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Fri, 16 Jun 2023 17:41:52 -0500 Subject: [PATCH 058/194] fix(kubernetes-backend): Swap `.header()` for `.headers[]` Signed-off-by: Carlos Esteban Lopez --- .../src/service/KubernetesProxy.ts | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts index 7e03d863b8..36617bbbad 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts @@ -140,19 +140,15 @@ export class KubernetesProxy { changeOrigin: true, pathRewrite: { [`^${originalReq.baseUrl}`]: '' }, router: async req => { - const isWS = req.headers.upgrade === 'websocket'; - const cluster = isWS - ? originalCluster - : await this.getClusterForRequest(req); - const url = new URL(cluster.url); - const ca = bufferFromFileOrString('', cluster.caData)?.toString(); - // Re-evaluate the cluster on each request, in case it has changed + const cluster = await this.getClusterForRequest(req); + const url = new URL(cluster.url); + return { protocol: url.protocol, host: url.hostname, port: url.port, - ca, + ca: bufferFromFileOrString('', cluster.caData)?.toString(), }; }, onError: (error, req, res) => { @@ -179,7 +175,7 @@ export class KubernetesProxy { } private async getClusterForRequest(req: Request): Promise { - const clusterName = req.header(HEADER_KUBERNETES_CLUSTER); + const clusterName = req.headers[HEADER_KUBERNETES_CLUSTER.toLowerCase()]; const clusters = await this.clusterSupplier.getClusters(); if (!clusters || clusters.length <= 0) { From b7267331b9f5b4d2abb0f2b7c24efb20a26ffb1b Mon Sep 17 00:00:00 2001 From: Carlos Esteban Lopez Date: Fri, 16 Jun 2023 21:50:00 -0500 Subject: [PATCH 059/194] test(kubernetes-backend): Fix test mocking for headers Signed-off-by: Carlos Esteban Lopez --- .../kubernetes-backend/src/service/KubernetesProxy.test.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index aaf3843e61..038a3d4bad 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -54,6 +54,10 @@ describe('KubernetesProxy', () => { params: { path, }, + headers: { + 'content-type': 'application/json', + [HEADER_KUBERNETES_CLUSTER.toLowerCase()]: clusterName, + }, header: jest.fn((key: string) => { switch (key) { case 'Content-Type': { From a8fa79ccc105ffef6b2795cf9e22ce55c896877b Mon Sep 17 00:00:00 2001 From: Patrick Jungermann Date: Sat, 24 Jun 2023 01:54:26 +0200 Subject: [PATCH 060/194] docs: fix docs for catalog module "unprocessed" Signed-off-by: Patrick Jungermann --- .changeset/old-rules-give.md | 6 ++++++ plugins/catalog-backend-module-unprocessed/README.md | 11 +++++++---- plugins/catalog-unprocessed-entities/README.md | 12 +++++++++--- 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 .changeset/old-rules-give.md diff --git a/.changeset/old-rules-give.md b/.changeset/old-rules-give.md new file mode 100644 index 0000000000..e28e2778ed --- /dev/null +++ b/.changeset/old-rules-give.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-unprocessed': patch +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +Fix and improve documentation for the unprocessed entities modules. diff --git a/plugins/catalog-backend-module-unprocessed/README.md b/plugins/catalog-backend-module-unprocessed/README.md index dc5e830fa4..92d9e59445 100644 --- a/plugins/catalog-backend-module-unprocessed/README.md +++ b/plugins/catalog-backend-module-unprocessed/README.md @@ -1,4 +1,4 @@ -# @backstage/plugin-catalog-backend-module-unprocessed-node +# @backstage/plugin-catalog-backend-module-unprocessed This catalog-backend module adds support for viewing unprocessed entities. An unprocessed entity is one that doesn't show up in the catalog. @@ -10,11 +10,15 @@ A `pending` entity has not been processed yet. ## Installation +```shell +yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-unprocessed +``` + ### backend In `packages/backend/src/plugins/catalog.ts` import the module and initialize it after invoking `CatalogBuilder.build()`: -```ts +```ts title="packages/backend/src/plugins/catalog.ts" import { UnprocessedEntitesModule } from '@backstage/plugin-catalog-backend-module-unprocessed'; //... @@ -22,7 +26,6 @@ import { UnprocessedEntitesModule } from '@backstage/plugin-catalog-backend-modu const unprocessed = new UnprocessedEntitesModule( await env.database.getClient(), router, - env.logger, ); unprocessed.registerRoutes(); ``` @@ -31,7 +34,7 @@ unprocessed.registerRoutes(); In `packages/backend-next/src/index.ts` add the module: -```ts +```ts title="packages/backend-next/src/index.ts" backend.add(catalogModuleUnprocessedEntities()); ``` diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index fd824bec94..c386ace174 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -8,9 +8,13 @@ Requires the `@backstage/plugin-catalog-backend-module-unprocessed` module to be ## Installation -Import into your App.tsx and include into the `` component: +```shell +yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-unprocessed +``` -```tsx +Import into your `App.tsx` and include into the `` component: + +```tsx title="packages/app/src/App.tsx" import { CatalogUnprocessedEntitiesPage } from '@backstage/plugin-catalog-unprocessed-entities'; //... @@ -22,7 +26,9 @@ import { CatalogUnprocessedEntitiesPage } from '@backstage/plugin-catalog-unproc ## Getting started -Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/catalog-unprocessed-entities](http://localhost:3000/catalog-unprocessed-entities). +Your plugin has been added to the example app in this repository, +meaning you'll be able to access it by running `yarn start` in the root directory, +and then navigating to [/catalog-unprocessed-entities](http://localhost:3000/catalog-unprocessed-entities). You can also serve the plugin in isolation by running `yarn start` in the plugin directory. This method of serving the plugin provides quicker iteration speed and a faster startup and hot reloads. From 88c62048fcbd026475ed997cbd7727c2e8b399aa Mon Sep 17 00:00:00 2001 From: rui ma Date: Mon, 26 Jun 2023 18:03:43 +0800 Subject: [PATCH 061/194] fix: update plugin home dependence @rjsf/material-ui to @rjsf/material-ui-v5 Signed-off-by: rui ma --- .changeset/popular-kangaroos-accept.md | 5 +++++ plugins/home/package.json | 2 +- .../src/components/CustomHomepage/WidgetSettingsOverlay.tsx | 2 +- yarn.lock | 4 ++-- 4 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 .changeset/popular-kangaroos-accept.md diff --git a/.changeset/popular-kangaroos-accept.md b/.changeset/popular-kangaroos-accept.md new file mode 100644 index 0000000000..9e3fcf454a --- /dev/null +++ b/.changeset/popular-kangaroos-accept.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': minor +--- + +fix: update plugin home dependence @rjsf/material-ui to @rjsf/material-ui-v5 diff --git a/plugins/home/package.json b/plugins/home/package.json index ae2ea7ea1f..c5aa8ee238 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -44,7 +44,7 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@rjsf/core-v5": "npm:@rjsf/core@5.7.3", - "@rjsf/material-ui": "5.7.3", + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.7.3", "@rjsf/utils": "5.7.3", "@rjsf/validator-ajv8": "5.7.3", "@types/react": "^16.13.1 || ^17.0.0", diff --git a/plugins/home/src/components/CustomHomepage/WidgetSettingsOverlay.tsx b/plugins/home/src/components/CustomHomepage/WidgetSettingsOverlay.tsx index 65e0917fb1..1d863c020d 100644 --- a/plugins/home/src/components/CustomHomepage/WidgetSettingsOverlay.tsx +++ b/plugins/home/src/components/CustomHomepage/WidgetSettingsOverlay.tsx @@ -30,7 +30,7 @@ import { Widget } from './types'; import { withTheme } from '@rjsf/core-v5'; import validator from '@rjsf/validator-ajv8'; -const Form = withTheme(require('@rjsf/material-ui').Theme); +const Form = withTheme(require('@rjsf/material-ui-v5').Theme); const useStyles = makeStyles((theme: Theme) => createStyles({ diff --git a/yarn.lock b/yarn.lock index 697b463991..a2b10a747c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7139,7 +7139,7 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 "@rjsf/core-v5": "npm:@rjsf/core@5.7.3" - "@rjsf/material-ui": 5.7.3 + "@rjsf/material-ui-v5": "npm:@rjsf/material-ui@5.7.3" "@rjsf/utils": 5.7.3 "@rjsf/validator-ajv8": 5.7.3 "@testing-library/dom": ^8.0.0 @@ -14296,7 +14296,7 @@ __metadata: languageName: node linkType: hard -"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.7.3, @rjsf/material-ui@npm:5.7.3": +"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.7.3": version: 5.7.3 resolution: "@rjsf/material-ui@npm:5.7.3" peerDependencies: From bb59bbfd0e05014ad37359601b35491a51456cc1 Mon Sep 17 00:00:00 2001 From: gowthamshankar99 Date: Mon, 26 Jun 2023 10:52:22 -0400 Subject: [PATCH 062/194] Update README.md for kubernetes documentation The current k8s documentation is broken. updating it to point to the correct URL Signed-off-by: gowthamshankar99 --- plugins/kubernetes-backend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/kubernetes-backend/README.md b/plugins/kubernetes-backend/README.md index b724babca3..742ef79692 100644 --- a/plugins/kubernetes-backend/README.md +++ b/plugins/kubernetes-backend/README.md @@ -16,4 +16,4 @@ The plugin requires configuration in the Backstage `app-config.yaml` to connect In addition, configuration of an entity's `catalog-info.yaml` helps identify which specific Kubernetes object(s) should be presented on a specific entity catalog page. -For more information, see the [formal documentation about the Kubernetes feature in Backstage](https://backstage.io/docs/features/kubernetes/overview). +For more information, see the [formal documentation about the Kubernetes feature in Backstage](https://backstage.io/docs/features/kubernetes/). From 939bb0651a1eccc42f01cee93db84b3187760402 Mon Sep 17 00:00:00 2001 From: gowthamshankar99 Date: Mon, 26 Jun 2023 11:52:18 -0400 Subject: [PATCH 063/194] Update docusaurus.config.js adding microsite mapping for kubernetes documentation Signed-off-by: gowthamshankar99 Signed-off-by: Gowtham Shankar Gowri shankar --- microsite/docusaurus.config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/microsite/docusaurus.config.js b/microsite/docusaurus.config.js index a13168472d..0312354404 100644 --- a/microsite/docusaurus.config.js +++ b/microsite/docusaurus.config.js @@ -127,6 +127,10 @@ module.exports = { from: '/docs/features/techdocs/techdocs-overview', to: '/docs/features/techdocs/', }, + { + from: '/docs/features/kubernetes/overview', + to: '/docs/features/kubernetes/', + }, { from: '/docs/features/search/search-overview', to: '/docs/features/search/', From 2ae94fb80455bae5dffc2f8592f500d4f95a79cd Mon Sep 17 00:00:00 2001 From: Gowtham Shankar Gowri shankar Date: Mon, 26 Jun 2023 12:34:38 -0400 Subject: [PATCH 064/194] ran prettier Signed-off-by: Gowtham Shankar Gowri shankar --- microsite/docusaurus.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/docusaurus.config.js b/microsite/docusaurus.config.js index 0312354404..e78626e37c 100644 --- a/microsite/docusaurus.config.js +++ b/microsite/docusaurus.config.js @@ -130,7 +130,7 @@ module.exports = { { from: '/docs/features/kubernetes/overview', to: '/docs/features/kubernetes/', - }, + }, { from: '/docs/features/search/search-overview', to: '/docs/features/search/', From faac6b7425b2bf003be3257dea0a66aad879cb87 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Jun 2023 10:38:25 +0200 Subject: [PATCH 065/194] chore: update changeset Signed-off-by: blam --- .changeset/tough-flowers-suffer.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/tough-flowers-suffer.md diff --git a/.changeset/tough-flowers-suffer.md b/.changeset/tough-flowers-suffer.md new file mode 100644 index 0000000000..784d331107 --- /dev/null +++ b/.changeset/tough-flowers-suffer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Update readme with a valid link to k8s documentation From 0a9c34febf5ff113ac2a6c105fe114e3fe0f95c3 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Jun 2023 11:24:42 +0200 Subject: [PATCH 066/194] docs: add a note about isolated vm Signed-off-by: blam --- docs/getting-started/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/getting-started/index.md b/docs/getting-started/index.md index 820f5ef394..773b5bd5a2 100644 --- a/docs/getting-started/index.md +++ b/docs/getting-started/index.md @@ -53,6 +53,8 @@ create a subdirectory inside your current working directory. npx @backstage/create-app@latest ``` +> Note: If this fails on the `yarn install` step, it's likely that you will need to install some additional dependencies which are used to configure `isolated-vm`. You can find out more in their [requirements section](https://github.com/laverdet/isolated-vm#requirements), and then run `yarn install` manually again after you've completed those steps. + The wizard will ask you for the name of the app, which will also be the name of the directory ![Screenshot of the wizard asking for a name for the app.](../assets/getting-started/wizard.png) From 57585d89f926f09a52d0749e9ba7c99f876ae39a Mon Sep 17 00:00:00 2001 From: ivgo Date: Mon, 26 Jun 2023 16:36:36 +0200 Subject: [PATCH 067/194] Export more types and functions for customization Signed-off-by: ivgo --- .changeset/green-otters-wait.md | 7 ++++ .../catalog-unprocessed-entities/README.md | 24 +++++++++++ .../src/api/index.ts | 41 +++++++++++++++---- .../catalog-unprocessed-entities/src/index.ts | 10 +++++ .../src/plugin.ts | 4 +- .../catalog-unprocessed-entities/src/types.ts | 12 ++++++ 6 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 .changeset/green-otters-wait.md diff --git a/.changeset/green-otters-wait.md b/.changeset/green-otters-wait.md new file mode 100644 index 0000000000..4f9b02351e --- /dev/null +++ b/.changeset/green-otters-wait.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +Export some types and API items. This allows people to call the API from different places with the ApiRef, as well +as completely customize the client if required. Check the [README.md](../plugins/catalog-unprocessed-entities/README.md) to +note what needs to be added in order to use the new `catalogUnprocessedEntitiesApiRef` exported function. diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index 198d60b882..3e5e434c67 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -40,6 +40,30 @@ import { CatalogUnprocessedEntitiesPage } from '@backstage/plugin-catalog-unproc />; ``` +## Customization + +If you want to use the provided endpoints in a different way, you can use the ApiRef doing the following: + +```typescript +import { catalogUnprocessedEntitiesApiRef } from '@backstage/plugin-catalog-unprocessed-entities'; +import { useApi } from '@backstage/core-plugin-api'; + +const catalogUnprocessedEntitiesApi = useApi(catalogUnprocessedEntitiesApiRef); +``` + +Note that you will need to add the API implementation to avoid your instance to crash due to "missing implementation for apiRef". To do so, add the following lines: + +```typescript +// In packages/app/src/apis.ts +import { catalogUnprocessedEntitiesPlugin } from '@backstage/plugin-catalog-unprocessed-entities'; + +export const apis: AnyApiFactory[] = [ + // ...other API implementations + + ...catalogUnprocessedEntitiesPlugin.getApis(), +]; +``` + ## Getting started Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/catalog-unprocessed-entities](http://localhost:3000/catalog-unprocessed-entities). diff --git a/plugins/catalog-unprocessed-entities/src/api/index.ts b/plugins/catalog-unprocessed-entities/src/api/index.ts index 5be81c8331..92dde93a93 100644 --- a/plugins/catalog-unprocessed-entities/src/api/index.ts +++ b/plugins/catalog-unprocessed-entities/src/api/index.ts @@ -32,20 +32,43 @@ export const catalogUnprocessedEntitiesApiRef = }); /** - * API client for the Catalog Unprocessed Entities plugin + * Response expected by the {@link CatalogUnprocessedEntitiesApi} * * @public */ -export class CatalogUnprocessedEntitiesApi { - url: string = ''; +export type CatalogUnprocessedEntitiesApiResponse = { + entities: UnprocessedEntity[]; +}; +/** + * Interface for the CatalogUnprocessedEntitiesApi. + * + * @public + */ +export interface CatalogUnprocessedEntitiesApi { + /** + * Returns a list of entities with state 'pending' + */ + pending(): Promise; + /** + * Returns a list of entities with state 'failed' + */ + failed(): Promise; +} + +/** + * Default API implementation for the Catalog Unprocessed Entities plugin + * + * @public + */ +export class CatalogUnprocessedEntitiesClient + implements CatalogUnprocessedEntitiesApi +{ constructor(public discovery: DiscoveryApi, public fetchApi: FetchApi) {} private async fetch(path: string, init?: RequestInit): Promise { - if (!this.url) { - this.url = await this.discovery.getBaseUrl('catalog'); - } - const resp = await this.fetchApi.fetch(`${this.url}/${path}`, init); + const url = await this.discovery.getBaseUrl('catalog'); + const resp = await this.fetchApi.fetch(`${url}/${path}`, init); if (!resp.ok) { throw await ResponseError.fromResponse(resp); } @@ -53,11 +76,11 @@ export class CatalogUnprocessedEntitiesApi { return await resp.json(); } - async pending(): Promise<{ entities: UnprocessedEntity[] }> { + async pending(): Promise { return await this.fetch('entities/unprocessed/pending'); } - async failed(): Promise<{ entities: UnprocessedEntity[] }> { + async failed(): Promise { return await this.fetch('entities/unprocessed/failed'); } } diff --git a/plugins/catalog-unprocessed-entities/src/index.ts b/plugins/catalog-unprocessed-entities/src/index.ts index 11ed24113f..4fcc9a8fcd 100644 --- a/plugins/catalog-unprocessed-entities/src/index.ts +++ b/plugins/catalog-unprocessed-entities/src/index.ts @@ -18,3 +18,13 @@ export { CatalogUnprocessedEntitiesPage, } from './plugin'; export { UnprocessedEntitiesContent } from './components/UnprocessedEntities'; +export { + type CatalogUnprocessedEntitiesApiResponse, + type CatalogUnprocessedEntitiesApi, + catalogUnprocessedEntitiesApiRef, +} from './api'; +export type { + UnprocessedEntity, + UnprocessedEntityCache, + UnprocessedEntityError, +} from './types'; diff --git a/plugins/catalog-unprocessed-entities/src/plugin.ts b/plugins/catalog-unprocessed-entities/src/plugin.ts index 14598c825b..baf7278454 100644 --- a/plugins/catalog-unprocessed-entities/src/plugin.ts +++ b/plugins/catalog-unprocessed-entities/src/plugin.ts @@ -23,7 +23,7 @@ import { import { rootRouteRef } from './routes'; import { - CatalogUnprocessedEntitiesApi, + CatalogUnprocessedEntitiesClient, catalogUnprocessedEntitiesApiRef, } from './api'; @@ -42,7 +42,7 @@ export const catalogUnprocessedEntitiesPlugin = createPlugin({ api: catalogUnprocessedEntitiesApiRef, deps: { discoveryApi: discoveryApiRef, fetchApi: fetchApiRef }, factory: ({ discoveryApi, fetchApi }) => - new CatalogUnprocessedEntitiesApi(discoveryApi, fetchApi), + new CatalogUnprocessedEntitiesClient(discoveryApi, fetchApi), }), ], }); diff --git a/plugins/catalog-unprocessed-entities/src/types.ts b/plugins/catalog-unprocessed-entities/src/types.ts index 490027b57a..65f21970f5 100644 --- a/plugins/catalog-unprocessed-entities/src/types.ts +++ b/plugins/catalog-unprocessed-entities/src/types.ts @@ -15,6 +15,10 @@ */ import { Entity } from '@backstage/catalog-model'; +/** + * Unprocessed entity data stored in the database. + * @public + */ export type UnprocessedEntity = { entity_id: string; entity_ref: string; @@ -29,11 +33,19 @@ export type UnprocessedEntity = { location_key?: string; }; +/** + * Unprocessed entity cache stored in the database. + * @public + */ export type UnprocessedEntityCache = { ttl: number; cache: object; }; +/** + * Unprocessed entity error information stored in the database. + * @public + */ export type UnprocessedEntityError = { name: string; message: string; From e6f362887cfc02e2d913272cb330641cbb3daa10 Mon Sep 17 00:00:00 2001 From: ivgo Date: Tue, 27 Jun 2023 11:47:59 +0200 Subject: [PATCH 068/194] chore: update documentation for exporting the plugin Signed-off-by: blam Signed-off-by: ivgo --- plugins/catalog-unprocessed-entities/README.md | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index 3e5e434c67..db0a21c9c4 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -51,17 +51,12 @@ import { useApi } from '@backstage/core-plugin-api'; const catalogUnprocessedEntitiesApi = useApi(catalogUnprocessedEntitiesApiRef); ``` -Note that you will need to add the API implementation to avoid your instance to crash due to "missing implementation for apiRef". To do so, add the following lines: +Note that if you are not rendering the `CatalogUnprocessedEntitiesPage` in the `App.tsx` tree, you will need to export the `catalogUnproccessedEntitiesPlugin` from your `plugins.ts` file to setup the plugin otherwise you will receive an error like `No implementation available for apiRef{plugin.catalog-unprocessed-entities.service}` ```typescript -// In packages/app/src/apis.ts -import { catalogUnprocessedEntitiesPlugin } from '@backstage/plugin-catalog-unprocessed-entities'; - -export const apis: AnyApiFactory[] = [ - // ...other API implementations - - ...catalogUnprocessedEntitiesPlugin.getApis(), -]; +// In packages/app/src/plugins.ts +... +export { catalogUnprocessedEntitiesPlugin } from '@backstage/plugin-catalog-unprocessed-entities'; ``` ## Getting started From bfa7f07089c65bf8dcef49dca74ad0547ec7fa6c Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Jun 2023 11:11:00 +0200 Subject: [PATCH 069/194] chore: updating API report Signed-off-by: blam Signed-off-by: ivgo --- .../api-report.md | 48 +++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/plugins/catalog-unprocessed-entities/api-report.md b/plugins/catalog-unprocessed-entities/api-report.md index 940bc2b3a5..0ccf9716f2 100644 --- a/plugins/catalog-unprocessed-entities/api-report.md +++ b/plugins/catalog-unprocessed-entities/api-report.md @@ -5,9 +5,25 @@ ```ts /// +import { ApiRef } from '@backstage/core-plugin-api'; import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { Entity } from '@backstage/catalog-model'; import { RouteRef } from '@backstage/core-plugin-api'; +// @public +export interface CatalogUnprocessedEntitiesApi { + failed(): Promise; + pending(): Promise; +} + +// @public +export const catalogUnprocessedEntitiesApiRef: ApiRef; + +// @public +export type CatalogUnprocessedEntitiesApiResponse = { + entities: UnprocessedEntity[]; +}; + // @public export const CatalogUnprocessedEntitiesPage: () => JSX.Element; @@ -23,5 +39,37 @@ export const catalogUnprocessedEntitiesPlugin: BackstagePlugin< // @public (undocumented) export const UnprocessedEntitiesContent: () => JSX.Element; +// @public +export type UnprocessedEntity = { + entity_id: string; + entity_ref: string; + unprocessed_entity: Entity; + unprocessed_hash?: string; + processed_entity?: Entity; + result_hash?: string; + cache?: UnprocessedEntityCache; + next_update_at: string | Date; + last_discovery_at: string | Date; + errors?: UnprocessedEntityError[]; + location_key?: string; +}; + +// @public +export type UnprocessedEntityCache = { + ttl: number; + cache: object; +}; + +// @public +export type UnprocessedEntityError = { + name: string; + message: string; + cause: { + name: string; + message: string; + stack: string; + }; +}; + // (No @packageDocumentation comment for this package) ``` From a60c1466a072a352a5da73d017162d74b803097b Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Jun 2023 11:13:28 +0200 Subject: [PATCH 070/194] chore: fixing plugins Signed-off-by: blam Signed-off-by: ivgo --- plugins/catalog-unprocessed-entities/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index db0a21c9c4..172110495c 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -59,6 +59,20 @@ Note that if you are not rendering the `CatalogUnprocessedEntitiesPage` in the ` export { catalogUnprocessedEntitiesPlugin } from '@backstage/plugin-catalog-unprocessed-entities'; ``` +If you don't have a `plugins.ts` file, you can create it with the path `packages/app/src/plugins.ts` and then import it into your `App.tsx`: + +```diff ++ import * as plugins from './plugins'; + +const app = createApp({ + apis, ++ plugins: Object.values(plugins), + bindRoutes({ bind }) { + /* ... */ + }, +}); +``` + ## Getting started Your plugin has been added to the example app in this repository, meaning you'll be able to access it by running `yarn start` in the root directory, and then navigating to [/catalog-unprocessed-entities](http://localhost:3000/catalog-unprocessed-entities). From ed41ee492e4eb779b95c9c23e9e2b3c092f22488 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Tue, 27 Jun 2023 11:57:30 +0200 Subject: [PATCH 071/194] Update popular-kangaroos-accept.md Signed-off-by: Ben Lambert --- .changeset/popular-kangaroos-accept.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/popular-kangaroos-accept.md b/.changeset/popular-kangaroos-accept.md index 9e3fcf454a..c297b3220f 100644 --- a/.changeset/popular-kangaroos-accept.md +++ b/.changeset/popular-kangaroos-accept.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-home': minor +'@backstage/plugin-home': patch --- -fix: update plugin home dependence @rjsf/material-ui to @rjsf/material-ui-v5 +fix: update plugin home dependency for `@rjsf/material-ui` to `@rjsf/material-ui-v5` From e7f5f99bbb255c61638f630c92ab07ab65019ffe Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Jun 2023 12:19:31 +0200 Subject: [PATCH 072/194] chore: fix api-reports Signed-off-by: blam --- plugins/stackstorm/api-report.md | 10 +++++++++- .../src/components/StackstormHome/StackstormHome.tsx | 4 ++++ .../stackstorm/src/components/StackstormHome/index.ts | 2 +- plugins/stackstorm/src/index.ts | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/plugins/stackstorm/api-report.md b/plugins/stackstorm/api-report.md index 3e3d79fe27..7a307847cd 100644 --- a/plugins/stackstorm/api-report.md +++ b/plugins/stackstorm/api-report.md @@ -6,10 +6,18 @@ /// import { BackstagePlugin } from '@backstage/core-plugin-api'; +import { default as React_2 } from 'react'; import { RouteRef } from '@backstage/core-plugin-api'; +// @public (undocumented) +export type StackstormHomeProps = { + title?: string; + subtitle?: string; + headerButtons?: React_2.ReactNode[]; +}; + // @public -export const StackstormPage: () => JSX.Element; +export const StackstormPage: (props: StackstormHomeProps) => JSX.Element; // @public export const stackstormPlugin: BackstagePlugin< diff --git a/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx b/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx index 4c244f4891..1bb9031815 100644 --- a/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx +++ b/plugins/stackstorm/src/components/StackstormHome/StackstormHome.tsx @@ -27,11 +27,15 @@ import { ExecutionsTable } from '../ExecutionsTable'; import { PacksTable } from '../PacksTable/PacksTable'; import { ActionsList } from '../ActionsList'; +/** + * @public + */ export type StackstormHomeProps = { title?: string; subtitle?: string; headerButtons?: React.ReactNode[]; }; + export const StackstormHome = (props: StackstormHomeProps) => (
Date: Tue, 27 Jun 2023 12:49:53 +0200 Subject: [PATCH 073/194] docs: fix microsite build Signed-off-by: blam --- .changeset/green-otters-wait.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/green-otters-wait.md b/.changeset/green-otters-wait.md index 4f9b02351e..02bc30f6aa 100644 --- a/.changeset/green-otters-wait.md +++ b/.changeset/green-otters-wait.md @@ -3,5 +3,5 @@ --- Export some types and API items. This allows people to call the API from different places with the ApiRef, as well -as completely customize the client if required. Check the [README.md](../plugins/catalog-unprocessed-entities/README.md) to +as completely customize the client if required. Check the [README.md](https://github.com/backstage/backstage/blob/master/plugins/catalog-unprocessed-entities/README.md) to note what needs to be added in order to use the new `catalogUnprocessedEntitiesApiRef` exported function. From 5d1224067b7a38bd6a6274833877d2a4d3b8c161 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 27 Jun 2023 13:32:23 +0200 Subject: [PATCH 074/194] chore: fix lint typedeps Signed-off-by: blam --- plugins/stackstorm/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index 1f3a014b0a..9125ac08af 100644 --- a/plugins/stackstorm/package.json +++ b/plugins/stackstorm/package.json @@ -40,6 +40,7 @@ "@backstage/theme": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", + "@types/react": "^16.13.1 || ^17.0.0", "react-use": "^17.2.4" }, "peerDependencies": { @@ -57,7 +58,6 @@ "@testing-library/react": "^12.1.3", "@testing-library/user-event": "^14.0.0", "@types/node": "*", - "@types/react": "^16.13.1 || ^17.0.0", "msw": "^1.0.0" }, "files": [ From ae6ee0093ef735f28bfa98b21c3d58ed691a7b18 Mon Sep 17 00:00:00 2001 From: Camila Belo Date: Wed, 21 Jun 2023 17:33:39 +0200 Subject: [PATCH 075/194] test(search): optimize search bar suite Signed-off-by: Camila Belo --- .../components/SearchBar/SearchBar.test.tsx | 163 +++++++----------- 1 file changed, 65 insertions(+), 98 deletions(-) diff --git a/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx b/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx index e4859861d9..5af5447740 100644 --- a/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx +++ b/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx @@ -15,7 +15,7 @@ */ import React from 'react'; -import { screen, render, waitFor, act } from '@testing-library/react'; +import { screen, waitFor, act } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { configApiRef, analyticsApiRef } from '@backstage/core-plugin-api'; import { ConfigReader } from '@backstage/core-app-api'; @@ -41,16 +41,23 @@ const createInitialState = ({ }); describe('SearchBar', () => { + const user = userEvent.setup({ delay: null }); + const query = jest.fn().mockResolvedValue({ results: [] }); - const analyticsApiMock = new MockAnalyticsApi(); + const searchApiMock = { query }; const configApiMock = new ConfigReader({ - app: { title: 'Mock title' }, + app: { + title: 'Mock title', + analytics: { + ga: { + trackingId: 'xyz123', + }, + }, + }, }); - const searchApiMock = { query }; - beforeEach(() => { jest.clearAllMocks(); }); @@ -64,20 +71,20 @@ describe('SearchBar', () => { ]} > - + , ); - await waitFor(() => { - expect(screen.getByLabelText('Search')).toBeInTheDocument(); - }); + await waitFor(() => + expect(screen.getByLabelText('Search')).toBeInTheDocument(), + ); }); it('Renders with custom label', async () => { const label = 'label'; - const result = await renderWithEffects( + await renderWithEffects( { ]} > - + , ); - await waitFor(() => { - expect(result.getByLabelText(label)).toBeInTheDocument(); - }); + await waitFor(() => + expect(screen.getByLabelText(label)).toBeInTheDocument(), + ); }); it('Renders with custom placeholder', async () => { @@ -106,20 +113,20 @@ describe('SearchBar', () => { ]} > - + , ); - await waitFor(() => { - expect(screen.getByPlaceholderText(placeholder)).toBeInTheDocument(); - }); + await waitFor(() => + expect(screen.getByPlaceholderText(placeholder)).toBeInTheDocument(), + ); }); it('Renders based on initial search', async () => { const term = 'term'; - render( + await renderWithEffects( { ]} > - + , ); - await waitFor(() => { - expect(screen.getByRole('textbox', { name: 'Search' })).toHaveValue(term); - }); + await waitFor(() => + expect(screen.getByLabelText('Search')).toHaveValue(term), + ); }); it('Updates term state when text is entered', async () => { jest.useFakeTimers(); - const user = userEvent.setup({ delay: null }); await renderWithEffects( { , ); - const textbox = screen.getByRole('textbox', { name: 'Search' }); + const textbox = screen.getByLabelText('Search'); const value = 'value'; @@ -164,14 +170,13 @@ describe('SearchBar', () => { jest.advanceTimersByTime(200); }); - await waitFor(() => { - expect(textbox).toHaveValue(value); - }); + await waitFor(() => expect(textbox).toHaveValue(value)); expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ term: value }), ); + jest.runAllTimers(); jest.useRealTimers(); }); @@ -186,22 +191,18 @@ describe('SearchBar', () => { ]} > - + , ); - const textbox = screen.getByRole('textbox', { name: 'Search' }); + const textbox = screen.getByLabelText('Search'); - await waitFor(() => { - expect(textbox).toHaveValue(term); - }); + await waitFor(() => expect(textbox).toHaveValue(term)); - await userEvent.click(screen.getByRole('button', { name: 'Clear' })); + await user.click(screen.getByLabelText('Clear')); - await waitFor(() => { - expect(textbox).toHaveValue(''); - }); + await waitFor(() => expect(textbox).toHaveValue('')); expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ term: '' }), @@ -219,22 +220,20 @@ describe('SearchBar', () => { ]} > - + , ); - await waitFor(() => { - expect( - screen.queryByRole('button', { name: 'Clear' }), - ).not.toBeInTheDocument(); - }); + await waitFor(() => + expect(screen.queryByLabelText('Clear')).not.toBeInTheDocument(), + ); }); it('Adheres to provided debounceTime', async () => { jest.useFakeTimers(); - const user = userEvent.setup({ delay: null }); - const debounceTime = 600; + + const debounceTime = 100; await renderWithEffects( { , ); - const textbox = await screen.findByRole('textbox', { name: 'Search' }); + const textbox = screen.getByLabelText('Search'); const value = 'value'; await user.type(textbox, value); - await waitFor(() => { + await waitFor(() => expect(query).not.toHaveBeenLastCalledWith( expect.objectContaining({ term: value }), - ); - }); + ), + ); act(() => { jest.advanceTimersByTime(debounceTime); }); - await waitFor(() => { - expect(textbox).toHaveValue(value); - }); + await waitFor(() => expect(textbox).toHaveValue(value)); expect(query).toHaveBeenLastCalledWith( expect.objectContaining({ term: value }), ); + jest.runAllTimers(); jest.useRealTimers(); }); - it('does not capture analytics event if not enabled in app', async () => { - jest.useFakeTimers(); - const user = userEvent.setup({ delay: null }); + it('Does not capture analytics event if not enabled in app', async () => { + const analyticsApiMock = new MockAnalyticsApi(); await renderWithEffects( { ]} > - + , ); - const textbox = await screen.findByRole('textbox', { name: 'Search' }); + const textbox = screen.getByLabelText('Search'); const value = 'value'; await user.type(textbox, value); - act(() => { - jest.advanceTimersByTime(200); - }); - - await waitFor(() => { - expect(textbox).toHaveValue(value); - }); + await waitFor(() => expect(textbox).toHaveValue(value)); expect(analyticsApiMock.getEvents()).toHaveLength(0); - - jest.useRealTimers(); }); - it('captures analytics events if enabled in app', async () => { - jest.useFakeTimers(); - const user = userEvent.setup({ delay: null }); + it('Captures analytics events if enabled in app', async () => { + const analyticsApiMock = new MockAnalyticsApi(); + const types = ['techdocs', 'software-catalog']; await renderWithEffects( - + , ); - const textbox = await screen.findByRole('textbox', { name: 'Search' }); + const textbox = screen.getByLabelText('Search'); let value = 'value'; @@ -351,13 +328,9 @@ describe('SearchBar', () => { expect(analyticsApiMock.getEvents()).toHaveLength(0); - act(() => { - jest.advanceTimersByTime(200); - }); + await waitFor(() => expect(analyticsApiMock.getEvents()).toHaveLength(1)); - await waitFor(() => expect(textbox).toHaveValue(value)); - - expect(analyticsApiMock.getEvents()).toHaveLength(1); + expect(textbox).toHaveValue(value); expect(analyticsApiMock.getEvents()[0]).toEqual({ action: 'search', context: { @@ -376,13 +349,9 @@ describe('SearchBar', () => { // make sure new term is captured await user.type(textbox, value); - act(() => { - jest.advanceTimersByTime(200); - }); + await waitFor(() => expect(analyticsApiMock.getEvents()).toHaveLength(2)); - await waitFor(() => expect(textbox).toHaveValue(value)); - - expect(analyticsApiMock.getEvents()).toHaveLength(2); + expect(textbox).toHaveValue(value); expect(analyticsApiMock.getEvents()[1]).toEqual({ action: 'search', context: { @@ -393,7 +362,5 @@ describe('SearchBar', () => { }, subject: value, }); - - jest.useRealTimers(); }); }); From dd7dfaa9220b876de6761a9c99c6cfd6ed8ad4cd Mon Sep 17 00:00:00 2001 From: Renan Mendes Carvalho Date: Tue, 27 Jun 2023 10:44:46 +0200 Subject: [PATCH 076/194] test(search): Move expectations inside waitFor Signed-off-by: Renan Mendes Carvalho --- .../components/SearchBar/SearchBar.test.tsx | 59 +++++++++---------- 1 file changed, 27 insertions(+), 32 deletions(-) diff --git a/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx b/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx index 5af5447740..9b4664aceb 100644 --- a/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx +++ b/plugins/search-react/src/components/SearchBar/SearchBar.test.tsx @@ -323,44 +323,39 @@ describe('SearchBar', () => { const textbox = screen.getByLabelText('Search'); let value = 'value'; - await user.type(textbox, value); - - expect(analyticsApiMock.getEvents()).toHaveLength(0); - - await waitFor(() => expect(analyticsApiMock.getEvents()).toHaveLength(1)); - - expect(textbox).toHaveValue(value); - expect(analyticsApiMock.getEvents()[0]).toEqual({ - action: 'search', - context: { - extension: 'SearchBar', - pluginId: 'search', - routeRef: 'unknown', - searchTypes: types.toString(), - }, - subject: value, + await waitFor(() => { + expect(analyticsApiMock.getEvents()).toHaveLength(1); + expect(textbox).toHaveValue(value); + expect(analyticsApiMock.getEvents()[0]).toEqual({ + action: 'search', + context: { + extension: 'SearchBar', + pluginId: 'search', + routeRef: 'unknown', + searchTypes: types.toString(), + }, + subject: value, + }); }); - await user.clear(textbox); - value = 'new value'; - + await user.clear(textbox); // make sure new term is captured await user.type(textbox, value); - - await waitFor(() => expect(analyticsApiMock.getEvents()).toHaveLength(2)); - - expect(textbox).toHaveValue(value); - expect(analyticsApiMock.getEvents()[1]).toEqual({ - action: 'search', - context: { - extension: 'SearchBar', - pluginId: 'search', - routeRef: 'unknown', - searchTypes: types.toString(), - }, - subject: value, + await waitFor(() => { + expect(analyticsApiMock.getEvents()).toHaveLength(2); + expect(textbox).toHaveValue(value); + expect(analyticsApiMock.getEvents()[1]).toEqual({ + action: 'search', + context: { + extension: 'SearchBar', + pluginId: 'search', + routeRef: 'unknown', + searchTypes: types.toString(), + }, + subject: value, + }); }); }); }); From d72e2eeba6f103348248ba96bc65fc25bcddfc62 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 27 Jun 2023 12:10:42 +0000 Subject: [PATCH 077/194] Version Packages (next) --- .changeset/create-app-1687867724.md | 5 + .changeset/pre.json | 20 +- docs/releases/v1.16.0-next.0-changelog.md | 2583 +++++++++++++++++ package.json | 2 +- packages/app-defaults/CHANGELOG.md | 11 + packages/app-defaults/package.json | 2 +- packages/app/CHANGELOG.md | 75 + packages/app/package.json | 2 +- packages/backend-app-api/CHANGELOG.md | 16 + packages/backend-app-api/package.json | 2 +- packages/backend-common/CHANGELOG.md | 17 + packages/backend-common/package.json | 2 +- packages/backend-defaults/CHANGELOG.md | 9 + packages/backend-defaults/package.json | 2 +- packages/backend-next/CHANGELOG.md | 24 + packages/backend-next/package.json | 2 +- packages/backend-plugin-api/CHANGELOG.md | 11 + packages/backend-plugin-api/package.json | 2 +- packages/backend-tasks/CHANGELOG.md | 10 + packages/backend-tasks/package.json | 2 +- packages/backend-test-utils/CHANGELOG.md | 12 + packages/backend-test-utils/package.json | 2 +- packages/backend/CHANGELOG.md | 55 + packages/backend/package.json | 2 +- packages/catalog-client/CHANGELOG.md | 8 + packages/catalog-client/package.json | 2 +- packages/catalog-model/CHANGELOG.md | 9 + packages/catalog-model/package.json | 2 +- packages/cli-node/CHANGELOG.md | 9 + packages/cli-node/package.json | 2 +- packages/cli/CHANGELOG.md | 17 + packages/cli/package.json | 2 +- packages/config-loader/CHANGELOG.md | 10 + packages/config-loader/package.json | 2 +- packages/core-components/CHANGELOG.md | 13 + packages/core-components/package.json | 2 +- packages/create-app/CHANGELOG.md | 8 + packages/create-app/package.json | 2 +- packages/dev-utils/CHANGELOG.md | 15 + packages/dev-utils/package.json | 2 +- packages/e2e-test/CHANGELOG.md | 9 + packages/e2e-test/package.json | 2 +- packages/errors/CHANGELOG.md | 8 + packages/errors/package.json | 2 +- packages/integration-aws-node/CHANGELOG.md | 8 + packages/integration-aws-node/package.json | 2 +- packages/integration-react/CHANGELOG.md | 11 + packages/integration-react/package.json | 2 +- packages/integration/CHANGELOG.md | 8 + packages/integration/package.json | 2 +- packages/repo-tools/CHANGELOG.md | 9 + packages/repo-tools/package.json | 2 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 19 + .../techdocs-cli-embedded-app/package.json | 2 +- packages/techdocs-cli/CHANGELOG.md | 11 + packages/techdocs-cli/package.json | 2 +- packages/test-utils/CHANGELOG.md | 13 + packages/test-utils/package.json | 2 +- plugins/adr-backend/CHANGELOG.md | 14 + plugins/adr-backend/package.json | 2 +- plugins/adr-common/CHANGELOG.md | 9 + plugins/adr-common/package.json | 2 +- plugins/adr/CHANGELOG.md | 15 + plugins/adr/package.json | 2 +- plugins/airbrake-backend/CHANGELOG.md | 8 + plugins/airbrake-backend/package.json | 2 +- plugins/airbrake/CHANGELOG.md | 13 + plugins/airbrake/package.json | 2 +- plugins/allure/CHANGELOG.md | 11 + plugins/allure/package.json | 2 +- plugins/analytics-module-ga/CHANGELOG.md | 10 + plugins/analytics-module-ga/package.json | 2 +- plugins/analytics-module-ga4/CHANGELOG.md | 10 + plugins/analytics-module-ga4/package.json | 2 +- plugins/apache-airflow/CHANGELOG.md | 8 + plugins/apache-airflow/package.json | 2 +- plugins/api-docs/CHANGELOG.md | 12 + plugins/api-docs/package.json | 2 +- plugins/apollo-explorer/CHANGELOG.md | 9 + plugins/apollo-explorer/package.json | 2 +- plugins/app-backend/CHANGELOG.md | 11 + plugins/app-backend/package.json | 2 +- plugins/auth-backend/CHANGELOG.md | 13 + plugins/auth-backend/package.json | 2 +- plugins/auth-node/CHANGELOG.md | 9 + plugins/auth-node/package.json | 2 +- plugins/azure-devops-backend/CHANGELOG.md | 9 + plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/CHANGELOG.md | 13 + plugins/azure-devops/package.json | 2 +- plugins/azure-sites-backend/CHANGELOG.md | 9 + plugins/azure-sites-backend/package.json | 2 +- plugins/azure-sites/CHANGELOG.md | 12 + plugins/azure-sites/package.json | 2 +- plugins/badges-backend/CHANGELOG.md | 12 + plugins/badges-backend/package.json | 2 +- plugins/badges/CHANGELOG.md | 12 + plugins/badges/package.json | 2 +- plugins/bazaar-backend/CHANGELOG.md | 11 + plugins/bazaar-backend/package.json | 2 +- plugins/bazaar/CHANGELOG.md | 15 + plugins/bazaar/package.json | 2 +- plugins/bitbucket-cloud-common/CHANGELOG.md | 7 + plugins/bitbucket-cloud-common/package.json | 2 +- plugins/bitrise/CHANGELOG.md | 11 + plugins/bitrise/package.json | 2 +- .../catalog-backend-module-aws/CHANGELOG.md | 18 + .../catalog-backend-module-aws/package.json | 2 +- .../catalog-backend-module-azure/CHANGELOG.md | 16 + .../catalog-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 20 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../catalog-backend-module-ldap/CHANGELOG.md | 13 + .../catalog-backend-module-ldap/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 14 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- plugins/catalog-backend/CHANGELOG.md | 28 + plugins/catalog-backend/package.json | 2 +- plugins/catalog-common/CHANGELOG.md | 9 + plugins/catalog-common/package.json | 2 +- plugins/catalog-customized/CHANGELOG.md | 8 + plugins/catalog-customized/package.json | 2 +- plugins/catalog-graph/CHANGELOG.md | 12 + plugins/catalog-graph/package.json | 2 +- plugins/catalog-graphql/CHANGELOG.md | 9 + plugins/catalog-graphql/package.json | 2 +- plugins/catalog-import/CHANGELOG.md | 16 + plugins/catalog-import/package.json | 2 +- plugins/catalog-node/CHANGELOG.md | 16 + plugins/catalog-node/package.json | 2 +- plugins/catalog-react/CHANGELOG.md | 18 + plugins/catalog-react/package.json | 2 +- .../catalog-unprocessed-entities/CHANGELOG.md | 22 + .../catalog-unprocessed-entities/package.json | 2 +- plugins/catalog/CHANGELOG.md | 19 + plugins/catalog/package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/cicd-statistics/CHANGELOG.md | 9 + plugins/cicd-statistics/package.json | 2 +- plugins/circleci/CHANGELOG.md | 11 + plugins/circleci/package.json | 2 +- plugins/cloudbuild/CHANGELOG.md | 11 + plugins/cloudbuild/package.json | 2 +- plugins/code-climate/CHANGELOG.md | 11 + plugins/code-climate/package.json | 2 +- plugins/code-coverage-backend/CHANGELOG.md | 12 + plugins/code-coverage-backend/package.json | 2 +- plugins/code-coverage/CHANGELOG.md | 13 + plugins/code-coverage/package.json | 2 +- plugins/codescene/CHANGELOG.md | 11 + plugins/codescene/package.json | 2 +- plugins/config-schema/CHANGELOG.md | 12 + plugins/config-schema/package.json | 2 +- plugins/cost-insights/CHANGELOG.md | 13 + plugins/cost-insights/package.json | 2 +- plugins/devtools-backend/CHANGELOG.md | 16 + plugins/devtools-backend/package.json | 2 +- plugins/devtools-common/CHANGELOG.md | 8 + plugins/devtools-common/package.json | 2 +- plugins/devtools/CHANGELOG.md | 15 + plugins/devtools/package.json | 2 +- plugins/dynatrace/CHANGELOG.md | 12 + plugins/dynatrace/package.json | 2 +- plugins/entity-feedback-backend/CHANGELOG.md | 14 + plugins/entity-feedback-backend/package.json | 2 +- plugins/entity-feedback/CHANGELOG.md | 13 + plugins/entity-feedback/package.json | 2 +- plugins/entity-validation/CHANGELOG.md | 14 + plugins/entity-validation/package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../events-backend-module-azure/CHANGELOG.md | 8 + .../events-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../events-backend-module-gerrit/CHANGELOG.md | 8 + .../events-backend-module-gerrit/package.json | 2 +- .../events-backend-module-github/CHANGELOG.md | 9 + .../events-backend-module-github/package.json | 2 +- .../events-backend-module-gitlab/CHANGELOG.md | 9 + .../events-backend-module-gitlab/package.json | 2 +- .../events-backend-test-utils/CHANGELOG.md | 7 + .../events-backend-test-utils/package.json | 2 +- plugins/events-backend/CHANGELOG.md | 10 + plugins/events-backend/package.json | 2 +- plugins/events-node/CHANGELOG.md | 7 + plugins/events-node/package.json | 2 +- .../example-todo-list-backend/CHANGELOG.md | 11 + .../example-todo-list-backend/package.json | 2 +- plugins/example-todo-list-common/CHANGELOG.md | 7 + plugins/example-todo-list-common/package.json | 2 +- plugins/example-todo-list/CHANGELOG.md | 9 + plugins/example-todo-list/package.json | 2 +- plugins/explore-backend/CHANGELOG.md | 12 + plugins/explore-backend/package.json | 2 +- plugins/explore/CHANGELOG.md | 16 + plugins/explore/package.json | 2 +- plugins/firehydrant/CHANGELOG.md | 11 + plugins/firehydrant/package.json | 2 +- plugins/fossa/CHANGELOG.md | 12 + plugins/fossa/package.json | 2 +- plugins/gcalendar/CHANGELOG.md | 10 + plugins/gcalendar/package.json | 2 +- plugins/gcp-projects/CHANGELOG.md | 9 + plugins/gcp-projects/package.json | 2 +- plugins/git-release-manager/CHANGELOG.md | 10 + plugins/git-release-manager/package.json | 2 +- plugins/github-actions/CHANGELOG.md | 13 + plugins/github-actions/package.json | 2 +- plugins/github-deployments/CHANGELOG.md | 14 + plugins/github-deployments/package.json | 2 +- plugins/github-issues/CHANGELOG.md | 13 + plugins/github-issues/package.json | 2 +- .../github-pull-requests-board/CHANGELOG.md | 12 + .../github-pull-requests-board/package.json | 2 +- plugins/gitops-profiles/CHANGELOG.md | 10 + plugins/gitops-profiles/package.json | 2 +- plugins/gocd/CHANGELOG.md | 12 + plugins/gocd/package.json | 2 +- plugins/graphiql/CHANGELOG.md | 9 + plugins/graphiql/package.json | 2 +- plugins/graphql-backend/CHANGELOG.md | 9 + plugins/graphql-backend/package.json | 2 +- plugins/graphql-voyager/CHANGELOG.md | 9 + plugins/graphql-voyager/package.json | 2 +- plugins/home-react/CHANGELOG.md | 8 + plugins/home-react/package.json | 2 +- plugins/home/CHANGELOG.md | 14 + plugins/home/package.json | 2 +- plugins/ilert/CHANGELOG.md | 12 + plugins/ilert/package.json | 2 +- plugins/jenkins-backend/CHANGELOG.md | 15 + plugins/jenkins-backend/package.json | 2 +- plugins/jenkins-common/CHANGELOG.md | 8 + plugins/jenkins-common/package.json | 2 +- plugins/jenkins/CHANGELOG.md | 13 + plugins/jenkins/package.json | 2 +- plugins/kafka-backend/CHANGELOG.md | 11 + plugins/kafka-backend/package.json | 2 +- plugins/kafka/CHANGELOG.md | 12 + plugins/kafka/package.json | 2 +- plugins/kubernetes-backend/CHANGELOG.md | 19 + plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes-common/CHANGELOG.md | 8 + plugins/kubernetes-common/package.json | 2 +- plugins/kubernetes/CHANGELOG.md | 14 + plugins/kubernetes/package.json | 2 +- plugins/lighthouse-backend/CHANGELOG.md | 13 + plugins/lighthouse-backend/package.json | 2 +- plugins/lighthouse/CHANGELOG.md | 13 + plugins/lighthouse/package.json | 2 +- plugins/linguist-backend/CHANGELOG.md | 15 + plugins/linguist-backend/package.json | 2 +- plugins/linguist/CHANGELOG.md | 13 + plugins/linguist/package.json | 2 +- plugins/microsoft-calendar/CHANGELOG.md | 10 + plugins/microsoft-calendar/package.json | 2 +- plugins/newrelic-dashboard/CHANGELOG.md | 11 + plugins/newrelic-dashboard/package.json | 2 +- plugins/newrelic/CHANGELOG.md | 9 + plugins/newrelic/package.json | 2 +- plugins/nomad-backend/CHANGELOG.md | 9 + plugins/nomad-backend/package.json | 2 +- plugins/nomad/CHANGELOG.md | 13 + plugins/nomad/package.json | 2 +- plugins/octopus-deploy/CHANGELOG.md | 11 + plugins/octopus-deploy/package.json | 2 +- plugins/org-react/CHANGELOG.md | 12 + plugins/org-react/package.json | 2 +- plugins/org/CHANGELOG.md | 11 + plugins/org/package.json | 2 +- plugins/pagerduty/CHANGELOG.md | 13 + plugins/pagerduty/package.json | 2 +- plugins/periskop-backend/CHANGELOG.md | 9 + plugins/periskop-backend/package.json | 2 +- plugins/periskop/CHANGELOG.md | 12 + plugins/periskop/package.json | 2 +- plugins/permission-backend/CHANGELOG.md | 13 + plugins/permission-backend/package.json | 2 +- plugins/permission-common/CHANGELOG.md | 9 + plugins/permission-common/package.json | 2 +- plugins/permission-node/CHANGELOG.md | 12 + plugins/permission-node/package.json | 2 +- plugins/permission-react/CHANGELOG.md | 9 + plugins/permission-react/package.json | 2 +- plugins/playlist-backend/CHANGELOG.md | 15 + plugins/playlist-backend/package.json | 2 +- plugins/playlist-common/CHANGELOG.md | 7 + plugins/playlist-common/package.json | 2 +- plugins/playlist/CHANGELOG.md | 18 + plugins/playlist/package.json | 2 +- plugins/proxy-backend/CHANGELOG.md | 9 + plugins/proxy-backend/package.json | 2 +- plugins/puppetdb/CHANGELOG.md | 12 + plugins/puppetdb/package.json | 2 +- plugins/rollbar-backend/CHANGELOG.md | 8 + plugins/rollbar-backend/package.json | 2 +- plugins/rollbar/CHANGELOG.md | 11 + plugins/rollbar/package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/scaffolder-backend/CHANGELOG.md | 23 + plugins/scaffolder-backend/package.json | 2 +- plugins/scaffolder-common/CHANGELOG.md | 9 + plugins/scaffolder-common/package.json | 2 +- plugins/scaffolder-node/CHANGELOG.md | 10 + plugins/scaffolder-node/package.json | 2 +- plugins/scaffolder-react/CHANGELOG.md | 16 + plugins/scaffolder-react/package.json | 2 +- plugins/scaffolder/CHANGELOG.md | 21 + plugins/scaffolder/package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- plugins/search-backend-module-pg/CHANGELOG.md | 11 + plugins/search-backend-module-pg/package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- plugins/search-backend-node/CHANGELOG.md | 13 + plugins/search-backend-node/package.json | 2 +- plugins/search-backend/CHANGELOG.md | 16 + plugins/search-backend/package.json | 2 +- plugins/search-common/CHANGELOG.md | 8 + plugins/search-common/package.json | 2 +- plugins/search-react/CHANGELOG.md | 12 + plugins/search-react/package.json | 2 +- plugins/search/CHANGELOG.md | 17 + plugins/search/package.json | 2 +- plugins/sentry/CHANGELOG.md | 11 + plugins/sentry/package.json | 2 +- plugins/shortcuts/CHANGELOG.md | 10 + plugins/shortcuts/package.json | 2 +- plugins/sonarqube-backend/CHANGELOG.md | 9 + plugins/sonarqube-backend/package.json | 2 +- plugins/sonarqube-react/CHANGELOG.md | 8 + plugins/sonarqube-react/package.json | 2 +- plugins/sonarqube/CHANGELOG.md | 12 + plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/CHANGELOG.md | 11 + plugins/splunk-on-call/package.json | 2 +- plugins/stack-overflow-backend/CHANGELOG.md | 9 + plugins/stack-overflow-backend/package.json | 2 +- plugins/stack-overflow/CHANGELOG.md | 13 + plugins/stack-overflow/package.json | 2 +- plugins/stackstorm/CHANGELOG.md | 11 + plugins/stackstorm/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- plugins/tech-insights-backend/CHANGELOG.md | 15 + plugins/tech-insights-backend/package.json | 2 +- plugins/tech-insights-node/CHANGELOG.md | 11 + plugins/tech-insights-node/package.json | 2 +- plugins/tech-insights/CHANGELOG.md | 14 + plugins/tech-insights/package.json | 2 +- plugins/tech-radar/CHANGELOG.md | 9 + plugins/tech-radar/package.json | 2 +- .../techdocs-addons-test-utils/CHANGELOG.md | 16 + .../techdocs-addons-test-utils/package.json | 2 +- plugins/techdocs-backend/CHANGELOG.md | 18 + plugins/techdocs-backend/package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- plugins/techdocs-node/CHANGELOG.md | 13 + plugins/techdocs-node/package.json | 2 +- plugins/techdocs-react/CHANGELOG.md | 11 + plugins/techdocs-react/package.json | 2 +- plugins/techdocs/CHANGELOG.md | 18 + plugins/techdocs/package.json | 2 +- plugins/todo-backend/CHANGELOG.md | 14 + plugins/todo-backend/package.json | 2 +- plugins/todo/CHANGELOG.md | 12 + plugins/todo/package.json | 2 +- plugins/user-settings-backend/CHANGELOG.md | 12 + plugins/user-settings-backend/package.json | 2 +- plugins/user-settings/CHANGELOG.md | 13 + plugins/user-settings/package.json | 2 +- plugins/vault-backend/CHANGELOG.md | 10 + plugins/vault-backend/package.json | 2 +- plugins/vault/CHANGELOG.md | 12 + plugins/vault/package.json | 2 +- plugins/xcmetrics/CHANGELOG.md | 10 + plugins/xcmetrics/package.json | 2 +- yarn.lock | 426 ++- 415 files changed, 5740 insertions(+), 286 deletions(-) create mode 100644 .changeset/create-app-1687867724.md create mode 100644 docs/releases/v1.16.0-next.0-changelog.md diff --git a/.changeset/create-app-1687867724.md b/.changeset/create-app-1687867724.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1687867724.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/pre.json b/.changeset/pre.json index 88b1ec9b27..e724582519 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -230,5 +230,23 @@ "@backstage/plugin-vault-backend": "0.3.2", "@backstage/plugin-xcmetrics": "0.2.39" }, - "changesets": [] + "changesets": [ + "angry-phones-wash", + "cli-always-yarn-pack-freal", + "create-app-1687867724", + "cyan-shirts-deny", + "dirty-wasps-draw", + "dull-onions-remember", + "green-otters-wait", + "lazy-frogs-destroy", + "many-ants-poke", + "mighty-shoes-refuse", + "old-rules-give", + "popular-kangaroos-accept", + "purple-starfishes-design", + "short-rabbits-roll", + "sour-humans-begin", + "tough-flowers-suffer", + "twenty-seas-float" + ] } diff --git a/docs/releases/v1.16.0-next.0-changelog.md b/docs/releases/v1.16.0-next.0-changelog.md new file mode 100644 index 0000000000..51a4f561c7 --- /dev/null +++ b/docs/releases/v1.16.0-next.0-changelog.md @@ -0,0 +1,2583 @@ +# Release v1.16.0-next.0 + +## @backstage/plugin-catalog-backend@1.11.0-next.0 + +### Minor Changes + +- f06f0e46ba88: Support placeholder resolvers in the CatalogPlugin, also moves `PlaceholderResolver` and related types from `@backstage/plugin-catalog-backend` to `@backstage/plugin-catalog-node`. + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-catalog-node@1.4.0-next.0 + +### Minor Changes + +- f06f0e46ba88: Support placeholder resolvers in the CatalogPlugin, also moves `PlaceholderResolver` and related types from `@backstage/plugin-catalog-backend` to `@backstage/plugin-catalog-node`. + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + +## @backstage/app-defaults@1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + +## @backstage/backend-app-api@0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + +## @backstage/backend-common@0.19.1-next.0 + +### Patch Changes + +- 787ddcc5ef99: use `Readable.from` to explicitly convert the `buffer` from `node-fetch` to a `Readable` stream +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-app-api@0.4.5-next.0 + - @backstage/backend-dev-utils@0.1.1 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/types@1.1.0 + +## @backstage/backend-defaults@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-app-api@0.4.5-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + +## @backstage/backend-plugin-api@0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/backend-tasks@0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + +## @backstage/backend-test-utils@0.1.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-app-api@0.4.5-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + +## @backstage/catalog-client@1.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + +## @backstage/catalog-model@1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + +## @backstage/cli@0.22.9-next.0 + +### Patch Changes + +- 6adb6f41711a: Fixed the `--alwaysYarnPack` flag on the`backstage-cli build-workspace` command. +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.2-next.0 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/eslint-plugin@0.1.3 + - @backstage/integration@1.5.1-next.0 + - @backstage/release-manifests@0.0.9 + - @backstage/types@1.1.0 + +## @backstage/cli-node@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/types@1.1.0 + +## @backstage/config-loader@1.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + +## @backstage/core-components@0.13.3-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- a011d2316a58: Fix keyboard navigation & focus highlight on Select component. +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/version-bridge@1.0.4 + +## @backstage/create-app@0.5.3-next.0 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.12 + +## @backstage/dev-utils@1.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/app-defaults@1.4.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/errors@1.2.1-next.0 + +### Patch Changes + +- e205b3e6ede8: Set `this.name` in all error classes that extend `CustomErrorBase` class to their actual name +- Updated dependencies + - @backstage/types@1.1.0 + +## @backstage/integration@1.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/integration-aws-node@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/integration-react@1.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + +## @backstage/repo-tools@0.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.2-next.0 + +## @techdocs/cli@1.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/plugin-techdocs-node@1.7.3-next.0 + +## @backstage/test-utils@1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + +## @backstage/plugin-adr@0.6.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-adr-common@0.2.11-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + +## @backstage/plugin-adr-backend@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-adr-common@0.2.11-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-adr-common@0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-airbrake@0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/dev-utils@1.0.17-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-airbrake-backend@0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-allure@0.1.36-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-analytics-module-ga@0.1.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-analytics-module-ga4@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-apache-airflow@0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + +## @backstage/plugin-api-docs@0.9.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-apollo-explorer@0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-app-backend@0.3.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/types@1.1.0 + +## @backstage/plugin-auth-backend@0.18.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + +## @backstage/plugin-auth-node@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-azure-devops@0.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-azure-devops-common@0.3.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-azure-devops-backend@0.3.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-azure-devops-common@0.3.0 + +## @backstage/plugin-azure-sites@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-azure-sites-common@0.1.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-azure-sites-backend@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-azure-sites-common@0.1.0 + +## @backstage/plugin-badges@0.2.44-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-badges-backend@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + +## @backstage/plugin-bazaar@0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.9-next.0 + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-bazaar-backend@0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + +## @backstage/plugin-bitbucket-cloud-common@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.5.1-next.0 + +## @backstage/plugin-bitrise@0.1.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-catalog@1.11.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + +## @backstage/plugin-catalog-backend-module-aws@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-kubernetes-common@0.6.5-next.0 + +## @backstage/plugin-catalog-backend-module-azure@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket@0.2.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.8-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.8-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + +## @backstage/plugin-catalog-backend-module-gerrit@0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.3.2-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-catalog-backend-module-ldap@0.5.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.5.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-common@1.0.15-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.1.1-next.0 + +### Patch Changes + +- a8fa79ccc105: Fix and improve documentation for the unprocessed entities modules. +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + +## @backstage/plugin-catalog-common@1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-catalog-graph@0.2.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-catalog-graphql@0.3.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + +## @backstage/plugin-catalog-import@0.9.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-catalog-react@1.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.1-next.0 + +### Patch Changes + +- 2c4869473155: The Catalog Unprocessed Entities plugin can now be integrated as a tab within the DevTools plugin + + - Added an export for `UnprocessedEntitiesContent` + - Updated the `README` with images of the features + - Adjusted the styles to fill in the available space + - Set the table page size to 20 as 40 was causing errors in the browser console + +- 57585d89f926: Export some types and API items. This allows people to call the API from different places with the ApiRef, as well + as completely customize the client if required. Check the [README.md](https://github.com/backstage/backstage/blob/master/plugins/catalog-unprocessed-entities/README.md) to + note what needs to be added in order to use the new `catalogUnprocessedEntitiesApiRef` exported function. + +- a8fa79ccc105: Fix and improve documentation for the unprocessed entities modules. + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-cicd-statistics@0.1.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-cicd-statistics@0.1.22-next.0 + +## @backstage/plugin-circleci@0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-cloudbuild@0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-code-climate@0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-code-coverage@0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-code-coverage-backend@0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + +## @backstage/plugin-codescene@0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-config-schema@0.1.43-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + +## @backstage/plugin-cost-insights@0.12.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-cost-insights-common@0.1.1 + +## @backstage/plugin-devtools@0.1.2-next.0 + +### Patch Changes + +- 5969639fd075: Allow specifying custom title for `DevToolsLayout` +- 2c4869473155: Updated the `README` with instructions on how to integrate the Catalog Unprocessed Entities plugin as a tab within DevTools +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-devtools-common@0.1.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + +## @backstage/plugin-devtools-backend@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-devtools-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + +## @backstage/plugin-devtools-common@0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-dynatrace@6.0.1-next.0 + +### Patch Changes + +- 3424cbfe5f4a: updated the link that the "View Entity in Dynatrace" redirects the user to. +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-entity-feedback@0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-entity-feedback-common@0.1.1 + +## @backstage/plugin-entity-feedback-backend@0.1.5-next.0 + +### Patch Changes + +- 5c1c10adac8f: Added support for the new backend system +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-entity-feedback-common@0.1.1 + +## @backstage/plugin-entity-validation@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-events-backend@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-backend-module-aws-sqs@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-backend-module-azure@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-backend-module-gerrit@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-backend-module-github@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-backend-module-gitlab@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-backend-test-utils@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.8-next.0 + +## @backstage/plugin-events-node@0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + +## @backstage/plugin-explore@0.4.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-explore-react@0.0.29 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + +## @backstage/plugin-explore-backend@0.0.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-backend-module-explore@0.1.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-firehydrant@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-fossa@0.2.52-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-gcalendar@0.3.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-gcp-projects@0.3.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-git-release-manager@0.3.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + +## @backstage/plugin-github-actions@0.6.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-github-deployments@0.1.51-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-github-issues@0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-github-pull-requests-board@0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-gitops-profiles@0.3.38-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-gocd@0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-graphiql@0.2.52-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-graphql-backend@0.1.37-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-graphql@0.3.22-next.0 + +## @backstage/plugin-graphql-voyager@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-home@0.5.4-next.0 + +### Patch Changes + +- 88c62048fcbd: fix: update plugin home dependency for `@rjsf/material-ui` to `@rjsf/material-ui-v5` +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-home-react@0.1.1-next.0 + +## @backstage/plugin-home-react@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + +## @backstage/plugin-ilert@0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-jenkins@0.8.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-jenkins-common@0.1.17-next.0 + +## @backstage/plugin-jenkins-backend@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-jenkins-common@0.1.17-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + +## @backstage/plugin-jenkins-common@0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-kafka@0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-kafka-backend@0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-kubernetes@0.9.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-kubernetes-common@0.6.5-next.0 + +## @backstage/plugin-kubernetes-backend@0.11.2-next.0 + +### Patch Changes + +- faac6b7425b2: Update readme with a valid link to k8s documentation +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-kubernetes-common@0.6.5-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + +## @backstage/plugin-kubernetes-common@0.6.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-lighthouse@0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-lighthouse-common@0.1.2 + +## @backstage/plugin-lighthouse-backend@0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-lighthouse-common@0.1.2 + +## @backstage/plugin-linguist@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-linguist-common@0.1.0 + +## @backstage/plugin-linguist-backend@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-linguist-common@0.1.0 + +## @backstage/plugin-microsoft-calendar@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-newrelic@0.3.38-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-newrelic-dashboard@0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-nomad@0.1.1-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-nomad-backend@0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-octopus-deploy@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-org@0.6.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-org-react@0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-pagerduty@0.6.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-home-react@0.1.1-next.0 + +## @backstage/plugin-periskop@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-periskop-backend@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-permission-backend@0.5.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + +## @backstage/plugin-permission-common@0.7.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + +## @backstage/plugin-permission-node@0.7.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-permission-react@0.4.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-playlist@0.1.12-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + - @backstage/plugin-playlist-common@0.1.8-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + +## @backstage/plugin-playlist-backend@0.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-playlist-common@0.1.8-next.0 + +## @backstage/plugin-playlist-common@0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-proxy-backend@0.2.41-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-puppetdb@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-rollbar@0.4.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-rollbar-backend@0.1.44-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-scaffolder@1.14.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.0 + +## @backstage/plugin-scaffolder-backend@1.15.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.2.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.4.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + +## @backstage/plugin-scaffolder-common@1.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-scaffolder-node@0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + +## @backstage/plugin-scaffolder-react@1.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + +## @backstage/plugin-search@1.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + +## @backstage/plugin-search-backend@1.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-search-backend-module-catalog@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-search-backend-module-elasticsearch@1.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-search-backend-module-explore@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-search-backend-module-pg@0.5.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-search-backend-module-techdocs@0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-techdocs-node@1.7.3-next.0 + +## @backstage/plugin-search-backend-node@1.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-search-common@1.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + +## @backstage/plugin-search-react@1.6.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-sentry@0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-shortcuts@0.3.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + +## @backstage/plugin-sonarqube@0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-sonarqube-react@0.1.7-next.0 + +## @backstage/plugin-sonarqube-backend@0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-sonarqube-react@0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + +## @backstage/plugin-splunk-on-call@0.4.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-stack-overflow@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-home-react@0.1.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + +## @backstage/plugin-stack-overflow-backend@0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-stackstorm@0.1.4-next.0 + +### Patch Changes + +- 1745959daf98: Add props to StackstormHome for Header Customization +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-tech-insights@0.3.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-tech-insights-common@0.2.11 + +## @backstage/plugin-tech-insights-backend@0.5.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-tech-insights-common@0.2.11 + - @backstage/plugin-tech-insights-node@0.4.5-next.0 + +## @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-tech-insights-common@0.2.11 + - @backstage/plugin-tech-insights-node@0.4.5-next.0 + +## @backstage/plugin-tech-insights-node@0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-tech-insights-common@0.2.11 + +## @backstage/plugin-tech-radar@0.6.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @backstage/plugin-techdocs@1.6.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + - @backstage/plugin-techdocs@1.6.5-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + +## @backstage/plugin-techdocs-backend@1.6.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-techdocs-node@1.7.3-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + +## @backstage/plugin-techdocs-node@1.7.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + +## @backstage/plugin-techdocs-react@1.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/version-bridge@1.0.4 + +## @backstage/plugin-todo@0.2.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-todo-backend@0.1.44-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + +## @backstage/plugin-user-settings@0.7.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-user-settings-backend@0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + +## @backstage/plugin-vault@0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @backstage/plugin-vault-backend@0.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-xcmetrics@0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## example-app@0.2.85-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-devtools@0.1.2-next.0 + - @backstage/cli@0.22.9-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.1.1-next.0 + - @backstage/plugin-stackstorm@0.1.4-next.0 + - @backstage/plugin-dynatrace@6.0.1-next.0 + - @backstage/plugin-home@0.5.4-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/plugin-playlist@0.1.12-next.0 + - @backstage/plugin-nomad@0.1.1-next.0 + - @backstage/app-defaults@1.4.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-adr@0.6.3-next.0 + - @backstage/plugin-airbrake@0.3.20-next.0 + - @backstage/plugin-apache-airflow@0.2.13-next.0 + - @backstage/plugin-api-docs@0.9.6-next.0 + - @backstage/plugin-azure-devops@0.3.2-next.0 + - @backstage/plugin-azure-sites@0.1.9-next.0 + - @backstage/plugin-badges@0.2.44-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-graph@0.2.32-next.0 + - @backstage/plugin-catalog-import@0.9.10-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-circleci@0.3.20-next.0 + - @backstage/plugin-cloudbuild@0.3.20-next.0 + - @backstage/plugin-code-coverage@0.2.13-next.0 + - @backstage/plugin-cost-insights@0.12.9-next.0 + - @backstage/plugin-entity-feedback@0.2.3-next.0 + - @backstage/plugin-explore@0.4.6-next.0 + - @backstage/plugin-gcalendar@0.3.16-next.0 + - @backstage/plugin-gcp-projects@0.3.39-next.0 + - @backstage/plugin-github-actions@0.6.1-next.0 + - @backstage/plugin-gocd@0.1.26-next.0 + - @backstage/plugin-graphiql@0.2.52-next.0 + - @backstage/plugin-jenkins@0.8.2-next.0 + - @backstage/plugin-kafka@0.3.20-next.0 + - @backstage/plugin-kubernetes@0.9.3-next.0 + - @backstage/plugin-lighthouse@0.4.5-next.0 + - @backstage/plugin-linguist@0.1.5-next.0 + - @backstage/plugin-linguist-common@0.1.0 + - @backstage/plugin-microsoft-calendar@0.1.5-next.0 + - @backstage/plugin-newrelic@0.3.38-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.13-next.0 + - @backstage/plugin-octopus-deploy@0.2.2-next.0 + - @backstage/plugin-org@0.6.10-next.0 + - @backstage/plugin-pagerduty@0.6.1-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + - @backstage/plugin-puppetdb@0.1.3-next.0 + - @backstage/plugin-rollbar@0.4.20-next.0 + - @backstage/plugin-scaffolder@1.14.1-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.0 + - @backstage/plugin-search@1.3.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + - @backstage/plugin-sentry@0.5.5-next.0 + - @backstage/plugin-shortcuts@0.3.12-next.0 + - @backstage/plugin-stack-overflow@0.1.18-next.0 + - @backstage/plugin-tech-insights@0.3.12-next.0 + - @backstage/plugin-tech-radar@0.6.6-next.0 + - @backstage/plugin-techdocs@1.6.5-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.15-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + - @backstage/plugin-todo@0.2.22-next.0 + - @backstage/plugin-user-settings@0.7.5-next.0 + - @internal/plugin-catalog-customized@0.0.12-next.0 + +## example-backend@0.2.85-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.1.1-next.0 + - @backstage/plugin-entity-feedback-backend@0.1.5-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/plugin-kubernetes-backend@0.11.2-next.0 + - example-app@0.2.85-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-adr-backend@0.3.5-next.0 + - @backstage/plugin-app-backend@0.3.47-next.0 + - @backstage/plugin-auth-backend@0.18.5-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-azure-devops-backend@0.3.26-next.0 + - @backstage/plugin-azure-sites-backend@0.1.9-next.0 + - @backstage/plugin-badges-backend@0.2.2-next.0 + - @backstage/plugin-code-coverage-backend@0.2.13-next.0 + - @backstage/plugin-devtools-backend@0.1.2-next.0 + - @backstage/plugin-events-backend@0.2.8-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + - @backstage/plugin-explore-backend@0.0.9-next.0 + - @backstage/plugin-graphql-backend@0.1.37-next.0 + - @backstage/plugin-jenkins-backend@0.2.2-next.0 + - @backstage/plugin-kafka-backend@0.2.40-next.0 + - @backstage/plugin-lighthouse-backend@0.2.3-next.0 + - @backstage/plugin-linguist-backend@0.3.1-next.0 + - @backstage/plugin-nomad-backend@0.1.1-next.0 + - @backstage/plugin-permission-backend@0.5.22-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-playlist-backend@0.3.3-next.0 + - @backstage/plugin-proxy-backend@0.2.41-next.0 + - @backstage/plugin-rollbar-backend@0.1.44-next.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.4-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.16-next.0 + - @backstage/plugin-search-backend@1.3.3-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.2-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.8-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-tech-insights-backend@0.5.13-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.31-next.0 + - @backstage/plugin-tech-insights-node@0.4.5-next.0 + - @backstage/plugin-techdocs-backend@1.6.4-next.0 + - @backstage/plugin-todo-backend@0.1.44-next.0 + +## example-backend-next@0.0.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-unprocessed@0.1.1-next.0 + - @backstage/plugin-entity-feedback-backend@0.1.5-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-kubernetes-backend@0.11.2-next.0 + - @backstage/backend-defaults@0.1.12-next.0 + - @backstage/plugin-app-backend@0.3.47-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-backend@0.5.22-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-search-backend@1.3.3-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.3-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.3-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.3-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-techdocs-backend@1.6.4-next.0 + - @backstage/plugin-todo-backend@0.1.44-next.0 + +## e2e-test@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.3-next.0 + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + +## techdocs-cli-embedded-app@0.2.84-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.9-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/app-defaults@1.4.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-techdocs@1.6.5-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + +## @internal/plugin-catalog-customized@0.0.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + +## @internal/plugin-todo-list@1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + +## @internal/plugin-todo-list-backend@1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + +## @internal/plugin-todo-list-common@1.0.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.7-next.0 diff --git a/package.json b/package.json index bee5c1b574..376889b47d 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.15.0", + "version": "1.16.0-next.0", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3" diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index cc0edfe497..210d1a0426 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/app-defaults +## 1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + ## 1.4.0 ### Minor Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 305e77cdf7..4efe2191f3 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.4.0", + "version": "1.4.1-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index 1e161f23f6..cd404b149b 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,80 @@ # example-app +## 0.2.85-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-devtools@0.1.2-next.0 + - @backstage/cli@0.22.9-next.0 + - @backstage/plugin-catalog-unprocessed-entities@0.1.1-next.0 + - @backstage/plugin-stackstorm@0.1.4-next.0 + - @backstage/plugin-dynatrace@6.0.1-next.0 + - @backstage/plugin-home@0.5.4-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/plugin-playlist@0.1.12-next.0 + - @backstage/plugin-nomad@0.1.1-next.0 + - @backstage/app-defaults@1.4.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-adr@0.6.3-next.0 + - @backstage/plugin-airbrake@0.3.20-next.0 + - @backstage/plugin-apache-airflow@0.2.13-next.0 + - @backstage/plugin-api-docs@0.9.6-next.0 + - @backstage/plugin-azure-devops@0.3.2-next.0 + - @backstage/plugin-azure-sites@0.1.9-next.0 + - @backstage/plugin-badges@0.2.44-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-graph@0.2.32-next.0 + - @backstage/plugin-catalog-import@0.9.10-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-circleci@0.3.20-next.0 + - @backstage/plugin-cloudbuild@0.3.20-next.0 + - @backstage/plugin-code-coverage@0.2.13-next.0 + - @backstage/plugin-cost-insights@0.12.9-next.0 + - @backstage/plugin-entity-feedback@0.2.3-next.0 + - @backstage/plugin-explore@0.4.6-next.0 + - @backstage/plugin-gcalendar@0.3.16-next.0 + - @backstage/plugin-gcp-projects@0.3.39-next.0 + - @backstage/plugin-github-actions@0.6.1-next.0 + - @backstage/plugin-gocd@0.1.26-next.0 + - @backstage/plugin-graphiql@0.2.52-next.0 + - @backstage/plugin-jenkins@0.8.2-next.0 + - @backstage/plugin-kafka@0.3.20-next.0 + - @backstage/plugin-kubernetes@0.9.3-next.0 + - @backstage/plugin-lighthouse@0.4.5-next.0 + - @backstage/plugin-linguist@0.1.5-next.0 + - @backstage/plugin-linguist-common@0.1.0 + - @backstage/plugin-microsoft-calendar@0.1.5-next.0 + - @backstage/plugin-newrelic@0.3.38-next.0 + - @backstage/plugin-newrelic-dashboard@0.2.13-next.0 + - @backstage/plugin-octopus-deploy@0.2.2-next.0 + - @backstage/plugin-org@0.6.10-next.0 + - @backstage/plugin-pagerduty@0.6.1-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + - @backstage/plugin-puppetdb@0.1.3-next.0 + - @backstage/plugin-rollbar@0.4.20-next.0 + - @backstage/plugin-scaffolder@1.14.1-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.0 + - @backstage/plugin-search@1.3.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + - @backstage/plugin-sentry@0.5.5-next.0 + - @backstage/plugin-shortcuts@0.3.12-next.0 + - @backstage/plugin-stack-overflow@0.1.18-next.0 + - @backstage/plugin-tech-insights@0.3.12-next.0 + - @backstage/plugin-tech-radar@0.6.6-next.0 + - @backstage/plugin-techdocs@1.6.5-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.15-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + - @backstage/plugin-todo@0.2.22-next.0 + - @backstage/plugin-user-settings@0.7.5-next.0 + - @internal/plugin-catalog-customized@0.0.12-next.0 + ## 0.2.84 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index c6bbb65b13..51d00ba9b0 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.84", + "version": "0.2.85-next.0", "private": true, "backstage": { "role": "frontend" diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 2b6fc3b0db..bc946418e0 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/backend-app-api +## 0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + ## 0.4.4 ### Patch Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index 22a63ba888..dc1388d0a4 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-app-api", "description": "Core API used by Backstage backend apps", - "version": "0.4.4", + "version": "0.4.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-common/CHANGELOG.md b/packages/backend-common/CHANGELOG.md index f76f741f4c..6689f2d96f 100644 --- a/packages/backend-common/CHANGELOG.md +++ b/packages/backend-common/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/backend-common +## 0.19.1-next.0 + +### Patch Changes + +- 787ddcc5ef99: use `Readable.from` to explicitly convert the `buffer` from `node-fetch` to a `Readable` stream +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-app-api@0.4.5-next.0 + - @backstage/backend-dev-utils@0.1.1 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/types@1.1.0 + ## 0.19.0 ### Minor Changes diff --git a/packages/backend-common/package.json b/packages/backend-common/package.json index d71666578a..110bd259c0 100644 --- a/packages/backend-common/package.json +++ b/packages/backend-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-common", "description": "Common functionality library for Backstage backends", - "version": "0.19.0", + "version": "0.19.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index 1661c90c34..5be03a5fd0 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-defaults +## 0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-app-api@0.4.5-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + ## 0.1.11 ### Patch Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 8d6bc459c3..133d381bd2 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-defaults", "description": "Backend defaults used by Backstage backend apps", - "version": "0.1.11", + "version": "0.1.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index c0de630765..3e5de4d355 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,29 @@ # example-backend-next +## 0.0.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-unprocessed@0.1.1-next.0 + - @backstage/plugin-entity-feedback-backend@0.1.5-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-kubernetes-backend@0.11.2-next.0 + - @backstage/backend-defaults@0.1.12-next.0 + - @backstage/plugin-app-backend@0.3.47-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-backend@0.5.22-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-search-backend@1.3.3-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.3-next.0 + - @backstage/plugin-search-backend-module-explore@0.1.3-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.3-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-techdocs-backend@1.6.4-next.0 + - @backstage/plugin-todo-backend@0.1.44-next.0 + ## 0.0.12 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index bc7d5e666f..53b43a0172 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.12", + "version": "0.0.13-next.0", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index ef3cf6691f..770a1db864 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/backend-plugin-api +## 0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.5.3 ### Patch Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index 582912d8a8..b97be5eb69 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-plugin-api", "description": "Core API used by Backstage backend plugins", - "version": "0.5.3", + "version": "0.5.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-tasks/CHANGELOG.md b/packages/backend-tasks/CHANGELOG.md index 55e23501ae..6a579588cc 100644 --- a/packages/backend-tasks/CHANGELOG.md +++ b/packages/backend-tasks/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/backend-tasks +## 0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + ## 0.5.3 ### Patch Changes diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index 1b89dd65aa..7da3910ae4 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-tasks", "description": "Common distributed task management library for Backstage backends", - "version": "0.5.3", + "version": "0.5.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index 158909537e..c92acf477c 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/backend-test-utils +## 0.1.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-app-api@0.4.5-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + ## 0.1.38 ### Patch Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index d5a59a4252..6600ba7d2a 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/backend-test-utils", "description": "Test helpers library for Backstage backends", - "version": "0.1.38", + "version": "0.1.39-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 8f590d21dc..0632b08b03 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,60 @@ # example-backend +## 0.2.85-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.1.1-next.0 + - @backstage/plugin-entity-feedback-backend@0.1.5-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/plugin-kubernetes-backend@0.11.2-next.0 + - example-app@0.2.85-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-adr-backend@0.3.5-next.0 + - @backstage/plugin-app-backend@0.3.47-next.0 + - @backstage/plugin-auth-backend@0.18.5-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-azure-devops-backend@0.3.26-next.0 + - @backstage/plugin-azure-sites-backend@0.1.9-next.0 + - @backstage/plugin-badges-backend@0.2.2-next.0 + - @backstage/plugin-code-coverage-backend@0.2.13-next.0 + - @backstage/plugin-devtools-backend@0.1.2-next.0 + - @backstage/plugin-events-backend@0.2.8-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + - @backstage/plugin-explore-backend@0.0.9-next.0 + - @backstage/plugin-graphql-backend@0.1.37-next.0 + - @backstage/plugin-jenkins-backend@0.2.2-next.0 + - @backstage/plugin-kafka-backend@0.2.40-next.0 + - @backstage/plugin-lighthouse-backend@0.2.3-next.0 + - @backstage/plugin-linguist-backend@0.3.1-next.0 + - @backstage/plugin-nomad-backend@0.1.1-next.0 + - @backstage/plugin-permission-backend@0.5.22-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-playlist-backend@0.3.3-next.0 + - @backstage/plugin-proxy-backend@0.2.41-next.0 + - @backstage/plugin-rollbar-backend@0.1.44-next.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.1.4-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.4.16-next.0 + - @backstage/plugin-search-backend@1.3.3-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.3.2-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.8-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-tech-insights-backend@0.5.13-next.0 + - @backstage/plugin-tech-insights-backend-module-jsonfc@0.1.31-next.0 + - @backstage/plugin-tech-insights-node@0.4.5-next.0 + - @backstage/plugin-techdocs-backend@1.6.4-next.0 + - @backstage/plugin-todo-backend@0.1.44-next.0 + ## 0.2.84 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 67c397953d..5ab278b9c7 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.84", + "version": "0.2.85-next.0", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/catalog-client/CHANGELOG.md b/packages/catalog-client/CHANGELOG.md index 23f2c0ce59..c4f10cf903 100644 --- a/packages/catalog-client/CHANGELOG.md +++ b/packages/catalog-client/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/catalog-client +## 1.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + ## 1.4.2 ### Patch Changes diff --git a/packages/catalog-client/package.json b/packages/catalog-client/package.json index eea216ca46..3be4462d84 100644 --- a/packages/catalog-client/package.json +++ b/packages/catalog-client/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/catalog-client", "description": "An isomorphic client for the catalog backend", - "version": "1.4.2", + "version": "1.4.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/catalog-model/CHANGELOG.md b/packages/catalog-model/CHANGELOG.md index ee09156011..9a1f5274a9 100644 --- a/packages/catalog-model/CHANGELOG.md +++ b/packages/catalog-model/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/catalog-model +## 1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + ## 1.4.0 ### Minor Changes diff --git a/packages/catalog-model/package.json b/packages/catalog-model/package.json index bcc3e07b0d..b27994f60d 100644 --- a/packages/catalog-model/package.json +++ b/packages/catalog-model/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/catalog-model", "description": "Types and validators that help describe the model of a Backstage Catalog", - "version": "1.4.0", + "version": "1.4.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/cli-node/CHANGELOG.md b/packages/cli-node/CHANGELOG.md index 6c52cb94d2..b1269bcc23 100644 --- a/packages/cli-node/CHANGELOG.md +++ b/packages/cli-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/cli-node +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/types@1.1.0 + ## 0.1.1 ### Patch Changes diff --git a/packages/cli-node/package.json b/packages/cli-node/package.json index 1b109041c7..aa1f79448a 100644 --- a/packages/cli-node/package.json +++ b/packages/cli-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli-node", "description": "Node.js library for Backstage CLIs", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 34c7f2e7e4..8a89a9e312 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/cli +## 0.22.9-next.0 + +### Patch Changes + +- 6adb6f41711a: Fixed the `--alwaysYarnPack` flag on the`backstage-cli build-workspace` command. +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.2-next.0 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/eslint-plugin@0.1.3 + - @backstage/integration@1.5.1-next.0 + - @backstage/release-manifests@0.0.9 + - @backstage/types@1.1.0 + ## 0.22.8 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index 75999152e2..ae59c998b0 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/cli", "description": "CLI for developing Backstage plugins and apps", - "version": "0.22.8", + "version": "0.22.9-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md index daaa2078fe..7d7e827882 100644 --- a/packages/config-loader/CHANGELOG.md +++ b/packages/config-loader/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/config-loader +## 1.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + ## 1.3.1 ### Patch Changes diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 2e8e4aee2e..e44b9824c2 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/config-loader", "description": "Config loading functionality used by Backstage backend, and CLI", - "version": "1.3.1", + "version": "1.3.2-next.0", "publishConfig": { "access": "public", "main": "dist/index.cjs.js", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index 377ec0c72e..9599bad333 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/core-components +## 0.13.3-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- a011d2316a58: Fix keyboard navigation & focus highlight on Select component. +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/version-bridge@1.0.4 + ## 0.13.2 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 57eee79dad..bedfbe8be9 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-components", "description": "Core components used by Backstage plugins and apps", - "version": "0.13.2", + "version": "0.13.3-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index cf92a30050..1fa48bff7a 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/create-app +## 0.5.3-next.0 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.12 + ## 0.5.2 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 279913ac1d..ce223bcf8b 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.5.2", + "version": "0.5.3-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index 65405b221e..fa598c6d21 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/dev-utils +## 1.0.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/app-defaults@1.4.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 1.0.16 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index d2ffdb6091..6d1ffc85d3 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.16", + "version": "1.0.17-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index 48cc255757..f216ca3548 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,14 @@ # e2e-test +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.3-next.0 + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + ## 0.2.4 ### Patch Changes diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index d98cdd792c..e684a08fa1 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -1,7 +1,7 @@ { "name": "e2e-test", "description": "E2E test for verifying Backstage packages", - "version": "0.2.4", + "version": "0.2.5-next.0", "private": true, "backstage": { "role": "cli" diff --git a/packages/errors/CHANGELOG.md b/packages/errors/CHANGELOG.md index ab1367aaf2..5cdcf4187f 100644 --- a/packages/errors/CHANGELOG.md +++ b/packages/errors/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/errors +## 1.2.1-next.0 + +### Patch Changes + +- e205b3e6ede8: Set `this.name` in all error classes that extend `CustomErrorBase` class to their actual name +- Updated dependencies + - @backstage/types@1.1.0 + ## 1.2.0 ### Minor Changes diff --git a/packages/errors/package.json b/packages/errors/package.json index 9f611eef8a..9d49e494f7 100644 --- a/packages/errors/package.json +++ b/packages/errors/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/errors", "description": "Common utilities for error handling within Backstage", - "version": "1.2.0", + "version": "1.2.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/integration-aws-node/CHANGELOG.md b/packages/integration-aws-node/CHANGELOG.md index 461e3c4fe6..aad622bce5 100644 --- a/packages/integration-aws-node/CHANGELOG.md +++ b/packages/integration-aws-node/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/integration-aws-node +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + ## 0.1.4 ### Patch Changes diff --git a/packages/integration-aws-node/package.json b/packages/integration-aws-node/package.json index ef99b51a57..079ea58614 100644 --- a/packages/integration-aws-node/package.json +++ b/packages/integration-aws-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-aws-node", "description": "Helpers for fetching AWS account credentials", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index c8ae49d171..21a1181511 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/integration-react +## 1.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + ## 1.1.14 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 276a1ea8bd..5c33e4dff0 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.14", + "version": "1.1.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/integration/CHANGELOG.md b/packages/integration/CHANGELOG.md index 851e023b3a..cd0c26c044 100644 --- a/packages/integration/CHANGELOG.md +++ b/packages/integration/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/integration +## 1.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + ## 1.5.0 ### Minor Changes diff --git a/packages/integration/package.json b/packages/integration/package.json index 8cf8cc42dd..9116bde89f 100644 --- a/packages/integration/package.json +++ b/packages/integration/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration", "description": "Helpers for managing integrations towards external systems", - "version": "1.5.0", + "version": "1.5.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md index 7112b9346a..46e90fd720 100644 --- a/packages/repo-tools/CHANGELOG.md +++ b/packages/repo-tools/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/repo-tools +## 0.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/cli-node@0.1.2-next.0 + ## 0.3.1 ### Patch Changes diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 6c6cb574c2..9af31e18e5 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/repo-tools", "description": "CLI for Backstage repo tooling ", - "version": "0.3.1", + "version": "0.3.2-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 950c8711b1..49a4828c0d 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,24 @@ # techdocs-cli-embedded-app +## 0.2.84-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.9-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/app-defaults@1.4.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-techdocs@1.6.5-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + ## 0.2.83 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 1bf87f15ca..0ff402d9f4 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.83", + "version": "0.2.84-next.0", "private": true, "backstage": { "role": "frontend" diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index da33defaca..2e35cb6ce1 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @techdocs/cli +## 1.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/plugin-techdocs-node@1.7.3-next.0 + ## 1.4.3 ### Patch Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index a3fef8febb..4805c27448 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,7 +1,7 @@ { "name": "@techdocs/cli", "description": "Utility CLI for managing TechDocs sites in Backstage.", - "version": "1.4.3", + "version": "1.4.4-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index de86ae97fa..6492a744f7 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/test-utils +## 1.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + ## 1.4.0 ### Minor Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index 5f57fa0dd2..b68f25266b 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/test-utils", "description": "Utilities to test Backstage plugins and apps.", - "version": "1.4.0", + "version": "1.4.1-next.0", "publishConfig": { "access": "public" }, diff --git a/plugins/adr-backend/CHANGELOG.md b/plugins/adr-backend/CHANGELOG.md index 318a5ab2f2..0f7185c037 100644 --- a/plugins/adr-backend/CHANGELOG.md +++ b/plugins/adr-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-adr-backend +## 0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-adr-common@0.2.11-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 0.3.4 ### Patch Changes diff --git a/plugins/adr-backend/package.json b/plugins/adr-backend/package.json index 4bd7aa3956..ec60ae7fa6 100644 --- a/plugins/adr-backend/package.json +++ b/plugins/adr-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr-backend", - "version": "0.3.4", + "version": "0.3.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr-common/CHANGELOG.md b/plugins/adr-common/CHANGELOG.md index b33ecdb3bb..a48d7a2b9d 100644 --- a/plugins/adr-common/CHANGELOG.md +++ b/plugins/adr-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-adr-common +## 0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 0.2.10 ### Patch Changes diff --git a/plugins/adr-common/package.json b/plugins/adr-common/package.json index 0764eac854..30c4a2ad11 100644 --- a/plugins/adr-common/package.json +++ b/plugins/adr-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-adr-common", "description": "Common functionalities for the adr plugin", - "version": "0.2.10", + "version": "0.2.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index 9b1bad0d3a..83c03faa80 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-adr +## 0.6.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-adr-common@0.2.11-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + ## 0.6.2 ### Patch Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index 4c4458e64f..b9111fa80a 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.6.2", + "version": "0.6.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake-backend/CHANGELOG.md b/plugins/airbrake-backend/CHANGELOG.md index 4c5ca9f4b4..bd6df7b3eb 100644 --- a/plugins/airbrake-backend/CHANGELOG.md +++ b/plugins/airbrake-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-airbrake-backend +## 0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + ## 0.2.19 ### Patch Changes diff --git a/plugins/airbrake-backend/package.json b/plugins/airbrake-backend/package.json index 3159e7609e..5d0f870583 100644 --- a/plugins/airbrake-backend/package.json +++ b/plugins/airbrake-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake-backend", - "version": "0.2.19", + "version": "0.2.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index 7be3d724cd..3bbd0cce01 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-airbrake +## 0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/dev-utils@1.0.17-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.3.19 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index f284d4be8c..5c01e3614c 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.19", + "version": "0.3.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index 978c0780e1..77ac0773bd 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-allure +## 0.1.36-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.35 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 9de1ed9d0f..9d18b48b55 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-allure", "description": "A Backstage plugin that integrates with Allure", - "version": "0.1.35", + "version": "0.1.36-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index 2980f4e984..1d4d5503a8 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-analytics-module-ga +## 0.1.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.30 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 1bdd7fee2e..7e16e8fde6 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga", - "version": "0.1.30", + "version": "0.1.31-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga4/CHANGELOG.md b/plugins/analytics-module-ga4/CHANGELOG.md index 4b25f29010..5787ee4598 100644 --- a/plugins/analytics-module-ga4/CHANGELOG.md +++ b/plugins/analytics-module-ga4/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-analytics-module-ga4 +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.1 ### Patch Changes diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json index 4d6b603db0..e4da26e205 100644 --- a/plugins/analytics-module-ga4/package.json +++ b/plugins/analytics-module-ga4/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga4", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 3200419518..8728876d60 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-apache-airflow +## 0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + ## 0.2.12 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index f8f4acdca7..088db151d6 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.2.12", + "version": "0.2.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 25e4b3b314..7727fdb12b 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-api-docs +## 0.9.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.9.5 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 73e4cfa9f5..8715788663 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs", "description": "A Backstage plugin that helps represent API entities in the frontend", - "version": "0.9.5", + "version": "0.9.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index ab1b94c129..e52c044926 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-apollo-explorer +## 0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.12 ### Patch Changes diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index 5f6d38b3b4..e2812944a9 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apollo-explorer", - "version": "0.1.12", + "version": "0.1.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index f6ff48ff56..4cb03c2976 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-app-backend +## 0.3.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/types@1.1.0 + ## 0.3.46 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 46cf54d080..9c8a68a74f 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-app-backend", "description": "A Backstage backend plugin that serves the Backstage frontend app", - "version": "0.3.46", + "version": "0.3.47-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index b43f2bb460..5c72906f79 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-auth-backend +## 0.18.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + ## 0.18.4 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index 436e8ad125..f9c34f2cdf 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend", "description": "A Backstage backend plugin that handles authentication", - "version": "0.18.4", + "version": "0.18.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index 5652585c61..418c6226eb 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-node +## 0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + ## 0.2.15 ### Patch Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index e2ff24ed38..1216b1b6f0 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.2.15", + "version": "0.2.16-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index df08b3a53f..3635266575 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-azure-devops-backend +## 0.3.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-azure-devops-common@0.3.0 + ## 0.3.25 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index bb64ad84db..00af05df92 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-backend", - "version": "0.3.25", + "version": "0.3.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index 81202cf771..f880843479 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-azure-devops +## 0.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-azure-devops-common@0.3.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.3.1 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index eaf20e035e..a7f3ca3876 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.3.1", + "version": "0.3.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites-backend/CHANGELOG.md b/plugins/azure-sites-backend/CHANGELOG.md index 5c4733f964..d04a95f30e 100644 --- a/plugins/azure-sites-backend/CHANGELOG.md +++ b/plugins/azure-sites-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-azure-sites-backend +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-azure-sites-common@0.1.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/azure-sites-backend/package.json b/plugins/azure-sites-backend/package.json index 8f0e89da8e..8ea6d434f4 100644 --- a/plugins/azure-sites-backend/package.json +++ b/plugins/azure-sites-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites-backend", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md index cf98bbf413..50708e1210 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-azure-sites +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-azure-sites-common@0.1.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index 210bd84e2d..16fa82f665 100644 --- a/plugins/azure-sites/package.json +++ b/plugins/azure-sites/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index b9077e8998..c569e9f71d 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-badges-backend +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index decaeeaf1b..8af1b13096 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges-backend", "description": "A Backstage backend plugin that generates README badges for your entities", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index 6cfa746feb..c58c201702 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-badges +## 0.2.44-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.43 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index 95eae4441d..b00ec0d563 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges", "description": "A Backstage plugin that generates README badges for your entities", - "version": "0.2.43", + "version": "0.2.44-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar-backend/CHANGELOG.md b/plugins/bazaar-backend/CHANGELOG.md index 1680567b85..7df18a3a98 100644 --- a/plugins/bazaar-backend/CHANGELOG.md +++ b/plugins/bazaar-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-bazaar-backend +## 0.2.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + ## 0.2.9 ### Patch Changes diff --git a/plugins/bazaar-backend/package.json b/plugins/bazaar-backend/package.json index 3993e823f3..ee7eeb2f48 100644 --- a/plugins/bazaar-backend/package.json +++ b/plugins/bazaar-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar-backend", - "version": "0.2.9", + "version": "0.2.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index 79fb2122af..f0dbacd17c 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-bazaar +## 0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.22.9-next.0 + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.10 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index 8b764ba05f..f9678b90f1 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.2.10", + "version": "0.2.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitbucket-cloud-common/CHANGELOG.md b/plugins/bitbucket-cloud-common/CHANGELOG.md index 832f031f2d..7df2d6f2c5 100644 --- a/plugins/bitbucket-cloud-common/CHANGELOG.md +++ b/plugins/bitbucket-cloud-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-bitbucket-cloud-common +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/integration@1.5.1-next.0 + ## 0.2.7 ### Patch Changes diff --git a/plugins/bitbucket-cloud-common/package.json b/plugins/bitbucket-cloud-common/package.json index 6e37633ea4..13170ea714 100644 --- a/plugins/bitbucket-cloud-common/package.json +++ b/plugins/bitbucket-cloud-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitbucket-cloud-common", "description": "Common functionalities for bitbucket-cloud plugins", - "version": "0.2.7", + "version": "0.2.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index ef824231fc..b98ba185f8 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-bitrise +## 0.1.47-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.46 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index 0c68413179..d77d1a1bf2 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitrise", "description": "A Backstage plugin that integrates towards Bitrise", - "version": "0.1.46", + "version": "0.1.47-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index 3ce3ae827f..ae96f73587 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-kubernetes-common@0.6.5-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index a75036e487..44a9260716 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", "description": "A Backstage catalog backend module that helps integrate towards AWS", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index 9e577e7bdc..01e7048a41 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + ## 0.1.17 ### Patch Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index 30a207952c..d0e26e6f2a 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", "description": "A Backstage catalog backend module that helps integrate towards Azure", - "version": "0.1.17", + "version": "0.1.18-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index d0bc5d3708..6405c36fb8 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.8-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.1.13 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index c271230c73..43c83a4eb6 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", - "version": "0.1.13", + "version": "0.1.14-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index 8fc806bf27..00bdde9d08 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.1.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + ## 0.1.11 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 15e9ef0038..96bc28fcb6 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-server", - "version": "0.1.11", + "version": "0.1.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md index 13ab3b8816..e0ae1489c0 100644 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-bitbucket +## 0.2.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.8-next.0 + ## 0.2.13 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json index d021291155..3f12d61eaf 100644 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ b/plugins/catalog-backend-module-bitbucket/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.13", + "version": "0.2.14-next.0", "deprecated": true, "main": "src/index.ts", "types": "src/index.ts", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index 4e5f8927d7..756c59645c 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + ## 0.1.14 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index 232c02b684..8afc371569 100644 --- a/plugins/catalog-backend-module-gerrit/package.json +++ b/plugins/catalog-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gerrit", - "version": "0.1.14", + "version": "0.1.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index 128e77c8b9..2bbad4fd3e 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,25 @@ # @backstage/plugin-catalog-backend-module-github +## 0.3.2-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.3.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index d3265efbec..bb08386642 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github", "description": "A Backstage catalog backend module that helps integrate towards GitHub", - "version": "0.3.1", + "version": "0.3.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index 5f84063c2a..7b90cdaca8 100644 --- a/plugins/catalog-backend-module-gitlab/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-gitlab +## 0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + ## 0.2.2 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 25df604cd9..3b303a0bf9 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", "description": "A Backstage catalog backend module that helps integrate towards GitLab", - "version": "0.2.2", + "version": "0.2.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md index 63d850d68a..cb5bb7411a 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index 1d14965d4a..8478271e4e 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", "description": "An entity provider for streaming large asset sources into the catalog", - "version": "0.3.3", + "version": "0.3.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 4a8fb212a2..172d5a7962 100644 --- a/plugins/catalog-backend-module-ldap/CHANGELOG.md +++ b/plugins/catalog-backend-module-ldap/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-ldap +## 0.5.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + ## 0.5.13 ### Patch Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index 0bf799cb39..dbf1a3c02b 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", "description": "A Backstage catalog backend module that helps integrate towards LDAP", - "version": "0.5.13", + "version": "0.5.14-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index 54fba3e580..b8ad90175e 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.5.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-common@1.0.15-next.0 + ## 0.5.5 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index a480450d22..978c2a7676 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", - "version": "0.5.5", + "version": "0.5.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index 4a5121d4dc..a7451f8046 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.1.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + ## 0.1.12 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index fda0603aa8..20cc7a8910 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", - "version": "0.1.12", + "version": "0.1.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md index 8d5d5d18ce..c3f70bc023 100644 --- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md +++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-backend-module-puppetdb +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 6ce5d63b85..dd6d922adb 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-puppetdb", "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md index 8b0390aff2..25d5743bad 100644 --- a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md +++ b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-backend-module-unprocessed +## 0.1.1-next.0 + +### Patch Changes + +- a8fa79ccc105: Fix and improve documentation for the unprocessed entities modules. +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-unprocessed/package.json b/plugins/catalog-backend-module-unprocessed/package.json index 5c2d19f61c..456969e2a9 100644 --- a/plugins/catalog-backend-module-unprocessed/package.json +++ b/plugins/catalog-backend-module-unprocessed/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-unprocessed", "description": "Backstage Catalog module to view unprocessed entities", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index de0075c016..0ab4464456 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-catalog-backend +## 1.11.0-next.0 + +### Minor Changes + +- f06f0e46ba88: Support placeholder resolvers in the CatalogPlugin, also moves `PlaceholderResolver` and related types from `@backstage/plugin-catalog-backend` to `@backstage/plugin-catalog-node`. + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-search-backend-module-catalog@0.1.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 1.10.0 ### Minor Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 5afaa938f3..ba48492208 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend", "description": "The Backstage backend plugin that provides the Backstage catalog", - "version": "1.10.0", + "version": "1.11.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-common/CHANGELOG.md b/plugins/catalog-common/CHANGELOG.md index 84da127ae3..21e0917791 100644 --- a/plugins/catalog-common/CHANGELOG.md +++ b/plugins/catalog-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-common +## 1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 1.0.14 ### Patch Changes diff --git a/plugins/catalog-common/package.json b/plugins/catalog-common/package.json index 156ebeb4a5..b1b03a4197 100644 --- a/plugins/catalog-common/package.json +++ b/plugins/catalog-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-common", "description": "Common functionalities for the catalog plugin", - "version": "1.0.14", + "version": "1.0.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md index c3d2bdeacd..c707b912a9 100644 --- a/plugins/catalog-customized/CHANGELOG.md +++ b/plugins/catalog-customized/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-catalog-customized +## 0.0.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.0.11 ### Patch Changes diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json index 4d9a218260..b178254d3c 100644 --- a/plugins/catalog-customized/package.json +++ b/plugins/catalog-customized/package.json @@ -1,7 +1,7 @@ { "name": "@internal/plugin-catalog-customized", "description": "The internal Backstage Customizable plugin for browsing the Backstage catalog", - "version": "0.0.11", + "version": "0.0.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index d03624f2e1..38863d49fa 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-graph +## 0.2.32-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.31 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index ebfe768029..782ce22ee4 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.2.31", + "version": "0.2.32-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graphql/CHANGELOG.md b/plugins/catalog-graphql/CHANGELOG.md index 0545909026..c1f788a1d2 100644 --- a/plugins/catalog-graphql/CHANGELOG.md +++ b/plugins/catalog-graphql/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-graphql +## 0.3.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + ## 0.3.21 ### Patch Changes diff --git a/plugins/catalog-graphql/package.json b/plugins/catalog-graphql/package.json index 2058b8b409..0ab507760b 100644 --- a/plugins/catalog-graphql/package.json +++ b/plugins/catalog-graphql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-graphql", "description": "An experimental Backstage catalog GraphQL module", - "version": "0.3.21", + "version": "0.3.22-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index 4f7f3f6063..de07689df2 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-import +## 0.9.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.9.9 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index a0bff2f9c0..a87632e05b 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-import", "description": "A Backstage plugin the helps you import entities into your catalog", - "version": "0.9.9", + "version": "0.9.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index 72cb23669a..44395f6107 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-node +## 1.4.0-next.0 + +### Minor Changes + +- f06f0e46ba88: Support placeholder resolvers in the CatalogPlugin, also moves `PlaceholderResolver` and related types from `@backstage/plugin-catalog-backend` to `@backstage/plugin-catalog-node`. + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + ## 1.3.7 ### Patch Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 175447261f..449fc2836c 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-node", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", - "version": "1.3.7", + "version": "1.4.0-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 9e21a7f67d..88df42e856 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-catalog-react +## 1.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + ## 1.7.0 ### Minor Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index 0a90960cab..f74b9c0fc5 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.7.0", + "version": "1.7.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-unprocessed-entities/CHANGELOG.md b/plugins/catalog-unprocessed-entities/CHANGELOG.md index a17ce8e698..e17e0d87fa 100644 --- a/plugins/catalog-unprocessed-entities/CHANGELOG.md +++ b/plugins/catalog-unprocessed-entities/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-catalog-unprocessed-entities +## 0.1.1-next.0 + +### Patch Changes + +- 2c4869473155: The Catalog Unprocessed Entities plugin can now be integrated as a tab within the DevTools plugin + + - Added an export for `UnprocessedEntitiesContent` + - Updated the `README` with images of the features + - Adjusted the styles to fill in the available space + - Set the table page size to 20 as 40 was causing errors in the browser console + +- 57585d89f926: Export some types and API items. This allows people to call the API from different places with the ApiRef, as well + as completely customize the client if required. Check the [README.md](https://github.com/backstage/backstage/blob/master/plugins/catalog-unprocessed-entities/README.md) to + note what needs to be added in order to use the new `catalogUnprocessedEntitiesApiRef` exported function. +- a8fa79ccc105: Fix and improve documentation for the unprocessed entities modules. +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/catalog-unprocessed-entities/package.json b/plugins/catalog-unprocessed-entities/package.json index 0297220148..de5287c661 100644 --- a/plugins/catalog-unprocessed-entities/package.json +++ b/plugins/catalog-unprocessed-entities/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-unprocessed-entities", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index 447dccf24a..d6e3a62d40 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-catalog +## 1.11.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + ## 1.11.2 ### Patch Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index 58385a11ac..dc4d161b17 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog", "description": "The Backstage plugin for browsing the Backstage catalog", - "version": "1.11.2", + "version": "1.11.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index 4e0fab5bcc..af80e6ff12 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-cicd-statistics@0.1.22-next.0 + ## 0.1.15 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index e881a821b5..1ae6ad86d0 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics-module-gitlab", "description": "CI/CD Statistics plugin module; Gitlab CICD", - "version": "0.1.15", + "version": "0.1.16-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index e079319d53..8a2734388d 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-cicd-statistics +## 0.1.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.21 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index 4275987a84..fea49294a8 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", - "version": "0.1.21", + "version": "0.1.22-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index 7de19b2aaf..4876a85517 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-circleci +## 0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.3.19 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 24b6940ca5..5d67134d2d 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-circleci", "description": "A Backstage plugin that integrates towards Circle CI", - "version": "0.3.19", + "version": "0.3.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index 35eaf9dd1f..9009d28477 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-cloudbuild +## 0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.3.19 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index ae09c25b8a..76ae80d4b6 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cloudbuild", "description": "A Backstage plugin that integrates towards Google Cloud Build", - "version": "0.3.19", + "version": "0.3.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index 5e13681f46..cadc5aa7e5 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-code-climate +## 0.1.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.19 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index 2d4bc5cb32..adb9cf72ef 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-code-climate", - "version": "0.1.19", + "version": "0.1.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage-backend/CHANGELOG.md b/plugins/code-coverage-backend/CHANGELOG.md index 2c48233cc4..c572d10c74 100644 --- a/plugins/code-coverage-backend/CHANGELOG.md +++ b/plugins/code-coverage-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-code-coverage-backend +## 0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + ## 0.2.12 ### Patch Changes diff --git a/plugins/code-coverage-backend/package.json b/plugins/code-coverage-backend/package.json index 7d68aadebc..aefc0f47bc 100644 --- a/plugins/code-coverage-backend/package.json +++ b/plugins/code-coverage-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage-backend", "description": "A Backstage backend plugin that helps you keep track of your code coverage", - "version": "0.2.12", + "version": "0.2.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index ec333a8fbf..e3c83cde4a 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-code-coverage +## 0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.12 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 6652f27ac2..53e5210cad 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage", "description": "A Backstage plugin that helps you keep track of your code coverage", - "version": "0.2.12", + "version": "0.2.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index 4b94c7075f..cb509d1f03 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-codescene +## 0.1.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.14 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 101d54f4ec..5912af436e 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.14", + "version": "0.1.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 86a1aeddf4..606f289435 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-config-schema +## 0.1.43-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + ## 0.1.42 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index 6552a0aad3..b5f6f8fd28 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-config-schema", "description": "A Backstage plugin that lets you browse the configuration schema of your app", - "version": "0.1.42", + "version": "0.1.43-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index 996f18e929..e375e8a973 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-cost-insights +## 0.12.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-cost-insights-common@0.1.1 + ## 0.12.8 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index fd6d037ca9..8855daa10b 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights", "description": "A Backstage plugin that helps you keep track of your cloud spend", - "version": "0.12.8", + "version": "0.12.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index 13798da8f0..18108e24ef 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-devtools-backend +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/cli-common@0.1.12 + - @backstage/config@1.0.8 + - @backstage/config-loader@1.3.2-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-devtools-common@0.1.2-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + ## 0.1.1 ### Patch Changes diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index 6a0a5ee4b5..ba8529e650 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools-backend", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-common/CHANGELOG.md b/plugins/devtools-common/CHANGELOG.md index 685bb2dd16..8dd0d56069 100644 --- a/plugins/devtools-common/CHANGELOG.md +++ b/plugins/devtools-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-devtools-common +## 0.1.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.1.1 ### Patch Changes diff --git a/plugins/devtools-common/package.json b/plugins/devtools-common/package.json index 038e7fb830..13d16a75de 100644 --- a/plugins/devtools-common/package.json +++ b/plugins/devtools-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-devtools-common", "description": "Common functionalities for the devtools plugin", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md index 981e03488e..ed2ec3cfff 100644 --- a/plugins/devtools/CHANGELOG.md +++ b/plugins/devtools/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-devtools +## 0.1.2-next.0 + +### Patch Changes + +- 5969639fd075: Allow specifying custom title for `DevToolsLayout` +- 2c4869473155: Updated the `README` with instructions on how to integrate the Catalog Unprocessed Entities plugin as a tab within DevTools +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-devtools-common@0.1.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + ## 0.1.1 ### Patch Changes diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json index 2f3557dbad..903f946dd7 100644 --- a/plugins/devtools/package.json +++ b/plugins/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools", - "version": "0.1.1", + "version": "0.1.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index 393352f7c3..b684b0eb55 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-dynatrace +## 6.0.1-next.0 + +### Patch Changes + +- 3424cbfe5f4a: updated the link that the "View Entity in Dynatrace" redirects the user to. +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 6.0.0 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index ae4034a813..d78c4a40a5 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "6.0.0", + "version": "6.0.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback-backend/CHANGELOG.md b/plugins/entity-feedback-backend/CHANGELOG.md index b9c95c513a..09efa0a2d0 100644 --- a/plugins/entity-feedback-backend/CHANGELOG.md +++ b/plugins/entity-feedback-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-entity-feedback-backend +## 0.1.5-next.0 + +### Patch Changes + +- 5c1c10adac8f: Added support for the new backend system +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-entity-feedback-common@0.1.1 + ## 0.1.4 ### Patch Changes diff --git a/plugins/entity-feedback-backend/package.json b/plugins/entity-feedback-backend/package.json index 7cf3c40ffe..97bf64567c 100644 --- a/plugins/entity-feedback-backend/package.json +++ b/plugins/entity-feedback-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback-backend", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md index ef8779a9e8..089f5c48f7 100644 --- a/plugins/entity-feedback/CHANGELOG.md +++ b/plugins/entity-feedback/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-entity-feedback +## 0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-entity-feedback-common@0.1.1 + ## 0.2.2 ### Patch Changes diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index 3c8fc01120..3323a56051 100644 --- a/plugins/entity-feedback/package.json +++ b/plugins/entity-feedback/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback", - "version": "0.2.2", + "version": "0.2.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md index a14e9c6f37..1866f8b708 100644 --- a/plugins/entity-validation/CHANGELOG.md +++ b/plugins/entity-validation/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-entity-validation +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index 744e2de644..9c7d659eec 100644 --- a/plugins/entity-validation/package.json +++ b/plugins/entity-validation/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-validation", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md index df1f19bdf1..53c3653914 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-events-backend-module-aws-sqs +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json index 536ab147cc..f27611bc9b 100644 --- a/plugins/events-backend-module-aws-sqs/package.json +++ b/plugins/events-backend-module-aws-sqs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-aws-sqs", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md index 8e56080502..4d853608bc 100644 --- a/plugins/events-backend-module-azure/CHANGELOG.md +++ b/plugins/events-backend-module-azure/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-azure +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json index 66546f7283..1517d00ae0 100644 --- a/plugins/events-backend-module-azure/package.json +++ b/plugins/events-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-azure", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md index b3d842b4d9..d2fd63b3d2 100644 --- a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-bitbucket-cloud +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index 0fc4619249..695adb6666 100644 --- a/plugins/events-backend-module-bitbucket-cloud/package.json +++ b/plugins/events-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-bitbucket-cloud", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md index ddcba7b643..9b7723933b 100644 --- a/plugins/events-backend-module-gerrit/CHANGELOG.md +++ b/plugins/events-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-events-backend-module-gerrit +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json index 23d648fa02..ef07b7c8a4 100644 --- a/plugins/events-backend-module-gerrit/package.json +++ b/plugins/events-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gerrit", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md index 0b67e56bad..3ad96f3e26 100644 --- a/plugins/events-backend-module-github/CHANGELOG.md +++ b/plugins/events-backend-module-github/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-github +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index 81e4064393..64c9653a81 100644 --- a/plugins/events-backend-module-github/package.json +++ b/plugins/events-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-github", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md index cc3b7e75ab..a569916cc5 100644 --- a/plugins/events-backend-module-gitlab/CHANGELOG.md +++ b/plugins/events-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-backend-module-gitlab +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json index 4a26df5650..d6afbea1f2 100644 --- a/plugins/events-backend-module-gitlab/package.json +++ b/plugins/events-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-module-gitlab", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md index 5d299c5ee9..a3438208c2 100644 --- a/plugins/events-backend-test-utils/CHANGELOG.md +++ b/plugins/events-backend-test-utils/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-backend-test-utils +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index a0d7331e35..78c50636ee 100644 --- a/plugins/events-backend-test-utils/package.json +++ b/plugins/events-backend-test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-backend-test-utils", "description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md index f15b9c83c5..08d3508027 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-events-backend +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-events-node@0.2.8-next.0 + ## 0.2.7 ### Patch Changes diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index a54832d180..fe7f179c65 100644 --- a/plugins/events-backend/package.json +++ b/plugins/events-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend", - "version": "0.2.7", + "version": "0.2.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md index 4612f94adb..ba34adb950 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-events-node +## 0.2.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + ## 0.2.7 ### Patch Changes diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index ff649b6f46..30d1e5ccec 100644 --- a/plugins/events-node/package.json +++ b/plugins/events-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-events-node", "description": "The plugin-events-node module for @backstage/plugin-events-backend", - "version": "0.2.7", + "version": "0.2.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index e5aeeef76d..548f9fffa0 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @internal/plugin-todo-list-backend +## 1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + ## 1.0.14 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 3e19faed21..fef7cd6d85 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-backend", - "version": "1.0.14", + "version": "1.0.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list-common/CHANGELOG.md b/plugins/example-todo-list-common/CHANGELOG.md index 20216104ce..5ab4b90e0b 100644 --- a/plugins/example-todo-list-common/CHANGELOG.md +++ b/plugins/example-todo-list-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @internal/plugin-todo-list-common +## 1.0.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 1.0.11 ### Patch Changes diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json index 8b7eac899c..717b82f3fc 100644 --- a/plugins/example-todo-list-common/package.json +++ b/plugins/example-todo-list-common/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list-common", - "version": "1.0.11", + "version": "1.0.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 0cb93aab94..4ed4bde47f 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list +## 1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 1.0.14 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index d0760572fa..7caafb04dd 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.14", + "version": "1.0.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-backend/CHANGELOG.md b/plugins/explore-backend/CHANGELOG.md index 72699c8301..2b7ae76666 100644 --- a/plugins/explore-backend/CHANGELOG.md +++ b/plugins/explore-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-explore-backend +## 0.0.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-backend-module-explore@0.1.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 0.0.8 ### Patch Changes diff --git a/plugins/explore-backend/package.json b/plugins/explore-backend/package.json index 56a13bbcbd..6080166aff 100644 --- a/plugins/explore-backend/package.json +++ b/plugins/explore-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-explore-backend", - "version": "0.0.8", + "version": "0.0.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index 0d9cc0b134..6dab3ae1d1 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-explore +## 0.4.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-explore-react@0.0.29 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + ## 0.4.5 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 3c72231f8d..13988f428c 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore", "description": "A Backstage plugin for building an exploration page of your software ecosystem", - "version": "0.4.5", + "version": "0.4.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index 36bbbf38cb..dc3d3326f1 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-firehydrant +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 2a3f322c7d..9c56e726eb 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.2.3", + "version": "0.2.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index f0d12df6ba..b96510cbcb 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-fossa +## 0.2.52-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.51 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index 1baaa929f9..bf78a608ae 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-fossa", "description": "A Backstage plugin that integrates towards FOSSA", - "version": "0.2.51", + "version": "0.2.52-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index 10351b937c..d526cbc224 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gcalendar +## 0.3.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.3.15 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index 26d3616a4c..885175763c 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.15", + "version": "0.3.16-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index 59a88c438d..27c0f7eef0 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gcp-projects +## 0.3.39-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.3.38 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index a1bbf88e9a..e958a026bf 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gcp-projects", "description": "A Backstage plugin that helps you manage projects in GCP", - "version": "0.3.38", + "version": "0.3.39-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 72b56473d4..1f7792d331 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-git-release-manager +## 0.3.33-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + ## 0.3.32 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 8dfca51ff1..21c2ae6e4a 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-git-release-manager", "description": "A Backstage plugin that helps you manage releases in git", - "version": "0.3.32", + "version": "0.3.33-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index e0d378c09a..aa0935ba32 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-github-actions +## 0.6.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.6.0 ### Minor Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 34ebfc48dd..468d77f847 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.6.0", + "version": "0.6.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 9726f1a48a..043830f1e7 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-github-deployments +## 0.1.51-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.50 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 09081dc934..7a10383c5b 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-deployments", "description": "A Backstage plugin that integrates towards GitHub Deployments", - "version": "0.1.50", + "version": "0.1.51-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index 3981319749..0ce60173e6 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-github-issues +## 0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.8 ### Patch Changes diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index 7a276705c1..cc8f5582c3 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-github-issues", - "version": "0.2.8", + "version": "0.2.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 8e3bf38e46..662d998597 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.13 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index 3bc18be454..d9b807b6fc 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-pull-requests-board", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", - "version": "0.1.13", + "version": "0.1.14-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index 962431b3d2..85e567a355 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gitops-profiles +## 0.3.38-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.3.37 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index c860869358..b9e813086d 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gitops-profiles", "description": "A Backstage plugin that helps you manage GitOps profiles", - "version": "0.3.37", + "version": "0.3.38-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index 8f2e93a8aa..bf4977390f 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-gocd +## 0.1.26-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.25 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 31e1bff024..66f7521cd8 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gocd", "description": "A Backstage plugin that integrates towards GoCD", - "version": "0.1.25", + "version": "0.1.26-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index e8cc07685d..ec5a7f8e25 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphiql +## 0.2.52-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.2.51 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index 90794e8833..e7ce00be1c 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphiql", "description": "Backstage plugin for browsing GraphQL APIs", - "version": "0.2.51", + "version": "0.2.52-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/graphql-backend/CHANGELOG.md b/plugins/graphql-backend/CHANGELOG.md index a72f3ea6c8..51c233d834 100644 --- a/plugins/graphql-backend/CHANGELOG.md +++ b/plugins/graphql-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-backend +## 0.1.37-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-graphql@0.3.22-next.0 + ## 0.1.36 ### Patch Changes diff --git a/plugins/graphql-backend/package.json b/plugins/graphql-backend/package.json index 1f0f495256..924059d3ec 100644 --- a/plugins/graphql-backend/package.json +++ b/plugins/graphql-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-backend", "description": "An experimental Backstage backend plugin for GraphQL", - "version": "0.1.36", + "version": "0.1.37-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md index 082c636e31..90f899932f 100644 --- a/plugins/graphql-voyager/CHANGELOG.md +++ b/plugins/graphql-voyager/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-voyager +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json index 30c4408b24..9fd3eccd54 100644 --- a/plugins/graphql-voyager/package.json +++ b/plugins/graphql-voyager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-voyager", "description": "Backstage plugin for GraphQL Voyager", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home-react/CHANGELOG.md b/plugins/home-react/CHANGELOG.md index 3b7244654f..07b5e817aa 100644 --- a/plugins/home-react/CHANGELOG.md +++ b/plugins/home-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-home-react +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + ## 0.1.0 ### Minor Changes diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index 3d12c159ab..94facb55fa 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home-react", "description": "A Backstage plugin that contains react components helps you build a home page", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 03f95c1af9..cdf140b2d5 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-home +## 0.5.4-next.0 + +### Patch Changes + +- 88c62048fcbd: fix: update plugin home dependency for `@rjsf/material-ui` to `@rjsf/material-ui-v5` +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-home-react@0.1.1-next.0 + ## 0.5.3 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index c5aa8ee238..156fcd12e5 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.5.3", + "version": "0.5.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index 76e52b4f13..df53ce78bc 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-ilert +## 0.2.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.8 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index f3e3f4eec7..0b231ec789 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-ilert", "description": "A Backstage plugin that integrates towards iLert", - "version": "0.2.8", + "version": "0.2.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins-backend/CHANGELOG.md b/plugins/jenkins-backend/CHANGELOG.md index 978152078c..e86bdd2a10 100644 --- a/plugins/jenkins-backend/CHANGELOG.md +++ b/plugins/jenkins-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-jenkins-backend +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-jenkins-common@0.1.17-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/jenkins-backend/package.json b/plugins/jenkins-backend/package.json index be893916b3..8a3893173b 100644 --- a/plugins/jenkins-backend/package.json +++ b/plugins/jenkins-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins-backend", "description": "A Backstage backend plugin that integrates towards Jenkins", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins-common/CHANGELOG.md b/plugins/jenkins-common/CHANGELOG.md index a93e5770a9..d7a2f65f2c 100644 --- a/plugins/jenkins-common/CHANGELOG.md +++ b/plugins/jenkins-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-jenkins-common +## 0.1.17-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.1.16 ### Patch Changes diff --git a/plugins/jenkins-common/package.json b/plugins/jenkins-common/package.json index 5029cb3275..110e5bc382 100644 --- a/plugins/jenkins-common/package.json +++ b/plugins/jenkins-common/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-jenkins-common", - "version": "0.1.16", + "version": "0.1.17-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index d44d66b48f..20528abe26 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-jenkins +## 0.8.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-jenkins-common@0.1.17-next.0 + ## 0.8.1 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 1cd8048d18..3cce27104d 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins", "description": "A Backstage plugin that integrates towards Jenkins", - "version": "0.8.1", + "version": "0.8.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka-backend/CHANGELOG.md b/plugins/kafka-backend/CHANGELOG.md index 9fa8517298..e5a989f04e 100644 --- a/plugins/kafka-backend/CHANGELOG.md +++ b/plugins/kafka-backend/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kafka-backend +## 0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + ## 0.2.39 ### Patch Changes diff --git a/plugins/kafka-backend/package.json b/plugins/kafka-backend/package.json index 9526ca7b10..b2b69d7856 100644 --- a/plugins/kafka-backend/package.json +++ b/plugins/kafka-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka-backend", "description": "A Backstage backend plugin that integrates towards Kafka", - "version": "0.2.39", + "version": "0.2.40-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index f1cf22ca04..f3fc4a9084 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-kafka +## 0.3.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.3.19 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 89a3fc3293..38e661e577 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka", "description": "A Backstage plugin that integrates towards Kafka", - "version": "0.3.19", + "version": "0.3.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index 27d74d391e..03f6b1680a 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-kubernetes-backend +## 0.11.2-next.0 + +### Patch Changes + +- faac6b7425b2: Update readme with a valid link to k8s documentation +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-kubernetes-common@0.6.5-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + ## 0.11.1 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index ce2d18636c..74a6032b1c 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-backend", "description": "A Backstage backend plugin that integrates towards Kubernetes", - "version": "0.11.1", + "version": "0.11.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-common/CHANGELOG.md b/plugins/kubernetes-common/CHANGELOG.md index e7f002540f..c3208799e5 100644 --- a/plugins/kubernetes-common/CHANGELOG.md +++ b/plugins/kubernetes-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-kubernetes-common +## 0.6.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.6.4 ### Patch Changes diff --git a/plugins/kubernetes-common/package.json b/plugins/kubernetes-common/package.json index e3b6c7ffab..bcf9e09642 100644 --- a/plugins/kubernetes-common/package.json +++ b/plugins/kubernetes-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-common", "description": "Common functionalities for kubernetes, to be shared between kubernetes and kubernetes-backend plugin", - "version": "0.6.4", + "version": "0.6.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index f7bbab122b..7aa5ce5830 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-kubernetes +## 0.9.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-kubernetes-common@0.6.5-next.0 + ## 0.9.2 ### Patch Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index 65bf61b8dc..b59735a6ee 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes", "description": "A Backstage plugin that integrates towards Kubernetes", - "version": "0.9.2", + "version": "0.9.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse-backend/CHANGELOG.md b/plugins/lighthouse-backend/CHANGELOG.md index 7b04057164..4e0cb1f2c0 100644 --- a/plugins/lighthouse-backend/CHANGELOG.md +++ b/plugins/lighthouse-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-lighthouse-backend +## 0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-lighthouse-common@0.1.2 + ## 0.2.2 ### Patch Changes diff --git a/plugins/lighthouse-backend/package.json b/plugins/lighthouse-backend/package.json index 8c58e49dc2..03a5c6e0fc 100644 --- a/plugins/lighthouse-backend/package.json +++ b/plugins/lighthouse-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse-backend", "description": "Backend functionalities for lighthouse", - "version": "0.2.2", + "version": "0.2.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index 9144ca7915..f52d23ddcf 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-lighthouse +## 0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-lighthouse-common@0.1.2 + ## 0.4.4 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 96694caa37..57125aed05 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse", "description": "A Backstage plugin that integrates towards Lighthouse", - "version": "0.4.4", + "version": "0.4.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md index a99b7639ae..c9b56eeaf7 100644 --- a/plugins/linguist-backend/CHANGELOG.md +++ b/plugins/linguist-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-linguist-backend +## 0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-linguist-common@0.1.0 + ## 0.3.0 ### Minor Changes diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 70d91bceb4..e4eaeb337a 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist-backend", - "version": "0.3.0", + "version": "0.3.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md index 8269274220..2c778736ea 100644 --- a/plugins/linguist/CHANGELOG.md +++ b/plugins/linguist/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-linguist +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-linguist-common@0.1.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json index fb1a2a13fe..65a364e31e 100644 --- a/plugins/linguist/package.json +++ b/plugins/linguist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md index da93bc3f98..870087196d 100644 --- a/plugins/microsoft-calendar/CHANGELOG.md +++ b/plugins/microsoft-calendar/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-microsoft-calendar +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index 5a94e2c033..5e4f6f3b73 100644 --- a/plugins/microsoft-calendar/package.json +++ b/plugins/microsoft-calendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-microsoft-calendar", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index c5e8462ea1..0c9d6dc094 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.12 ### Patch Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index 4f72c3d7a9..ce6a2e7ad5 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.2.12", + "version": "0.2.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index ba87fb43cb..aedb63b85e 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-newrelic +## 0.3.38-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.3.37 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index e658381382..4cc89bab73 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-newrelic", "description": "A Backstage plugin that integrates towards New Relic", - "version": "0.3.37", + "version": "0.3.38-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/nomad-backend/CHANGELOG.md b/plugins/nomad-backend/CHANGELOG.md index 5e83850cae..edf3d7062f 100644 --- a/plugins/nomad-backend/CHANGELOG.md +++ b/plugins/nomad-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-nomad-backend +## 0.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + ## 0.1.0 ### Minor Changes diff --git a/plugins/nomad-backend/package.json b/plugins/nomad-backend/package.json index a851a256de..2c71b99e7b 100644 --- a/plugins/nomad-backend/package.json +++ b/plugins/nomad-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-nomad-backend", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/nomad/CHANGELOG.md b/plugins/nomad/CHANGELOG.md index dad77708de..79d516ab59 100644 --- a/plugins/nomad/CHANGELOG.md +++ b/plugins/nomad/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-nomad +## 0.1.1-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.0 ### Minor Changes diff --git a/plugins/nomad/package.json b/plugins/nomad/package.json index 213190e0b4..3d4311cbc7 100644 --- a/plugins/nomad/package.json +++ b/plugins/nomad/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-nomad", - "version": "0.1.0", + "version": "0.1.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md index cc5f43a5c2..329ff12a05 100644 --- a/plugins/octopus-deploy/CHANGELOG.md +++ b/plugins/octopus-deploy/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-octopus-deploy +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json index 654d0c6807..82555e6e1b 100644 --- a/plugins/octopus-deploy/package.json +++ b/plugins/octopus-deploy/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-octopus-deploy", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md index afd240e80a..5fbe806dd9 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-org-react +## 0.1.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.8 ### Patch Changes diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index 404f230894..c5e185cdcc 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-org-react", - "version": "0.1.8", + "version": "0.1.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index d08b72cf52..96870f2ea2 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-org +## 0.6.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.6.9 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index 017da0d1c1..4091ed33a2 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.6.9", + "version": "0.6.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index 54e388b59f..ca1e46329d 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-pagerduty +## 0.6.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-home-react@0.1.1-next.0 + ## 0.6.0 ### Minor Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 872436666e..68b67f640d 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.6.0", + "version": "0.6.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop-backend/CHANGELOG.md b/plugins/periskop-backend/CHANGELOG.md index de0ce2444c..8afdcd88d3 100644 --- a/plugins/periskop-backend/CHANGELOG.md +++ b/plugins/periskop-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-periskop-backend +## 0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + ## 0.1.17 ### Patch Changes diff --git a/plugins/periskop-backend/package.json b/plugins/periskop-backend/package.json index 73408b50c4..40a10ac6c4 100644 --- a/plugins/periskop-backend/package.json +++ b/plugins/periskop-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop-backend", - "version": "0.1.17", + "version": "0.1.18-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index 412504cacf..745ede4de1 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-periskop +## 0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.17 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index 37a4fab7ef..f6bbff2a2c 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.17", + "version": "0.1.18-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index c690414182..108197e407 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-permission-backend +## 0.5.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + ## 0.5.21 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 153e51d6fd..8b7bdcaebb 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend", - "version": "0.5.21", + "version": "0.5.22-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-common/CHANGELOG.md b/plugins/permission-common/CHANGELOG.md index 34da6d6201..14460590f9 100644 --- a/plugins/permission-common/CHANGELOG.md +++ b/plugins/permission-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-permission-common +## 0.7.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + ## 0.7.6 ### Patch Changes diff --git a/plugins/permission-common/package.json b/plugins/permission-common/package.json index 37568c1841..becd87d883 100644 --- a/plugins/permission-common/package.json +++ b/plugins/permission-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-common", "description": "Isomorphic types and client for Backstage permissions and authorization", - "version": "0.7.6", + "version": "0.7.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index 636ccb6df2..860a2adb63 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-permission-node +## 0.7.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.7.9 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 0ff7c2f914..512412a0c1 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-permission-node", "description": "Common permission and authorization utilities for backend plugins", - "version": "0.7.9", + "version": "0.7.10-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md index 83206b2cc8..f0f7bd32ea 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-permission-react +## 0.4.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.4.13 ### Patch Changes diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index c5509e247f..264005c88f 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-react", - "version": "0.4.13", + "version": "0.4.14-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist-backend/CHANGELOG.md b/plugins/playlist-backend/CHANGELOG.md index 157bde3788..9af506f5d5 100644 --- a/plugins/playlist-backend/CHANGELOG.md +++ b/plugins/playlist-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-playlist-backend +## 0.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-playlist-common@0.1.8-next.0 + ## 0.3.2 ### Patch Changes diff --git a/plugins/playlist-backend/package.json b/plugins/playlist-backend/package.json index 7a83d97505..529d83471d 100644 --- a/plugins/playlist-backend/package.json +++ b/plugins/playlist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist-backend", - "version": "0.3.2", + "version": "0.3.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist-common/CHANGELOG.md b/plugins/playlist-common/CHANGELOG.md index 4ef07f0a1b..85aee4b26f 100644 --- a/plugins/playlist-common/CHANGELOG.md +++ b/plugins/playlist-common/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-playlist-common +## 0.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 0.1.7 ### Patch Changes diff --git a/plugins/playlist-common/package.json b/plugins/playlist-common/package.json index 0ae64943d7..a95f6087a7 100644 --- a/plugins/playlist-common/package.json +++ b/plugins/playlist-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-playlist-common", "description": "Common functionalities for the playlist plugin", - "version": "0.1.7", + "version": "0.1.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md index 23d5f929dd..4266f1f1d1 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-playlist +## 0.1.12-next.0 + +### Patch Changes + +- 68531cc70e1f: Break some internal circular import chains +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + - @backstage/plugin-playlist-common@0.1.8-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + ## 0.1.11 ### Patch Changes diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 64457d848e..39cea31218 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist", - "version": "0.1.11", + "version": "0.1.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index aa937170b0..f95eca9e3d 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-proxy-backend +## 0.2.41-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + ## 0.2.40 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 5330df76e3..22fa52db43 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-proxy-backend", "description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend", - "version": "0.2.40", + "version": "0.2.41-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/puppetdb/CHANGELOG.md b/plugins/puppetdb/CHANGELOG.md index 2baf09f2c6..b4c78d1cb1 100644 --- a/plugins/puppetdb/CHANGELOG.md +++ b/plugins/puppetdb/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-puppetdb +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json index 16444d90ac..0d958d61c2 100644 --- a/plugins/puppetdb/package.json +++ b/plugins/puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-puppetdb", "description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar-backend/CHANGELOG.md b/plugins/rollbar-backend/CHANGELOG.md index afe15c6f77..bbb362a321 100644 --- a/plugins/rollbar-backend/CHANGELOG.md +++ b/plugins/rollbar-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-rollbar-backend +## 0.1.44-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + ## 0.1.43 ### Patch Changes diff --git a/plugins/rollbar-backend/package.json b/plugins/rollbar-backend/package.json index 5e165d534b..5ac0038dec 100644 --- a/plugins/rollbar-backend/package.json +++ b/plugins/rollbar-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar-backend", "description": "A Backstage backend plugin that integrates towards Rollbar", - "version": "0.1.43", + "version": "0.1.44-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index cebee29c74..473e1b897b 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-rollbar +## 0.4.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.4.19 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index d0b94ea965..7454737254 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar", "description": "A Backstage plugin that integrates towards Rollbar", - "version": "0.4.19", + "version": "0.4.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md index 696725b042..52dd436bac 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-confluence-to-markdown +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json index b3e6bf7bf4..8363dcb34d 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown", "description": "The confluence-to-markdown module for @backstage/plugin-scaffolder-backend", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index 73762f1872..83fb13ad4f 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-cookiecutter +## 0.2.23-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + ## 0.2.22 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index c5a3f49091..9209033693 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-cookiecutter", "description": "A module for the scaffolder backend that lets you template projects using cookiecutter", - "version": "0.2.22", + "version": "0.2.23-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md index 6b7799e191..2ea66e6c32 100644 --- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-backend-module-gitlab +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + ## 0.2.1 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json index 69ea8013f3..cd036022cc 100644 --- a/plugins/scaffolder-backend-module-gitlab/package.json +++ b/plugins/scaffolder-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gitlab", - "version": "0.2.1", + "version": "0.2.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index e8c83026e6..9e4876f0c7 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.4.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-backend@1.15.1-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + ## 0.4.15 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index f0238e5d82..fe27268a3d 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", "description": "A module for the scaffolder backend that lets you template projects using Rails", - "version": "0.4.15", + "version": "0.4.16-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md index 2a9fb5d287..58a766717d 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-sentry +## 0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + ## 0.1.6 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index 8c0c7a08fe..f6da4c6b87 100644 --- a/plugins/scaffolder-backend-module-sentry/package.json +++ b/plugins/scaffolder-backend-module-sentry/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-sentry", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index de5673b1b6..740d6b5156 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.2.20-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + ## 0.2.19 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index 20cfff4375..27b22717e2 100644 --- a/plugins/scaffolder-backend-module-yeoman/package.json +++ b/plugins/scaffolder-backend-module-yeoman/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-yeoman", - "version": "0.2.19", + "version": "0.2.20-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index 8e50bed1de..f14b34bae3 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-scaffolder-backend +## 1.15.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-backend@1.11.0-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-scaffolder-node@0.1.5-next.0 + ## 1.15.0 ### Minor Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index e3461cad1f..cbac0ae98f 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-backend", "description": "The Backstage backend plugin that helps you create new things", - "version": "1.15.0", + "version": "1.15.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-common/CHANGELOG.md b/plugins/scaffolder-common/CHANGELOG.md index a840a3959a..19329a1c4a 100644 --- a/plugins/scaffolder-common/CHANGELOG.md +++ b/plugins/scaffolder-common/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-common +## 1.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 1.3.1 ### Patch Changes diff --git a/plugins/scaffolder-common/package.json b/plugins/scaffolder-common/package.json index 69cc2df17c..6ce31c1e2b 100644 --- a/plugins/scaffolder-common/package.json +++ b/plugins/scaffolder-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-common", "description": "Common functionalities for the scaffolder, to be shared between scaffolder and scaffolder-backend plugin", - "version": "1.3.1", + "version": "1.3.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md index 162f511742..7e5a9f4737 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-node +## 0.1.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + ## 0.1.4 ### Patch Changes diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index 1fe4c16566..f6578720ed 100644 --- a/plugins/scaffolder-node/package.json +++ b/plugins/scaffolder-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-node", "description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend", - "version": "0.1.4", + "version": "0.1.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md index 95af81aad9..3b7bce6a1d 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-scaffolder-react +## 1.5.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + ## 1.5.0 ### Minor Changes diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index e78b04dbbe..2fadab8a0f 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-react", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", - "version": "1.5.0", + "version": "1.5.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index 785ddf9054..4e3ff61b5b 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,26 @@ # @backstage/plugin-scaffolder +## 1.14.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-permission-react@0.4.14-next.0 + - @backstage/plugin-scaffolder-common@1.3.2-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.0 + ## 1.14.0 ### Minor Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 9989f2ccd1..08179c90cc 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder", "description": "The Backstage plugin that helps you create new things", - "version": "1.14.0", + "version": "1.14.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md index 0d6b29da6a..d125adf696 100644 --- a/plugins/search-backend-module-catalog/CHANGELOG.md +++ b/plugins/search-backend-module-catalog/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend-module-catalog +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json index dffe463064..d714cf610e 100644 --- a/plugins/search-backend-module-catalog/package.json +++ b/plugins/search-backend-module-catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-catalog", "description": "A module for the search backend that exports catalog modules", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index 2d5d0af884..a110af5347 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 1.3.1 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index bd220287ed..18e0062089 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", "description": "A module for the search backend that implements search using ElasticSearch", - "version": "1.3.1", + "version": "1.3.2-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-explore/CHANGELOG.md b/plugins/search-backend-module-explore/CHANGELOG.md index 7ca27b0681..9a9d741511 100644 --- a/plugins/search-backend-module-explore/CHANGELOG.md +++ b/plugins/search-backend-module-explore/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-search-backend-module-explore +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-explore-common@0.0.1 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/search-backend-module-explore/package.json b/plugins/search-backend-module-explore/package.json index a2fe95db18..233c8f5d7a 100644 --- a/plugins/search-backend-module-explore/package.json +++ b/plugins/search-backend-module-explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-explore", "description": "A module for the search backend that exports explore modules", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index d5711c983b..a79b790c70 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-backend-module-pg +## 0.5.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 0.5.7 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index fa6b1ecaaa..63c793bd18 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-pg", "description": "A module for the search backend that implements search using PostgreSQL", - "version": "0.5.7", + "version": "0.5.8-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md index ddd77e42db..dc5b589677 100644 --- a/plugins/search-backend-module-techdocs/CHANGELOG.md +++ b/plugins/search-backend-module-techdocs/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-search-backend-module-techdocs +## 0.1.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-techdocs-node@1.7.3-next.0 + ## 0.1.2 ### Patch Changes diff --git a/plugins/search-backend-module-techdocs/package.json b/plugins/search-backend-module-techdocs/package.json index 8b7b82fed8..194462c91f 100644 --- a/plugins/search-backend-module-techdocs/package.json +++ b/plugins/search-backend-module-techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-module-techdocs", "description": "A module for the search backend that exports techdocs modules", - "version": "0.1.2", + "version": "0.1.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index cbef4b5b2b..de249c5f2c 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-search-backend-node +## 1.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 1.2.2 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 9f15e3d789..6a6c0c3b26 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend-node", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", - "version": "1.2.2", + "version": "1.2.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index a8fe4bcbe2..266154b10b 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend +## 1.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-permission-node@0.7.10-next.0 + - @backstage/plugin-search-backend-node@1.2.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 1.3.2 ### Patch Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index 384b8bd647..60f3c04d54 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-backend", "description": "The Backstage backend plugin that provides your backstage app with search", - "version": "1.3.2", + "version": "1.3.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-common/CHANGELOG.md b/plugins/search-common/CHANGELOG.md index df03b9c2de..fb38f7a73c 100644 --- a/plugins/search-common/CHANGELOG.md +++ b/plugins/search-common/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-search-common +## 1.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/types@1.1.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + ## 1.2.4 ### Patch Changes diff --git a/plugins/search-common/package.json b/plugins/search-common/package.json index bb7a0c9a33..eaf5574684 100644 --- a/plugins/search-common/package.json +++ b/plugins/search-common/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search-common", "description": "Common functionalities for Search, to be shared between various search-enabled plugins", - "version": "1.2.4", + "version": "1.2.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index 71e8dfa8c3..574560e1d8 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search-react +## 1.6.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 1.6.2 ### Patch Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index ee0747f758..8527750f05 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.6.2", + "version": "1.6.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index 04c8260e43..e01effe1c5 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-search +## 1.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/version-bridge@1.0.4 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + ## 1.3.2 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index aa9161dc1f..be3ab80816 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search", "description": "The Backstage plugin that provides your backstage app with search", - "version": "1.3.2", + "version": "1.3.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index 4381275152..f5d875f6e4 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-sentry +## 0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.5.4 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 31b43c2e0f..9bb841c30b 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sentry", "description": "A Backstage plugin that integrates towards Sentry", - "version": "0.5.4", + "version": "0.5.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index 627bdfc545..e272fcc42c 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-shortcuts +## 0.3.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + ## 0.3.11 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index efa443156c..94f5eb59e6 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-shortcuts", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", - "version": "0.3.11", + "version": "0.3.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index 13235d19ba..5a7db5d0e0 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-sonarqube-backend +## 0.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + ## 0.2.0 ### Minor Changes diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index 6c575f6174..ac6eb27395 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.2.0", + "version": "0.2.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-react/CHANGELOG.md b/plugins/sonarqube-react/CHANGELOG.md index 727092289e..6a061ade31 100644 --- a/plugins/sonarqube-react/CHANGELOG.md +++ b/plugins/sonarqube-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-sonarqube-react +## 0.1.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + ## 0.1.6 ### Patch Changes diff --git a/plugins/sonarqube-react/package.json b/plugins/sonarqube-react/package.json index 7baede0e24..266fbcf489 100644 --- a/plugins/sonarqube-react/package.json +++ b/plugins/sonarqube-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-react", - "version": "0.1.6", + "version": "0.1.7-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index 91024f94b1..b77a8d83ab 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-sonarqube +## 0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-sonarqube-react@0.1.7-next.0 + ## 0.7.0 ### Minor Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index 106bf409d7..2fc9c07e4b 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.7.0", + "version": "0.7.1-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index ad0b5314bf..971c5e388e 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-splunk-on-call +## 0.4.9-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.4.8 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index 5de46209f6..d24e81993d 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-splunk-on-call", "description": "A Backstage plugin that integrates towards Splunk On-Call", - "version": "0.4.8", + "version": "0.4.9-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow-backend/CHANGELOG.md b/plugins/stack-overflow-backend/CHANGELOG.md index cfa90db59c..dab751a572 100644 --- a/plugins/stack-overflow-backend/CHANGELOG.md +++ b/plugins/stack-overflow-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-stack-overflow-backend +## 0.2.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 0.2.2 ### Patch Changes diff --git a/plugins/stack-overflow-backend/package.json b/plugins/stack-overflow-backend/package.json index 65ee43ea31..f94477108a 100644 --- a/plugins/stack-overflow-backend/package.json +++ b/plugins/stack-overflow-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow-backend", - "version": "0.2.2", + "version": "0.2.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index ab80be7dd6..434aa953d8 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-stack-overflow +## 0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-home-react@0.1.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + ## 0.1.17 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index 1c66057192..bac7780c89 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow", - "version": "0.1.17", + "version": "0.1.18-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stackstorm/CHANGELOG.md b/plugins/stackstorm/CHANGELOG.md index 9b67bede6e..fc741a6c5e 100644 --- a/plugins/stackstorm/CHANGELOG.md +++ b/plugins/stackstorm/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-stackstorm +## 0.1.4-next.0 + +### Patch Changes + +- 1745959daf98: Add props to StackstormHome for Header Customization +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index 9125ac08af..5b2f7aaaea 100644 --- a/plugins/stackstorm/package.json +++ b/plugins/stackstorm/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-stackstorm", "description": "A Backstage plugin that integrates towards StackStorm", - "version": "0.1.3", + "version": "0.1.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md index f1055f0c05..6401b289d8 100644 --- a/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md +++ b/plugins/tech-insights-backend-module-jsonfc/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-backend-module-jsonfc +## 0.1.31-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/config@1.0.8 + - @backstage/plugin-tech-insights-common@0.2.11 + - @backstage/plugin-tech-insights-node@0.4.5-next.0 + ## 0.1.30 ### Patch Changes diff --git a/plugins/tech-insights-backend-module-jsonfc/package.json b/plugins/tech-insights-backend-module-jsonfc/package.json index dfd36771be..2c9f2ad2f2 100644 --- a/plugins/tech-insights-backend-module-jsonfc/package.json +++ b/plugins/tech-insights-backend-module-jsonfc/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend-module-jsonfc", - "version": "0.1.30", + "version": "0.1.31-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-backend/CHANGELOG.md b/plugins/tech-insights-backend/CHANGELOG.md index 1e553b9bd5..341d17e816 100644 --- a/plugins/tech-insights-backend/CHANGELOG.md +++ b/plugins/tech-insights-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-tech-insights-backend +## 0.5.13-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-tech-insights-common@0.2.11 + - @backstage/plugin-tech-insights-node@0.4.5-next.0 + ## 0.5.12 ### Patch Changes diff --git a/plugins/tech-insights-backend/package.json b/plugins/tech-insights-backend/package.json index 55d362e3b6..ba79312f9c 100644 --- a/plugins/tech-insights-backend/package.json +++ b/plugins/tech-insights-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-backend", - "version": "0.5.12", + "version": "0.5.13-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights-node/CHANGELOG.md b/plugins/tech-insights-node/CHANGELOG.md index ffc11ee62f..6d30b36765 100644 --- a/plugins/tech-insights-node/CHANGELOG.md +++ b/plugins/tech-insights-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-tech-insights-node +## 0.4.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + - @backstage/types@1.1.0 + - @backstage/plugin-tech-insights-common@0.2.11 + ## 0.4.4 ### Patch Changes diff --git a/plugins/tech-insights-node/package.json b/plugins/tech-insights-node/package.json index 9f3856ce96..72e01d0ebe 100644 --- a/plugins/tech-insights-node/package.json +++ b/plugins/tech-insights-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights-node", - "version": "0.4.4", + "version": "0.4.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index 80bb0e5314..4c730ad3ac 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-tech-insights +## 0.3.12-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-tech-insights-common@0.2.11 + ## 0.3.11 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 16d35a114e..6a6e60895f 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.3.11", + "version": "0.3.12-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index 9c0b17718e..e0eb7132e1 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-tech-radar +## 0.6.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.6.5 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 85e7128c92..59d0e7f47f 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-tech-radar", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", - "version": "0.6.5", + "version": "0.6.6-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index 9e0cd5a6ef..6cbae369d3 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/test-utils@1.4.1-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog@1.11.3-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + - @backstage/plugin-techdocs@1.6.5-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + ## 1.0.15 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index d795d7e0c7..7815ad4544 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-addons-test-utils", - "version": "1.0.15", + "version": "1.0.16-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index c7a2fe0c32..df43137050 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-techdocs-backend +## 1.6.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/plugin-catalog-common@1.0.15-next.0 + - @backstage/plugin-permission-common@0.7.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.1.3-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-techdocs-node@1.7.3-next.0 + ## 1.6.3 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index e20d7de262..fa8971185e 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-backend", "description": "The Backstage backend plugin that renders technical documentation for your components", - "version": "1.6.3", + "version": "1.6.4-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 7e2f4bb3f1..25344e3e2d 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.15-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + ## 1.0.14 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index e8bdc417f6..f730249288 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", "description": "Plugin module for contributed TechDocs Addons", - "version": "1.0.14", + "version": "1.0.15-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index 40ccbf388c..35a14a8d03 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-techdocs-node +## 1.7.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-aws-node@0.1.5-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + ## 1.7.2 ### Patch Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 0a6cc92dd1..9eabf1cb43 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-node", "description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", - "version": "1.7.2", + "version": "1.7.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "publishConfig": { diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 0f99f05c08..4957b83a41 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-techdocs-react +## 1.1.8-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/version-bridge@1.0.4 + ## 1.1.7 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 87d35b78c9..758afb2741 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-react", "description": "Shared frontend utilities for TechDocs and Addons", - "version": "1.1.7", + "version": "1.1.8-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 7e09eff22a..55e584f71d 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-techdocs +## 1.6.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/core-plugin-api@1.5.2 + - @backstage/integration@1.5.1-next.0 + - @backstage/integration-react@1.1.15-next.0 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + - @backstage/plugin-search-common@1.2.5-next.0 + - @backstage/plugin-search-react@1.6.3-next.0 + - @backstage/plugin-techdocs-react@1.1.8-next.0 + ## 1.6.4 ### Patch Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 2e16b07a61..9578ca46f0 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs", "description": "The Backstage plugin that renders technical documentation for your components", - "version": "1.6.4", + "version": "1.6.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo-backend/CHANGELOG.md b/plugins/todo-backend/CHANGELOG.md index 4e6444deaf..8fed3e4bd8 100644 --- a/plugins/todo-backend/CHANGELOG.md +++ b/plugins/todo-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-todo-backend +## 0.1.44-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/plugin-catalog-node@1.4.0-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-client@1.4.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/config@1.0.8 + - @backstage/integration@1.5.1-next.0 + ## 0.1.43 ### Patch Changes diff --git a/plugins/todo-backend/package.json b/plugins/todo-backend/package.json index 359c3e754c..e173e9a02c 100644 --- a/plugins/todo-backend/package.json +++ b/plugins/todo-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo-backend", "description": "A Backstage backend plugin that lets you browse TODO comments in your source code", - "version": "0.1.43", + "version": "0.1.44-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index 659d2cb388..8a4ea6a6b1 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-todo +## 0.2.22-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.2.21 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index f966ed81e2..58f2d19ea7 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo", "description": "A Backstage plugin that lets you browse TODO comments in your source code", - "version": "0.2.21", + "version": "0.2.22-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md index 57b7da9a0c..e1f8b8a94a 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-user-settings-backend +## 0.1.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-plugin-api@0.5.4-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/types@1.1.0 + - @backstage/plugin-auth-node@0.2.16-next.0 + ## 0.1.10 ### Patch Changes diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index b5cd47bcfc..4ba0125769 100644 --- a/plugins/user-settings-backend/package.json +++ b/plugins/user-settings-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings-backend", "description": "The Backstage backend plugin to manage user settings", - "version": "0.1.10", + "version": "0.1.11-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index 971192b578..6a96e894ce 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-user-settings +## 0.7.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-app-api@1.8.1 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/types@1.1.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.7.4 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index 415e7aed8f..b76f5af19d 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings", "description": "A Backstage plugin that provides a settings page", - "version": "0.7.4", + "version": "0.7.5-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault-backend/CHANGELOG.md b/plugins/vault-backend/CHANGELOG.md index c2acf0fd4a..4625dbd6d0 100644 --- a/plugins/vault-backend/CHANGELOG.md +++ b/plugins/vault-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-vault-backend +## 0.3.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/backend-common@0.19.1-next.0 + - @backstage/backend-tasks@0.5.4-next.0 + - @backstage/config@1.0.8 + ## 0.3.2 ### Patch Changes diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 63e0cc4697..170b45c908 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault-backend", "description": "A Backstage backend plugin that integrates towards Vault", - "version": "0.3.2", + "version": "0.3.3-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index 0ff4e9285f..b52005530b 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-vault +## 0.1.14-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/catalog-model@1.4.1-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + - @backstage/plugin-catalog-react@1.7.1-next.0 + ## 0.1.13 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 6641d641b1..8669879ea7 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault", "description": "A Backstage plugin that integrates towards Vault", - "version": "0.1.13", + "version": "0.1.14-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 424f261589..16c263e885 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-xcmetrics +## 0.2.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/errors@1.2.1-next.0 + - @backstage/core-components@0.13.3-next.0 + - @backstage/core-plugin-api@1.5.2 + - @backstage/theme@0.4.0 + ## 0.2.39 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index b87176a1ff..5ea15c4181 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-xcmetrics", "description": "A Backstage plugin that shows XCode build metrics for your components", - "version": "0.2.39", + "version": "0.2.40-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/yarn.lock b/yarn.lock index a2b10a747c..7813254d50 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3816,6 +3816,17 @@ __metadata: languageName: unknown linkType: soft +"@backstage/catalog-client@npm:^1.4.2": + version: 1.4.2 + resolution: "@backstage/catalog-client@npm:1.4.2" + dependencies: + "@backstage/catalog-model": ^1.4.0 + "@backstage/errors": ^1.2.0 + cross-fetch: ^3.1.5 + checksum: 26e0ed93d9ff0c477a93f075cdd19e7ce5c4b3923134b5f3e9684bb496cf3aeb6d729561c1ceb18866ccd3b901b76ed58db8c95e37b0d5d80dbb3f1024bad86f + languageName: node + linkType: hard + "@backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client": version: 0.0.0-use.local resolution: "@backstage/catalog-client@workspace:packages/catalog-client" @@ -3828,7 +3839,22 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@^1.1.5, @backstage/catalog-model@^1.3.0, @backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": +"@backstage/catalog-model@npm:^1.1.5, @backstage/catalog-model@npm:^1.3.0, @backstage/catalog-model@npm:^1.4.0": + version: 1.4.0 + resolution: "@backstage/catalog-model@npm:1.4.0" + dependencies: + "@backstage/config": ^1.0.8 + "@backstage/errors": ^1.2.0 + "@backstage/types": ^1.1.0 + ajv: ^8.10.0 + json-schema: ^0.4.0 + lodash: ^4.17.21 + uuid: ^8.0.0 + checksum: 867c8d54687575e0ca50b8fd1e4a51523d6632fb66af89b771fbfccd6ecd5846285cf9f7257914391cf898cff34d4457857bc17a15cedf36726d26bce8a94187 + languageName: node + linkType: hard + +"@backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": version: 0.0.0-use.local resolution: "@backstage/catalog-model@workspace:packages/catalog-model" dependencies: @@ -4074,7 +4100,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/config@^1.0.6, @backstage/config@^1.0.7, @backstage/config@workspace:^, @backstage/config@workspace:packages/config": +"@backstage/config@^1.0.6, @backstage/config@^1.0.7, @backstage/config@^1.0.8, @backstage/config@workspace:^, @backstage/config@workspace:packages/config": version: 0.0.0-use.local resolution: "@backstage/config@workspace:packages/config" dependencies: @@ -4122,7 +4148,110 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@^0.13.1, @backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": +"@backstage/core-components@npm:^0.12.3": + version: 0.12.5 + resolution: "@backstage/core-components@npm:0.12.5" + dependencies: + "@backstage/config": ^1.0.7 + "@backstage/core-plugin-api": ^1.5.0 + "@backstage/errors": ^1.1.5 + "@backstage/theme": ^0.2.18 + "@backstage/version-bridge": ^1.0.3 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.57 + "@react-hookz/web": ^20.0.0 + "@types/react-sparklines": ^1.7.0 + "@types/react-text-truncate": ^0.14.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + history: ^5.0.0 + immer: ^9.0.1 + lodash: ^4.17.21 + pluralize: ^8.0.0 + prop-types: ^15.7.2 + qs: ^6.9.4 + rc-progress: 3.4.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-text-truncate: ^0.19.0 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.6 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ~3.18.0 + peerDependencies: + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7 + languageName: node + linkType: hard + +"@backstage/core-components@npm:^0.13.1, @backstage/core-components@npm:^0.13.2": + version: 0.13.2 + resolution: "@backstage/core-components@npm:0.13.2" + dependencies: + "@backstage/config": ^1.0.8 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/errors": ^1.2.0 + "@backstage/theme": ^0.4.0 + "@backstage/version-bridge": ^1.0.4 + "@date-io/core": ^1.3.13 + "@material-table/core": ^3.1.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^20.0.0 + "@types/react": ^16.13.1 || ^17.0.0 + "@types/react-sparklines": ^1.7.0 + "@types/react-text-truncate": ^0.14.0 + ansi-regex: ^6.0.1 + classnames: ^2.2.6 + d3-selection: ^3.0.0 + d3-shape: ^3.0.0 + d3-zoom: ^3.0.0 + dagre: ^0.8.5 + history: ^5.0.0 + immer: ^9.0.1 + linkify-react: 4.1.1 + linkifyjs: 4.1.1 + lodash: ^4.17.21 + pluralize: ^8.0.0 + prop-types: ^15.7.2 + qs: ^6.9.4 + rc-progress: 3.4.1 + react-helmet: 6.1.0 + react-hook-form: ^7.12.2 + react-markdown: ^8.0.0 + react-sparklines: ^1.7.0 + react-syntax-highlighter: ^15.4.5 + react-text-truncate: ^0.19.0 + react-use: ^17.3.2 + react-virtualized-auto-sizer: ^1.0.11 + react-window: ^1.8.6 + remark-gfm: ^3.0.1 + zen-observable: ^0.10.0 + zod: ^3.21.4 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: eb85037ada87ba3310a07b36b04bcbe7968482b1c741bb22babdab6dc74ee2d121c6dae278589c42e39fecde0e4313a451cc7c6366a92ee14e7a09b9e2c26d9d + languageName: node + linkType: hard + +"@backstage/core-components@workspace:^, @backstage/core-components@workspace:packages/core-components": version: 0.0.0-use.local resolution: "@backstage/core-components@workspace:packages/core-components" dependencies: @@ -4196,57 +4325,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-components@npm:^0.12.3": - version: 0.12.5 - resolution: "@backstage/core-components@npm:0.12.5" - dependencies: - "@backstage/config": ^1.0.7 - "@backstage/core-plugin-api": ^1.5.0 - "@backstage/errors": ^1.1.5 - "@backstage/theme": ^0.2.18 - "@backstage/version-bridge": ^1.0.3 - "@material-table/core": ^3.1.0 - "@material-ui/core": ^4.12.2 - "@material-ui/icons": ^4.9.1 - "@material-ui/lab": 4.0.0-alpha.57 - "@react-hookz/web": ^20.0.0 - "@types/react-sparklines": ^1.7.0 - "@types/react-text-truncate": ^0.14.0 - ansi-regex: ^6.0.1 - classnames: ^2.2.6 - d3-selection: ^3.0.0 - d3-shape: ^3.0.0 - d3-zoom: ^3.0.0 - dagre: ^0.8.5 - history: ^5.0.0 - immer: ^9.0.1 - lodash: ^4.17.21 - pluralize: ^8.0.0 - prop-types: ^15.7.2 - qs: ^6.9.4 - rc-progress: 3.4.1 - react-helmet: 6.1.0 - react-hook-form: ^7.12.2 - react-markdown: ^8.0.0 - react-sparklines: ^1.7.0 - react-syntax-highlighter: ^15.4.5 - react-text-truncate: ^0.19.0 - react-use: ^17.3.2 - react-virtualized-auto-sizer: ^1.0.6 - react-window: ^1.8.6 - remark-gfm: ^3.0.1 - zen-observable: ^0.10.0 - zod: ~3.18.0 - peerDependencies: - "@types/react": ^16.13.1 || ^17.0.0 - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 8308c1b90247911f6cf22963b530cef169287f508ff29d159d0c83758134dd43bd5acd2113350690a46a02246bc05dca975bcc38325000aefb1c93c80e2f19c7 - languageName: node - linkType: hard - -"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.1, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.1, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -4333,7 +4412,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/errors@^1.1.5, @backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors": +"@backstage/errors@npm:^1.1.5, @backstage/errors@npm:^1.2.0": + version: 1.2.0 + resolution: "@backstage/errors@npm:1.2.0" + dependencies: + "@backstage/types": ^1.1.0 + cross-fetch: ^3.1.5 + serialize-error: ^8.0.1 + checksum: dd2aa686de547f8f218943f80e4bad24d65c92308bd8be9e654fc9d2df84c7639bc0d505a9e3eaa83300e44d3994a547e2b0b990df4b5b8fd7e4a5e19d0cdea9 + languageName: node + linkType: hard + +"@backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors": version: 0.0.0-use.local resolution: "@backstage/errors@workspace:packages/errors" dependencies: @@ -4374,7 +4464,28 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration-react@^1.1.13, @backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": +"@backstage/integration-react@npm:^1.1.13": + version: 1.1.14 + resolution: "@backstage/integration-react@npm:1.1.14" + dependencies: + "@backstage/config": ^1.0.8 + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/integration": ^1.5.0 + "@backstage/theme": ^0.4.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + react-use: ^17.2.4 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 605a06b51110b83da3fc1a887615997a622ccf48a920ccb0bab8f819474105dfcdcbadfc99af28078ab021665c027068820e971200e66e9c642f797aa1b6353f + languageName: node + linkType: hard + +"@backstage/integration-react@workspace:^, @backstage/integration-react@workspace:packages/integration-react": version: 0.0.0-use.local resolution: "@backstage/integration-react@workspace:packages/integration-react" dependencies: @@ -4404,6 +4515,23 @@ __metadata: languageName: unknown linkType: soft +"@backstage/integration@npm:^1.5.0": + version: 1.5.0 + resolution: "@backstage/integration@npm:1.5.0" + dependencies: + "@azure/identity": ^3.2.1 + "@backstage/config": ^1.0.8 + "@backstage/errors": ^1.2.0 + "@octokit/auth-app": ^4.0.0 + "@octokit/rest": ^19.0.3 + cross-fetch: ^3.1.5 + git-url-parse: ^13.0.0 + lodash: ^4.17.21 + luxon: ^3.0.0 + checksum: 48995991e1202213dbd5c908560f18c74267529c1ee19a268d104fe48b5ce2660fef97e7f918c58e2f3ace1c58bdf9dcf2cd85115e3b4fa17e7fb21f5f8df977 + languageName: node + linkType: hard + "@backstage/integration@workspace:^, @backstage/integration@workspace:packages/integration": version: 0.0.0-use.local resolution: "@backstage/integration@workspace:packages/integration" @@ -5574,7 +5702,18 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-common@^1.0.10, @backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": +"@backstage/plugin-catalog-common@npm:^1.0.10, @backstage/plugin-catalog-common@npm:^1.0.14": + version: 1.0.14 + resolution: "@backstage/plugin-catalog-common@npm:1.0.14" + dependencies: + "@backstage/catalog-model": ^1.4.0 + "@backstage/plugin-permission-common": ^0.7.6 + "@backstage/plugin-search-common": ^1.2.4 + checksum: cb9606fdb805740863dee7550b082ceb8ff12d4a1575c5275cd945897d9cc870e5222e925bd5ad9500449f92b1be46b9db385f406a441c61c29a90d09972b0f6 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-common@workspace:^, @backstage/plugin-catalog-common@workspace:plugins/catalog-common": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-common@workspace:plugins/catalog-common" dependencies: @@ -5711,7 +5850,44 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@^1.2.4, @backstage/plugin-catalog-react@^1.6.0, @backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": +"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.6.0, @backstage/plugin-catalog-react@npm:^1.7.0": + version: 1.7.0 + resolution: "@backstage/plugin-catalog-react@npm:1.7.0" + dependencies: + "@backstage/catalog-client": ^1.4.2 + "@backstage/catalog-model": ^1.4.0 + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/errors": ^1.2.0 + "@backstage/integration": ^1.5.0 + "@backstage/plugin-catalog-common": ^1.0.14 + "@backstage/plugin-permission-common": ^0.7.6 + "@backstage/plugin-permission-react": ^0.4.13 + "@backstage/theme": ^0.4.0 + "@backstage/types": ^1.1.0 + "@backstage/version-bridge": ^1.0.4 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@react-hookz/web": ^23.0.0 + "@types/react": ^16.13.1 || ^17.0.0 + classnames: ^2.2.6 + jwt-decode: ^3.1.0 + lodash: ^4.17.21 + material-ui-popup-state: ^1.9.3 + qs: ^6.9.4 + react-use: ^17.2.4 + yaml: ^2.0.0 + zen-observable: ^0.10.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: a4f5093aaa633758bae4905bf907e875a072e5e5f8e6835b7b5776ca4f4d6b07db4192f90d5ec3068e5ff810f0dfb3dbd09324bdfa01d7bf7cd2bee8acd1fc43 + languageName: node + linkType: hard + +"@backstage/plugin-catalog-react@workspace:^, @backstage/plugin-catalog-react@workspace:plugins/catalog-react": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-react@workspace:plugins/catalog-react" dependencies: @@ -7091,6 +7267,23 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-home-react@npm:^0.1.0": + version: 0.1.0 + resolution: "@backstage/plugin-home-react@npm:0.1.0" + dependencies: + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@rjsf/utils": 5.7.3 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: e94627a541d8efa032e21fccd0249d1607952f7387b4de7a91dad9a66e8e3a2919cbce2849895ba97a5851e57c2468d3399e609da7a39ab60c95efc8d5808086 + languageName: node + linkType: hard + "@backstage/plugin-home-react@workspace:^, @backstage/plugin-home-react@workspace:plugins/home-react": version: 0.0.0-use.local resolution: "@backstage/plugin-home-react@workspace:plugins/home-react" @@ -7120,7 +7313,39 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-home@^0.5.2, @backstage/plugin-home@workspace:^, @backstage/plugin-home@workspace:plugins/home": +"@backstage/plugin-home@npm:^0.5.2": + version: 0.5.3 + resolution: "@backstage/plugin-home@npm:0.5.3" + dependencies: + "@backstage/catalog-model": ^1.4.0 + "@backstage/config": ^1.0.8 + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/plugin-catalog-react": ^1.7.0 + "@backstage/plugin-home-react": ^0.1.0 + "@backstage/theme": ^0.4.0 + "@material-ui/core": ^4.12.2 + "@material-ui/icons": ^4.9.1 + "@material-ui/lab": 4.0.0-alpha.61 + "@rjsf/core-v5": "npm:@rjsf/core@5.7.3" + "@rjsf/material-ui": 5.7.3 + "@rjsf/utils": 5.7.3 + "@rjsf/validator-ajv8": 5.7.3 + "@types/react": ^16.13.1 || ^17.0.0 + lodash: ^4.17.21 + react-grid-layout: ^1.3.4 + react-resizable: ^3.0.4 + react-use: ^17.2.4 + zod: ~3.21.4 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 24dd3f261db5e6fb7131b0d8e89f653eb8f510ef35fef28327bd5b5901a59d62d9194b9d342799f7593f965ad3a10701ed35987b32ecf888a2c3fa844efcec3e + languageName: node + linkType: hard + +"@backstage/plugin-home@workspace:^, @backstage/plugin-home@workspace:plugins/home": version: 0.0.0-use.local resolution: "@backstage/plugin-home@workspace:plugins/home" dependencies: @@ -7926,6 +8151,20 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-permission-common@npm:^0.7.6": + version: 0.7.6 + resolution: "@backstage/plugin-permission-common@npm:0.7.6" + dependencies: + "@backstage/config": ^1.0.8 + "@backstage/errors": ^1.2.0 + "@backstage/types": ^1.1.0 + cross-fetch: ^3.1.5 + uuid: ^8.0.0 + zod: ^3.21.4 + checksum: de3363d6a78d6aff077c93c1477e976fa0ab45a62e203be6b20e80a72c3847546a47e138f227893295d5e064421f04af1ae0fcbb74a250a5823e9b363c452209 + languageName: node + linkType: hard + "@backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-common@workspace:plugins/permission-common" @@ -7964,6 +8203,25 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-permission-react@npm:^0.4.13": + version: 0.4.13 + resolution: "@backstage/plugin-permission-react@npm:0.4.13" + dependencies: + "@backstage/config": ^1.0.8 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/plugin-permission-common": ^0.7.6 + "@types/react": ^16.13.1 || ^17.0.0 + cross-fetch: ^3.1.5 + react-use: ^17.2.4 + swr: ^2.0.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: c93392de23dff6cf5152cdd6c4cde50c79a370c562aae42a74c9655716c959bf40a50a01fe7427102b74f33a26ce4a38e467fe88bf66d4ff6cd9e3ad12b70984 + languageName: node + linkType: hard + "@backstage/plugin-permission-react@workspace:^, @backstage/plugin-permission-react@workspace:plugins/permission-react": version: 0.0.0-use.local resolution: "@backstage/plugin-permission-react@workspace:plugins/permission-react" @@ -8682,6 +8940,16 @@ __metadata: languageName: unknown linkType: soft +"@backstage/plugin-search-common@npm:^1.2.4": + version: 1.2.4 + resolution: "@backstage/plugin-search-common@npm:1.2.4" + dependencies: + "@backstage/plugin-permission-common": ^0.7.6 + "@backstage/types": ^1.1.0 + checksum: f0c7cdcad4d11b4dc0b1a4d08417b554b19eb89ced3c49620656a133bfbbc0057f7e2ae176e36e883ce0d29298fafe3a4b916b68d8ee96374b896635e33909ce + languageName: node + linkType: hard + "@backstage/plugin-search-common@workspace:^, @backstage/plugin-search-common@workspace:plugins/search-common": version: 0.0.0-use.local resolution: "@backstage/plugin-search-common@workspace:plugins/search-common" @@ -9700,6 +9968,23 @@ __metadata: languageName: unknown linkType: soft +"@backstage/theme@^0.4.0, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": + version: 0.0.0-use.local + resolution: "@backstage/theme@workspace:packages/theme" + dependencies: + "@backstage/cli": "workspace:^" + "@emotion/react": ^11.10.5 + "@emotion/styled": ^11.10.5 + "@mui/material": ^5.12.2 + "@types/react": ^16.13.1 || ^17.0.0 + peerDependencies: + "@material-ui/core": ^4.12.2 + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + languageName: unknown + linkType: soft + "@backstage/theme@npm:^0.2.16, @backstage/theme@npm:^0.2.18": version: 0.2.19 resolution: "@backstage/theme@npm:0.2.19" @@ -9724,24 +10009,7 @@ __metadata: languageName: node linkType: hard -"@backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": - version: 0.0.0-use.local - resolution: "@backstage/theme@workspace:packages/theme" - dependencies: - "@backstage/cli": "workspace:^" - "@emotion/react": ^11.10.5 - "@emotion/styled": ^11.10.5 - "@mui/material": ^5.12.2 - "@types/react": ^16.13.1 || ^17.0.0 - peerDependencies: - "@material-ui/core": ^4.12.2 - "@types/react": ^16.13.1 || ^17.0.0 - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - languageName: unknown - linkType: soft - -"@backstage/types@^1.0.2, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": +"@backstage/types@^1.0.2, @backstage/types@^1.1.0, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" dependencies: @@ -9752,7 +10020,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/version-bridge@^1.0.3, @backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge": +"@backstage/version-bridge@^1.0.3, @backstage/version-bridge@^1.0.4, @backstage/version-bridge@workspace:^, @backstage/version-bridge@workspace:packages/version-bridge": version: 0.0.0-use.local resolution: "@backstage/version-bridge@workspace:packages/version-bridge" dependencies: @@ -14296,7 +14564,7 @@ __metadata: languageName: node linkType: hard -"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.7.3": +"@rjsf/material-ui-v5@npm:@rjsf/material-ui@5.7.3, @rjsf/material-ui@npm:5.7.3": version: 5.7.3 resolution: "@rjsf/material-ui@npm:5.7.3" peerDependencies: From 294b1629de28e9f2d8c248b77c6b3dae599fe14b Mon Sep 17 00:00:00 2001 From: David Weber Date: Mon, 26 Jun 2023 23:11:42 +0200 Subject: [PATCH 078/194] fix: implement missing related entities Signed-off-by: David Weber --- .changeset/sixty-humans-rescue.md | 6 + .../app/src/components/catalog/EntityPage.tsx | 10 + .../app/src/components/catalog/EntityPage.tsx | 10 + plugins/catalog/api-report.md | 11 ++ .../EntityRelationWarning.test.tsx | 176 ++++++++++++++++++ .../EntityRelationWarning.tsx | 105 +++++++++++ .../components/EntityRelationWarning/index.ts | 20 ++ plugins/catalog/src/index.ts | 1 + 8 files changed, 339 insertions(+) create mode 100644 .changeset/sixty-humans-rescue.md create mode 100644 plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.test.tsx create mode 100644 plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.tsx create mode 100644 plugins/catalog/src/components/EntityRelationWarning/index.ts diff --git a/.changeset/sixty-humans-rescue.md b/.changeset/sixty-humans-rescue.md new file mode 100644 index 0000000000..e6c9e78131 --- /dev/null +++ b/.changeset/sixty-humans-rescue.md @@ -0,0 +1,6 @@ +--- +'@backstage/create-app': patch +'@backstage/plugin-catalog': patch +--- + +Display a warning alert if relations are defined, which don't exist in the catalog. diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index be5ae3e3bf..25630253d4 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -66,6 +66,8 @@ import { isKind, isOrphan, hasLabels, + hasRelationWarnings, + EntityRelationWarning, } from '@internal/plugin-catalog-customized'; import { Direction, @@ -328,6 +330,14 @@ const entityWarningContent = ( + + + + + + + + diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx index 54a05eea03..6722ea2d03 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx @@ -25,6 +25,8 @@ import { isKind, hasCatalogProcessingErrors, isOrphan, + hasRelationWarnings, + EntityRelationWarning, } from '@backstage/plugin-catalog'; import { isGithubActionsAvailable, @@ -101,6 +103,14 @@ const entityWarningContent = ( + + + + + + + + diff --git a/plugins/catalog/api-report.md b/plugins/catalog/api-report.md index f053c15c8a..358bb82b8a 100644 --- a/plugins/catalog/api-report.md +++ b/plugins/catalog/api-report.md @@ -377,6 +377,9 @@ export interface EntityPredicates { // @public export function EntityProcessingErrorsPanel(): JSX.Element | null; +// @public +export function EntityRelationWarning(): JSX.Element | null; + // @public (undocumented) export const EntitySwitch: { (props: EntitySwitchProps): JSX.Element; @@ -429,6 +432,14 @@ export interface HasComponentsCardProps { // @public export function hasLabels(entity: Entity): boolean; +// @public +export function hasRelationWarnings( + entity: Entity, + context: { + apis: ApiHolder; + }, +): Promise; + // @public (undocumented) export interface HasResourcesCardProps { // (undocumented) diff --git a/plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.test.tsx b/plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.test.tsx new file mode 100644 index 0000000000..41e5f7e3d5 --- /dev/null +++ b/plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.test.tsx @@ -0,0 +1,176 @@ +/* + * Copyright 2020 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { Entity } from '@backstage/catalog-model'; +import { ApiProvider } from '@backstage/core-app-api'; +import { + CatalogApi, + catalogApiRef, + EntityProvider, +} from '@backstage/plugin-catalog-react'; +import { renderInTestApp, TestApiRegistry } from '@backstage/test-utils'; +import { screen } from '@testing-library/react'; +import React from 'react'; +import { + EntityRelationWarning, + hasRelationWarnings, +} from './EntityRelationWarning'; + +describe('', () => { + const getEntitiesByRefs: jest.MockedFunction< + CatalogApi['getEntitiesByRefs'] + > = jest.fn(); + const apis = TestApiRegistry.from([catalogApiRef, { getEntitiesByRefs }]); + + const entityExisting: Entity = { + apiVersion: 'v1', + kind: 'Component', + metadata: { + name: 'existing', + }, + }; + + it('renders EntityRelationWarning if the entity has missing relations', async () => { + const entity: Entity = { + apiVersion: 'v1', + kind: 'Component', + metadata: { + name: 'software', + }, + relations: [ + { + type: 'dependsOn', + targetRef: 'component:default/missing', + }, + { + type: 'dependsOn', + targetRef: 'component:default/existing', + }, + ], + }; + + getEntitiesByRefs.mockResolvedValue({ + items: [undefined, entityExisting], + }); + await renderInTestApp( + + + + + , + ); + + expect( + screen.getByText(content => + content.includes( + "This entity has relations to other entities, which can't be found in the catalog.", + ), + ), + ).toBeInTheDocument(); + expect( + screen.getByText(content => + content.includes('Entities not found are: component:default/missing'), + ), + ).toBeInTheDocument(); + }); + + it("doesn't render EntityRelationWarning if the entity has no missing relations", async () => { + const entity: Entity = { + apiVersion: 'v1', + kind: 'Component', + metadata: { + name: 'software', + }, + relations: [ + { + type: 'dependsOn', + targetRef: 'component:default/existing', + }, + ], + }; + + getEntitiesByRefs.mockResolvedValue({ + items: [entityExisting], + }); + await renderInTestApp( + + + + + , + ); + + expect( + screen.queryByText(content => + content.includes( + "This entity has relations to other entities, which can't be found in the catalog.", + ), + ), + ).not.toBeInTheDocument(); + }); + + it('returns hasRelationWarnings truthy if the entity has missing relations', async () => { + const entity: Entity = { + apiVersion: 'v1', + kind: 'Component', + metadata: { + name: 'software', + }, + relations: [ + { + type: 'dependsOn', + targetRef: 'component:default/missing', + }, + { + type: 'dependsOn', + targetRef: 'component:default/existing', + }, + ], + }; + + getEntitiesByRefs.mockResolvedValue({ + items: [undefined, entityExisting], + }); + + const hasWarnings = await hasRelationWarnings(entity, { apis }); + + expect(hasWarnings).toBeTruthy(); + }); + + it('returns hasRelationWarnings falsy if the entity has no missing relations', async () => { + const entity: Entity = { + apiVersion: 'v1', + kind: 'Component', + metadata: { + name: 'software', + }, + relations: [ + { + type: 'dependsOn', + targetRef: 'component:default/existing', + }, + ], + }; + + getEntitiesByRefs.mockResolvedValue({ + items: [entityExisting], + }); + + const hasWarnings = await hasRelationWarnings(entity, { apis }); + + expect(hasWarnings).toBeFalsy(); + }); +}); diff --git a/plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.tsx b/plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.tsx new file mode 100644 index 0000000000..16384ac1d2 --- /dev/null +++ b/plugins/catalog/src/components/EntityRelationWarning/EntityRelationWarning.tsx @@ -0,0 +1,105 @@ +/* + * Copyright 2021 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 { Entity } from '@backstage/catalog-model'; +import { + CatalogApi, + catalogApiRef, + useEntity, +} from '@backstage/plugin-catalog-react'; +import { Alert } from '@material-ui/lab'; +import React from 'react'; +import useAsync from 'react-use/lib/useAsync'; +import { Box } from '@material-ui/core'; +import { ResponseErrorPanel } from '@backstage/core-components'; +import { useApi, ApiHolder } from '@backstage/core-plugin-api'; + +async function getRelationWarnings(entity: Entity, catalogApi: CatalogApi) { + const entityRefRelations = entity.relations?.map( + relation => relation.targetRef, + ); + if ( + !entityRefRelations || + entityRefRelations?.length < 1 || + entityRefRelations.length > 1000 + ) { + return []; + } + + const relatedEntities = await catalogApi.getEntitiesByRefs({ + entityRefs: entityRefRelations, + fields: ['kind', 'metadata.name', 'metadata.namespace'], + }); + + return entityRefRelations.filter( + (_, index) => relatedEntities.items[index] === undefined, + ); +} + +/** + * Returns true if the given entity has relations to other entities, which + * don't exist in the catalog + * + * @public + */ +export async function hasRelationWarnings( + entity: Entity, + context: { apis: ApiHolder }, +) { + const catalogApi = context.apis.get(catalogApiRef); + if (!catalogApi) { + throw new Error(`No implementation available for ${catalogApiRef}`); + } + + const relatedEntitiesMissing = await getRelationWarnings(entity, catalogApi); + return relatedEntitiesMissing.length > 0; +} + +/** + * Displays a warning alert if the entity has relations to other entities, which + * don't exist in the catalog + * + * @public + */ +export function EntityRelationWarning() { + const { entity } = useEntity(); + const catalogApi = useApi(catalogApiRef); + const { loading, error, value } = useAsync(async () => { + return getRelationWarnings(entity, catalogApi); + }, [entity, catalogApi]); + + if (error) { + return ( + + + + ); + } + + if (loading || !value || value.length === 0) { + return null; + } + + return ( + <> + + This entity has relations to other entities, which can't be found in the + catalog.
+ Entities not found are: {value.join(', ')} +
+ + ); +} diff --git a/plugins/catalog/src/components/EntityRelationWarning/index.ts b/plugins/catalog/src/components/EntityRelationWarning/index.ts new file mode 100644 index 0000000000..1d88926f25 --- /dev/null +++ b/plugins/catalog/src/components/EntityRelationWarning/index.ts @@ -0,0 +1,20 @@ +/* + * Copyright 2021 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 { + EntityRelationWarning, + hasRelationWarnings, +} from './EntityRelationWarning'; diff --git a/plugins/catalog/src/index.ts b/plugins/catalog/src/index.ts index 42150dfd66..a691011c96 100644 --- a/plugins/catalog/src/index.ts +++ b/plugins/catalog/src/index.ts @@ -32,6 +32,7 @@ export * from './components/CatalogKindHeader'; export * from './components/CatalogTable'; export * from './components/EntityLayout'; export * from './components/EntityOrphanWarning'; +export * from './components/EntityRelationWarning'; export * from './components/EntityProcessingErrorsPanel'; export * from './components/EntitySwitch'; export * from './components/FilteredEntityLayout'; From 267396f45bd0c3aeb2d9521c25fa343b7bfa96ab Mon Sep 17 00:00:00 2001 From: Elizabeth Hobbs Date: Tue, 27 Jun 2023 14:37:00 -0700 Subject: [PATCH 079/194] Corrected the installation instructions for @backstage/plugin-catalog-unprocessed-entities Signed-off-by: Elizabeth Hobbs Signed-off-by: Jason Nguyen Co-authored-by: Jason Nguyen --- .changeset/seven-pillows-hear.md | 5 +++++ plugins/catalog-unprocessed-entities/README.md | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/seven-pillows-hear.md diff --git a/.changeset/seven-pillows-hear.md b/.changeset/seven-pillows-hear.md new file mode 100644 index 0000000000..f89ca102eb --- /dev/null +++ b/.changeset/seven-pillows-hear.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +Corrected the installation instructions. diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index 699629e0b2..ed48d42518 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -29,7 +29,7 @@ Requires the `@backstage/plugin-catalog-backend-module-unprocessed` module to be ## Installation ```shell -yarn add --cwd packages/backend @backstage/plugin-catalog-backend-module-unprocessed +yarn add --cwd packages/app @backstage/plugin-catalog-module-unprocessed ``` Import into your `App.tsx` and include into the `` component: From 7a967ecaf278ca370d9b470a189bb4b2a4e0d570 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 06:25:15 +0000 Subject: [PATCH 080/194] fix(deps): update dependency linguist-js to v2.5.6 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7813254d50..2efd1bb9f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21490,7 +21490,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^9.1.0, commander@npm:^9.5.0": +"commander@npm:^9.1.0, commander@npm:^9.5.0 <10": version: 9.5.0 resolution: "commander@npm:9.5.0" checksum: c7a3e27aa59e913b54a1bafd366b88650bc41d6651f0cbe258d4ff09d43d6a7394232a4dadd0bf518b3e696fdf595db1028a0d82c785b88bd61f8a440cecfade @@ -22070,7 +22070,7 @@ __metadata: languageName: node linkType: hard -"cross-fetch@npm:^3.1.3, cross-fetch@npm:^3.1.5": +"cross-fetch@npm:^3.1.3, cross-fetch@npm:^3.1.5, cross-fetch@npm:^3.1.6": version: 3.1.6 resolution: "cross-fetch@npm:3.1.6" dependencies: @@ -28569,7 +28569,7 @@ __metadata: languageName: node linkType: hard -"isbinaryfile@npm:^4.0.10, isbinaryfile@npm:^4.0.8, isbinaryfile@npm:^4.0.8 <5": +"isbinaryfile@npm:^4.0.10, isbinaryfile@npm:^4.0.10 <5, isbinaryfile@npm:^4.0.8": version: 4.0.10 resolution: "isbinaryfile@npm:4.0.10" checksum: a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686 @@ -30545,21 +30545,21 @@ __metadata: linkType: hard "linguist-js@npm:^2.5.3": - version: 2.5.4 - resolution: "linguist-js@npm:2.5.4" + version: 2.5.6 + resolution: "linguist-js@npm:2.5.6" dependencies: binary-extensions: ^2.2.0 - commander: ^9.5.0 + commander: ^9.5.0 <10 common-path-prefix: ^3.0.0 - cross-fetch: ^3.1.5 + cross-fetch: ^3.1.6 ignore: ^5.2.4 - isbinaryfile: ^4.0.8 <5 + isbinaryfile: ^4.0.10 <5 js-yaml: ^4.1.0 node-cache: ^5.1.2 bin: linguist: bin/index.js linguist-js: bin/index.js - checksum: 92ebfc45f0f17a056153068f7e939a3e6755307d3696673597e824011d83b698063241aa7d082a7f9059416efce85a49056f0a31b3158c25f79e273e2f51e309 + checksum: bd1ae9514b4fa365611e571eb7c0cf5b087fc8ab77cdf7aeade2029a327ae3dd9005eb87e4b75770780e06e749c2d9b72f011d0a659705e1a2347b4fe7e28631 languageName: node linkType: hard From f91005bf41a852df17728b88a108d0a828f37b89 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 08:16:34 +0000 Subject: [PATCH 081/194] chore(deps): update dependency @changesets/cli to v2.26.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 93 +++++++++++++++++++++++++------------------------------ 1 file changed, 43 insertions(+), 50 deletions(-) diff --git a/yarn.lock b/yarn.lock index 2efd1bb9f8..be06e30fdd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10057,12 +10057,12 @@ __metadata: languageName: node linkType: hard -"@changesets/apply-release-plan@npm:^6.1.3": - version: 6.1.3 - resolution: "@changesets/apply-release-plan@npm:6.1.3" +"@changesets/apply-release-plan@npm:^6.1.4": + version: 6.1.4 + resolution: "@changesets/apply-release-plan@npm:6.1.4" dependencies: "@babel/runtime": ^7.20.1 - "@changesets/config": ^2.3.0 + "@changesets/config": ^2.3.1 "@changesets/get-version-range-type": ^0.3.2 "@changesets/git": ^2.0.0 "@changesets/types": ^5.2.1 @@ -10073,22 +10073,22 @@ __metadata: outdent: ^0.5.0 prettier: ^2.7.1 resolve-from: ^5.0.0 - semver: ^5.4.1 - checksum: 3772a6e0ede33abdac6fcc52359307f770d5fafa53295c83e0a11b81e5802b2fe5e74e4d672c0a082f5d73dc1a9ef56509870b81824111396f74de99ada9526b + semver: ^7.5.3 + checksum: d386aee70c5483c97d964c6fa1191878005b7050d34b2e1e4a1ad66d9ad44f8f20d1c884e01e770b954bd2d4364f935510e53ae896212669f67e5c37b2a610c7 languageName: node linkType: hard -"@changesets/assemble-release-plan@npm:^5.2.3": - version: 5.2.3 - resolution: "@changesets/assemble-release-plan@npm:5.2.3" +"@changesets/assemble-release-plan@npm:^5.2.4": + version: 5.2.4 + resolution: "@changesets/assemble-release-plan@npm:5.2.4" dependencies: "@babel/runtime": ^7.20.1 "@changesets/errors": ^0.1.4 - "@changesets/get-dependents-graph": ^1.3.5 + "@changesets/get-dependents-graph": ^1.3.6 "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 - semver: ^5.4.1 - checksum: 2c61894414736b12e9a26903d73c387b65f4caba398e280488b885f4d0f4bb307aaa6bae140dfd754c85de6557bd07645accda2af6b8794837ab43823ba6215c + semver: ^7.5.3 + checksum: 32f443a0afec3d5a4afc68c8de32e8ff88531ea24976b50583b1d6870d71cec2729f27952af82854eb54e2ad0a619872d211d654c596ee0eb42c83ab54ad15ae languageName: node linkType: hard @@ -10102,17 +10102,17 @@ __metadata: linkType: hard "@changesets/cli@npm:^2.14.0": - version: 2.26.1 - resolution: "@changesets/cli@npm:2.26.1" + version: 2.26.2 + resolution: "@changesets/cli@npm:2.26.2" dependencies: "@babel/runtime": ^7.20.1 - "@changesets/apply-release-plan": ^6.1.3 - "@changesets/assemble-release-plan": ^5.2.3 + "@changesets/apply-release-plan": ^6.1.4 + "@changesets/assemble-release-plan": ^5.2.4 "@changesets/changelog-git": ^0.1.14 - "@changesets/config": ^2.3.0 + "@changesets/config": ^2.3.1 "@changesets/errors": ^0.1.4 - "@changesets/get-dependents-graph": ^1.3.5 - "@changesets/get-release-plan": ^3.0.16 + "@changesets/get-dependents-graph": ^1.3.6 + "@changesets/get-release-plan": ^3.0.17 "@changesets/git": ^2.0.0 "@changesets/logger": ^0.0.5 "@changesets/pre": ^1.0.14 @@ -10121,7 +10121,7 @@ __metadata: "@changesets/write": ^0.2.3 "@manypkg/get-packages": ^1.1.3 "@types/is-ci": ^3.0.0 - "@types/semver": ^6.0.0 + "@types/semver": ^7.5.0 ansi-colors: ^4.1.3 chalk: ^2.1.0 enquirer: ^2.3.0 @@ -10134,28 +10134,28 @@ __metadata: p-limit: ^2.2.0 preferred-pm: ^3.0.0 resolve-from: ^5.0.0 - semver: ^5.4.1 + semver: ^7.5.3 spawndamnit: ^2.0.0 term-size: ^2.1.0 tty-table: ^4.1.5 bin: changeset: bin.js - checksum: d7d6445ebbc1b2718d97852a2275f59af32020e8a1e1efe666767819dd862c7794ce50627ad52f1f97ba4bc57c81bfc4750e92265757cc94ab2d44198d2afb10 + checksum: fc7b5bf319b19abed7a8d33a9fbd9ce49108af61c9c51920f609a49cb0c557f0b998711250d0cac149d0bed8a522f3109c4d8b0dda65b96ff2f823d16ca2f972 languageName: node linkType: hard -"@changesets/config@npm:^2.3.0": - version: 2.3.0 - resolution: "@changesets/config@npm:2.3.0" +"@changesets/config@npm:^2.3.1": + version: 2.3.1 + resolution: "@changesets/config@npm:2.3.1" dependencies: "@changesets/errors": ^0.1.4 - "@changesets/get-dependents-graph": ^1.3.5 + "@changesets/get-dependents-graph": ^1.3.6 "@changesets/logger": ^0.0.5 "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 fs-extra: ^7.0.1 micromatch: ^4.0.2 - checksum: 68a61437ffeda219f22f6d4d32bf8d428e6f284d7e0e191c0629f64f035a051b4068222b1ea3ff1866e5944a153004735dab82205404919f6806c97c546700b1 + checksum: 8af58e3add4751ac8ce2c01f026ac8843b8d1c07c9a3df6518496eaef67f56458a84cad310763c588f7eccbf6831afbf280df7e05e78b294027b6b847be3d0cc languageName: node linkType: hard @@ -10168,31 +10168,31 @@ __metadata: languageName: node linkType: hard -"@changesets/get-dependents-graph@npm:^1.3.5": - version: 1.3.5 - resolution: "@changesets/get-dependents-graph@npm:1.3.5" +"@changesets/get-dependents-graph@npm:^1.3.6": + version: 1.3.6 + resolution: "@changesets/get-dependents-graph@npm:1.3.6" dependencies: "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 chalk: ^2.1.0 fs-extra: ^7.0.1 - semver: ^5.4.1 - checksum: d7abb1da21804fd66b1458e46be2f2aec741145a43500b0463a5acfbb420ac5ce776a7328fa660ad4e6e811f933bd6f36e7bbaf00fb3f591d46f0b8e7108fdcd + semver: ^7.5.3 + checksum: d2cbbc5041063b939899502d1b264a0d9edb655acefd7f6197883229156bb7cfd1ace642ae4a1f7f7b432f2c51429f5dc9851ff5a9ed47f1c0159916e66627a9 languageName: node linkType: hard -"@changesets/get-release-plan@npm:^3.0.16": - version: 3.0.16 - resolution: "@changesets/get-release-plan@npm:3.0.16" +"@changesets/get-release-plan@npm:^3.0.17": + version: 3.0.17 + resolution: "@changesets/get-release-plan@npm:3.0.17" dependencies: "@babel/runtime": ^7.20.1 - "@changesets/assemble-release-plan": ^5.2.3 - "@changesets/config": ^2.3.0 + "@changesets/assemble-release-plan": ^5.2.4 + "@changesets/config": ^2.3.1 "@changesets/pre": ^1.0.14 "@changesets/read": ^0.5.9 "@changesets/types": ^5.2.1 "@manypkg/get-packages": ^1.1.3 - checksum: ab8360c17f69437ad51edfd8910a2609ab8dc1e8cf006994b3938b2551b1eb08b7ab8043b8bf1e94916cbadd89e357a0c1148e20eab8bb5e3ae284384d239942 + checksum: 8a0e3794d0f1e6220d173dbec96352ad69b585d013c3183888ca598dfdfcaa8a5ac3f7f36d5c511575cdc3559c2ad6f8cecfaa16ba9c24380899a81daa7af924 languageName: node linkType: hard @@ -17818,17 +17818,10 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:^6.0.0": - version: 6.2.3 - resolution: "@types/semver@npm:6.2.3" - checksum: 83c86d7005b229df9c4c0d6d13825b839a01932895504596140aea19e2b88f63ac27ab1575347451b50eedb63f72309e845ce1a0ca78360c4f719bbb38371594 - languageName: node - linkType: hard - -"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.8": - version: 7.3.13 - resolution: "@types/semver@npm:7.3.13" - checksum: 00c0724d54757c2f4bc60b5032fe91cda6410e48689633d5f35ece8a0a66445e3e57fa1d6e07eb780f792e82ac542948ec4d0b76eb3484297b79bd18b8cf1cb0 +"@types/semver@npm:^7.3.12, @types/semver@npm:^7.3.8, @types/semver@npm:^7.5.0": + version: 7.5.0 + resolution: "@types/semver@npm:7.5.0" + checksum: 0a64b9b9c7424d9a467658b18dd70d1d781c2d6f033096a6e05762d20ebbad23c1b69b0083b0484722aabf35640b78ccc3de26368bcae1129c87e9df028a22e2 languageName: node linkType: hard @@ -38026,7 +38019,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0": +"semver@npm:^7.1.1, semver@npm:^7.1.2, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.0, semver@npm:^7.5.3": version: 7.5.3 resolution: "semver@npm:7.5.3" dependencies: From ed26ed52400abbbca9a0d66f28c2d321424c77be Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 08:54:18 +0000 Subject: [PATCH 082/194] chore(deps): update dependency @types/node to v16.18.37 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index be06e30fdd..845b6eb887 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17342,9 +17342,9 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": - version: 20.3.1 - resolution: "@types/node@npm:20.3.1" - checksum: 63a393ab6d947be17320817b35d7277ef03728e231558166ed07ee30b09fd7c08861be4d746f10fdc63ca7912e8cd023939d4eab887ff6580ff704ff24ed810c + version: 20.3.2 + resolution: "@types/node@npm:20.3.2" + checksum: 5929ce2b9b12b1e2a2304a0921a953c72a81f5753ad39ac43b99ce6312fbb2b4fb5bc6b60d64a2550704e3223cd5de1299467d36085ac69888899db978f2653a languageName: node linkType: hard @@ -17363,9 +17363,9 @@ __metadata: linkType: hard "@types/node@npm:^14.14.31": - version: 14.18.51 - resolution: "@types/node@npm:14.18.51" - checksum: 0960a31d2ac605763fe79c8edcee3cb48257d345ce417c019d84ff5d8cd92dd0937674814ab3f169346b4259c29f640556006bcb2c54cfb3e63fa0cf728d320e + version: 14.18.52 + resolution: "@types/node@npm:14.18.52" + checksum: e9b0e56f0856c0ad901b1b92a1d9c7c96ab140697fa730f0e96571052b085446f18826ac8040bf4569b0ba92dcc8c189a7c87852a81b85911ad858df724d4538 languageName: node linkType: hard @@ -17377,9 +17377,9 @@ __metadata: linkType: hard "@types/node@npm:^16.0.0, @types/node@npm:^16.11.26, @types/node@npm:^16.9.2": - version: 16.18.36 - resolution: "@types/node@npm:16.18.36" - checksum: a9d138fa1269079c60daad6984713dc0b713983f8b34a83edbc6d7957b2e38beab9b2598c9fe99f19d073e20bc212a18aaf82eabdc23ef64dce7d2089a9aab2a + version: 16.18.37 + resolution: "@types/node@npm:16.18.37" + checksum: ac9549a48ded76f99185e0bdd3f52af202229688d0000af250ce4060e22991cb0e2f950c5de25125ef6221cb092ebdf195eb2e9edfc0a49623252c73be2fa0e0 languageName: node linkType: hard From 8403790005df5d202450d41bde488be028381523 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 09:42:25 +0000 Subject: [PATCH 083/194] chore(deps): update dependency lint-staged to v13.2.3 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 845b6eb887..a31d7eab27 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30583,8 +30583,8 @@ __metadata: linkType: hard "lint-staged@npm:^13.0.0": - version: 13.2.2 - resolution: "lint-staged@npm:13.2.2" + version: 13.2.3 + resolution: "lint-staged@npm:13.2.3" dependencies: chalk: 5.2.0 cli-truncate: ^3.1.0 @@ -30601,7 +30601,7 @@ __metadata: yaml: ^2.2.2 bin: lint-staged: bin/lint-staged.js - checksum: f34f6e2e85e827364658ab8717bf8b35239473c2d4959d746b053a4cf158ac657348444c755820a8ef3eac2d4753a37c52e9db3e201ee20b085f26d2f2fbc9ed + checksum: ff51a1e33072f488b28b938ed47323816a1ff278ef6d0e5cbe1704b292773a6c8ce945b504eae3a9b5702917a979523a741f17023e16077bd5fa35be687cc067 languageName: node linkType: hard From 60cd052c1ef313ea01f52087b5cc0b543680372d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 09:42:55 +0000 Subject: [PATCH 084/194] fix(deps): update dependency @roadiehq/backstage-plugin-buildkite to v2.1.12 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 845b6eb887..5a1b062af7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14619,14 +14619,14 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-buildkite@npm:^2.0.8": - version: 2.1.11 - resolution: "@roadiehq/backstage-plugin-buildkite@npm:2.1.11" + version: 2.1.12 + resolution: "@roadiehq/backstage-plugin-buildkite@npm:2.1.12" dependencies: - "@backstage/catalog-model": ^1.3.0 - "@backstage/core-components": ^0.13.1 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.6.0 - "@backstage/theme": ^0.3.0 + "@backstage/catalog-model": ^1.4.0 + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/plugin-catalog-react": ^1.7.0 + "@backstage/theme": ^0.4.0 "@material-ui/core": ^4.12.1 "@material-ui/icons": ^4.11.2 "@material-ui/lab": 4.0.0-alpha.57 @@ -14638,7 +14638,7 @@ __metadata: react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 7458942f74b259782b116b50424665cd8130a00e7bd9b900499c3fdc34c67916aa382f947fcceb1b87a539842efc8f6466518e9fd74507055d4225ed28886913 + checksum: 2fd97ea027f5de8b1e0fe4f6abb463efdd819d54a2d5442017cac431598ed7b637107701ea2e7886a9c4e9e50718cecf5938db5684c670b6f214714999b99ced languageName: node linkType: hard From a44ac37eafb0a22674c5a01e6f3b7b4af8d42b74 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 10:32:56 +0000 Subject: [PATCH 085/194] fix(deps): update dependency @roadiehq/backstage-plugin-github-insights to v2.3.15 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/yarn.lock b/yarn.lock index a31d7eab27..fe70ce4e17 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4464,7 +4464,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/integration-react@npm:^1.1.13": +"@backstage/integration-react@npm:^1.1.14": version: 1.1.14 resolution: "@backstage/integration-react@npm:1.1.14" dependencies: @@ -14643,15 +14643,15 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-github-insights@npm:^2.0.5": - version: 2.3.14 - resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.14" + version: 2.3.15 + resolution: "@roadiehq/backstage-plugin-github-insights@npm:2.3.15" dependencies: - "@backstage/catalog-model": ^1.3.0 - "@backstage/core-components": ^0.13.1 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/integration-react": ^1.1.13 - "@backstage/plugin-catalog-react": ^1.6.0 - "@backstage/theme": ^0.3.0 + "@backstage/catalog-model": ^1.4.0 + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/integration-react": ^1.1.14 + "@backstage/plugin-catalog-react": ^1.7.0 + "@backstage/theme": ^0.4.0 "@date-io/core": 2.10.7 "@material-ui/core": ^4.11.0 "@material-ui/icons": ^4.9.1 @@ -14666,7 +14666,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 - checksum: 990667bcbdbd9f2504b4c020b79bd1e809c165ac4ff93f277fe3be9e9a1247ed4e2034f992146c5e7a153aa8d268c06e3777b693a9337564117be43d321f894c + checksum: 5c174c107f14c6ecef7a8dbd9934b26cd1f07732b6287186716e17dd81ee0d5db30e53e622eb4d946267e9b60e6a0a77a85391c6c149219e4356e15e64ef8120 languageName: node linkType: hard From 3d9377e7a66fb7b9f0002451be2f9fcce29ab1e4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 11:21:12 +0000 Subject: [PATCH 086/194] fix(deps): update dependency @roadiehq/backstage-plugin-github-pull-requests to v2.5.13 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index fe70ce4e17..4cd4a19bc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7313,7 +7313,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-home@npm:^0.5.2": +"@backstage/plugin-home@npm:^0.5.3": version: 0.5.3 resolution: "@backstage/plugin-home@npm:0.5.3" dependencies: @@ -14671,14 +14671,14 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-github-pull-requests@npm:^2.2.7": - version: 2.5.12 - resolution: "@roadiehq/backstage-plugin-github-pull-requests@npm:2.5.12" + version: 2.5.13 + resolution: "@roadiehq/backstage-plugin-github-pull-requests@npm:2.5.13" dependencies: - "@backstage/catalog-model": ^1.3.0 - "@backstage/core-components": ^0.13.1 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.6.0 - "@backstage/plugin-home": ^0.5.2 + "@backstage/catalog-model": ^1.4.0 + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/plugin-catalog-react": ^1.7.0 + "@backstage/plugin-home": ^0.5.3 "@material-ui/core": ^4.11.0 "@material-ui/icons": ^4.9.1 "@material-ui/lab": ^4.0.0-alpha.60 @@ -14695,7 +14695,7 @@ __metadata: react: ^16.13.1 || ^17.0.0 react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 - checksum: 4113de2eb3f207e05581033c05879c98d858ef3534fb1256d5dc4f8e1f4cc33e0530952d4fd74c62df063c22af6c1e0f28af770bd55d8b41b4402df68450f98c + checksum: 1af9997d26ee9dba046d71aa5415bde7e207c4118ca77e6e3e9623920ce7f6e314d8365fe2d1ef3eb1c279ac113653df903f1286005aba681faf75381a387189 languageName: node linkType: hard From 2bbdcb4154c3e77b96161a03617b8ed15848fb64 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Tue, 27 Jun 2023 14:50:26 -0500 Subject: [PATCH 087/194] Added support to Badges for new backend Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/chatty-buttons-deny.md | 5 +++ packages/backend-next/package.json | 1 + packages/backend-next/src/index.ts | 4 ++ plugins/badges-backend/README.md | 18 ++++++++ plugins/badges-backend/package.json | 1 + plugins/badges-backend/src/index.ts | 1 + plugins/badges-backend/src/plugin.ts | 61 ++++++++++++++++++++++++++++ yarn.lock | 2 + 8 files changed, 93 insertions(+) create mode 100644 .changeset/chatty-buttons-deny.md create mode 100644 plugins/badges-backend/src/plugin.ts diff --git a/.changeset/chatty-buttons-deny.md b/.changeset/chatty-buttons-deny.md new file mode 100644 index 0000000000..bd602d52ba --- /dev/null +++ b/.changeset/chatty-buttons-deny.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-badges-backend': patch +--- + +Added support for the [new backend system](https://backstage.io/docs/backend-system/) diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 53b43a0172..04dc3e2cf3 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -28,6 +28,7 @@ "@backstage/backend-defaults": "workspace:^", "@backstage/plugin-app-backend": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-badges-backend": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", "@backstage/plugin-entity-feedback-backend": "workspace:^", diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index 900062d61b..60b5315ab0 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -32,11 +32,15 @@ import { techdocsPlugin } from '@backstage/plugin-techdocs-backend/alpha'; import { todoPlugin } from '@backstage/plugin-todo-backend'; import { entityFeedbackPlugin } from '@backstage/plugin-entity-feedback-backend'; import { catalogModuleUnprocessedEntities } from '@backstage/plugin-catalog-backend-module-unprocessed'; +import { badgesPlugin } from '@backstage/plugin-badges-backend'; const backend = createBackend(); backend.add(appPlugin({ appPackageName: 'example-app' })); +// Badges +backend.add(badgesPlugin()); + // Entity Feedback backend.add(entityFeedbackPlugin()); diff --git a/plugins/badges-backend/README.md b/plugins/badges-backend/README.md index ddbb30bc4e..3a2b7f52d3 100644 --- a/plugins/badges-backend/README.md +++ b/plugins/badges-backend/README.md @@ -76,6 +76,24 @@ const createEnv = makeCreateEnv(config); apiRouter.use(notFoundHandler()); ``` +### New Backend System + +The Badges backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: + +In your `packages/backend/src/index.ts` make the following changes: + +```diff + import { createBackend } from '@backstage/backend-defaults'; ++ import { badgesPlugin } from '@backstage/plugin-badges-backend/alpha'; + const backend = createBackend(); + + // ... other feature additions + ++ backend.add(badgesPlugin()); + + backend.start(); +``` + ## Badge builder Badges are created by classes implementing the `BadgeBuilder` type. The default diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 8af1b13096..3106e363cc 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -34,6 +34,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", "@backstage/config": "workspace:^", diff --git a/plugins/badges-backend/src/index.ts b/plugins/badges-backend/src/index.ts index 35a061c516..0c417a7ad6 100644 --- a/plugins/badges-backend/src/index.ts +++ b/plugins/badges-backend/src/index.ts @@ -25,3 +25,4 @@ export * from './lib'; export * from './service/router'; export * from './types'; export * from './database/badgesStore'; +export { badgesPlugin } from './plugin'; diff --git a/plugins/badges-backend/src/plugin.ts b/plugins/badges-backend/src/plugin.ts new file mode 100644 index 0000000000..ecc03f0c15 --- /dev/null +++ b/plugins/badges-backend/src/plugin.ts @@ -0,0 +1,61 @@ +/* + * 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service/router'; + +/** + * Badges backend plugin + * + * @public + */ +export const badgesPlugin = createBackendPlugin({ + pluginId: 'badges', + register(env) { + env.registerInit({ + deps: { + config: coreServices.config, + logger: coreServices.logger, + discovery: coreServices.discovery, + tokenManager: coreServices.tokenManager, + identity: coreServices.identity, + httpRouter: coreServices.httpRouter, + }, + async init({ + config, + logger, + discovery, + tokenManager, + identity, + httpRouter, + }) { + httpRouter.use( + await createRouter({ + config, + logger: loggerToWinstonLogger(logger), + discovery, + tokenManager, + identity, + }), + ); + }, + }); + }, +}); diff --git a/yarn.lock b/yarn.lock index fe70ce4e17..eedac582b9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5139,6 +5139,7 @@ __metadata: resolution: "@backstage/plugin-badges-backend@workspace:plugins/badges-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-client": "workspace:^" "@backstage/catalog-model": "workspace:^" @@ -24927,6 +24928,7 @@ __metadata: "@backstage/cli": "workspace:^" "@backstage/plugin-app-backend": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-badges-backend": "workspace:^" "@backstage/plugin-catalog-backend": "workspace:^" "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^" "@backstage/plugin-entity-feedback-backend": "workspace:^" From bc3b19068581d8be66d1d9f3128397a8800ff5d2 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Tue, 27 Jun 2023 18:14:14 -0500 Subject: [PATCH 088/194] Updated api-report Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- plugins/badges-backend/api-report.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/plugins/badges-backend/api-report.md b/plugins/badges-backend/api-report.md index 09a02ba44d..4594228543 100644 --- a/plugins/badges-backend/api-report.md +++ b/plugins/badges-backend/api-report.md @@ -3,6 +3,7 @@ > 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 { CatalogApi } from '@backstage/catalog-client'; import { Config } from '@backstage/config'; import { Entity } from '@backstage/catalog-model'; @@ -81,6 +82,9 @@ export type BadgeSpec = { markdown: string; }; +// @public +export const badgesPlugin: () => BackendFeature; + // @public export interface BadgesStore { // (undocumented) From 408c38e3e1d5421f32c03d3a23d36d349eccd060 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 28 Jun 2023 06:44:33 -0500 Subject: [PATCH 089/194] Corrected import not to be from alpha Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- plugins/badges-backend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/badges-backend/README.md b/plugins/badges-backend/README.md index 3a2b7f52d3..22c3311ff1 100644 --- a/plugins/badges-backend/README.md +++ b/plugins/badges-backend/README.md @@ -84,7 +84,7 @@ In your `packages/backend/src/index.ts` make the following changes: ```diff import { createBackend } from '@backstage/backend-defaults'; -+ import { badgesPlugin } from '@backstage/plugin-badges-backend/alpha'; ++ import { badgesPlugin } from '@backstage/plugin-badges-backend'; const backend = createBackend(); // ... other feature additions From 73076973ec704d470474227dcacbd78ead961f23 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 28 Jun 2023 17:42:15 +0530 Subject: [PATCH 090/194] catalog-import: replace Repository URL text with URL Repository URL is confusing term as users often paste the link to a repository, while in most cases it's a link to the catalog-info.yaml path. Signed-off-by: Himanshu Mishra --- .../src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx index 3c655ec11b..588217974c 100644 --- a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx +++ b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.tsx @@ -147,7 +147,7 @@ export const StepInitAnalyzeUrl = (props: StepInitAnalyzeUrlProps) => { )} fullWidth id="url" - label="Repository URL" + label="URL" placeholder={exampleLocationUrl} helperText="Enter the full path to your entity file to start tracking your component" margin="normal" From 027f7ff705f2f72c7ddb94adbb9c4a75daf2eb42 Mon Sep 17 00:00:00 2001 From: Scott Guymer Date: Wed, 28 Jun 2023 14:41:07 +0200 Subject: [PATCH 091/194] sonarqube: Make default config optional Signed-off-by: Scott Guymer --- plugins/sonarqube-backend/config.d.ts | 4 ++-- plugins/sonarqube/config.d.ts | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/sonarqube-backend/config.d.ts b/plugins/sonarqube-backend/config.d.ts index ce5bc641b6..7e93f61eb4 100644 --- a/plugins/sonarqube-backend/config.d.ts +++ b/plugins/sonarqube-backend/config.d.ts @@ -21,13 +21,13 @@ export interface Config { * The base url of the sonarqube installation. Defaults to https://sonarcloud.io. * @visibility frontend */ - baseUrl: string; + baseUrl?: string; /** * The api key to access the sonarqube instance under baseUrl. * @visibility secret */ - apiKey: string; + apiKey?: string; /** * The optional sonarqube instances. diff --git a/plugins/sonarqube/config.d.ts b/plugins/sonarqube/config.d.ts index 5759e63f98..8ba989b02c 100644 --- a/plugins/sonarqube/config.d.ts +++ b/plugins/sonarqube/config.d.ts @@ -21,6 +21,6 @@ export interface Config { * The base url of the sonarqube installation. Defaults to https://sonarcloud.io. * @visibility frontend */ - baseUrl: string; + baseUrl?: string; }; } From fcaf4cfc70ee075f0bd53a50ec837712f301fc17 Mon Sep 17 00:00:00 2001 From: Scott Guymer Date: Wed, 28 Jun 2023 14:43:56 +0200 Subject: [PATCH 092/194] Added changeset Signed-off-by: Scott Guymer --- .changeset/mighty-pandas-deny.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/mighty-pandas-deny.md diff --git a/.changeset/mighty-pandas-deny.md b/.changeset/mighty-pandas-deny.md new file mode 100644 index 0000000000..381e76d52b --- /dev/null +++ b/.changeset/mighty-pandas-deny.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-sonarqube': minor +'@backstage/plugin-sonarqube-backend': minor +--- + +Made default config optional From ae261e79d256abb8b83522a8381a6eb942eb4345 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 16 Jun 2023 17:24:23 -0500 Subject: [PATCH 093/194] Added alpha support for new backend system Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- .changeset/popular-crabs-deny.md | 7 ++ packages/backend-next/package.json | 4 + packages/backend-next/src/index.ts | 26 ++++++ plugins/azure-devops-backend/README.md | 28 ++++++ .../azure-devops-backend/alpha-api-report.md | 12 +++ plugins/azure-devops-backend/package.json | 16 ++++ plugins/azure-devops-backend/src/alpha.ts | 16 ++++ plugins/azure-devops-backend/src/plugin.ts | 50 +++++++++++ plugins/devtools-backend/README.md | 28 ++++++ plugins/devtools-backend/alpha-api-report.md | 12 +++ plugins/devtools-backend/package.json | 16 ++++ plugins/devtools-backend/src/alpha.ts | 16 ++++ plugins/devtools-backend/src/plugin.ts | 50 +++++++++++ plugins/linguist-backend/README.md | 41 +++++++++ plugins/linguist-backend/alpha-api-report.md | 30 +++++++ plugins/linguist-backend/package.json | 16 ++++ plugins/linguist-backend/src/alpha.ts | 17 ++++ plugins/linguist-backend/src/plugin.ts | 87 +++++++++++++++++++ yarn.lock | 7 ++ 19 files changed, 479 insertions(+) create mode 100644 .changeset/popular-crabs-deny.md create mode 100644 plugins/azure-devops-backend/alpha-api-report.md create mode 100644 plugins/azure-devops-backend/src/alpha.ts create mode 100644 plugins/azure-devops-backend/src/plugin.ts create mode 100644 plugins/devtools-backend/alpha-api-report.md create mode 100644 plugins/devtools-backend/src/alpha.ts create mode 100644 plugins/devtools-backend/src/plugin.ts create mode 100644 plugins/linguist-backend/alpha-api-report.md create mode 100644 plugins/linguist-backend/src/alpha.ts create mode 100644 plugins/linguist-backend/src/plugin.ts diff --git a/.changeset/popular-crabs-deny.md b/.changeset/popular-crabs-deny.md new file mode 100644 index 0000000000..28b8062d48 --- /dev/null +++ b/.changeset/popular-crabs-deny.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-azure-devops-backend': patch +'@backstage/plugin-devtools-backend': patch +'@backstage/plugin-linguist-backend': patch +--- + +Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/) diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index 04dc3e2cf3..b8e363177b 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -26,13 +26,17 @@ }, "dependencies": { "@backstage/backend-defaults": "workspace:^", + "@backstage/backend-tasks": "workspace:^", "@backstage/plugin-app-backend": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", + "@backstage/plugin-azure-devops-backend": "workspace:^", "@backstage/plugin-badges-backend": "workspace:^", "@backstage/plugin-catalog-backend": "workspace:^", "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^", + "@backstage/plugin-devtools-backend": "workspace:^", "@backstage/plugin-entity-feedback-backend": "workspace:^", "@backstage/plugin-kubernetes-backend": "workspace:^", + "@backstage/plugin-linguist-backend": "workspace:^", "@backstage/plugin-permission-backend": "workspace:^", "@backstage/plugin-permission-common": "workspace:^", "@backstage/plugin-permission-node": "workspace:^", diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index 60b5315ab0..c064f2acb9 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -33,6 +33,10 @@ import { todoPlugin } from '@backstage/plugin-todo-backend'; import { entityFeedbackPlugin } from '@backstage/plugin-entity-feedback-backend'; import { catalogModuleUnprocessedEntities } from '@backstage/plugin-catalog-backend-module-unprocessed'; import { badgesPlugin } from '@backstage/plugin-badges-backend'; +import { azureDevOpsPlugin } from '@backstage/plugin-azure-devops-backend/alpha'; +import { linguistPlugin } from '@backstage/plugin-linguist-backend/alpha'; +import { devtoolsPlugin } from '@backstage/plugin-devtools-backend/alpha'; +import { TaskScheduleDefinition } from '@backstage/backend-tasks'; const backend = createBackend(); @@ -41,9 +45,31 @@ backend.add(appPlugin({ appPackageName: 'example-app' })); // Badges backend.add(badgesPlugin()); +// Azure DevOps +backend.add(azureDevOpsPlugin()); + +// DevTools +backend.add(devtoolsPlugin()); + // Entity Feedback backend.add(entityFeedbackPlugin()); +// Linguist +const linguistSchedule: TaskScheduleDefinition = { + frequency: { minutes: 2 }, + timeout: { minutes: 15 }, + initialDelay: { seconds: 15 }, +}; + +backend.add( + linguistPlugin({ + schedule: linguistSchedule, + age: { days: 30 }, + batchSize: 2, + useSourceLocation: false, + }), +); + // Todo backend.add(todoPlugin()); diff --git a/plugins/azure-devops-backend/README.md b/plugins/azure-devops-backend/README.md index ba2a847c0a..d51758aec5 100644 --- a/plugins/azure-devops-backend/README.md +++ b/plugins/azure-devops-backend/README.md @@ -70,6 +70,34 @@ Here's how to get the backend up and running: 4. Now run `yarn start-backend` from the repo root 5. Finally open `http://localhost:7007/api/azure-devops/health` in a browser and it should return `{"status":"ok"}` +#### New Backend System + +The Azure DevOps backend plugin has alpha support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: + +In your `packages/backend/src/index.ts` make the following changes: + +```diff + import { createBackend } from '@backstage/backend-defaults'; + import { appPlugin } from '@backstage/plugin-app-backend'; + import { catalogPlugin } from '@backstage/plugin-catalog-backend'; + import { + scaffolderPlugin, + catalogModuleTemplateKind, + } from '@backstage/plugin-scaffolder-backend'; ++ import { azureDevOpsPlugin } from '@backstage/plugin-azure-devops-backend/alpha'; + + const backend = createBackend(); + + backend.add(appPlugin()); + backend.add(catalogPlugin()); + backend.add(catalogModuleTemplateKind()); + backend.add(scaffolderPlugin()); + ++ backend.add(azureDevOpsPlugin()); + + backend.start(); +``` + ## Links - [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/azure-devops) diff --git a/plugins/azure-devops-backend/alpha-api-report.md b/plugins/azure-devops-backend/alpha-api-report.md new file mode 100644 index 0000000000..e258f51a4f --- /dev/null +++ b/plugins/azure-devops-backend/alpha-api-report.md @@ -0,0 +1,12 @@ +## API Report File for "@backstage/plugin-azure-devops-backend" + +> 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'; + +// @alpha +export const azureDevOpsPlugin: () => BackendFeature; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 00af05df92..44b4342cf1 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -9,6 +9,21 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.ts" + ], + "package.json": [ + "package.json" + ] + } + }, "backstage": { "role": "backend-plugin" }, @@ -23,6 +38,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", "@backstage/plugin-azure-devops-common": "workspace:^", "@types/express": "^4.17.6", diff --git a/plugins/azure-devops-backend/src/alpha.ts b/plugins/azure-devops-backend/src/alpha.ts new file mode 100644 index 0000000000..dc321ef4de --- /dev/null +++ b/plugins/azure-devops-backend/src/alpha.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { azureDevOpsPlugin } from './plugin'; diff --git a/plugins/azure-devops-backend/src/plugin.ts b/plugins/azure-devops-backend/src/plugin.ts new file mode 100644 index 0000000000..e6cf01b182 --- /dev/null +++ b/plugins/azure-devops-backend/src/plugin.ts @@ -0,0 +1,50 @@ +/* + * 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service/router'; + +/** + * Azure DevOps backend plugin + * + * @alpha + */ +export const azureDevOpsPlugin = createBackendPlugin({ + pluginId: 'azure-devops', + register(env) { + env.registerInit({ + deps: { + config: coreServices.config, + logger: coreServices.logger, + reader: coreServices.urlReader, + httpRouter: coreServices.httpRouter, + }, + async init({ config, logger, reader, httpRouter }) { + httpRouter.use( + await createRouter({ + config, + logger: loggerToWinstonLogger(logger), + reader, + }), + ); + }, + }); + }, +}); diff --git a/plugins/devtools-backend/README.md b/plugins/devtools-backend/README.md index 7304ce33d7..7a8ca3104a 100644 --- a/plugins/devtools-backend/README.md +++ b/plugins/devtools-backend/README.md @@ -49,6 +49,34 @@ Here's how to get the DevTools Backend up and running: 4. Now run `yarn start-backend` from the repo root 5. Finally open `http://localhost:7007/api/devtools/health` in a browser and it should return `{"status":"ok"}` +### New Backend System + +The DevTools backend plugin has alpha support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: + +In your `packages/backend/src/index.ts` make the following changes: + +```diff + import { createBackend } from '@backstage/backend-defaults'; + import { appPlugin } from '@backstage/plugin-app-backend'; + import { catalogPlugin } from '@backstage/plugin-catalog-backend'; + import { + scaffolderPlugin, + catalogModuleTemplateKind, + } from '@backstage/plugin-scaffolder-backend'; ++ import { devtoolsPlugin } from '@backstage/plugin-devtools-backend/alpha'; + + const backend = createBackend(); + + backend.add(appPlugin()); + backend.add(catalogPlugin()); + backend.add(catalogModuleTemplateKind()); + backend.add(scaffolderPlugin()); + ++ backend.add(devtoolsPlugin()); + + backend.start(); +``` + ## Links - [Frontend part of the plugin](../devtools/README.md) diff --git a/plugins/devtools-backend/alpha-api-report.md b/plugins/devtools-backend/alpha-api-report.md new file mode 100644 index 0000000000..0be1ac4891 --- /dev/null +++ b/plugins/devtools-backend/alpha-api-report.md @@ -0,0 +1,12 @@ +## API Report File for "@backstage/plugin-devtools-backend" + +> 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'; + +// @alpha +export const devtoolsPlugin: () => BackendFeature; + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index ba8529e650..bc71e58493 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -9,6 +9,21 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.ts" + ], + "package.json": [ + "package.json" + ] + } + }, "backstage": { "role": "backend-plugin" }, @@ -23,6 +38,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/cli-common": "workspace:^", "@backstage/config": "workspace:^", "@backstage/config-loader": "workspace:^", diff --git a/plugins/devtools-backend/src/alpha.ts b/plugins/devtools-backend/src/alpha.ts new file mode 100644 index 0000000000..fa4c290fb8 --- /dev/null +++ b/plugins/devtools-backend/src/alpha.ts @@ -0,0 +1,16 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { devtoolsPlugin } from './plugin'; diff --git a/plugins/devtools-backend/src/plugin.ts b/plugins/devtools-backend/src/plugin.ts new file mode 100644 index 0000000000..530ad74292 --- /dev/null +++ b/plugins/devtools-backend/src/plugin.ts @@ -0,0 +1,50 @@ +/* + * 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service/router'; + +/** + * Azure DevOps backend plugin + * + * @alpha + */ +export const devtoolsPlugin = createBackendPlugin({ + pluginId: 'devtools', + register(env) { + env.registerInit({ + deps: { + config: coreServices.config, + logger: coreServices.logger, + permissions: coreServices.permissions, + httpRouter: coreServices.httpRouter, + }, + async init({ config, logger, permissions, httpRouter }) { + httpRouter.use( + await createRouter({ + config, + logger: loggerToWinstonLogger(logger), + permissions, + }), + ); + }, + }); + }, +}); diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index 6cfd3800b6..462adc495e 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -56,6 +56,47 @@ Here's how to get the backend up and running: 4. Now run `yarn start-backend` from the repo root 5. Finally open `http://localhost:7007/api/linguist/health` in a browser and it should return `{"status":"ok"}` +#### New Backend System + +The Linguist backend plugin has alpha support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: + +In your `packages/backend/src/index.ts` make the following changes: + +```diff + import { createBackend } from '@backstage/backend-defaults'; + import { appPlugin } from '@backstage/plugin-app-backend'; + import { catalogPlugin } from '@backstage/plugin-catalog-backend'; + import { + scaffolderPlugin, + catalogModuleTemplateKind, + } from '@backstage/plugin-scaffolder-backend'; ++ import { linguistPlugin } from '@backstage/plugin-linguist-backend/alpha'; + + const backend = createBackend(); + + backend.add(appPlugin()); + backend.add(catalogPlugin()); + backend.add(catalogModuleTemplateKind()); + backend.add(scaffolderPlugin()); + ++ const linguistSchedule: TaskScheduleDefinition = { ++ frequency: { minutes: 2 }, ++ timeout: { minutes: 15 }, ++ initialDelay: { seconds: 15 }, ++ }; + ++ backend.add( ++ linguistPlugin({ ++ schedule: linguistSchedule, ++ age: { days: 30 }, ++ batchSize: 2, ++ useSourceLocation: false, ++ }), ++ ); + + backend.start(); +``` + ## Plugin Option The Linguist backend has various plugin options that you can provide to the `createRouter` function in your `packages/backend/src/plugins/linguist.ts` file that will allow you to configure various aspects of how it works. The following sections go into the details of these options diff --git a/plugins/linguist-backend/alpha-api-report.md b/plugins/linguist-backend/alpha-api-report.md new file mode 100644 index 0000000000..fb0e906f64 --- /dev/null +++ b/plugins/linguist-backend/alpha-api-report.md @@ -0,0 +1,30 @@ +## API Report File for "@backstage/plugin-linguist-backend" + +> 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 { HumanDuration } from '@backstage/types'; +import { TaskScheduleDefinition } from '@backstage/backend-tasks'; + +// @alpha +export const linguistPlugin: (options: LinguistPluginOptions) => BackendFeature; + +// @alpha +export interface LinguistPluginOptions { + // (undocumented) + age?: HumanDuration; + // (undocumented) + batchSize?: number; + // (undocumented) + kind?: string[]; + // (undocumented) + linguistJsOptions?: Record; + // (undocumented) + schedule?: TaskScheduleDefinition; + // (undocumented) + useSourceLocation?: boolean; +} + +// (No @packageDocumentation comment for this package) +``` diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index e4eaeb337a..1e75aa6303 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -9,6 +9,21 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "exports": { + ".": "./src/index.ts", + "./alpha": "./src/alpha.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "alpha": [ + "src/alpha.ts" + ], + "package.json": [ + "package.json" + ] + } + }, "backstage": { "role": "backend-plugin" }, @@ -23,6 +38,7 @@ }, "dependencies": { "@backstage/backend-common": "workspace:^", + "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-tasks": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", diff --git a/plugins/linguist-backend/src/alpha.ts b/plugins/linguist-backend/src/alpha.ts new file mode 100644 index 0000000000..c149e2b179 --- /dev/null +++ b/plugins/linguist-backend/src/alpha.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2023 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +export { linguistPlugin } from './plugin'; +export type { LinguistPluginOptions } from './plugin'; diff --git a/plugins/linguist-backend/src/plugin.ts b/plugins/linguist-backend/src/plugin.ts new file mode 100644 index 0000000000..8f038a563a --- /dev/null +++ b/plugins/linguist-backend/src/plugin.ts @@ -0,0 +1,87 @@ +/* + * 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 { loggerToWinstonLogger } from '@backstage/backend-common'; +import { + coreServices, + createBackendPlugin, +} from '@backstage/backend-plugin-api'; +import { createRouter } from './service/router'; +import { TaskScheduleDefinition } from '@backstage/backend-tasks'; +import { HumanDuration } from '@backstage/types'; + +/** + * Options for Linguist backend plugin + * + * @alpha + */ +export interface LinguistPluginOptions { + schedule?: TaskScheduleDefinition; + age?: HumanDuration; + batchSize?: number; + useSourceLocation?: boolean; + linguistJsOptions?: Record; + kind?: string[]; +} + +/** + * Linguist backend plugin + * + * @alpha + */ +export const linguistPlugin = createBackendPlugin( + (options: LinguistPluginOptions) => ({ + pluginId: 'linguist', + register(env) { + env.registerInit({ + deps: { + logger: coreServices.logger, + reader: coreServices.urlReader, + database: coreServices.database, + discovery: coreServices.discovery, + scheduler: coreServices.scheduler, + tokenManager: coreServices.tokenManager, + httpRouter: coreServices.httpRouter, + }, + async init({ + logger, + reader, + database, + discovery, + scheduler, + tokenManager, + httpRouter, + }) { + httpRouter.use( + await createRouter( + { + ...options, + }, + { + logger: loggerToWinstonLogger(logger), + reader, + database, + discovery, + scheduler, + tokenManager, + }, + ), + ); + }, + }); + }, + }), +); diff --git a/yarn.lock b/yarn.lock index 79561514f7..bb795ca564 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5011,6 +5011,7 @@ __metadata: resolution: "@backstage/plugin-azure-devops-backend@workspace:plugins/azure-devops-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/config": "workspace:^" "@backstage/plugin-azure-devops-common": "workspace:^" @@ -6353,6 +6354,7 @@ __metadata: resolution: "@backstage/plugin-devtools-backend@workspace:plugins/devtools-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/cli-common": "workspace:^" "@backstage/config": "workspace:^" @@ -7723,6 +7725,7 @@ __metadata: resolution: "@backstage/plugin-linguist-backend@workspace:plugins/linguist-backend" dependencies: "@backstage/backend-common": "workspace:^" + "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-tasks": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-client": "workspace:^" @@ -24925,14 +24928,18 @@ __metadata: resolution: "example-backend-next@workspace:packages/backend-next" dependencies: "@backstage/backend-defaults": "workspace:^" + "@backstage/backend-tasks": "workspace:^" "@backstage/cli": "workspace:^" "@backstage/plugin-app-backend": "workspace:^" "@backstage/plugin-auth-node": "workspace:^" + "@backstage/plugin-azure-devops-backend": "workspace:^" "@backstage/plugin-badges-backend": "workspace:^" "@backstage/plugin-catalog-backend": "workspace:^" "@backstage/plugin-catalog-backend-module-unprocessed": "workspace:^" + "@backstage/plugin-devtools-backend": "workspace:^" "@backstage/plugin-entity-feedback-backend": "workspace:^" "@backstage/plugin-kubernetes-backend": "workspace:^" + "@backstage/plugin-linguist-backend": "workspace:^" "@backstage/plugin-permission-backend": "workspace:^" "@backstage/plugin-permission-common": "workspace:^" "@backstage/plugin-permission-node": "workspace:^" From c7f5324fa0e43bd62cd8b9df2b9bfe8092c8fca4 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 23 Jun 2023 12:46:23 -0500 Subject: [PATCH 094/194] Changed @alpha to @public Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- packages/backend-next/src/index.ts | 6 ++-- .../azure-devops-backend/alpha-api-report.md | 12 -------- plugins/azure-devops-backend/api-report.md | 6 ++-- plugins/azure-devops-backend/package.json | 4 --- plugins/azure-devops-backend/src/alpha.ts | 16 ---------- plugins/azure-devops-backend/src/index.ts | 8 +++++ plugins/azure-devops-backend/src/plugin.ts | 2 +- plugins/devtools-backend/alpha-api-report.md | 12 -------- plugins/devtools-backend/api-report.md | 4 +++ plugins/devtools-backend/package.json | 4 --- plugins/devtools-backend/src/alpha.ts | 16 ---------- plugins/devtools-backend/src/index.ts | 1 + plugins/devtools-backend/src/plugin.ts | 4 +-- plugins/linguist-backend/alpha-api-report.md | 30 ------------------- plugins/linguist-backend/package.json | 4 --- plugins/linguist-backend/src/alpha.ts | 17 ----------- plugins/linguist-backend/src/index.ts | 8 +++++ plugins/linguist-backend/src/plugin.ts | 4 +-- 18 files changed, 33 insertions(+), 125 deletions(-) delete mode 100644 plugins/azure-devops-backend/alpha-api-report.md delete mode 100644 plugins/azure-devops-backend/src/alpha.ts delete mode 100644 plugins/devtools-backend/alpha-api-report.md delete mode 100644 plugins/devtools-backend/src/alpha.ts delete mode 100644 plugins/linguist-backend/alpha-api-report.md delete mode 100644 plugins/linguist-backend/src/alpha.ts diff --git a/packages/backend-next/src/index.ts b/packages/backend-next/src/index.ts index c064f2acb9..7f21b23a85 100644 --- a/packages/backend-next/src/index.ts +++ b/packages/backend-next/src/index.ts @@ -33,9 +33,9 @@ import { todoPlugin } from '@backstage/plugin-todo-backend'; import { entityFeedbackPlugin } from '@backstage/plugin-entity-feedback-backend'; import { catalogModuleUnprocessedEntities } from '@backstage/plugin-catalog-backend-module-unprocessed'; import { badgesPlugin } from '@backstage/plugin-badges-backend'; -import { azureDevOpsPlugin } from '@backstage/plugin-azure-devops-backend/alpha'; -import { linguistPlugin } from '@backstage/plugin-linguist-backend/alpha'; -import { devtoolsPlugin } from '@backstage/plugin-devtools-backend/alpha'; +import { azureDevOpsPlugin } from '@backstage/plugin-azure-devops-backend'; +import { linguistPlugin } from '@backstage/plugin-linguist-backend'; +import { devtoolsPlugin } from '@backstage/plugin-devtools-backend'; import { TaskScheduleDefinition } from '@backstage/backend-tasks'; const backend = createBackend(); diff --git a/plugins/azure-devops-backend/alpha-api-report.md b/plugins/azure-devops-backend/alpha-api-report.md deleted file mode 100644 index e258f51a4f..0000000000 --- a/plugins/azure-devops-backend/alpha-api-report.md +++ /dev/null @@ -1,12 +0,0 @@ -## API Report File for "@backstage/plugin-azure-devops-backend" - -> 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'; - -// @alpha -export const azureDevOpsPlugin: () => BackendFeature; - -// (No @packageDocumentation comment for this package) -``` diff --git a/plugins/azure-devops-backend/api-report.md b/plugins/azure-devops-backend/api-report.md index 900b3c3d12..a2a43cd6af 100644 --- a/plugins/azure-devops-backend/api-report.md +++ b/plugins/azure-devops-backend/api-report.md @@ -3,6 +3,7 @@ > 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 { Build } from 'azure-devops-node-api/interfaces/BuildInterfaces'; import { BuildDefinitionReference } from 'azure-devops-node-api/interfaces/BuildInterfaces'; import { BuildRun } from '@backstage/plugin-azure-devops-common'; @@ -94,6 +95,9 @@ export class AzureDevOpsApi { }): Promise; } +// @public +export const azureDevOpsPlugin: () => BackendFeature; + // @public (undocumented) export function createRouter(options: RouterOptions): Promise; @@ -108,6 +112,4 @@ export interface RouterOptions { // (undocumented) reader: UrlReader; } - -// (No @packageDocumentation comment for this package) ``` diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 44b4342cf1..87b02e9298 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -11,14 +11,10 @@ }, "exports": { ".": "./src/index.ts", - "./alpha": "./src/alpha.ts", "./package.json": "./package.json" }, "typesVersions": { "*": { - "alpha": [ - "src/alpha.ts" - ], "package.json": [ "package.json" ] diff --git a/plugins/azure-devops-backend/src/alpha.ts b/plugins/azure-devops-backend/src/alpha.ts deleted file mode 100644 index dc321ef4de..0000000000 --- a/plugins/azure-devops-backend/src/alpha.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export { azureDevOpsPlugin } from './plugin'; diff --git a/plugins/azure-devops-backend/src/index.ts b/plugins/azure-devops-backend/src/index.ts index 6977d3580f..c0b1276acf 100644 --- a/plugins/azure-devops-backend/src/index.ts +++ b/plugins/azure-devops-backend/src/index.ts @@ -13,5 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +/** + * Azure DevOps backend plugin that contains the API for retrieving builds, pull requests, etc. which is used by the Azure DevOps frontend plugin. + * + * @packageDocumentation + */ + export { AzureDevOpsApi } from './api'; export * from './service/router'; +export { azureDevOpsPlugin } from './plugin'; diff --git a/plugins/azure-devops-backend/src/plugin.ts b/plugins/azure-devops-backend/src/plugin.ts index e6cf01b182..808bdfa248 100644 --- a/plugins/azure-devops-backend/src/plugin.ts +++ b/plugins/azure-devops-backend/src/plugin.ts @@ -24,7 +24,7 @@ import { createRouter } from './service/router'; /** * Azure DevOps backend plugin * - * @alpha + * @public */ export const azureDevOpsPlugin = createBackendPlugin({ pluginId: 'azure-devops', diff --git a/plugins/devtools-backend/alpha-api-report.md b/plugins/devtools-backend/alpha-api-report.md deleted file mode 100644 index 0be1ac4891..0000000000 --- a/plugins/devtools-backend/alpha-api-report.md +++ /dev/null @@ -1,12 +0,0 @@ -## API Report File for "@backstage/plugin-devtools-backend" - -> 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'; - -// @alpha -export const devtoolsPlugin: () => BackendFeature; - -// (No @packageDocumentation comment for this package) -``` diff --git a/plugins/devtools-backend/api-report.md b/plugins/devtools-backend/api-report.md index e28f0697ab..dc51fc8387 100644 --- a/plugins/devtools-backend/api-report.md +++ b/plugins/devtools-backend/api-report.md @@ -3,6 +3,7 @@ > 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 { Config } from '@backstage/config'; import { ConfigInfo } from '@backstage/plugin-devtools-common'; import { DevToolsInfo } from '@backstage/plugin-devtools-common'; @@ -25,6 +26,9 @@ export class DevToolsBackendApi { listInfo(): Promise; } +// @public +export const devtoolsPlugin: () => BackendFeature; + // @public (undocumented) export interface RouterOptions { // (undocumented) diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index bc71e58493..14d59b0715 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -11,14 +11,10 @@ }, "exports": { ".": "./src/index.ts", - "./alpha": "./src/alpha.ts", "./package.json": "./package.json" }, "typesVersions": { "*": { - "alpha": [ - "src/alpha.ts" - ], "package.json": [ "package.json" ] diff --git a/plugins/devtools-backend/src/alpha.ts b/plugins/devtools-backend/src/alpha.ts deleted file mode 100644 index fa4c290fb8..0000000000 --- a/plugins/devtools-backend/src/alpha.ts +++ /dev/null @@ -1,16 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export { devtoolsPlugin } from './plugin'; diff --git a/plugins/devtools-backend/src/index.ts b/plugins/devtools-backend/src/index.ts index e1545e0022..57c1739c34 100644 --- a/plugins/devtools-backend/src/index.ts +++ b/plugins/devtools-backend/src/index.ts @@ -22,3 +22,4 @@ export { DevToolsBackendApi } from './api'; export * from './service/router'; +export { devtoolsPlugin } from './plugin'; diff --git a/plugins/devtools-backend/src/plugin.ts b/plugins/devtools-backend/src/plugin.ts index 530ad74292..01e03e3609 100644 --- a/plugins/devtools-backend/src/plugin.ts +++ b/plugins/devtools-backend/src/plugin.ts @@ -22,9 +22,9 @@ import { import { createRouter } from './service/router'; /** - * Azure DevOps backend plugin + * DevTools backend plugin * - * @alpha + * @public */ export const devtoolsPlugin = createBackendPlugin({ pluginId: 'devtools', diff --git a/plugins/linguist-backend/alpha-api-report.md b/plugins/linguist-backend/alpha-api-report.md deleted file mode 100644 index fb0e906f64..0000000000 --- a/plugins/linguist-backend/alpha-api-report.md +++ /dev/null @@ -1,30 +0,0 @@ -## API Report File for "@backstage/plugin-linguist-backend" - -> 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 { HumanDuration } from '@backstage/types'; -import { TaskScheduleDefinition } from '@backstage/backend-tasks'; - -// @alpha -export const linguistPlugin: (options: LinguistPluginOptions) => BackendFeature; - -// @alpha -export interface LinguistPluginOptions { - // (undocumented) - age?: HumanDuration; - // (undocumented) - batchSize?: number; - // (undocumented) - kind?: string[]; - // (undocumented) - linguistJsOptions?: Record; - // (undocumented) - schedule?: TaskScheduleDefinition; - // (undocumented) - useSourceLocation?: boolean; -} - -// (No @packageDocumentation comment for this package) -``` diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 1e75aa6303..55e19b443d 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -11,14 +11,10 @@ }, "exports": { ".": "./src/index.ts", - "./alpha": "./src/alpha.ts", "./package.json": "./package.json" }, "typesVersions": { "*": { - "alpha": [ - "src/alpha.ts" - ], "package.json": [ "package.json" ] diff --git a/plugins/linguist-backend/src/alpha.ts b/plugins/linguist-backend/src/alpha.ts deleted file mode 100644 index c149e2b179..0000000000 --- a/plugins/linguist-backend/src/alpha.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2023 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -export { linguistPlugin } from './plugin'; -export type { LinguistPluginOptions } from './plugin'; diff --git a/plugins/linguist-backend/src/index.ts b/plugins/linguist-backend/src/index.ts index 37ecf2d47f..6ac1c3770a 100644 --- a/plugins/linguist-backend/src/index.ts +++ b/plugins/linguist-backend/src/index.ts @@ -14,5 +14,13 @@ * limitations under the License. */ +/** + * Linguist backend plugin that contains the API for generating and retrieving language breakdown which is used by the Linguist frontend plugin. + * + * @packageDocumentation + */ + export * from './service/router'; export type { LinguistBackendApi } from './api'; +export { linguistPlugin } from './plugin'; +export type { LinguistPluginOptions } from './plugin'; diff --git a/plugins/linguist-backend/src/plugin.ts b/plugins/linguist-backend/src/plugin.ts index 8f038a563a..f655d6a1f4 100644 --- a/plugins/linguist-backend/src/plugin.ts +++ b/plugins/linguist-backend/src/plugin.ts @@ -26,7 +26,7 @@ import { HumanDuration } from '@backstage/types'; /** * Options for Linguist backend plugin * - * @alpha + * @public */ export interface LinguistPluginOptions { schedule?: TaskScheduleDefinition; @@ -40,7 +40,7 @@ export interface LinguistPluginOptions { /** * Linguist backend plugin * - * @alpha + * @public */ export const linguistPlugin = createBackendPlugin( (options: LinguistPluginOptions) => ({ From a9cadcc634be283c508761dc560b7e33d7de3b29 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 23 Jun 2023 12:56:31 -0500 Subject: [PATCH 095/194] Updated READMEs Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- plugins/azure-devops-backend/README.md | 13 ++----------- plugins/devtools-backend/README.md | 15 +++------------ plugins/linguist-backend/README.md | 15 +++------------ 3 files changed, 8 insertions(+), 35 deletions(-) diff --git a/plugins/azure-devops-backend/README.md b/plugins/azure-devops-backend/README.md index d51758aec5..3bc17e32e7 100644 --- a/plugins/azure-devops-backend/README.md +++ b/plugins/azure-devops-backend/README.md @@ -72,26 +72,17 @@ Here's how to get the backend up and running: #### New Backend System -The Azure DevOps backend plugin has alpha support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: +The Azure DevOps backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: In your `packages/backend/src/index.ts` make the following changes: ```diff import { createBackend } from '@backstage/backend-defaults'; - import { appPlugin } from '@backstage/plugin-app-backend'; - import { catalogPlugin } from '@backstage/plugin-catalog-backend'; - import { - scaffolderPlugin, - catalogModuleTemplateKind, - } from '@backstage/plugin-scaffolder-backend'; + import { azureDevOpsPlugin } from '@backstage/plugin-azure-devops-backend/alpha'; const backend = createBackend(); - backend.add(appPlugin()); - backend.add(catalogPlugin()); - backend.add(catalogModuleTemplateKind()); - backend.add(scaffolderPlugin()); + // ... other feature additions + backend.add(azureDevOpsPlugin()); diff --git a/plugins/devtools-backend/README.md b/plugins/devtools-backend/README.md index 7a8ca3104a..5290e76f58 100644 --- a/plugins/devtools-backend/README.md +++ b/plugins/devtools-backend/README.md @@ -51,26 +51,17 @@ Here's how to get the DevTools Backend up and running: ### New Backend System -The DevTools backend plugin has alpha support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: +The DevTools backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: In your `packages/backend/src/index.ts` make the following changes: ```diff import { createBackend } from '@backstage/backend-defaults'; - import { appPlugin } from '@backstage/plugin-app-backend'; - import { catalogPlugin } from '@backstage/plugin-catalog-backend'; - import { - scaffolderPlugin, - catalogModuleTemplateKind, - } from '@backstage/plugin-scaffolder-backend'; + import { devtoolsPlugin } from '@backstage/plugin-devtools-backend/alpha'; const backend = createBackend(); - backend.add(appPlugin()); - backend.add(catalogPlugin()); - backend.add(catalogModuleTemplateKind()); - backend.add(scaffolderPlugin()); + // ... other feature additions + backend.add(devtoolsPlugin()); @@ -79,5 +70,5 @@ In your `packages/backend/src/index.ts` make the following changes: ## Links -- [Frontend part of the plugin](../devtools/README.md) +- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/devtools) - [The Backstage homepage](https://backstage.io) diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index 462adc495e..543fe192fe 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -58,26 +58,17 @@ Here's how to get the backend up and running: #### New Backend System -The Linguist backend plugin has alpha support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: +The Linguist backend plugin has support for the [new backend system](https://backstage.io/docs/backend-system/), here's how you can set that up: In your `packages/backend/src/index.ts` make the following changes: ```diff import { createBackend } from '@backstage/backend-defaults'; - import { appPlugin } from '@backstage/plugin-app-backend'; - import { catalogPlugin } from '@backstage/plugin-catalog-backend'; - import { - scaffolderPlugin, - catalogModuleTemplateKind, - } from '@backstage/plugin-scaffolder-backend'; + import { linguistPlugin } from '@backstage/plugin-linguist-backend/alpha'; const backend = createBackend(); - backend.add(appPlugin()); - backend.add(catalogPlugin()); - backend.add(catalogModuleTemplateKind()); - backend.add(scaffolderPlugin()); + // ... other feature additions + const linguistSchedule: TaskScheduleDefinition = { + frequency: { minutes: 2 }, @@ -155,5 +146,5 @@ return createRouter( ## Links -- [Frontend part of the plugin](../linguist/README.md) +- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/linguist) - [The Backstage homepage](https://backstage.io) From cb336721001f7d2d9d0767abcb321dfe6eac724f Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Tue, 27 Jun 2023 11:29:52 -0500 Subject: [PATCH 096/194] Udpated api-report Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- plugins/linguist-backend/api-report.md | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/plugins/linguist-backend/api-report.md b/plugins/linguist-backend/api-report.md index 294d569ff7..cd2c9cb3f3 100644 --- a/plugins/linguist-backend/api-report.md +++ b/plugins/linguist-backend/api-report.md @@ -3,6 +3,7 @@ > 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 express from 'express'; import { HumanDuration } from '@backstage/types'; import { Languages } from '@backstage/plugin-linguist-common'; @@ -28,6 +29,25 @@ export interface LinguistBackendApi { processEntities(): Promise; } +// @public +export const linguistPlugin: (options: LinguistPluginOptions) => BackendFeature; + +// @public +export interface LinguistPluginOptions { + // (undocumented) + age?: HumanDuration; + // (undocumented) + batchSize?: number; + // (undocumented) + kind?: string[]; + // (undocumented) + linguistJsOptions?: Record; + // (undocumented) + schedule?: TaskScheduleDefinition; + // (undocumented) + useSourceLocation?: boolean; +} + // @public (undocumented) export interface PluginOptions { // (undocumented) @@ -61,6 +81,4 @@ export interface RouterOptions { // (undocumented) tokenManager: TokenManager; } - -// (No @packageDocumentation comment for this package) ``` From 18520c459626a3012dfe7d40b4942ab27610ed81 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Tue, 27 Jun 2023 14:16:30 -0500 Subject: [PATCH 097/194] Fixed broken link Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- plugins/linguist-backend/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index 543fe192fe..ee6e995ec8 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -146,5 +146,5 @@ return createRouter( ## Links -- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/linguist) +- [Frontend part of the plugin](https://github.com/backstage/backstage/tree/master/plugins/linguist) - [The Backstage homepage](https://backstage.io) From 3a861eb0ab226f25c4dc7e504a60107ae7fdcec5 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 28 Jun 2023 06:48:51 -0500 Subject: [PATCH 098/194] Corrected README imports not to be from alpha Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- plugins/azure-devops-backend/README.md | 2 +- plugins/devtools-backend/README.md | 2 +- plugins/linguist-backend/README.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/azure-devops-backend/README.md b/plugins/azure-devops-backend/README.md index 3bc17e32e7..e892b84dd1 100644 --- a/plugins/azure-devops-backend/README.md +++ b/plugins/azure-devops-backend/README.md @@ -78,7 +78,7 @@ In your `packages/backend/src/index.ts` make the following changes: ```diff import { createBackend } from '@backstage/backend-defaults'; -+ import { azureDevOpsPlugin } from '@backstage/plugin-azure-devops-backend/alpha'; ++ import { azureDevOpsPlugin } from '@backstage/plugin-azure-devops-backend'; const backend = createBackend(); diff --git a/plugins/devtools-backend/README.md b/plugins/devtools-backend/README.md index 5290e76f58..528e864783 100644 --- a/plugins/devtools-backend/README.md +++ b/plugins/devtools-backend/README.md @@ -57,7 +57,7 @@ In your `packages/backend/src/index.ts` make the following changes: ```diff import { createBackend } from '@backstage/backend-defaults'; -+ import { devtoolsPlugin } from '@backstage/plugin-devtools-backend/alpha'; ++ import { devtoolsPlugin } from '@backstage/plugin-devtools-backend'; const backend = createBackend(); diff --git a/plugins/linguist-backend/README.md b/plugins/linguist-backend/README.md index ee6e995ec8..6e2a20cf2d 100644 --- a/plugins/linguist-backend/README.md +++ b/plugins/linguist-backend/README.md @@ -64,7 +64,7 @@ In your `packages/backend/src/index.ts` make the following changes: ```diff import { createBackend } from '@backstage/backend-defaults'; -+ import { linguistPlugin } from '@backstage/plugin-linguist-backend/alpha'; ++ import { linguistPlugin } from '@backstage/plugin-linguist-backend'; const backend = createBackend(); From 4716ef6c603aec2b4eb3e4186347d40de3839ac9 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Wed, 28 Jun 2023 07:57:24 -0500 Subject: [PATCH 099/194] Removed package.json exports changes Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- plugins/azure-devops-backend/package.json | 11 ----------- plugins/devtools-backend/package.json | 11 ----------- plugins/linguist-backend/package.json | 11 ----------- 3 files changed, 33 deletions(-) diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 87b02e9298..08411a3079 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -9,17 +9,6 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "exports": { - ".": "./src/index.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "package.json": [ - "package.json" - ] - } - }, "backstage": { "role": "backend-plugin" }, diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index 14d59b0715..388eccfa9e 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -9,17 +9,6 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "exports": { - ".": "./src/index.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "package.json": [ - "package.json" - ] - } - }, "backstage": { "role": "backend-plugin" }, diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 55e19b443d..0239b241d3 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -9,17 +9,6 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, - "exports": { - ".": "./src/index.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "package.json": [ - "package.json" - ] - } - }, "backstage": { "role": "backend-plugin" }, From f1d27555ab5398e6963932f2b5f9a985c901fb69 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 28 Jun 2023 18:49:10 +0530 Subject: [PATCH 100/194] catalog-import: Add a View Component CTA after finishing import Signed-off-by: Himanshu Mishra --- .../src/components/Buttons/index.tsx | 18 +++++++ .../StepFinishImportLocation.tsx | 50 ++++++++++++++----- .../src/components/useImportState.ts | 12 +++-- 3 files changed, 63 insertions(+), 17 deletions(-) diff --git a/plugins/catalog-import/src/components/Buttons/index.tsx b/plugins/catalog-import/src/components/Buttons/index.tsx index a478bfd4cc..4b9043cd6d 100644 --- a/plugins/catalog-import/src/components/Buttons/index.tsx +++ b/plugins/catalog-import/src/components/Buttons/index.tsx @@ -14,6 +14,7 @@ * limitations under the License. */ +import { LinkButton } from '@backstage/core-components'; import { Button, CircularProgress } from '@material-ui/core'; import { makeStyles } from '@material-ui/core/styles'; import React, { ComponentProps } from 'react'; @@ -68,3 +69,20 @@ export const BackButton = (props: ComponentProps) => { ); }; + +export const ViewComponentButton = ( + props: ComponentProps, +) => { + const classes = useStyles(); + + return ( + + {props.children} + + ); +}; diff --git a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx index 8d1a588079..4d09b9129f 100644 --- a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx +++ b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx @@ -17,23 +17,41 @@ import { Grid, Typography } from '@material-ui/core'; import LocationOnIcon from '@material-ui/icons/LocationOn'; import React from 'react'; -import { BackButton } from '../Buttons'; +import { BackButton, ViewComponentButton } from '../Buttons'; import { EntityListComponent } from '../EntityListComponent'; -import { PrepareResult } from '../useImportState'; +import { PrepareResult, NewLocations } from '../useImportState'; import { Link } from '@backstage/core-components'; import partition from 'lodash/partition'; +import { CompoundEntityRef } from '@backstage/catalog-model'; +import { entityRouteRef } from '@backstage/plugin-catalog-react'; +import { useRouteRef } from '@backstage/core-plugin-api'; type Props = { prepareResult: PrepareResult; onReset: () => void; }; +// Among the newly registered entities, return a software entity (e.g. Component, API, Resource) +const filterComponentEntity = ( + newLocations: NewLocations, +): CompoundEntityRef | null => { + for (const location of newLocations) { + for (const entity of location.entities) { + if ( + ['component', 'api', 'resource'].includes( + entity.kind.toLocaleLowerCase('en-US'), + ) + ) { + return entity; + } + } + } + + return null; +}; + export const StepFinishImportLocation = ({ prepareResult, onReset }: Props) => { - const continueButton = ( - - Register another - - ); + const entityRoute = useRouteRef(entityRouteRef); if (prepareResult.type === 'repository') { return ( @@ -48,12 +66,13 @@ export const StepFinishImportLocation = ({ prepareResult, onReset }: Props) => { {prepareResult.pullRequest.url} - Your entities will be imported as soon as the Pull Request is merged. - - {continueButton} + + Register another + + ; ); } @@ -62,7 +81,7 @@ export const StepFinishImportLocation = ({ prepareResult, onReset }: Props) => { prepareResult.locations, l => l.exists, ); - + const newComponentEntity = filterComponentEntity(newLocations); return ( <> {newLocations.length > 0 && ( @@ -91,7 +110,14 @@ export const StepFinishImportLocation = ({ prepareResult, onReset }: Props) => { /> )} - {continueButton} + + {newComponentEntity && ( + + View Component + + )} + Register another + ); }; diff --git a/plugins/catalog-import/src/components/useImportState.ts b/plugins/catalog-import/src/components/useImportState.ts index 965f855f30..da34b8b1d7 100644 --- a/plugins/catalog-import/src/components/useImportState.ts +++ b/plugins/catalog-import/src/components/useImportState.ts @@ -32,6 +32,12 @@ export type ImportFlows = // the available states of the stepper type ImportStateTypes = 'analyze' | 'prepare' | 'review' | 'finish'; +export type NewLocations = Array<{ + exists?: boolean; + target: string; + entities: CompoundEntityRef[]; +}>; + /** * Result of the prepare state. * @@ -40,11 +46,7 @@ type ImportStateTypes = 'analyze' | 'prepare' | 'review' | 'finish'; export type PrepareResult = | { type: 'locations'; - locations: Array<{ - exists?: boolean; - target: string; - entities: CompoundEntityRef[]; - }>; + locations: NewLocations; } | { type: 'repository'; From 36b7edf39585cef91513713d46a4fef63e82312e Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 28 Jun 2023 18:50:16 +0530 Subject: [PATCH 101/194] add changeset Signed-off-by: Himanshu Mishra --- .changeset/mean-bobcats-taste.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/mean-bobcats-taste.md diff --git a/.changeset/mean-bobcats-taste.md b/.changeset/mean-bobcats-taste.md new file mode 100644 index 0000000000..299273209c --- /dev/null +++ b/.changeset/mean-bobcats-taste.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-import': patch +--- + +Add a "View Component" button as the primary CTA after registering a new component using a link to catalog-info.yaml From 9ef010713fa80f16ca6831043b42d58479ff2d3b Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 28 Jun 2023 09:31:59 -0400 Subject: [PATCH 102/194] chore: Update Discord username Signed-off-by: Adam Harvey --- OWNERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS.md b/OWNERS.md index d146739e9e..da1574f73f 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -120,7 +120,7 @@ Scope: Tooling for frontend and backend schema-first OpenAPI development. | Name | Organization | GitHub | Discord | | ------------------------------ | ------------------------- | ----------------------------------------------------- | ------------------------------ | -| Adam Harvey | Cisco | [adamdmharvey](https://github.com/adamdmharvey) | `adamharvey#3739` | +| Adam Harvey | Cisco | [adamdmharvey](https://github.com/adamdmharvey) | `adamharvey_` | | Alex Crome | | [afscrome](https://github.com/afscrome) | `afscrome` | | Andre Wanlin | Keyloop | [awanlin](https://github.com/awanlin) | `Ahhhndre#3095` | | Andrew Thauer | Wealthsimple | [andrewthauer](https://github.com/andrewthauer) | `andrewthauer#3060` | From aca073bf92e1d4781c5b6f29a65c2ebc6f3e84cc Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 28 Jun 2023 19:12:07 +0530 Subject: [PATCH 103/194] catalog-import: fix tests Signed-off-by: Himanshu Mishra --- .../StepInitAnalyzeUrl.test.tsx | 30 ++++++++----------- 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx index a9d662cab0..d8a12d0e5c 100644 --- a/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx +++ b/plugins/catalog-import/src/components/StepInitAnalyzeUrl/StepInitAnalyzeUrl.test.tsx @@ -64,12 +64,8 @@ describe('', () => { wrapper: Wrapper, }); - expect( - screen.getByRole('textbox', { name: /Repository/i }), - ).toBeInTheDocument(); - expect(screen.getByRole('textbox', { name: /Repository/i })).toHaveValue( - '', - ); + expect(screen.getByRole('textbox', { name: /URL/i })).toBeInTheDocument(); + expect(screen.getByRole('textbox', { name: /URL/i })).toHaveValue(''); }); it('should use default analysis url', async () => { @@ -83,10 +79,8 @@ describe('', () => { }, ); - expect( - screen.getByRole('textbox', { name: /Repository/i }), - ).toBeInTheDocument(); - expect(screen.getByRole('textbox', { name: /Repository/i })).toHaveValue( + expect(screen.getByRole('textbox', { name: /URL/i })).toBeInTheDocument(); + expect(screen.getByRole('textbox', { name: /URL/i })).toHaveValue( 'https://default', ); }); @@ -120,7 +114,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'http:/', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); @@ -152,7 +146,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'https://my-repository', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); @@ -186,7 +180,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'https://my-repository-1', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); @@ -219,7 +213,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'https://my-repository-1', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); @@ -260,7 +254,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'https://my-repository-2', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); @@ -295,7 +289,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'https://my-repository-2', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); @@ -339,7 +333,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'https://my-repository-2', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); @@ -365,7 +359,7 @@ describe('', () => { await act(async () => { await userEvent.type( - screen.getByRole('textbox', { name: /Repository/i }), + screen.getByRole('textbox', { name: /URL/i }), 'https://my-repository-2', ); await userEvent.click(screen.getByRole('button', { name: /Analyze/i })); From a9b30f5538d4ab891dad3b4b979f2b19a9f9e200 Mon Sep 17 00:00:00 2001 From: Chris Langhout Date: Wed, 28 Jun 2023 14:40:41 +0200 Subject: [PATCH 104/194] Update README.md fix install command Signed-off-by: Chris Langhout Signed-off-by: Chris Langhout --- plugins/catalog-unprocessed-entities/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/catalog-unprocessed-entities/README.md b/plugins/catalog-unprocessed-entities/README.md index ed48d42518..3c9f649e37 100644 --- a/plugins/catalog-unprocessed-entities/README.md +++ b/plugins/catalog-unprocessed-entities/README.md @@ -29,7 +29,7 @@ Requires the `@backstage/plugin-catalog-backend-module-unprocessed` module to be ## Installation ```shell -yarn add --cwd packages/app @backstage/plugin-catalog-module-unprocessed +yarn add --cwd packages/app @backstage/plugin-catalog-unprocessed-entities ``` Import into your `App.tsx` and include into the `` component: From 77b408fad872aa7a9d66fd537ab9e1771ea8b77a Mon Sep 17 00:00:00 2001 From: Chris Langhout Date: Wed, 28 Jun 2023 16:42:58 +0200 Subject: [PATCH 105/194] chore: add changeset Signed-off-by: Chris Langhout --- .changeset/young-frogs-burn.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/young-frogs-burn.md diff --git a/.changeset/young-frogs-burn.md b/.changeset/young-frogs-burn.md new file mode 100644 index 0000000000..7ca4fff60f --- /dev/null +++ b/.changeset/young-frogs-burn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +install command points to correct package name From 3f1c3e2e5c97cbb14fb448659cff8248cf9cd105 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Wed, 28 Jun 2023 11:12:21 -0400 Subject: [PATCH 106/194] chore: Add Andre name also Co-authored-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Signed-off-by: Adam Harvey --- OWNERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS.md b/OWNERS.md index da1574f73f..bbcab49667 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -122,7 +122,7 @@ Scope: Tooling for frontend and backend schema-first OpenAPI development. | ------------------------------ | ------------------------- | ----------------------------------------------------- | ------------------------------ | | Adam Harvey | Cisco | [adamdmharvey](https://github.com/adamdmharvey) | `adamharvey_` | | Alex Crome | | [afscrome](https://github.com/afscrome) | `afscrome` | -| Andre Wanlin | Keyloop | [awanlin](https://github.com/awanlin) | `Ahhhndre#3095` | +| Andre Wanlin | Keyloop | [awanlin](https://github.com/awanlin) | `ahhhndre` | | Andrew Thauer | Wealthsimple | [andrewthauer](https://github.com/andrewthauer) | `andrewthauer#3060` | | Aramis Sennyey | | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` | | Brian Fletcher | Roadie.io | [punkle](https://github.com/punkle) | `Brian Fletcher#7051` | From 620026fd060a463aed9cf70aa7ee90131a69bbb0 Mon Sep 17 00:00:00 2001 From: Ant Weiss Date: Wed, 28 Jun 2023 18:17:20 +0300 Subject: [PATCH 107/194] Fix a couple of typos Signed-off-by: Ant Weiss --- docs/backend-system/architecture/04-plugins.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/backend-system/architecture/04-plugins.md b/docs/backend-system/architecture/04-plugins.md index 04271b17da..89191f5de9 100644 --- a/docs/backend-system/architecture/04-plugins.md +++ b/docs/backend-system/architecture/04-plugins.md @@ -84,7 +84,7 @@ Options are a simple way to allow for more lightweight customization of a plugin The following rules apply to the production setup of Backstage plugins in the broader Backstage plugin ecosystem. Any plugin that is maintained under the `@backstage` package namespace should follow these rules, and it is recommended that all widely distributed plugins follow these rules as well. -An exception to these rules are made for development or test setups, where shortcuts can be take in order to streamline development and keep things simple. +An exception to these rules are made for development or test setups, where shortcuts can be taken in order to streamline development and keep things simple. ### Scalable @@ -92,4 +92,4 @@ Plugins must always be designed to be horizontally scalable. This means that you ### Isolated -Plugins must never communicate with each other directly through code, they may only communicate over the network. Plugins that wish to expose an external interface for other plugins and modules to use are recommended to do so though a [node-library](../../local-dev/cli-build-system.md#package-roles) package. The library should export an API client service to make calls to your plugin, or similar construct. +Plugins must never communicate with each other directly through code, they may only communicate over the network. Plugins that wish to expose an external interface for other plugins and modules to use are recommended to do so through a [node-library](../../local-dev/cli-build-system.md#package-roles) package. The library should export an API client service to make calls to your plugin, or similar construct. From 71c1c639d6cb3814e72a90557e40cad42be1a513 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Wed, 28 Jun 2023 22:09:56 +0530 Subject: [PATCH 108/194] catalog-import: api reports Signed-off-by: Himanshu Mishra --- plugins/catalog-import/api-report.md | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/plugins/catalog-import/api-report.md b/plugins/catalog-import/api-report.md index b4c8e854aa..7fd3bd9dd6 100644 --- a/plugins/catalog-import/api-report.md +++ b/plugins/catalog-import/api-report.md @@ -244,11 +244,7 @@ export type PreparePullRequestFormProps< export type PrepareResult = | { type: 'locations'; - locations: Array<{ - exists?: boolean; - target: string; - entities: CompoundEntityRef[]; - }>; + locations: NewLocations; } | { type: 'repository'; @@ -364,4 +360,5 @@ export interface StepPrepareCreatePullRequestProps { // Warnings were encountered during analysis: // // src/api/CatalogImportApi.d.ts:25:5 - (ae-forgotten-export) The symbol "PartialEntity" needs to be exported by the entry point index.d.ts +// src/components/useImportState.d.ts:21:5 - (ae-forgotten-export) The symbol "NewLocations" needs to be exported by the entry point index.d.ts ``` From 8f0cc48d34cbb8eff5293a69d2edad79568dc527 Mon Sep 17 00:00:00 2001 From: Scott Guymer Date: Wed, 28 Jun 2023 19:41:47 +0200 Subject: [PATCH 109/194] Update .changeset/mighty-pandas-deny.md Signed-off-by: Scott Guymer --- .changeset/mighty-pandas-deny.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/mighty-pandas-deny.md b/.changeset/mighty-pandas-deny.md index 381e76d52b..8c18c46469 100644 --- a/.changeset/mighty-pandas-deny.md +++ b/.changeset/mighty-pandas-deny.md @@ -1,6 +1,6 @@ --- -'@backstage/plugin-sonarqube': minor -'@backstage/plugin-sonarqube-backend': minor +'@backstage/plugin-sonarqube': patch +'@backstage/plugin-sonarqube-backend': patch --- Made default config optional From c8fd900afbbd86859f1de670364f731bc6cfdecd Mon Sep 17 00:00:00 2001 From: Scott Guymer Date: Wed, 28 Jun 2023 21:47:45 +0200 Subject: [PATCH 110/194] fix: Use themeable styling for markdown Signed-off-by: Scott Guymer --- .../components/Form/DescriptionFieldTemplate.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/scaffolder-react/src/next/components/Form/DescriptionFieldTemplate.tsx b/plugins/scaffolder-react/src/next/components/Form/DescriptionFieldTemplate.tsx index 8debfb3e08..4c86ef0c62 100644 --- a/plugins/scaffolder-react/src/next/components/Form/DescriptionFieldTemplate.tsx +++ b/plugins/scaffolder-react/src/next/components/Form/DescriptionFieldTemplate.tsx @@ -24,17 +24,17 @@ import { StrictRJSFSchema, } from '@rjsf/utils'; -const useStyles = makeStyles({ +const useStyles = makeStyles(theme => ({ markdownDescription: { - fontSize: '0.75rem', + fontSize: theme.typography.caption.fontSize, margin: 0, - marginTop: '5px', - color: 'rgba(0, 0, 0, 0.54)', - '& p:first-child': { + color: theme.palette.text.secondary, + '& :first-child': { margin: 0, + marginTop: '3px', // to keep the standard browser padding }, }, -}); +})); /** The `DescriptionField` is the template to use to render the description of a field * @alpha From f74a27de4d2ca66ada290d4dc330e0189581b9e4 Mon Sep 17 00:00:00 2001 From: Scott Guymer Date: Wed, 28 Jun 2023 21:53:35 +0200 Subject: [PATCH 111/194] Added changeset Signed-off-by: Scott Guymer --- .changeset/fluffy-frogs-change.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fluffy-frogs-change.md diff --git a/.changeset/fluffy-frogs-change.md b/.changeset/fluffy-frogs-change.md new file mode 100644 index 0000000000..2caf25bfc4 --- /dev/null +++ b/.changeset/fluffy-frogs-change.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Made markdown description theme-able From b01b869d715868c2006e137f8b8ee6f010d746af Mon Sep 17 00:00:00 2001 From: Rogerio Angeliski Date: Wed, 21 Jun 2023 11:51:19 +0000 Subject: [PATCH 112/194] fix: update onRepoPush to drop events from different organizations Close #15878: Signed-off-by: Rogerio Angeliski --- .changeset/fresh-bears-yawn.md | 5 ++ .../providers/GithubEntityProvider.test.ts | 69 +++++++++++++++++++ .../src/providers/GithubEntityProvider.ts | 7 ++ 3 files changed, 81 insertions(+) create mode 100644 .changeset/fresh-bears-yawn.md diff --git a/.changeset/fresh-bears-yawn.md b/.changeset/fresh-bears-yawn.md new file mode 100644 index 0000000000..cf3d6657e0 --- /dev/null +++ b/.changeset/fresh-bears-yawn.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +fixed event handler to respect configured organization diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts index 6540962411..d0fc54245f 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.test.ts @@ -1212,4 +1212,73 @@ describe('GithubEntityProvider', () => { expect(entityProviderConnection.refresh).toHaveBeenCalledTimes(0); expect(entityProviderConnection.applyMutation).toHaveBeenCalledTimes(0); }); + + it("should skip process when didn't match org from push event", async () => { + const schedule = new PersistingTaskRunner(); + const config = new ConfigReader({ + catalog: { + providers: { + github: { + organization: 'test-org', + filters: { + branch: 'my-special-branch', + repository: 'test-repo', + }, + }, + }, + }, + }); + + const provider = GithubEntityProvider.fromConfig(config, { + logger, + schedule, + })[0]; + + const entityProviderConnection: EntityProviderConnection = { + applyMutation: jest.fn(), + refresh: jest.fn(), + }; + await provider.connect(entityProviderConnection); + + const event: EventParams = { + topic: 'github.push', + metadata: { + 'x-github-event': 'push', + }, + eventPayload: { + ref: 'refs/heads/my-special-branch', + repository: { + name: 'test-repo', + url: 'https://github.com/test-org/test-repo', + default_branch: 'main', + stargazers: 0, + master_branch: 'main', + organization: 'other-org', + topics: [], + }, + created: true, + deleted: false, + forced: false, + commits: [ + { + added: ['new-file.yaml'], + removed: [], + modified: [], + }, + { + added: [], + removed: [], + modified: ['catalog-info.yaml'], + }, + ], + }, + }; + + await provider.onEvent(event); + + await provider.onEvent(event); + + expect(entityProviderConnection.refresh).toHaveBeenCalledTimes(0); + expect(entityProviderConnection.applyMutation).toHaveBeenCalledTimes(0); + }); }); diff --git a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts index bd26f2906a..e91cc328f7 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubEntityProvider.ts @@ -296,6 +296,13 @@ export class GithubEntityProvider implements EntityProvider, EventSubscriber { throw new Error('Not initialized'); } + if (this.config.organization !== event.repository.organization) { + this.logger.debug( + `skipping push event from organization ${event.repository.organization}`, + ); + return; + } + const repoName = event.repository.name; const repoUrl = event.repository.url; this.logger.debug(`handle github:push event for ${repoName} - ${repoUrl}`); From b8ebd3d2e4e501831b306e9d392d225b4c5336d0 Mon Sep 17 00:00:00 2001 From: Heikki Hellgren Date: Wed, 28 Jun 2023 08:27:39 +0300 Subject: [PATCH 113/194] fix: missing breakpoints in columns of custom homepage grid Signed-off-by: Heikki Hellgren --- .changeset/strange-baboons-look.md | 5 +++++ plugins/home/api-report.md | 2 +- .../CustomHomepage/CustomHomepageGrid.tsx | 18 ++++++++++-------- 3 files changed, 16 insertions(+), 9 deletions(-) create mode 100644 .changeset/strange-baboons-look.md diff --git a/.changeset/strange-baboons-look.md b/.changeset/strange-baboons-look.md new file mode 100644 index 0000000000..4b2e14b301 --- /dev/null +++ b/.changeset/strange-baboons-look.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-home': patch +--- + +Fix missing column breakpoints in `CustomHompageGrid` diff --git a/plugins/home/api-report.md b/plugins/home/api-report.md index e4ff522062..1001f27b51 100644 --- a/plugins/home/api-report.md +++ b/plugins/home/api-report.md @@ -20,7 +20,7 @@ import { RendererProps as RendererProps_2 } from '@backstage/plugin-home-react'; import { RouteRef } from '@backstage/core-plugin-api'; // @public -export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; +export type Breakpoint = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'; // @public @deprecated (undocumented) export type CardConfig = CardConfig_2; diff --git a/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx b/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx index d42356a8d2..2d4636a4b4 100644 --- a/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx +++ b/plugins/home/src/components/CustomHomepage/CustomHomepageGrid.tsx @@ -17,11 +17,11 @@ import React, { ReactNode, useCallback, useMemo } from 'react'; import { Layout, Layouts, Responsive, WidthProvider } from 'react-grid-layout'; import { + ElementCollection, + getComponentData, storageApiRef, useApi, - getComponentData, useElementFilter, - ElementCollection, } from '@backstage/core-plugin-api'; import 'react-grid-layout/css/styles.css'; import 'react-resizable/css/styles.css'; @@ -29,8 +29,8 @@ import { createStyles, Dialog, makeStyles, - useTheme, Theme, + useTheme, } from '@material-ui/core'; import { compact } from 'lodash'; import useObservable from 'react-use/lib/useObservable'; @@ -42,10 +42,10 @@ import { CustomHomepageButtons } from './CustomHomepageButtons'; import { CustomHomepageGridStateV1, CustomHomepageGridStateV1Schema, - LayoutConfiguration, - Widget, GridWidget, + LayoutConfiguration, LayoutConfigurationSchema, + Widget, WidgetSchema, } from './types'; import { CardConfig } from '@backstage/plugin-home-react'; @@ -194,7 +194,7 @@ const availableWidgetsFilter = (elements: ElementCollection) => { * * @public */ -export type Breakpoint = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; +export type Breakpoint = 'xxs' | 'xs' | 'sm' | 'md' | 'lg' | 'xl'; /** * Props customizing the component. @@ -410,11 +410,13 @@ export const CustomHomepageGrid = (props: CustomHomepageGridProps) => { props.breakpoints ? props.breakpoints : theme.breakpoints.values } cols={ - props.cols ? props.cols : { lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 } + props.cols + ? props.cols + : { xl: 12, lg: 12, md: 10, sm: 6, xs: 4, xxs: 2 } } rowHeight={props.rowHeight ?? 60} onLayoutChange={handleLayoutChange} - layouts={{ lg: widgets.map(w => w.layout) }} + layouts={{ xl: widgets.map(w => w.layout) }} > {widgets.map((w: GridWidget) => { const l = w.layout; From e3ce5dd3f89a4401d4ac6cc13a5da8164fd26810 Mon Sep 17 00:00:00 2001 From: rui ma Date: Thu, 29 Jun 2023 14:34:18 +0800 Subject: [PATCH 114/194] fix: add cy.**.should to cypress eslintrc Signed-off-by: rui ma --- .changeset/cuddly-guests-hide.md | 5 +++++ packages/app/cypress/.eslintrc.json | 2 +- .../default-app/packages/app/cypress/.eslintrc.json | 2 +- packages/techdocs-cli-embedded-app/cypress/.eslintrc.json | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/cuddly-guests-hide.md diff --git a/.changeset/cuddly-guests-hide.md b/.changeset/cuddly-guests-hide.md new file mode 100644 index 0000000000..dc597e7bc3 --- /dev/null +++ b/.changeset/cuddly-guests-hide.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': minor +--- + +add cy.\*\*.should to cypress eslintrc diff --git a/packages/app/cypress/.eslintrc.json b/packages/app/cypress/.eslintrc.json index a467608916..b903ff250a 100644 --- a/packages/app/cypress/.eslintrc.json +++ b/packages/app/cypress/.eslintrc.json @@ -5,7 +5,7 @@ "jest/expect-expect": [ "error", { - "assertFunctionNames": ["expect", "cy.contains"] + "assertFunctionNames": ["expect", "cy.contains", "cy.**.should"] } ] } diff --git a/packages/create-app/templates/default-app/packages/app/cypress/.eslintrc.json b/packages/create-app/templates/default-app/packages/app/cypress/.eslintrc.json index a467608916..b903ff250a 100644 --- a/packages/create-app/templates/default-app/packages/app/cypress/.eslintrc.json +++ b/packages/create-app/templates/default-app/packages/app/cypress/.eslintrc.json @@ -5,7 +5,7 @@ "jest/expect-expect": [ "error", { - "assertFunctionNames": ["expect", "cy.contains"] + "assertFunctionNames": ["expect", "cy.contains", "cy.**.should"] } ] } diff --git a/packages/techdocs-cli-embedded-app/cypress/.eslintrc.json b/packages/techdocs-cli-embedded-app/cypress/.eslintrc.json index a467608916..b903ff250a 100644 --- a/packages/techdocs-cli-embedded-app/cypress/.eslintrc.json +++ b/packages/techdocs-cli-embedded-app/cypress/.eslintrc.json @@ -5,7 +5,7 @@ "jest/expect-expect": [ "error", { - "assertFunctionNames": ["expect", "cy.contains"] + "assertFunctionNames": ["expect", "cy.contains", "cy.**.should"] } ] } From cc2b3c81b4e1b443598cf4c4e25a76709be8d4c2 Mon Sep 17 00:00:00 2001 From: blam Date: Thu, 29 Jun 2023 12:04:29 +0200 Subject: [PATCH 115/194] chore: fix prettier Signed-off-by: blam --- OWNERS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OWNERS.md b/OWNERS.md index bbcab49667..5a9457d755 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -122,7 +122,7 @@ Scope: Tooling for frontend and backend schema-first OpenAPI development. | ------------------------------ | ------------------------- | ----------------------------------------------------- | ------------------------------ | | Adam Harvey | Cisco | [adamdmharvey](https://github.com/adamdmharvey) | `adamharvey_` | | Alex Crome | | [afscrome](https://github.com/afscrome) | `afscrome` | -| Andre Wanlin | Keyloop | [awanlin](https://github.com/awanlin) | `ahhhndre` | +| Andre Wanlin | Keyloop | [awanlin](https://github.com/awanlin) | `ahhhndre` | | Andrew Thauer | Wealthsimple | [andrewthauer](https://github.com/andrewthauer) | `andrewthauer#3060` | | Aramis Sennyey | | [sennyeya](https://github.com/sennyeya) | `Aramis#7984` | | Brian Fletcher | Roadie.io | [punkle](https://github.com/punkle) | `Brian Fletcher#7051` | From 4e2800612e75866f80a43f360352ae08b93e7ca6 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Thu, 29 Jun 2023 12:15:50 +0200 Subject: [PATCH 116/194] chore: patch instead of minor Signed-off-by: Ben Lambert --- .changeset/cuddly-guests-hide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/cuddly-guests-hide.md b/.changeset/cuddly-guests-hide.md index dc597e7bc3..5408465ebd 100644 --- a/.changeset/cuddly-guests-hide.md +++ b/.changeset/cuddly-guests-hide.md @@ -1,5 +1,5 @@ --- -'@backstage/create-app': minor +'@backstage/create-app': patch --- add cy.\*\*.should to cypress eslintrc From 6cfa4074543846c7749b0866b3d4f1b6004ebea8 Mon Sep 17 00:00:00 2001 From: "philipp.achmueller" Date: Thu, 29 Jun 2023 13:49:50 +0200 Subject: [PATCH 117/194] create kubecost.yaml Signed-off-by: philipp.achmueller --- microsite/data/plugins/kubecost.yaml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 microsite/data/plugins/kubecost.yaml diff --git a/microsite/data/plugins/kubecost.yaml b/microsite/data/plugins/kubecost.yaml new file mode 100644 index 0000000000..7f127fd528 --- /dev/null +++ b/microsite/data/plugins/kubecost.yaml @@ -0,0 +1,11 @@ +--- +title: Kubecost +author: suxess-it +authorUrl: https://github.com/suxess-it +category: Discovery +description: show all k8sgpt results of the k8sgpt operator related to your entity +description: Get cost insights from Kubecost Installation for your k8s deployments +documentation: https://github.com/suxess-it/backstage-plugin-kubecost/blob/main/README.md +iconUrl: https://avatars.githubusercontent.com/u/45108136?s=200&v=4 +npmPackageName: '@suxess-it/backstage-plugin-kubecost' +addedDate: '2023-06-29' From 3632b87c29a0e292e53b4e8eb90a9a5e5ebdc6f1 Mon Sep 17 00:00:00 2001 From: "philipp.achmueller" Date: Thu, 29 Jun 2023 13:53:07 +0200 Subject: [PATCH 118/194] update kubecost.yaml Signed-off-by: philipp.achmueller --- microsite/data/plugins/kubecost.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/microsite/data/plugins/kubecost.yaml b/microsite/data/plugins/kubecost.yaml index 7f127fd528..f1f4ff1218 100644 --- a/microsite/data/plugins/kubecost.yaml +++ b/microsite/data/plugins/kubecost.yaml @@ -3,7 +3,6 @@ title: Kubecost author: suxess-it authorUrl: https://github.com/suxess-it category: Discovery -description: show all k8sgpt results of the k8sgpt operator related to your entity description: Get cost insights from Kubecost Installation for your k8s deployments documentation: https://github.com/suxess-it/backstage-plugin-kubecost/blob/main/README.md iconUrl: https://avatars.githubusercontent.com/u/45108136?s=200&v=4 From c27ae5004fc2edb7fa66272e597656a612a3fbcb Mon Sep 17 00:00:00 2001 From: Karthik Prabhu K Date: Thu, 29 Jun 2023 22:00:57 +0530 Subject: [PATCH 119/194] Support for configuring the desired Client Authentication Method for the token endpoint for the OIDC Provider Signed-off-by: Karthik Prabhu K --- .changeset/tender-clouds-promise.md | 5 +++++ app-config.yaml | 1 + docs/auth/oidc.md | 2 +- plugins/auth-backend/src/providers/oidc/provider.test.ts | 1 + plugins/auth-backend/src/providers/oidc/provider.ts | 8 ++++++++ 5 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 .changeset/tender-clouds-promise.md diff --git a/.changeset/tender-clouds-promise.md b/.changeset/tender-clouds-promise.md new file mode 100644 index 0000000000..171ffb0174 --- /dev/null +++ b/.changeset/tender-clouds-promise.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-auth-backend': minor +--- + +Support for Token Endpoint Auth Method for OIDC Provider diff --git a/app-config.yaml b/app-config.yaml index a4a332efdc..2b562ee689 100644 --- a/app-config.yaml +++ b/app-config.yaml @@ -354,6 +354,7 @@ auth: clientSecret: ${AUTH_OIDC_CLIENT_SECRET} authorizationUrl: ${AUTH_OIDC_AUTH_URL} tokenUrl: ${AUTH_OIDC_TOKEN_URL} + tokenEndpointAuthMethod: ${AUTH_OIDC_TOKEN_ENDPOINT_AUTH_METHOD} # default='client_secret_basic' tokenSignedResponseAlg: ${AUTH_OIDC_TOKEN_SIGNED_RESPONSE_ALG} # default='RS256' scope: ${AUTH_OIDC_SCOPE} # default='openid profile email' prompt: ${AUTH_OIDC_PROMPT} # default=none (allowed values: auto, none, consent, login) diff --git a/docs/auth/oidc.md b/docs/auth/oidc.md index 9c681b7360..39c18ce0aa 100644 --- a/docs/auth/oidc.md +++ b/docs/auth/oidc.md @@ -237,7 +237,7 @@ check the App Registration you created: - `metadataUrl`: In Overview > Endpoints tab, grab OpenID Connect metadata document URL. - `authorizationUrl` and `tokenUrl`: Open the `metadataUrl` in a browser, that json will hold these 2 urls somewhere in there. -- `tokenSignedResponseAlg`: Don't define it, use the default unless you know what it does. +- `tokenEndpointAuthMethod` and `tokenSignedResponseAlg`: Don't define it, use the default unless you know what it does. - `scope`: Only used if we didn't specify `defaultScopes` in the provider's factory, basically the same thing. - `prompt`: Recommended to use `auto` so the browser will request login to the IDP if the diff --git a/plugins/auth-backend/src/providers/oidc/provider.test.ts b/plugins/auth-backend/src/providers/oidc/provider.test.ts index 2285b60ed0..7161ef1d6b 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.test.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.test.ts @@ -53,6 +53,7 @@ const clientMetadata: Options = { clientId: 'testclientid', clientSecret: 'testclientsecret', metadataUrl: 'https://oidc.test/.well-known/openid-configuration', + tokenEndpointAuthMethod: 'none', tokenSignedResponseAlg: 'none', }; diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts index ed59611f21..73c5feef4b 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.ts @@ -17,6 +17,7 @@ import express from 'express'; import { Client, + ClientAuthMethod, Issuer, Strategy as OidcStrategy, TokenSet, @@ -72,6 +73,7 @@ export type Options = OAuthProviderOptions & { metadataUrl: string; scope?: string; prompt?: string; + tokenEndpointAuthMethod?: ClientAuthMethod; tokenSignedResponseAlg?: string; signInResolver?: SignInResolver; authHandler: AuthHandler; @@ -144,6 +146,8 @@ export class OidcAuthProvider implements OAuthHandlers { client_secret: options.clientSecret, redirect_uris: [options.callbackUrl], response_types: ['code'], + token_endpoint_auth_method: + options.tokenEndpointAuthMethod || 'client_secret_basic', id_token_signed_response_alg: options.tokenSignedResponseAlg || 'RS256', scope: options.scope || '', }); @@ -232,6 +236,9 @@ export const oidc = createAuthProviderIntegration({ customCallbackUrl || `${globalConfig.baseUrl}/${providerId}/handler/frame`; const metadataUrl = envConfig.getString('metadataUrl'); + const tokenEndpointAuthMethod = envConfig.getOptional( + 'tokenEndpointAuthMethod', + ); const tokenSignedResponseAlg = envConfig.getOptionalString( 'tokenSignedResponseAlg', ); @@ -252,6 +259,7 @@ export const oidc = createAuthProviderIntegration({ clientId, clientSecret, callbackUrl, + tokenEndpointAuthMethod, tokenSignedResponseAlg, metadataUrl, scope, From 63e880700e4b5c727161ad58908d80f199afafb6 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Fri, 30 Jun 2023 00:05:00 +0530 Subject: [PATCH 120/194] do not export catalog-import Signed-off-by: Himanshu Mishra --- .../StepFinishImportLocation/StepFinishImportLocation.tsx | 8 +++++++- plugins/catalog-import/src/components/useImportState.ts | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx index 4d09b9129f..1d566253c3 100644 --- a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx +++ b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx @@ -19,7 +19,7 @@ import LocationOnIcon from '@material-ui/icons/LocationOn'; import React from 'react'; import { BackButton, ViewComponentButton } from '../Buttons'; import { EntityListComponent } from '../EntityListComponent'; -import { PrepareResult, NewLocations } from '../useImportState'; +import { PrepareResult } from '../useImportState'; import { Link } from '@backstage/core-components'; import partition from 'lodash/partition'; import { CompoundEntityRef } from '@backstage/catalog-model'; @@ -31,6 +31,12 @@ type Props = { onReset: () => void; }; +type NewLocations = Array<{ + exists?: boolean; + target: string; + entities: CompoundEntityRef[]; +}>; + // Among the newly registered entities, return a software entity (e.g. Component, API, Resource) const filterComponentEntity = ( newLocations: NewLocations, diff --git a/plugins/catalog-import/src/components/useImportState.ts b/plugins/catalog-import/src/components/useImportState.ts index da34b8b1d7..01649d5edb 100644 --- a/plugins/catalog-import/src/components/useImportState.ts +++ b/plugins/catalog-import/src/components/useImportState.ts @@ -32,7 +32,7 @@ export type ImportFlows = // the available states of the stepper type ImportStateTypes = 'analyze' | 'prepare' | 'review' | 'finish'; -export type NewLocations = Array<{ +type NewLocations = Array<{ exists?: boolean; target: string; entities: CompoundEntityRef[]; From b9b33e682a6fcd91851a3047853a764a35d6469b Mon Sep 17 00:00:00 2001 From: Marco Reyes R Date: Thu, 29 Jun 2023 23:02:27 -0400 Subject: [PATCH 121/194] docs(analytics): add GA4 as supported analytics tool Signed-off-by: Marco Reyes R --- docs/plugins/analytics.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/plugins/analytics.md b/docs/plugins/analytics.md index c218a99d18..3e782b4460 100644 --- a/docs/plugins/analytics.md +++ b/docs/plugins/analytics.md @@ -34,15 +34,17 @@ is a concrete implementation of [AnalyticsApi][analytics-api-type], common integrations are packaged and provided as plugins. Find your analytics tool of choice below. -| Analytics Tool | Support Status | -| ---------------------- | -------------- | -| [Google Analytics][ga] | Yes ✅ | +| Analytics Tool | Support Status | +| ------------------------- | -------------- | +| [Google Analytics][ga] | Yes ✅ | +| [Google Analytics 4][ga4] | Yes ✅ | To suggest an integration, please [open an issue][add-tool] for the analytics tool your organization uses. Or jump to [Writing Integrations][int-howto] to learn how to contribute the integration yourself! [ga]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-ga/README.md +[ga4]: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-ga4/README.md [add-tool]: https://github.com/backstage/backstage/issues/new?assignees=&labels=plugin&template=plugin_template.md&title=%5BAnalytics+Module%5D+THE+ANALYTICS+TOOL+TO+INTEGRATE [int-howto]: #writing-integrations [analytics-api-type]: https://backstage.io/docs/reference/core-plugin-api.analyticsapi From 1fb2215754e247c9291902e55e059ec10c370ad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Sterba?= Date: Fri, 30 Jun 2023 12:02:51 +0200 Subject: [PATCH 122/194] Improve postgres connection config example MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Sterba --- docs/getting-started/configuration.md | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 87995746d8..7a5e59ba75 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -71,7 +71,7 @@ yarn add --cwd packages/backend pg ``` Use your favorite editor to open `app-config.yaml` and add your PostgreSQL -configuration. in the root directory of your Backstage app using the credentials +configuration in the root directory of your Backstage app using the credentials from the previous steps. ```yaml title="app-config.yaml" @@ -90,10 +90,15 @@ backend: user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} # https://node-postgres.com/features/ssl - # ssl: require # see https://www.postgresql.org/docs/current/libpq-ssl.html Table 33.1. SSL Mode Descriptions (e.g. require) - #ca: # if you have a CA file and want to verify it you can uncomment this section - #$file: /ca/server.crt - # highlight-add-end + # ssl: + # host: ${POSTGRES_HOST} + # ca: + # $file: /server.pem + # key: + # $file: /client.key + # cert: + # $file: /client-cert.pem + # highlight-add-end ``` You'll use the connection details from the previous step. You can either set the From 76638e50203a056dc6f75f22ea04dd96741f60a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Sterba?= Date: Fri, 30 Jun 2023 13:55:58 +0200 Subject: [PATCH 123/194] Apply feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Sterba --- docs/getting-started/configuration.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/getting-started/configuration.md b/docs/getting-started/configuration.md index 7a5e59ba75..17f07811c0 100644 --- a/docs/getting-started/configuration.md +++ b/docs/getting-started/configuration.md @@ -91,7 +91,9 @@ backend: password: ${POSTGRES_PASSWORD} # https://node-postgres.com/features/ssl # ssl: - # host: ${POSTGRES_HOST} + # host is only needed if the connection name differs from the certificate name. + # This is for example the case with CloudSQL. + # host: servername in the certificate # ca: # $file: /server.pem # key: From 28ce7aef22bf799258c976373f91e3accddb2eff Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Sat, 1 Jul 2023 10:08:35 -0400 Subject: [PATCH 124/194] chore: Remove deprecated reference Signed-off-by: Adam Harvey --- .../kubernetes-backend/src/service/standaloneApplication.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/kubernetes-backend/src/service/standaloneApplication.ts b/plugins/kubernetes-backend/src/service/standaloneApplication.ts index e3afb5a385..dd87d33827 100644 --- a/plugins/kubernetes-backend/src/service/standaloneApplication.ts +++ b/plugins/kubernetes-backend/src/service/standaloneApplication.ts @@ -18,7 +18,7 @@ import { errorHandler, notFoundHandler, requestLoggingHandler, - SingleHostDiscovery, + HostDiscovery, } from '@backstage/backend-common'; import compression from 'compression'; import cors from 'cors'; @@ -40,12 +40,12 @@ export async function createStandaloneApplication( ): Promise { const { enableCors, logger } = options; const config = new ConfigReader({}); - const discovery = SingleHostDiscovery.fromConfig(config); + const discovery = HostDiscovery.fromConfig(config); const app = express(); const catalogApi = new CatalogClient({ - discoveryApi: SingleHostDiscovery.fromConfig(config), + discoveryApi: HostDiscovery.fromConfig(config), }); const permissions = {} as PermissionEvaluator; From 4db037c2014889c0e7c736eba9fb7144d803599e Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Sat, 1 Jul 2023 10:09:24 -0400 Subject: [PATCH 125/194] chore: Add changeset Signed-off-by: Adam Harvey --- .changeset/beige-actors-melt.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/beige-actors-melt.md diff --git a/.changeset/beige-actors-melt.md b/.changeset/beige-actors-melt.md new file mode 100644 index 0000000000..2329a0e0ac --- /dev/null +++ b/.changeset/beige-actors-melt.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Replace reference to deprecated import From e2299a6ff5b3b22555f3fb34f03f63cd3628f685 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Sat, 1 Jul 2023 10:26:44 -0400 Subject: [PATCH 126/194] chore: Make headings consistent without trailing colon Signed-off-by: Adam Harvey --- plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx b/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx index e70eeb8fb7..82739be0fb 100644 --- a/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx +++ b/plugins/kubernetes/src/components/Pods/PodDrawer/PodDrawer.tsx @@ -173,7 +173,7 @@ export const PodDrawer = ({ podAndErrors, open }: PodDrawerProps) => {
{podAndErrors.errors.length > 0 && ( - Errors: + Errors )} {podAndErrors.errors.length > 0 && ( From d62fc3fe85ba552fcb5152b5ec86d45b28c71f21 Mon Sep 17 00:00:00 2001 From: Adam Harvey Date: Sat, 1 Jul 2023 10:27:12 -0400 Subject: [PATCH 127/194] chore: Add changeset Signed-off-by: Adam Harvey --- .changeset/red-cherries-draw.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/red-cherries-draw.md diff --git a/.changeset/red-cherries-draw.md b/.changeset/red-cherries-draw.md new file mode 100644 index 0000000000..a199802231 --- /dev/null +++ b/.changeset/red-cherries-draw.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes': patch +--- + +Make pod drawer headings consistent From e8bdccc00ca33102b27a14a4e522765aeee4ef48 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Sun, 2 Jul 2023 19:04:10 +0200 Subject: [PATCH 128/194] scaffolder-backend: add snyk ignore Signed-off-by: Patrik Oldsberg --- plugins/scaffolder-backend/.snyk | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 plugins/scaffolder-backend/.snyk diff --git a/plugins/scaffolder-backend/.snyk b/plugins/scaffolder-backend/.snyk new file mode 100644 index 0000000000..ea5abd653d --- /dev/null +++ b/plugins/scaffolder-backend/.snyk @@ -0,0 +1,10 @@ +# Snyk (https://snyk.io) policy file, patches or ignores known vulnerabilities. +version: v1.22.1 +# ignores vulnerabilities until expiry date; change duration by modifying expiry date +ignore: + SNYK-JS-ISOLATEDVM-3037320: + - '*': + reason: We do not pass any V8 cache data, and are therefore unaffected by this vulnerability + expires: 2033-07-02T16:55:57.077Z + created: 2023-07-02T16:55:57.077Z +patch: {} From 7024725fcd0c3a3f85bcdca8b8b25d4b3ee3bb0b Mon Sep 17 00:00:00 2001 From: Johannes Kleinlercher Date: Mon, 3 Jul 2023 08:49:25 +0200 Subject: [PATCH 129/194] fix: upper case typo Signed-off-by: Johannes Kleinlercher --- microsite/data/plugins/k8sgpt.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/k8sgpt.yaml b/microsite/data/plugins/k8sgpt.yaml index f8a5d9e449..a8b38dc8b4 100644 --- a/microsite/data/plugins/k8sgpt.yaml +++ b/microsite/data/plugins/k8sgpt.yaml @@ -2,7 +2,7 @@ title: k8sgpt author: suxess-it authorUrl: github.com/suxess-it -category: monitoring +category: Monitoring description: show all k8sgpt results of the k8sgpt operator related to your entity documentation: https://github.com/suxess-it/backstage-plugin-k8sgpt/blob/main/README.md iconUrl: https://raw.githubusercontent.com/k8sgpt-ai/k8sgpt/1a81227d6148be59b7b9ae4e9ae5e2d9a5b7a9ae/images/banner-white.png From 76b83a4422bb45fc755a62aa259ba5016f269b8a Mon Sep 17 00:00:00 2001 From: Ant Weiss Date: Mon, 3 Jul 2023 12:02:51 +0300 Subject: [PATCH 130/194] Fix #18524 - add instruction to install deps when run with --skip-install Signed-off-by: Ant Weiss --- .changeset/cold-hounds-cheat.md | 5 +++++ packages/create-app/src/createApp.ts | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 .changeset/cold-hounds-cheat.md diff --git a/.changeset/cold-hounds-cheat.md b/.changeset/cold-hounds-cheat.md new file mode 100644 index 0000000000..0bff4f55ad --- /dev/null +++ b/.changeset/cold-hounds-cheat.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Post-create message - added instruction to run `yarn install` when app was created with `--skip-install` diff --git a/packages/create-app/src/createApp.ts b/packages/create-app/src/createApp.ts index 3e66b9801d..87fad319be 100644 --- a/packages/create-app/src/createApp.ts +++ b/packages/create-app/src/createApp.ts @@ -129,6 +129,13 @@ export default async (opts: OptionValues): Promise => { ); Task.log(); Task.section('All set! Now you might want to'); + if (!opts.skipInstall) { + Task.log( + ` Install the dependencies: ${chalk.cyan( + `cd ${answers.name} && yarn install`, + )}`, + ); + } Task.log(` Run the app: ${chalk.cyan(`cd ${answers.name} && yarn dev`)}`); Task.log( ' Set up the software catalog: https://backstage.io/docs/features/software-catalog/configuration', From 08b075b00a4e7927559940b30984925abb33b489 Mon Sep 17 00:00:00 2001 From: Himanshu Mishra Date: Mon, 3 Jul 2023 15:40:10 +0530 Subject: [PATCH 131/194] catalog-import: use type locally Signed-off-by: Himanshu Mishra --- plugins/catalog-import/api-report.md | 7 +++++-- .../StepFinishImportLocation.tsx | 12 +++++------- .../catalog-import/src/components/useImportState.ts | 12 +++++------- 3 files changed, 15 insertions(+), 16 deletions(-) diff --git a/plugins/catalog-import/api-report.md b/plugins/catalog-import/api-report.md index 7fd3bd9dd6..b4c8e854aa 100644 --- a/plugins/catalog-import/api-report.md +++ b/plugins/catalog-import/api-report.md @@ -244,7 +244,11 @@ export type PreparePullRequestFormProps< export type PrepareResult = | { type: 'locations'; - locations: NewLocations; + locations: Array<{ + exists?: boolean; + target: string; + entities: CompoundEntityRef[]; + }>; } | { type: 'repository'; @@ -360,5 +364,4 @@ export interface StepPrepareCreatePullRequestProps { // Warnings were encountered during analysis: // // src/api/CatalogImportApi.d.ts:25:5 - (ae-forgotten-export) The symbol "PartialEntity" needs to be exported by the entry point index.d.ts -// src/components/useImportState.d.ts:21:5 - (ae-forgotten-export) The symbol "NewLocations" needs to be exported by the entry point index.d.ts ``` diff --git a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx index 1d566253c3..38372e59ba 100644 --- a/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx +++ b/plugins/catalog-import/src/components/StepFinishImportLocation/StepFinishImportLocation.tsx @@ -31,15 +31,13 @@ type Props = { onReset: () => void; }; -type NewLocations = Array<{ - exists?: boolean; - target: string; - entities: CompoundEntityRef[]; -}>; - // Among the newly registered entities, return a software entity (e.g. Component, API, Resource) const filterComponentEntity = ( - newLocations: NewLocations, + newLocations: Array<{ + exists?: boolean; + target: string; + entities: CompoundEntityRef[]; + }>, ): CompoundEntityRef | null => { for (const location of newLocations) { for (const entity of location.entities) { diff --git a/plugins/catalog-import/src/components/useImportState.ts b/plugins/catalog-import/src/components/useImportState.ts index 01649d5edb..965f855f30 100644 --- a/plugins/catalog-import/src/components/useImportState.ts +++ b/plugins/catalog-import/src/components/useImportState.ts @@ -32,12 +32,6 @@ export type ImportFlows = // the available states of the stepper type ImportStateTypes = 'analyze' | 'prepare' | 'review' | 'finish'; -type NewLocations = Array<{ - exists?: boolean; - target: string; - entities: CompoundEntityRef[]; -}>; - /** * Result of the prepare state. * @@ -46,7 +40,11 @@ type NewLocations = Array<{ export type PrepareResult = | { type: 'locations'; - locations: NewLocations; + locations: Array<{ + exists?: boolean; + target: string; + entities: CompoundEntityRef[]; + }>; } | { type: 'repository'; From 0aa1daf1e374a9618fa76f6df0c193df81984908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 3 Jul 2023 12:37:08 +0200 Subject: [PATCH 132/194] remove changeset MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/forty-onions-kick.md | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 .changeset/forty-onions-kick.md diff --git a/.changeset/forty-onions-kick.md b/.changeset/forty-onions-kick.md deleted file mode 100644 index 74be2c142e..0000000000 --- a/.changeset/forty-onions-kick.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-catalog-backend': patch ---- - -Run the `deleteWithEagerPruningOfChildren` test without transactions, to try to get rid of CI flakiness From 9fdae5ef33032fd7da724af8f772545121686619 Mon Sep 17 00:00:00 2001 From: Karthik Prabhu K Date: Mon, 3 Jul 2023 23:12:54 +0530 Subject: [PATCH 133/194] Updated documentation Signed-off-by: Karthik Prabhu K --- docs/auth/oidc.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/auth/oidc.md b/docs/auth/oidc.md index 39c18ce0aa..1882cb73f1 100644 --- a/docs/auth/oidc.md +++ b/docs/auth/oidc.md @@ -237,7 +237,8 @@ check the App Registration you created: - `metadataUrl`: In Overview > Endpoints tab, grab OpenID Connect metadata document URL. - `authorizationUrl` and `tokenUrl`: Open the `metadataUrl` in a browser, that json will hold these 2 urls somewhere in there. -- `tokenEndpointAuthMethod` and `tokenSignedResponseAlg`: Don't define it, use the default unless you know what it does. +- `tokenEndpointAuthMethod`: Don't define it, use the default unless you know what it does. +- `tokenSignedResponseAlg`: Don't define it, use the default unless you know what it does. - `scope`: Only used if we didn't specify `defaultScopes` in the provider's factory, basically the same thing. - `prompt`: Recommended to use `auto` so the browser will request login to the IDP if the From d0c25afed231c34e12e3d97abd075e0c45ba8dc0 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Tue, 4 Jul 2023 10:21:00 +0200 Subject: [PATCH 134/194] Update tender-clouds-promise.md Signed-off-by: Ben Lambert --- .changeset/tender-clouds-promise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/tender-clouds-promise.md b/.changeset/tender-clouds-promise.md index 171ffb0174..3bc83b1482 100644 --- a/.changeset/tender-clouds-promise.md +++ b/.changeset/tender-clouds-promise.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-auth-backend': minor +'@backstage/plugin-auth-backend': patch --- Support for Token Endpoint Auth Method for OIDC Provider From ec04fc53d5d9d3f1f11a54998852875bb0813509 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Tue, 4 Jul 2023 10:22:36 +0200 Subject: [PATCH 135/194] Update provider.ts Signed-off-by: Ben Lambert --- plugins/auth-backend/src/providers/oidc/provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts index 73c5feef4b..49ecc6de8c 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.ts @@ -236,7 +236,7 @@ export const oidc = createAuthProviderIntegration({ customCallbackUrl || `${globalConfig.baseUrl}/${providerId}/handler/frame`; const metadataUrl = envConfig.getString('metadataUrl'); - const tokenEndpointAuthMethod = envConfig.getOptional( + const tokenEndpointAuthMethod = envConfig.getOptionalString( 'tokenEndpointAuthMethod', ); const tokenSignedResponseAlg = envConfig.getOptionalString( From be4d6aefbd314bb0cbb6b731574b2032a3b935c8 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Tue, 4 Jul 2023 10:25:15 +0200 Subject: [PATCH 136/194] Update provider.ts Signed-off-by: Ben Lambert --- plugins/auth-backend/src/providers/oidc/provider.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts index 49ecc6de8c..ab4e1f7ee0 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.ts @@ -1,4 +1,4 @@ -/* +z/* * Copyright 2020 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -236,9 +236,9 @@ export const oidc = createAuthProviderIntegration({ customCallbackUrl || `${globalConfig.baseUrl}/${providerId}/handler/frame`; const metadataUrl = envConfig.getString('metadataUrl'); - const tokenEndpointAuthMethod = envConfig.getOptionalString( + const tokenEndpointAuthMethod = envConfig.getOptionalString( 'tokenEndpointAuthMethod', - ); + ) as ClientAuthMethod; const tokenSignedResponseAlg = envConfig.getOptionalString( 'tokenSignedResponseAlg', ); From bd82e8c0183a0ffa4edaeae295354ff031b2049e Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 4 Jul 2023 10:45:28 +0200 Subject: [PATCH 137/194] chore: woops fix the additional char Signed-off-by: blam --- plugins/auth-backend/src/providers/oidc/provider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/auth-backend/src/providers/oidc/provider.ts b/plugins/auth-backend/src/providers/oidc/provider.ts index ab4e1f7ee0..7638027b01 100644 --- a/plugins/auth-backend/src/providers/oidc/provider.ts +++ b/plugins/auth-backend/src/providers/oidc/provider.ts @@ -1,4 +1,4 @@ -z/* +/* * Copyright 2020 The Backstage Authors * * Licensed under the Apache License, Version 2.0 (the "License"); From 72b2f70f44dbea364eacd13313214451908b5fef Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 28 Jun 2023 12:23:34 +0000 Subject: [PATCH 138/194] fix(deps): update dependency @roadiehq/backstage-plugin-travis-ci to v2.1.12 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index bb795ca564..65e512eda5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14704,14 +14704,14 @@ __metadata: linkType: hard "@roadiehq/backstage-plugin-travis-ci@npm:^2.0.5": - version: 2.1.11 - resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.11" + version: 2.1.12 + resolution: "@roadiehq/backstage-plugin-travis-ci@npm:2.1.12" dependencies: - "@backstage/catalog-model": ^1.3.0 - "@backstage/core-components": ^0.13.1 - "@backstage/core-plugin-api": ^1.5.1 - "@backstage/plugin-catalog-react": ^1.6.0 - "@backstage/theme": ^0.3.0 + "@backstage/catalog-model": ^1.4.0 + "@backstage/core-components": ^0.13.2 + "@backstage/core-plugin-api": ^1.5.2 + "@backstage/plugin-catalog-react": ^1.7.0 + "@backstage/theme": ^0.4.0 "@material-ui/core": ^4.11.3 "@material-ui/icons": ^4.11.2 "@material-ui/lab": 4.0.0-alpha.57 @@ -14725,7 +14725,7 @@ __metadata: react-dom: ^16.13.1 || ^17.0.0 react-router: 6.0.0-beta.0 || ^6.3.0 react-router-dom: 6.0.0-beta.0 || ^6.3.0 - checksum: 1da335f35de55e77bafdf4893fd1a66d3fa5b5adc05a6d88a97b484bd4c4a5ac3c23e6a2104ceef64fcbdf45f950d489536ceb3ec01e0f3f51dbae9392159a62 + checksum: e4e5b91323104ea7fe6608333960d92f7670fc1f6372c5942ca35cbaeb48f542dc7162f7e7a81f859a353124e6b94e0be776f43e690c8f9fa66f66986dca97f6 languageName: node linkType: hard From 7b4becd9091f2cfebbe76e497d2f07d79b94ec7f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 08:55:54 +0000 Subject: [PATCH 139/194] chore(deps): update dependency @types/node to v16.18.38 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/yarn.lock b/yarn.lock index 98329d1e28..4fa231a590 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17346,9 +17346,9 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=12.12.47, @types/node@npm:>=13.7.0": - version: 20.3.2 - resolution: "@types/node@npm:20.3.2" - checksum: 5929ce2b9b12b1e2a2304a0921a953c72a81f5753ad39ac43b99ce6312fbb2b4fb5bc6b60d64a2550704e3223cd5de1299467d36085ac69888899db978f2653a + version: 20.3.3 + resolution: "@types/node@npm:20.3.3" + checksum: 7a0d00800451ca8cd8df63a8cc218c697edadb3143bf46cd6afeb974542a6a1665c3679459be0016c29216ccfed6616b7e55851747527dfa71c5608d9157528c languageName: node linkType: hard @@ -17367,9 +17367,9 @@ __metadata: linkType: hard "@types/node@npm:^14.14.31": - version: 14.18.52 - resolution: "@types/node@npm:14.18.52" - checksum: e9b0e56f0856c0ad901b1b92a1d9c7c96ab140697fa730f0e96571052b085446f18826ac8040bf4569b0ba92dcc8c189a7c87852a81b85911ad858df724d4538 + version: 14.18.53 + resolution: "@types/node@npm:14.18.53" + checksum: 3acbcf4e38cdc5999c824db5c6689ca8f4a185562aad5c0263d9859381d8590a16e6a72343aeb30d48ff9a7ac9b6ae259bcb8c2d594703a30d12277904524704 languageName: node linkType: hard @@ -17381,16 +17381,16 @@ __metadata: linkType: hard "@types/node@npm:^16.0.0, @types/node@npm:^16.11.26, @types/node@npm:^16.9.2": - version: 16.18.37 - resolution: "@types/node@npm:16.18.37" - checksum: ac9549a48ded76f99185e0bdd3f52af202229688d0000af250ce4060e22991cb0e2f950c5de25125ef6221cb092ebdf195eb2e9edfc0a49623252c73be2fa0e0 + version: 16.18.38 + resolution: "@types/node@npm:16.18.38" + checksum: a3baa141e49ce94486f083eea1240cf38479a73ba663e1bf3f52f85b466125821b6e3ea85ded38fde3901530aca4601291395a50eefcea533a4f3b45171bda28 languageName: node linkType: hard "@types/node@npm:^18.11.17": - version: 18.16.18 - resolution: "@types/node@npm:18.16.18" - checksum: d32d8a0a04cd3f5ecb361bcb42f3a07623881ac90d680e06bf626defb3c663a94860d11690babe607cfe67265eceeb8a59ba5fe40c0e49f5a1b01e0088640469 + version: 18.16.19 + resolution: "@types/node@npm:18.16.19" + checksum: 63c31f09616508aa7135380a4c79470a897b75f9ff3a70eb069e534dfabdec3f32fb0f9df5939127f1086614d980ddea0fa5e8cc29a49103c4f74cd687618aaf languageName: node linkType: hard From 8611eabe97064ce209d8a7ad4c605f4b62e21d95 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 13:36:39 +0000 Subject: [PATCH 140/194] chore(deps): update dependency cross-fetch to v3.1.8 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 36 ++++++++++++------------------------ 1 file changed, 12 insertions(+), 24 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7db02933a2..1c3da1701e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3839,7 +3839,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@npm:^1.1.5, @backstage/catalog-model@npm:^1.3.0, @backstage/catalog-model@npm:^1.4.0": +"@backstage/catalog-model@npm:^1.1.5, @backstage/catalog-model@npm:^1.4.0": version: 1.4.0 resolution: "@backstage/catalog-model@npm:1.4.0" dependencies: @@ -4198,7 +4198,7 @@ __metadata: languageName: node linkType: hard -"@backstage/core-components@npm:^0.13.1, @backstage/core-components@npm:^0.13.2": +"@backstage/core-components@npm:^0.13.2": version: 0.13.2 resolution: "@backstage/core-components@npm:0.13.2" dependencies: @@ -4325,7 +4325,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.1, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -5852,7 +5852,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.6.0, @backstage/plugin-catalog-react@npm:^1.7.0": +"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.7.0": version: 1.7.0 resolution: "@backstage/plugin-catalog-react@npm:1.7.0" dependencies: @@ -10001,18 +10001,6 @@ __metadata: languageName: node linkType: hard -"@backstage/theme@npm:^0.3.0": - version: 0.3.0 - resolution: "@backstage/theme@npm:0.3.0" - dependencies: - "@material-ui/core": ^4.12.2 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - checksum: 3f9c9452a88d214c13c0136302641ee87424649bdc943c993e98fc7eb08904adf14719a7f5b7d863368d68b08276f18f4e5352c9661fcec78688fb52bd34a22f - languageName: node - linkType: hard - "@backstage/types@^1.0.2, @backstage/types@^1.1.0, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" @@ -22068,11 +22056,11 @@ __metadata: linkType: hard "cross-fetch@npm:^3.1.3, cross-fetch@npm:^3.1.5, cross-fetch@npm:^3.1.6": - version: 3.1.6 - resolution: "cross-fetch@npm:3.1.6" + version: 3.1.8 + resolution: "cross-fetch@npm:3.1.8" dependencies: - node-fetch: ^2.6.11 - checksum: 704b3519ab7de488328cc49a52cf1aa14132ec748382be5b9557b22398c33ffa7f8c2530e8a97ed8cb55da52b0a9740a9791d361271c4591910501682d981d9c + node-fetch: ^2.6.12 + checksum: 78f993fa099eaaa041122ab037fe9503ecbbcb9daef234d1d2e0b9230a983f64d645d088c464e21a247b825a08dc444a6e7064adfa93536d3a9454b4745b3632 languageName: node linkType: hard @@ -32888,9 +32876,9 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.11, node-fetch@npm:^2.6.5, node-fetch@npm:^2.6.7": - version: 2.6.11 - resolution: "node-fetch@npm:2.6.11" +"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.5, node-fetch@npm:^2.6.7": + version: 2.6.12 + resolution: "node-fetch@npm:2.6.12" dependencies: whatwg-url: ^5.0.0 peerDependencies: @@ -32898,7 +32886,7 @@ __metadata: peerDependenciesMeta: encoding: optional: true - checksum: 249d0666a9497553384d46b5ab296ba223521ac88fed4d8a17d6ee6c2efb0fc890f3e8091cafe7f9fba8151a5b8d925db2671543b3409a56c3cd522b468b47b3 + checksum: 3bc1655203d47ee8e313c0d96664b9673a3d4dd8002740318e9d27d14ef306693a4b2ef8d6525775056fd912a19e23f3ac0d7111ad8925877b7567b29a625592 languageName: node linkType: hard From d826f58aa52451c5fa697eabc23ad35990d408ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 13:38:20 +0000 Subject: [PATCH 141/194] chore(deps): update dependency webpack to v5.88.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- storybook/yarn.lock | 6 +++--- yarn.lock | 26 +++++++------------------- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/storybook/yarn.lock b/storybook/yarn.lock index b72656352f..529843240d 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -11739,8 +11739,8 @@ __metadata: linkType: hard "webpack@npm:^5.73.0": - version: 5.88.0 - resolution: "webpack@npm:5.88.0" + version: 5.88.1 + resolution: "webpack@npm:5.88.1" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -11771,7 +11771,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 9fd1568b34ec2e99ba97c8509a15ab2576ec80c396e7015551ec814b24cfc11de173acba3e114dafe95f1a6d460781b09d6201e6a1fb15110e1d01a09f61a283 + checksum: 726e7e05ab2e7c142609a673dd6aa1a711ed97f349418a2a393d650c5ddad172d191257f60e1e37f6b2a77261571c202aabd5ce9240791a686774f0801cf5ec2 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index 7db02933a2..598269aaf2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3839,7 +3839,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@npm:^1.1.5, @backstage/catalog-model@npm:^1.3.0, @backstage/catalog-model@npm:^1.4.0": +"@backstage/catalog-model@npm:^1.1.5, @backstage/catalog-model@npm:^1.4.0": version: 1.4.0 resolution: "@backstage/catalog-model@npm:1.4.0" dependencies: @@ -4198,7 +4198,7 @@ __metadata: languageName: node linkType: hard -"@backstage/core-components@npm:^0.13.1, @backstage/core-components@npm:^0.13.2": +"@backstage/core-components@npm:^0.13.2": version: 0.13.2 resolution: "@backstage/core-components@npm:0.13.2" dependencies: @@ -4325,7 +4325,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.1, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -5852,7 +5852,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.6.0, @backstage/plugin-catalog-react@npm:^1.7.0": +"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.7.0": version: 1.7.0 resolution: "@backstage/plugin-catalog-react@npm:1.7.0" dependencies: @@ -10001,18 +10001,6 @@ __metadata: languageName: node linkType: hard -"@backstage/theme@npm:^0.3.0": - version: 0.3.0 - resolution: "@backstage/theme@npm:0.3.0" - dependencies: - "@material-ui/core": ^4.12.2 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - checksum: 3f9c9452a88d214c13c0136302641ee87424649bdc943c993e98fc7eb08904adf14719a7f5b7d863368d68b08276f18f4e5352c9661fcec78688fb52bd34a22f - languageName: node - linkType: hard - "@backstage/types@^1.0.2, @backstage/types@^1.1.0, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" @@ -41786,8 +41774,8 @@ __metadata: linkType: hard "webpack@npm:^5, webpack@npm:^5.70.0": - version: 5.88.0 - resolution: "webpack@npm:5.88.0" + version: 5.88.1 + resolution: "webpack@npm:5.88.1" dependencies: "@types/eslint-scope": ^3.7.3 "@types/estree": ^1.0.0 @@ -41818,7 +41806,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 9fd1568b34ec2e99ba97c8509a15ab2576ec80c396e7015551ec814b24cfc11de173acba3e114dafe95f1a6d460781b09d6201e6a1fb15110e1d01a09f61a283 + checksum: 726e7e05ab2e7c142609a673dd6aa1a711ed97f349418a2a393d650c5ddad172d191257f60e1e37f6b2a77261571c202aabd5ce9240791a686774f0801cf5ec2 languageName: node linkType: hard From c2c4538bf6c96a3471127286454dfcbeb9e18390 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 4 Jul 2023 15:41:07 +0200 Subject: [PATCH 142/194] chore: fix broken yarn.lock Signed-off-by: blam --- yarn.lock | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7db02933a2..fa5093058c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3839,7 +3839,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@npm:^1.1.5, @backstage/catalog-model@npm:^1.3.0, @backstage/catalog-model@npm:^1.4.0": +"@backstage/catalog-model@npm:^1.1.5, @backstage/catalog-model@npm:^1.4.0": version: 1.4.0 resolution: "@backstage/catalog-model@npm:1.4.0" dependencies: @@ -4198,7 +4198,7 @@ __metadata: languageName: node linkType: hard -"@backstage/core-components@npm:^0.13.1, @backstage/core-components@npm:^0.13.2": +"@backstage/core-components@npm:^0.13.2": version: 0.13.2 resolution: "@backstage/core-components@npm:0.13.2" dependencies: @@ -4325,7 +4325,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.1, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -5852,7 +5852,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.6.0, @backstage/plugin-catalog-react@npm:^1.7.0": +"@backstage/plugin-catalog-react@npm:^1.2.4, @backstage/plugin-catalog-react@npm:^1.7.0": version: 1.7.0 resolution: "@backstage/plugin-catalog-react@npm:1.7.0" dependencies: @@ -10001,18 +10001,6 @@ __metadata: languageName: node linkType: hard -"@backstage/theme@npm:^0.3.0": - version: 0.3.0 - resolution: "@backstage/theme@npm:0.3.0" - dependencies: - "@material-ui/core": ^4.12.2 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - checksum: 3f9c9452a88d214c13c0136302641ee87424649bdc943c993e98fc7eb08904adf14719a7f5b7d863368d68b08276f18f4e5352c9661fcec78688fb52bd34a22f - languageName: node - linkType: hard - "@backstage/types@^1.0.2, @backstage/types@^1.1.0, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" From 37ff86e3d11e9ae2a647afe53c7d764d93c39ed3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 13:50:03 +0000 Subject: [PATCH 143/194] chore(deps): update dependency @types/nunjucks to v3.2.3 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index fa5093058c..8bff37c030 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17397,9 +17397,9 @@ __metadata: linkType: hard "@types/nunjucks@npm:^3.1.4": - version: 3.2.2 - resolution: "@types/nunjucks@npm:3.2.2" - checksum: e0fdc68f01635b34ea6f5e8845ed6d2e8d11be6347b2f28c8093636454e2401f02c26a2ad6aa459da56f2459f2d59bf72914b6e4774bcd058fa12e2ae5f0f6ef + version: 3.2.3 + resolution: "@types/nunjucks@npm:3.2.3" + checksum: f4263a39f0bafb701fe75a088cf2100f0fe717ab29c53d13eb60fea77e945f8cfdabfb84bd6ce85fd11586f90aa36539cf5bd489166edcf56a189a0407d481a2 languageName: node linkType: hard From 7b049ccd08c0662a83e2c99df1aabdfd87d1fcae Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Tue, 4 Jul 2023 15:56:58 +0200 Subject: [PATCH 144/194] Update purple-feet-approve.md Signed-off-by: Ben Lambert --- .changeset/purple-feet-approve.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/purple-feet-approve.md b/.changeset/purple-feet-approve.md index 3d4fae478c..c3017bcc3d 100644 --- a/.changeset/purple-feet-approve.md +++ b/.changeset/purple-feet-approve.md @@ -2,4 +2,4 @@ '@backstage/core-components': minor --- -The 'Skip to content' button on click focus on the main article tag and skip the h1 tag. Users are not able to identify which page they are currently. Now this minor fix will change the behaviour o the button and focus on the h1 tag on the page +The `Skip to content` button on click focuses on the main article tag and skips the `h1` tag. Users are not able to identify which page they are on currently. Now this minor fix will change the behaviour of the button and focuses on the `h1` tag on the page. From f613d64358c33991d498518d97d0743ede3631e2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 13:59:07 +0000 Subject: [PATCH 145/194] fix(deps): update apollo graphql packages Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/yarn.lock b/yarn.lock index 38bd3937f1..523d3699ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -85,18 +85,18 @@ __metadata: languageName: node linkType: hard -"@apollo/cache-control-types@npm:^1.0.2": - version: 1.0.2 - resolution: "@apollo/cache-control-types@npm:1.0.2" +"@apollo/cache-control-types@npm:^1.0.3": + version: 1.0.3 + resolution: "@apollo/cache-control-types@npm:1.0.3" peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: 1e00c57b45fbd8656c96cdcd254658f332c1955bd8db9274c665e1c6ef8ac881a6b6a3f953b60638ae5f59fdfce6b005adb9a5b945b694903579a9665499e823 + checksum: 1c2791f3c7fa0fc609bd42cebcb6a0d1ccfcee9b22e54c4aa5af918944ae9dbdd45d7b84670afc6de34444e9226e9e82523bc3969805b506b86fd28dc9abc9fa languageName: node linkType: hard "@apollo/client@npm:^3.0.0": - version: 3.7.15 - resolution: "@apollo/client@npm:3.7.15" + version: 3.7.16 + resolution: "@apollo/client@npm:3.7.16" dependencies: "@graphql-typed-document-node/core": ^3.1.1 "@wry/context": ^0.7.0 @@ -126,7 +126,7 @@ __metadata: optional: true subscriptions-transport-ws: optional: true - checksum: a33e56847dfb7d6176ffb3cd4d3ff2c548826ce51280a6c8f70e3d75daf9d3a287e79bf3d86ea0b16e39218c90d8a7b4f528eb340055387cf9137705970c0f59 + checksum: 6c0035634a15a92d547f06d9a943e9025bef1929775f3c53eea22bcee86aa0916722a196bb9bed6a51d27a2b6ba587ef00bed3831a29be89ced9b8b63f45cbe7 languageName: node linkType: hard @@ -177,27 +177,27 @@ __metadata: languageName: node linkType: hard -"@apollo/server-gateway-interface@npm:^1.1.0": - version: 1.1.0 - resolution: "@apollo/server-gateway-interface@npm:1.1.0" +"@apollo/server-gateway-interface@npm:^1.1.1": + version: 1.1.1 + resolution: "@apollo/server-gateway-interface@npm:1.1.1" dependencies: - "@apollo/usage-reporting-protobuf": ^4.0.0 + "@apollo/usage-reporting-protobuf": ^4.1.1 "@apollo/utils.fetcher": ^2.0.0 "@apollo/utils.keyvaluecache": ^2.1.0 "@apollo/utils.logger": ^2.0.0 peerDependencies: graphql: 14.x || 15.x || 16.x - checksum: 0ad0b3b9dfb53cc664245acac638b3a3db0d56c496c8bf6c56928a92c21e9b3062bec47bd42c2c0f85a4469443467b245c772bb558c2733c1c0dde194722c82b + checksum: b85ca1682258f6d022b49acf4b6cb8147a4cc38fcc0e68fa3ca6a00843bee5b84f8317af26cbe3e6a41ede6990eb7eb733c50a123441a1efab56572b7d0fd6dc languageName: node linkType: hard "@apollo/server@npm:^4.0.0": - version: 4.7.4 - resolution: "@apollo/server@npm:4.7.4" + version: 4.7.5 + resolution: "@apollo/server@npm:4.7.5" dependencies: - "@apollo/cache-control-types": ^1.0.2 - "@apollo/server-gateway-interface": ^1.1.0 - "@apollo/usage-reporting-protobuf": ^4.1.0 + "@apollo/cache-control-types": ^1.0.3 + "@apollo/server-gateway-interface": ^1.1.1 + "@apollo/usage-reporting-protobuf": ^4.1.1 "@apollo/utils.createhash": ^2.0.0 "@apollo/utils.fetcher": ^2.0.0 "@apollo/utils.isnodelike": ^2.0.0 @@ -223,16 +223,16 @@ __metadata: whatwg-mimetype: ^3.0.0 peerDependencies: graphql: ^16.6.0 - checksum: 8cdde1ead8b0cae3ce6063ae8ca979c0a56c35b474a52a9b76b14eb9f95ecd715d40a760b9c1ec4d3690ea5b6cac71fb4cd990b4b76fbeeed4d62b963d5510eb + checksum: a0b5fd4a7e0750f84d6fb5717921a316f99a2982488146115278847f75cfe620684263f8ed6dbd2517d9a1c943504e70845cc609cb87d942b691c31ad5842cbb languageName: node linkType: hard -"@apollo/usage-reporting-protobuf@npm:^4.0.0, @apollo/usage-reporting-protobuf@npm:^4.1.0": - version: 4.1.0 - resolution: "@apollo/usage-reporting-protobuf@npm:4.1.0" +"@apollo/usage-reporting-protobuf@npm:^4.1.0, @apollo/usage-reporting-protobuf@npm:^4.1.1": + version: 4.1.1 + resolution: "@apollo/usage-reporting-protobuf@npm:4.1.1" dependencies: "@apollo/protobufjs": 1.2.7 - checksum: 442532d7077a728a499de6c2c2340d106b26f14695446361f947a14d3092e4109239a86cfb99e4bb795d913523c1f61a05bb799b45fc72615560693bbd62e645 + checksum: 899f13cfb57cfe4320e50fff84254604c25538620aa5a56bad06fb4fc929a8842237b376a5ab6d82800d9aceacc8e79ccae01a1c11e85456d4a9ed50a6fe40ee languageName: node linkType: hard From 841b42781ff20fff49de13107793c3213ccc76a7 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Fri, 30 Jun 2023 22:18:33 +0200 Subject: [PATCH 146/194] Convert spacing to px Signed-off-by: Philipp Hugenroth --- packages/theme/package.json | 3 +- packages/theme/src/unified/overrides.ts | 4 + yarn.lock | 124 +++++++++++++----------- 3 files changed, 72 insertions(+), 59 deletions(-) diff --git a/packages/theme/package.json b/packages/theme/package.json index 0cd2643146..804d2bec4c 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -34,7 +34,8 @@ "dependencies": { "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", - "@mui/material": "^5.12.2" + "@mui/material": "^5.12.2", + "@mui/system": "^5.13.6" }, "peerDependencies": { "@material-ui/core": "^4.12.2", diff --git a/packages/theme/src/unified/overrides.ts b/packages/theme/src/unified/overrides.ts index 7417fccedc..3a0e7331f8 100644 --- a/packages/theme/src/unified/overrides.ts +++ b/packages/theme/src/unified/overrides.ts @@ -17,6 +17,7 @@ import type { Overrides } from '@material-ui/core/styles/overrides'; import type { ComponentsProps } from '@material-ui/core/styles/props'; import { ComponentsOverrides, Theme, ThemeOptions } from '@mui/material/styles'; +import { createSpacing } from '@mui/system'; import { CSSProperties } from 'react'; type V5Override = ComponentsOverrides[Exclude< @@ -60,6 +61,9 @@ function adaptV5Override( return Object.fromEntries( Object.entries(overrides).map(([className, style]) => { if (typeof style === 'function') { + // Override potential v4 spacing method: https://mui.com/material-ui/migration/v5-style-changes/#%E2%9C%85-remove-px-suffix + // `adaptV4Theme as reference: https://github.com/mui/material-ui/blob/v5.x/packages/mui-material/src/styles/adaptV4Theme.js#L54C41-L54C41 + theme.spacing = createSpacing(theme.spacing); return [className, style({ theme })]; } return [className, style]; diff --git a/yarn.lock b/yarn.lock index 4ff6f6a0d9..b7f3cc813d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3495,12 +3495,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.21.0 - resolution: "@babel/runtime@npm:7.21.0" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.22.5 + resolution: "@babel/runtime@npm:7.22.5" dependencies: regenerator-runtime: ^0.13.11 - checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab + checksum: 12a50b7de2531beef38840d17af50c55a094253697600cee255311222390c68eed704829308d4fd305e1b3dfbce113272e428e9d9d45b1730e0fede997eaceb1 languageName: node linkType: hard @@ -9973,6 +9973,7 @@ __metadata: "@emotion/react": ^11.10.5 "@emotion/styled": ^11.10.5 "@mui/material": ^5.12.2 + "@mui/system": ^5.13.6 "@types/react": ^16.13.1 || ^17.0.0 peerDependencies: "@material-ui/core": ^4.12.2 @@ -10538,16 +10539,16 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.10.7": - version: 11.10.7 - resolution: "@emotion/cache@npm:11.10.7" +"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.11.0": + version: 11.11.0 + resolution: "@emotion/cache@npm:11.11.0" dependencies: - "@emotion/memoize": ^0.8.0 - "@emotion/sheet": ^1.2.1 - "@emotion/utils": ^1.2.0 - "@emotion/weak-memoize": ^0.3.0 - stylis: 4.1.3 - checksum: 6b1efed2dffc93dac419409d91f6d57a200d858ec5ffa4b7c30080fdbd93db431ff86bb779c5b8830b8373f3c5dd754d9beb386604ed2667c7d55608ff653dfc + "@emotion/memoize": ^0.8.1 + "@emotion/sheet": ^1.2.2 + "@emotion/utils": ^1.2.1 + "@emotion/weak-memoize": ^0.3.1 + stylis: 4.2.0 + checksum: 8eb1dc22beaa20c21a2e04c284d5a2630a018a9d51fb190e52de348c8d27f4e8ca4bbab003d68b4f6cd9cc1c569ca747a997797e0f76d6c734a660dc29decf08 languageName: node linkType: hard @@ -10574,10 +10575,10 @@ __metadata: languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 +"@emotion/memoize@npm:^0.8.0, @emotion/memoize@npm:^0.8.1": + version: 0.8.1 + resolution: "@emotion/memoize@npm:0.8.1" + checksum: a19cc01a29fcc97514948eaab4dc34d8272e934466ed87c07f157887406bc318000c69ae6f813a9001c6a225364df04249842a50e692ef7a9873335fbcc141b0 languageName: node linkType: hard @@ -10618,10 +10619,10 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/sheet@npm:1.2.1" - checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 +"@emotion/sheet@npm:^1.2.2": + version: 1.2.2 + resolution: "@emotion/sheet@npm:1.2.2" + checksum: d973273c9c15f1c291ca2269728bf044bd3e92a67bca87943fa9ec6c3cd2b034f9a6bfe95ef1b5d983351d128c75b547b43ff196a00a3875f7e1d269793cecfe languageName: node linkType: hard @@ -10678,17 +10679,17 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/utils@npm:1.2.0" - checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd +"@emotion/utils@npm:^1.2.0, @emotion/utils@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/utils@npm:1.2.1" + checksum: e0b44be0705b56b079c55faff93952150be69e79b660ae70ddd5b6e09fc40eb1319654315a9f34bb479d7f4ec94be6068c061abbb9e18b9778ae180ad5d97c73 languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0": - version: 0.3.0 - resolution: "@emotion/weak-memoize@npm:0.3.0" - checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 +"@emotion/weak-memoize@npm:^0.3.0, @emotion/weak-memoize@npm:^0.3.1": + version: 0.3.1 + resolution: "@emotion/weak-memoize@npm:0.3.1" + checksum: b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 languageName: node linkType: hard @@ -13328,12 +13329,12 @@ __metadata: languageName: node linkType: hard -"@mui/private-theming@npm:^5.12.0": - version: 5.12.0 - resolution: "@mui/private-theming@npm:5.12.0" +"@mui/private-theming@npm:^5.13.1": + version: 5.13.1 + resolution: "@mui/private-theming@npm:5.13.1" dependencies: "@babel/runtime": ^7.21.0 - "@mui/utils": ^5.12.0 + "@mui/utils": ^5.13.1 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -13341,16 +13342,16 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 761bc7a57e1643c2c4c327886882fa5efc7bacae1c6fffe6be4197f49d337261c916a883d96996445efcdedc0672251725c1e5b264b6250d6c9527fd0cafcc62 + checksum: 7211eba333a595ebfb964f7f5a561fba89ad06fc3db9e7bba795f9230afd687aa7a66d1a2fddf9dc5a73e1044729f7b3061ae461bb25eed64068ca08e018a38b languageName: node linkType: hard -"@mui/styled-engine@npm:^5.12.0": - version: 5.12.0 - resolution: "@mui/styled-engine@npm:5.12.0" +"@mui/styled-engine@npm:^5.13.2": + version: 5.13.2 + resolution: "@mui/styled-engine@npm:5.13.2" dependencies: "@babel/runtime": ^7.21.0 - "@emotion/cache": ^11.10.7 + "@emotion/cache": ^11.11.0 csstype: ^3.1.2 prop-types: ^15.8.1 peerDependencies: @@ -13362,19 +13363,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: 4a415473cf62aa05012f667dd2e9b1dc2fb175be5b0c4d0b8df541e2dac3d7db410e920e0d5910c8e2b8996a4fb51f74d79483e2878a9b5c0d334498f5537d74 + checksum: e99f49755406b55a1595bf5d2727f0c0e3fd9f914dce1ea3b6cac826efe05038f8e4bde52580bd6a5a4c62ad59e5582bdde6c17abc10d80e61a64da168803391 languageName: node linkType: hard -"@mui/system@npm:^5.12.1": - version: 5.12.1 - resolution: "@mui/system@npm:5.12.1" +"@mui/system@npm:^5.12.1, @mui/system@npm:^5.13.6": + version: 5.13.6 + resolution: "@mui/system@npm:5.13.6" dependencies: - "@babel/runtime": ^7.21.0 - "@mui/private-theming": ^5.12.0 - "@mui/styled-engine": ^5.12.0 + "@babel/runtime": ^7.22.5 + "@mui/private-theming": ^5.13.1 + "@mui/styled-engine": ^5.13.2 "@mui/types": ^7.2.4 - "@mui/utils": ^5.12.0 + "@mui/utils": ^5.13.6 clsx: ^1.2.1 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13390,7 +13391,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: b951959bf5e5af581319354c044f441d97849ff120cfec111d2ed5e7fa05efd63721acff96f48093b8e2bdeb5ccbe35c48613fb925be2b58c596447d10dbed3e + checksum: 978426ce5f3fe43ab536eec6f03a11845766c3640cc1da00c81e44f1d61f5c1bb53a33a28a70d83338183f818a04bdd8fb7c483824266aa8d46add5724186ae4 languageName: node linkType: hard @@ -13406,18 +13407,18 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.12.0": - version: 5.12.0 - resolution: "@mui/utils@npm:5.12.0" +"@mui/utils@npm:^5.12.0, @mui/utils@npm:^5.13.1, @mui/utils@npm:^5.13.6": + version: 5.13.6 + resolution: "@mui/utils@npm:5.13.6" dependencies: - "@babel/runtime": ^7.21.0 + "@babel/runtime": ^7.22.5 "@types/prop-types": ^15.7.5 - "@types/react-is": ^16.7.1 || ^17.0.0 + "@types/react-is": ^18.2.0 prop-types: ^15.8.1 react-is: ^18.2.0 peerDependencies: react: ^17.0.0 || ^18.0.0 - checksum: 87b2c7468803b083f50af28d7c215c45291e73fef16570848b596d0f1cde1fc613c20e8951f431217b31451de254744abd50eda5013dedec4982420b5bf1c6b6 + checksum: b5d3fff9153b6104d732b01363410a6472f06869d48e73d3d1ee38cf2b1255eaafb1afb90c48bb446143d312a434fd30e7b1664bf10941a2c610b7759cfd0a2e languageName: node linkType: hard @@ -17591,12 +17592,12 @@ __metadata: languageName: node linkType: hard -"@types/react-is@npm:^16.7.1 || ^17.0.0": - version: 17.0.3 - resolution: "@types/react-is@npm:17.0.3" +"@types/react-is@npm:^18.2.0": + version: 18.2.1 + resolution: "@types/react-is@npm:18.2.1" dependencies: "@types/react": "*" - checksum: 6abb7c47d54f012272650df8a962a28bd82f219291e5ef8b4dfa7fe0bb98ae243b060bf9fbe8ceff6213141794855a006db194b490b00ffd15842ae19d0ce1f0 + checksum: b44c3262efa2c68fa6fe2beb9ef86170b18305469461a3f97aa14943cc033cb21a26944f718bdb6434eea6e8f7fcba251c4f45b65b897a3fcf751b5a6003cf82 languageName: node linkType: hard @@ -39447,13 +39448,20 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.3, stylis@npm:^4.0.6": +"stylis@npm:4.1.3": version: 4.1.3 resolution: "stylis@npm:4.1.3" checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 languageName: node linkType: hard +"stylis@npm:4.2.0, stylis@npm:^4.0.6": + version: 4.2.0 + resolution: "stylis@npm:4.2.0" + checksum: 0eb6cc1b866dc17a6037d0a82ac7fa877eba6a757443e79e7c4f35bacedbf6421fadcab4363b39667b43355cbaaa570a3cde850f776498e5450f32ed2f9b7584 + languageName: node + linkType: hard + "subscriptions-transport-ws@npm:^0.11.0": version: 0.11.0 resolution: "subscriptions-transport-ws@npm:0.11.0" From ef0f72384484335622995153b33e04c4aed6a3ea Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Tue, 4 Jul 2023 15:51:58 +0200 Subject: [PATCH 147/194] Replace @mui/systems dependency with equivalent code Signed-off-by: Philipp Hugenroth --- packages/theme/package.json | 3 +-- packages/theme/src/unified/overrides.ts | 30 +++++++++++++++++++++---- yarn.lock | 3 +-- 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/packages/theme/package.json b/packages/theme/package.json index 804d2bec4c..0cd2643146 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -34,8 +34,7 @@ "dependencies": { "@emotion/react": "^11.10.5", "@emotion/styled": "^11.10.5", - "@mui/material": "^5.12.2", - "@mui/system": "^5.13.6" + "@mui/material": "^5.12.2" }, "peerDependencies": { "@material-ui/core": "^4.12.2", diff --git a/packages/theme/src/unified/overrides.ts b/packages/theme/src/unified/overrides.ts index 3a0e7331f8..a87f047f5c 100644 --- a/packages/theme/src/unified/overrides.ts +++ b/packages/theme/src/unified/overrides.ts @@ -17,7 +17,6 @@ import type { Overrides } from '@material-ui/core/styles/overrides'; import type { ComponentsProps } from '@material-ui/core/styles/props'; import { ComponentsOverrides, Theme, ThemeOptions } from '@mui/material/styles'; -import { createSpacing } from '@mui/system'; import { CSSProperties } from 'react'; type V5Override = ComponentsOverrides[Exclude< @@ -30,6 +29,26 @@ type StaticStyleRules = Record< CSSProperties | Record >; +// Utility function based on v5 `createSpacing`: https://github.com/mui/material-ui/blob/master/packages/mui-system/src/createTheme/createSpacing.ts#L42C3-L59C5 +const __v5Spacing = + (defaultSpacing: number) => + (...argsInput: ReadonlyArray) => { + const args = argsInput.length === 0 ? [1] : argsInput; + const transform = (argument: string | number, themeSpacing: number) => { + if (typeof argument === 'string') { + return argument; + } + return themeSpacing * argument; + }; + + return args + .map(argument => { + const output = transform(argument, defaultSpacing); + return typeof output === 'number' ? `${output}px` : output; + }) + .join(' '); + }; + // Converts callback-based overrides to static styles, e.g. // { root: theme => ({ color: theme.color }) } -> { root: { color: 'red' } } function adaptV5CssBaselineOverride( @@ -61,9 +80,12 @@ function adaptV5Override( return Object.fromEntries( Object.entries(overrides).map(([className, style]) => { if (typeof style === 'function') { - // Override potential v4 spacing method: https://mui.com/material-ui/migration/v5-style-changes/#%E2%9C%85-remove-px-suffix - // `adaptV4Theme as reference: https://github.com/mui/material-ui/blob/v5.x/packages/mui-material/src/styles/adaptV4Theme.js#L54C41-L54C41 - theme.spacing = createSpacing(theme.spacing); + const defaultSpacing = theme.spacing(1); + if (typeof defaultSpacing === 'number') { + // Override potential v4 spacing method: https://mui.com/material-ui/migration/v5-style-changes/#%E2%9C%85-remove-px-suffix + // `adaptV4Theme as reference: https://github.com/mui/material-ui/blob/v5.x/packages/mui-material/src/styles/adaptV4Theme.js#L54C41-L54C41 + theme.spacing = __v5Spacing(defaultSpacing); + } return [className, style({ theme })]; } return [className, style]; diff --git a/yarn.lock b/yarn.lock index b7f3cc813d..6ec982a47d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9973,7 +9973,6 @@ __metadata: "@emotion/react": ^11.10.5 "@emotion/styled": ^11.10.5 "@mui/material": ^5.12.2 - "@mui/system": ^5.13.6 "@types/react": ^16.13.1 || ^17.0.0 peerDependencies: "@material-ui/core": ^4.12.2 @@ -13367,7 +13366,7 @@ __metadata: languageName: node linkType: hard -"@mui/system@npm:^5.12.1, @mui/system@npm:^5.13.6": +"@mui/system@npm:^5.12.1": version: 5.13.6 resolution: "@mui/system@npm:5.13.6" dependencies: From 315e6b6b816d47ba1a191182cc054da03c023067 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Tue, 4 Jul 2023 16:02:40 +0200 Subject: [PATCH 148/194] Undo unneccessary changes Signed-off-by: Philipp Hugenroth --- yarn.lock | 121 +++++++++++++++++++++++++----------------------------- 1 file changed, 57 insertions(+), 64 deletions(-) diff --git a/yarn.lock b/yarn.lock index 6ec982a47d..4ff6f6a0d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3495,12 +3495,12 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.22.5, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.22.5 - resolution: "@babel/runtime@npm:7.22.5" +"@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.14.6, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.1, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.7, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": + version: 7.21.0 + resolution: "@babel/runtime@npm:7.21.0" dependencies: regenerator-runtime: ^0.13.11 - checksum: 12a50b7de2531beef38840d17af50c55a094253697600cee255311222390c68eed704829308d4fd305e1b3dfbce113272e428e9d9d45b1730e0fede997eaceb1 + checksum: 7b33e25bfa9e0e1b9e8828bb61b2d32bdd46b41b07ba7cb43319ad08efc6fda8eb89445193e67d6541814627df0ca59122c0ea795e412b99c5183a0540d338ab languageName: node linkType: hard @@ -10538,16 +10538,16 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.11.0": - version: 11.11.0 - resolution: "@emotion/cache@npm:11.11.0" +"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.10.7": + version: 11.10.7 + resolution: "@emotion/cache@npm:11.10.7" dependencies: - "@emotion/memoize": ^0.8.1 - "@emotion/sheet": ^1.2.2 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 - stylis: 4.2.0 - checksum: 8eb1dc22beaa20c21a2e04c284d5a2630a018a9d51fb190e52de348c8d27f4e8ca4bbab003d68b4f6cd9cc1c569ca747a997797e0f76d6c734a660dc29decf08 + "@emotion/memoize": ^0.8.0 + "@emotion/sheet": ^1.2.1 + "@emotion/utils": ^1.2.0 + "@emotion/weak-memoize": ^0.3.0 + stylis: 4.1.3 + checksum: 6b1efed2dffc93dac419409d91f6d57a200d858ec5ffa4b7c30080fdbd93db431ff86bb779c5b8830b8373f3c5dd754d9beb386604ed2667c7d55608ff653dfc languageName: node linkType: hard @@ -10574,10 +10574,10 @@ __metadata: languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0, @emotion/memoize@npm:^0.8.1": - version: 0.8.1 - resolution: "@emotion/memoize@npm:0.8.1" - checksum: a19cc01a29fcc97514948eaab4dc34d8272e934466ed87c07f157887406bc318000c69ae6f813a9001c6a225364df04249842a50e692ef7a9873335fbcc141b0 +"@emotion/memoize@npm:^0.8.0": + version: 0.8.0 + resolution: "@emotion/memoize@npm:0.8.0" + checksum: c87bb110b829edd8e1c13b90a6bc37cebc39af29c7599a1e66a48e06f9bec43e8e53495ba86278cc52e7589549492c8dfdc81d19f4fdec0cee6ba13d2ad2c928 languageName: node linkType: hard @@ -10618,10 +10618,10 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.2": - version: 1.2.2 - resolution: "@emotion/sheet@npm:1.2.2" - checksum: d973273c9c15f1c291ca2269728bf044bd3e92a67bca87943fa9ec6c3cd2b034f9a6bfe95ef1b5d983351d128c75b547b43ff196a00a3875f7e1d269793cecfe +"@emotion/sheet@npm:^1.2.1": + version: 1.2.1 + resolution: "@emotion/sheet@npm:1.2.1" + checksum: ce78763588ea522438156344d9f592203e2da582d8d67b32e1b0b98eaba26994c6c270f8c7ad46442fc9c0a9f048685d819cd73ca87e544520fd06f0e24a1562 languageName: node linkType: hard @@ -10678,17 +10678,17 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0, @emotion/utils@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/utils@npm:1.2.1" - checksum: e0b44be0705b56b079c55faff93952150be69e79b660ae70ddd5b6e09fc40eb1319654315a9f34bb479d7f4ec94be6068c061abbb9e18b9778ae180ad5d97c73 +"@emotion/utils@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/utils@npm:1.2.0" + checksum: 55457a49ddd4db6a014ea0454dc09eaa23eedfb837095c8ff90470cb26a303f7ceb5fcc1e2190ef64683e64cfd33d3ba3ca3109cd87d12bc9e379e4195c9a4dd languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0, @emotion/weak-memoize@npm:^0.3.1": - version: 0.3.1 - resolution: "@emotion/weak-memoize@npm:0.3.1" - checksum: b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 +"@emotion/weak-memoize@npm:^0.3.0": + version: 0.3.0 + resolution: "@emotion/weak-memoize@npm:0.3.0" + checksum: f43ef4c8b7de70d9fa5eb3105921724651e4188e895beb71f0c5919dc899a7b8743e1fdd99d38b9092dd5722c7be2312ebb47fbdad0c4e38bea58f6df5885cc0 languageName: node linkType: hard @@ -13328,12 +13328,12 @@ __metadata: languageName: node linkType: hard -"@mui/private-theming@npm:^5.13.1": - version: 5.13.1 - resolution: "@mui/private-theming@npm:5.13.1" +"@mui/private-theming@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/private-theming@npm:5.12.0" dependencies: "@babel/runtime": ^7.21.0 - "@mui/utils": ^5.13.1 + "@mui/utils": ^5.12.0 prop-types: ^15.8.1 peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 @@ -13341,16 +13341,16 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 7211eba333a595ebfb964f7f5a561fba89ad06fc3db9e7bba795f9230afd687aa7a66d1a2fddf9dc5a73e1044729f7b3061ae461bb25eed64068ca08e018a38b + checksum: 761bc7a57e1643c2c4c327886882fa5efc7bacae1c6fffe6be4197f49d337261c916a883d96996445efcdedc0672251725c1e5b264b6250d6c9527fd0cafcc62 languageName: node linkType: hard -"@mui/styled-engine@npm:^5.13.2": - version: 5.13.2 - resolution: "@mui/styled-engine@npm:5.13.2" +"@mui/styled-engine@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/styled-engine@npm:5.12.0" dependencies: "@babel/runtime": ^7.21.0 - "@emotion/cache": ^11.11.0 + "@emotion/cache": ^11.10.7 csstype: ^3.1.2 prop-types: ^15.8.1 peerDependencies: @@ -13362,19 +13362,19 @@ __metadata: optional: true "@emotion/styled": optional: true - checksum: e99f49755406b55a1595bf5d2727f0c0e3fd9f914dce1ea3b6cac826efe05038f8e4bde52580bd6a5a4c62ad59e5582bdde6c17abc10d80e61a64da168803391 + checksum: 4a415473cf62aa05012f667dd2e9b1dc2fb175be5b0c4d0b8df541e2dac3d7db410e920e0d5910c8e2b8996a4fb51f74d79483e2878a9b5c0d334498f5537d74 languageName: node linkType: hard "@mui/system@npm:^5.12.1": - version: 5.13.6 - resolution: "@mui/system@npm:5.13.6" + version: 5.12.1 + resolution: "@mui/system@npm:5.12.1" dependencies: - "@babel/runtime": ^7.22.5 - "@mui/private-theming": ^5.13.1 - "@mui/styled-engine": ^5.13.2 + "@babel/runtime": ^7.21.0 + "@mui/private-theming": ^5.12.0 + "@mui/styled-engine": ^5.12.0 "@mui/types": ^7.2.4 - "@mui/utils": ^5.13.6 + "@mui/utils": ^5.12.0 clsx: ^1.2.1 csstype: ^3.1.2 prop-types: ^15.8.1 @@ -13390,7 +13390,7 @@ __metadata: optional: true "@types/react": optional: true - checksum: 978426ce5f3fe43ab536eec6f03a11845766c3640cc1da00c81e44f1d61f5c1bb53a33a28a70d83338183f818a04bdd8fb7c483824266aa8d46add5724186ae4 + checksum: b951959bf5e5af581319354c044f441d97849ff120cfec111d2ed5e7fa05efd63721acff96f48093b8e2bdeb5ccbe35c48613fb925be2b58c596447d10dbed3e languageName: node linkType: hard @@ -13406,18 +13406,18 @@ __metadata: languageName: node linkType: hard -"@mui/utils@npm:^5.12.0, @mui/utils@npm:^5.13.1, @mui/utils@npm:^5.13.6": - version: 5.13.6 - resolution: "@mui/utils@npm:5.13.6" +"@mui/utils@npm:^5.12.0": + version: 5.12.0 + resolution: "@mui/utils@npm:5.12.0" dependencies: - "@babel/runtime": ^7.22.5 + "@babel/runtime": ^7.21.0 "@types/prop-types": ^15.7.5 - "@types/react-is": ^18.2.0 + "@types/react-is": ^16.7.1 || ^17.0.0 prop-types: ^15.8.1 react-is: ^18.2.0 peerDependencies: react: ^17.0.0 || ^18.0.0 - checksum: b5d3fff9153b6104d732b01363410a6472f06869d48e73d3d1ee38cf2b1255eaafb1afb90c48bb446143d312a434fd30e7b1664bf10941a2c610b7759cfd0a2e + checksum: 87b2c7468803b083f50af28d7c215c45291e73fef16570848b596d0f1cde1fc613c20e8951f431217b31451de254744abd50eda5013dedec4982420b5bf1c6b6 languageName: node linkType: hard @@ -17591,12 +17591,12 @@ __metadata: languageName: node linkType: hard -"@types/react-is@npm:^18.2.0": - version: 18.2.1 - resolution: "@types/react-is@npm:18.2.1" +"@types/react-is@npm:^16.7.1 || ^17.0.0": + version: 17.0.3 + resolution: "@types/react-is@npm:17.0.3" dependencies: "@types/react": "*" - checksum: b44c3262efa2c68fa6fe2beb9ef86170b18305469461a3f97aa14943cc033cb21a26944f718bdb6434eea6e8f7fcba251c4f45b65b897a3fcf751b5a6003cf82 + checksum: 6abb7c47d54f012272650df8a962a28bd82f219291e5ef8b4dfa7fe0bb98ae243b060bf9fbe8ceff6213141794855a006db194b490b00ffd15842ae19d0ce1f0 languageName: node linkType: hard @@ -39447,20 +39447,13 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.3": +"stylis@npm:4.1.3, stylis@npm:^4.0.6": version: 4.1.3 resolution: "stylis@npm:4.1.3" checksum: d04dbffcb9bf2c5ca8d8dc09534203c75df3bf711d33973ea22038a99cc475412a350b661ebd99cbc01daa50d7eedcf0d130d121800eb7318759a197023442a6 languageName: node linkType: hard -"stylis@npm:4.2.0, stylis@npm:^4.0.6": - version: 4.2.0 - resolution: "stylis@npm:4.2.0" - checksum: 0eb6cc1b866dc17a6037d0a82ac7fa877eba6a757443e79e7c4f35bacedbf6421fadcab4363b39667b43355cbaaa570a3cde850f776498e5450f32ed2f9b7584 - languageName: node - linkType: hard - "subscriptions-transport-ws@npm:^0.11.0": version: 0.11.0 resolution: "subscriptions-transport-ws@npm:0.11.0" From 3b5059d133e2993a1c4fe1524bdf7b3e93d872d1 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Thu, 29 Jun 2023 17:35:51 +0200 Subject: [PATCH 149/194] Improve typing & fix breaking type changes - Replace v5 CSSBaseline with v4 CSSBaseline for compatibility Signed-off-by: Philipp Hugenroth --- packages/theme/src/unified/UnifiedTheme.tsx | 25 ++++++++----------- .../src/unified/UnifiedThemeProvider.tsx | 10 +++++--- packages/theme/src/unified/types.ts | 8 +++++- packages/theme/src/v4/types.ts | 4 +++ .../theme/src/v5/defaultComponentThemes.ts | 5 ++++ packages/theme/src/v5/types.ts | 4 +++ 6 files changed, 36 insertions(+), 20 deletions(-) diff --git a/packages/theme/src/unified/UnifiedTheme.tsx b/packages/theme/src/unified/UnifiedTheme.tsx index 0c5f80357a..6bf05350b4 100644 --- a/packages/theme/src/unified/UnifiedTheme.tsx +++ b/packages/theme/src/unified/UnifiedTheme.tsx @@ -20,21 +20,22 @@ import { createTheme, } from '@material-ui/core/styles'; import type { PaletteOptions as PaletteOptionsV4 } from '@material-ui/core/styles/createPalette'; -import { PaletteOptions as PaletteOptionsV5 } from '@mui/material/styles'; import { - adaptV4Theme, + DeprecatedThemeOptions, Theme as Mui5Theme, - createTheme as createV5Theme, + PaletteOptions as PaletteOptionsV5, ThemeOptions as ThemeOptionsV5, + adaptV4Theme, + createTheme as createV5Theme, } from '@mui/material/styles'; -import { transformV5ComponentThemesToV4 } from './overrides'; +import { createBaseThemeOptions } from '../base/createBaseThemeOptions'; import { PageTheme } from '../base/types'; import { defaultComponentThemes } from '../v5'; -import { createBaseThemeOptions } from '../base/createBaseThemeOptions'; -import { UnifiedTheme } from './types'; +import { transformV5ComponentThemesToV4 } from './overrides'; +import { SupportedThemes, SupportedVersions, UnifiedTheme } from './types'; export class UnifiedThemeHolder implements UnifiedTheme { - #themes = new Map(); + #themes = new Map(); constructor(v4?: Mui4Theme, v5?: Mui5Theme) { this.#themes = new Map(); @@ -46,7 +47,7 @@ export class UnifiedThemeHolder implements UnifiedTheme { } } - getTheme(version: string): unknown | undefined { + getTheme(version: SupportedVersions): SupportedThemes | undefined { return this.#themes.get(version); } } @@ -75,12 +76,6 @@ export function createUnifiedTheme(options: UnifiedThemeOptions): UnifiedTheme { const components = { ...defaultComponentThemes, ...options.components }; const v5Theme = createV5Theme({ ...themeOptions, components }); - // TODO: Not super relevant in the beginning - /* const mui4Styles = maybeLoadMui4Styles(); - if (!mui4Styles) { - return new UnifiedThemeHolder(undefined, v5Theme); - } */ - const v4Overrides = transformV5ComponentThemesToV4(v5Theme, components); const v4Theme = { ...createTheme(themeOptions), ...v4Overrides }; return new UnifiedThemeHolder(v4Theme, v5Theme); @@ -95,7 +90,7 @@ export function createUnifiedTheme(options: UnifiedThemeOptions): UnifiedTheme { export function createUnifiedThemeFromV4( options: ThemeOptionsV4, ): UnifiedTheme { - const v5Theme = adaptV4Theme(options as any); + const v5Theme = adaptV4Theme(options as DeprecatedThemeOptions); const v4Theme = createTheme(options); return new UnifiedThemeHolder(v4Theme, v5Theme); } diff --git a/packages/theme/src/unified/UnifiedThemeProvider.tsx b/packages/theme/src/unified/UnifiedThemeProvider.tsx index 613f89d5e0..ba28c505f9 100644 --- a/packages/theme/src/unified/UnifiedThemeProvider.tsx +++ b/packages/theme/src/unified/UnifiedThemeProvider.tsx @@ -16,16 +16,18 @@ import React, { ReactNode } from 'react'; import './MuiClassNameSetup'; +import { CssBaseline } from '@material-ui/core'; import { ThemeProvider, StylesProvider, createGenerateClassName, + Theme as Mui4Theme, } from '@material-ui/core/styles'; import { StyledEngineProvider, ThemeProvider as Mui5Provider, + Theme as Mui5Theme, } from '@mui/material/styles'; -import CSSBaseline from '@mui/material/CssBaseline'; import { UnifiedTheme } from './types'; /** @@ -57,12 +59,12 @@ export function UnifiedThemeProvider( ): JSX.Element { const { children, theme, noCssBaseline = false } = props; - const v4Theme = theme.getTheme('v4'); - const v5Theme = theme.getTheme('v5'); + const v4Theme = theme.getTheme('v4') as Mui4Theme; + const v5Theme = theme.getTheme('v5') as Mui5Theme; let cssBaseline: JSX.Element | undefined = undefined; if (!noCssBaseline) { - cssBaseline = ; + cssBaseline = ; } let result = ( diff --git a/packages/theme/src/unified/types.ts b/packages/theme/src/unified/types.ts index f090a99b83..f17e5e234a 100644 --- a/packages/theme/src/unified/types.ts +++ b/packages/theme/src/unified/types.ts @@ -14,6 +14,12 @@ * limitations under the License. */ +import { Theme as Mui4Theme } from '@material-ui/core/styles'; +import { Theme as Mui5Theme } from '@mui/material/styles'; + +export type SupportedVersions = 'v4' | 'v5'; +export type SupportedThemes = Mui4Theme | Mui5Theme; + /** * A container of one theme for multiple different MUI versions. * @@ -22,5 +28,5 @@ * @public */ export interface UnifiedTheme { - getTheme(version: string): unknown | undefined; + getTheme(version: SupportedVersions): SupportedThemes | undefined; } diff --git a/packages/theme/src/v4/types.ts b/packages/theme/src/v4/types.ts index d059bc2d71..48f394447d 100644 --- a/packages/theme/src/v4/types.ts +++ b/packages/theme/src/v4/types.ts @@ -93,8 +93,12 @@ export type SimpleThemeOptions = { declare module '@material-ui/core/styles/createPalette' { interface Palette extends BackstagePaletteAdditions {} + + interface PaletteOptions extends Partial {} } declare module '@material-ui/core/styles/createTheme' { interface Theme extends BackstageThemeAdditions {} + + interface ThemeOptions extends Partial {} } diff --git a/packages/theme/src/v5/defaultComponentThemes.ts b/packages/theme/src/v5/defaultComponentThemes.ts index 14656b007d..e312ef9017 100644 --- a/packages/theme/src/v5/defaultComponentThemes.ts +++ b/packages/theme/src/v5/defaultComponentThemes.ts @@ -240,4 +240,9 @@ export const defaultComponentThemes: ThemeOptions['components'] = { }, }, }, + MuiLink: { + defaultProps: { + underline: 'hover', + }, + }, }; diff --git a/packages/theme/src/v5/types.ts b/packages/theme/src/v5/types.ts index ab74129b95..0d6d46cef9 100644 --- a/packages/theme/src/v5/types.ts +++ b/packages/theme/src/v5/types.ts @@ -22,10 +22,14 @@ import { declare module '@mui/material/styles' { interface Palette extends BackstagePaletteAdditions {} + + interface PaletteOptions extends Partial {} } declare module '@mui/material/styles' { interface Theme extends BackstageThemeAdditions {} + + interface ThemeOptions extends Partial {} } declare module '@mui/private-theming/defaultTheme' { From 4f28914d9f0ef38891883162f497a92f7e76ff95 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Thu, 29 Jun 2023 17:43:58 +0200 Subject: [PATCH 150/194] Add changeset Signed-off-by: Philipp Hugenroth --- .changeset/cool-starfishes-love.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/cool-starfishes-love.md diff --git a/.changeset/cool-starfishes-love.md b/.changeset/cool-starfishes-love.md new file mode 100644 index 0000000000..c29ff03efc --- /dev/null +++ b/.changeset/cool-starfishes-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/theme': patch +--- + +Overwritting `PaletteOptions` & `ThemeOptions` type to allow usage of `createTheme` from `'@backstage/theme'` as well as `@material-ui/core/styles` with the same type. Additionally replacing default `CSSBaseline` wiht v4 instead of v5 for better backwards compatibilty for now. From 82f5f516ddc285b4df07cf252dc23fc07b6269df Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:26:46 +0000 Subject: [PATCH 151/194] fix(deps): update dependency @swc/core to v1.3.67 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- microsite/yarn.lock | 86 ++++++++++++++++++++++----------------------- storybook/yarn.lock | 86 ++++++++++++++++++++++----------------------- yarn.lock | 86 ++++++++++++++++++++++----------------------- 3 files changed, 129 insertions(+), 129 deletions(-) diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 269f752352..4b0405dd35 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2604,90 +2604,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-arm64@npm:1.3.66" +"@swc/core-darwin-arm64@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-darwin-arm64@npm:1.3.67" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-x64@npm:1.3.66" +"@swc/core-darwin-x64@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-darwin-x64@npm:1.3.67" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" +"@swc/core-linux-arm-gnueabihf@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.67" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" +"@swc/core-linux-arm64-gnu@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.67" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" +"@swc/core-linux-arm64-musl@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.67" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" +"@swc/core-linux-x64-gnu@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.67" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-musl@npm:1.3.66" +"@swc/core-linux-x64-musl@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-x64-musl@npm:1.3.67" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" +"@swc/core-win32-arm64-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.67" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" +"@swc/core-win32-ia32-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.67" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" +"@swc/core-win32-x64-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.67" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.66 - resolution: "@swc/core@npm:1.3.66" + version: 1.3.67 + resolution: "@swc/core@npm:1.3.67" dependencies: - "@swc/core-darwin-arm64": 1.3.66 - "@swc/core-darwin-x64": 1.3.66 - "@swc/core-linux-arm-gnueabihf": 1.3.66 - "@swc/core-linux-arm64-gnu": 1.3.66 - "@swc/core-linux-arm64-musl": 1.3.66 - "@swc/core-linux-x64-gnu": 1.3.66 - "@swc/core-linux-x64-musl": 1.3.66 - "@swc/core-win32-arm64-msvc": 1.3.66 - "@swc/core-win32-ia32-msvc": 1.3.66 - "@swc/core-win32-x64-msvc": 1.3.66 + "@swc/core-darwin-arm64": 1.3.67 + "@swc/core-darwin-x64": 1.3.67 + "@swc/core-linux-arm-gnueabihf": 1.3.67 + "@swc/core-linux-arm64-gnu": 1.3.67 + "@swc/core-linux-arm64-musl": 1.3.67 + "@swc/core-linux-x64-gnu": 1.3.67 + "@swc/core-linux-x64-musl": 1.3.67 + "@swc/core-win32-arm64-msvc": 1.3.67 + "@swc/core-win32-ia32-msvc": 1.3.67 + "@swc/core-win32-x64-msvc": 1.3.67 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -2714,7 +2714,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: e6029c648ba47c522bed51a9f2fee606f82de1f9233e2e89197e43b0a4867054174ca05e825e688cdc4de332221c0da2e12ba7ba875549e8b5432aa70fe19263 + checksum: 89959d2402d3c9b70181c72c612e8236a7357ea9d58a32d4c0ed13bbe0b1a84257b5808efe9db2b39879fe82a7b78ea3884fad37d5ac44808f21ca01149a28ec languageName: node linkType: hard diff --git a/storybook/yarn.lock b/storybook/yarn.lock index 529843240d..e3c58dd149 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2840,90 +2840,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-arm64@npm:1.3.66" +"@swc/core-darwin-arm64@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-darwin-arm64@npm:1.3.67" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-x64@npm:1.3.66" +"@swc/core-darwin-x64@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-darwin-x64@npm:1.3.67" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" +"@swc/core-linux-arm-gnueabihf@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.67" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" +"@swc/core-linux-arm64-gnu@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.67" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" +"@swc/core-linux-arm64-musl@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.67" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" +"@swc/core-linux-x64-gnu@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.67" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-musl@npm:1.3.66" +"@swc/core-linux-x64-musl@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-x64-musl@npm:1.3.67" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" +"@swc/core-win32-arm64-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.67" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" +"@swc/core-win32-ia32-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.67" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" +"@swc/core-win32-x64-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.67" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.66 - resolution: "@swc/core@npm:1.3.66" + version: 1.3.67 + resolution: "@swc/core@npm:1.3.67" dependencies: - "@swc/core-darwin-arm64": 1.3.66 - "@swc/core-darwin-x64": 1.3.66 - "@swc/core-linux-arm-gnueabihf": 1.3.66 - "@swc/core-linux-arm64-gnu": 1.3.66 - "@swc/core-linux-arm64-musl": 1.3.66 - "@swc/core-linux-x64-gnu": 1.3.66 - "@swc/core-linux-x64-musl": 1.3.66 - "@swc/core-win32-arm64-msvc": 1.3.66 - "@swc/core-win32-ia32-msvc": 1.3.66 - "@swc/core-win32-x64-msvc": 1.3.66 + "@swc/core-darwin-arm64": 1.3.67 + "@swc/core-darwin-x64": 1.3.67 + "@swc/core-linux-arm-gnueabihf": 1.3.67 + "@swc/core-linux-arm64-gnu": 1.3.67 + "@swc/core-linux-arm64-musl": 1.3.67 + "@swc/core-linux-x64-gnu": 1.3.67 + "@swc/core-linux-x64-musl": 1.3.67 + "@swc/core-win32-arm64-msvc": 1.3.67 + "@swc/core-win32-ia32-msvc": 1.3.67 + "@swc/core-win32-x64-msvc": 1.3.67 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -2950,7 +2950,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: e6029c648ba47c522bed51a9f2fee606f82de1f9233e2e89197e43b0a4867054174ca05e825e688cdc4de332221c0da2e12ba7ba875549e8b5432aa70fe19263 + checksum: 89959d2402d3c9b70181c72c612e8236a7357ea9d58a32d4c0ed13bbe0b1a84257b5808efe9db2b39879fe82a7b78ea3884fad37d5ac44808f21ca01149a28ec languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index a38a93186b..4e09783ee7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15877,90 +15877,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-arm64@npm:1.3.66" +"@swc/core-darwin-arm64@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-darwin-arm64@npm:1.3.67" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-darwin-x64@npm:1.3.66" +"@swc/core-darwin-x64@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-darwin-x64@npm:1.3.67" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.66" +"@swc/core-linux-arm-gnueabihf@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.67" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.66" +"@swc/core-linux-arm64-gnu@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.67" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.66" +"@swc/core-linux-arm64-musl@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.67" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.66" +"@swc/core-linux-x64-gnu@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.67" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-linux-x64-musl@npm:1.3.66" +"@swc/core-linux-x64-musl@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-linux-x64-musl@npm:1.3.67" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.66" +"@swc/core-win32-arm64-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.67" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.66" +"@swc/core-win32-ia32-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.67" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.66": - version: 1.3.66 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.66" +"@swc/core-win32-x64-msvc@npm:1.3.67": + version: 1.3.67 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.67" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.66 - resolution: "@swc/core@npm:1.3.66" + version: 1.3.67 + resolution: "@swc/core@npm:1.3.67" dependencies: - "@swc/core-darwin-arm64": 1.3.66 - "@swc/core-darwin-x64": 1.3.66 - "@swc/core-linux-arm-gnueabihf": 1.3.66 - "@swc/core-linux-arm64-gnu": 1.3.66 - "@swc/core-linux-arm64-musl": 1.3.66 - "@swc/core-linux-x64-gnu": 1.3.66 - "@swc/core-linux-x64-musl": 1.3.66 - "@swc/core-win32-arm64-msvc": 1.3.66 - "@swc/core-win32-ia32-msvc": 1.3.66 - "@swc/core-win32-x64-msvc": 1.3.66 + "@swc/core-darwin-arm64": 1.3.67 + "@swc/core-darwin-x64": 1.3.67 + "@swc/core-linux-arm-gnueabihf": 1.3.67 + "@swc/core-linux-arm64-gnu": 1.3.67 + "@swc/core-linux-arm64-musl": 1.3.67 + "@swc/core-linux-x64-gnu": 1.3.67 + "@swc/core-linux-x64-musl": 1.3.67 + "@swc/core-win32-arm64-msvc": 1.3.67 + "@swc/core-win32-ia32-msvc": 1.3.67 + "@swc/core-win32-x64-msvc": 1.3.67 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -15987,7 +15987,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: e6029c648ba47c522bed51a9f2fee606f82de1f9233e2e89197e43b0a4867054174ca05e825e688cdc4de332221c0da2e12ba7ba875549e8b5432aa70fe19263 + checksum: 89959d2402d3c9b70181c72c612e8236a7357ea9d58a32d4c0ed13bbe0b1a84257b5808efe9db2b39879fe82a7b78ea3884fad37d5ac44808f21ca01149a28ec languageName: node linkType: hard From 9aa8ad72ce23155296f22c432cff7ccf3603b3ac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 14:27:16 +0000 Subject: [PATCH 152/194] fix(deps): update dependency @tanstack/react-query to v4.29.19 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index a38a93186b..e07c52277e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16021,19 +16021,18 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:4.29.17": - version: 4.29.17 - resolution: "@tanstack/query-core@npm:4.29.17" - checksum: 0440d58a566fc3d6791a27eae439f497acc0142cb629ca0fb6e536f9c0a29d150b816ae33c9375411582da0b849a2ef141ef3b2284b8b313d5a4d6671b2548a3 +"@tanstack/query-core@npm:4.29.19": + version: 4.29.19 + resolution: "@tanstack/query-core@npm:4.29.19" + checksum: 91a79dbebebc139d118542a5fe83fb54a6f6448bbe1563db1a0bed0c6d44e1d023613efde3c4ac747c72d067110013ac56f90611bf8affc390eda1ac3f99066e languageName: node linkType: hard "@tanstack/react-query@npm:^4.1.3": - version: 4.29.17 - resolution: "@tanstack/react-query@npm:4.29.17" + version: 4.29.19 + resolution: "@tanstack/react-query@npm:4.29.19" dependencies: - "@tanstack/query-core": 4.29.17 - client-only: 0.0.1 + "@tanstack/query-core": 4.29.19 use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -16044,7 +16043,7 @@ __metadata: optional: true react-native: optional: true - checksum: 5630dcb93100a48165464188aef2f53ed8e6bcb65669ff919f0916b7a21b58c7e21b06f4e4a331d1b9bfb8a89677266e79bc2a3bc80af62d763b08b3b195f7ea + checksum: 2780ac35b4d1dabcd3e708b95891376e7e609109270d40442b33f4747c508c23e46bcadc692f997f81d38f62b5ab31f8e42bc9a785dfa4afe0c390adb6f37e52 languageName: node linkType: hard @@ -21051,13 +21050,6 @@ __metadata: languageName: node linkType: hard -"client-only@npm:0.0.1": - version: 0.0.1 - resolution: "client-only@npm:0.0.1" - checksum: 0c16bf660dadb90610553c1d8946a7fdfb81d624adea073b8440b7d795d5b5b08beb3c950c6a2cf16279365a3265158a236876d92bce16423c485c322d7dfaf8 - languageName: node - linkType: hard - "clipboard@npm:^2.0.4": version: 2.0.11 resolution: "clipboard@npm:2.0.11" From de61412375b37d4c7c51a6ec474524cbafc48462 Mon Sep 17 00:00:00 2001 From: Gustaf Lundh Date: Tue, 4 Jul 2023 14:25:05 +0200 Subject: [PATCH 153/194] Unprocessed Entities: Fix spacing for success message Signed-off-by: Gustaf Lundh --- .../src/components/FailedEntities.tsx | 6 +++--- .../src/components/PendingEntities.tsx | 5 ++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/plugins/catalog-unprocessed-entities/src/components/FailedEntities.tsx b/plugins/catalog-unprocessed-entities/src/components/FailedEntities.tsx index 662c5c9db6..7bc5d85f50 100644 --- a/plugins/catalog-unprocessed-entities/src/components/FailedEntities.tsx +++ b/plugins/catalog-unprocessed-entities/src/components/FailedEntities.tsx @@ -23,15 +23,14 @@ import { TableColumn, } from '@backstage/core-components'; import { useApi } from '@backstage/core-plugin-api'; -import { BackstageThemeOptions } from '@backstage/theme'; -import { Box, Typography, makeStyles } from '@material-ui/core'; +import { Box, Theme, Typography, makeStyles } from '@material-ui/core'; import { UnprocessedEntity } from '../types'; import { EntityDialog } from './EntityDialog'; import { catalogUnprocessedEntitiesApiRef } from '../api'; import useAsync from 'react-use/lib/useAsync'; -const useStyles = makeStyles((theme: BackstageThemeOptions) => ({ +const useStyles = makeStyles((theme: Theme) => ({ errorBox: { color: theme.palette.status.error, backgroundColor: theme.palette.errorBackground, @@ -46,6 +45,7 @@ const useStyles = makeStyles((theme: BackstageThemeOptions) => ({ successMessage: { background: theme.palette.infoBackground, color: theme.palette.infoText, + padding: theme.spacing(2), }, })); diff --git a/plugins/catalog-unprocessed-entities/src/components/PendingEntities.tsx b/plugins/catalog-unprocessed-entities/src/components/PendingEntities.tsx index 24143c704a..956f660a8f 100644 --- a/plugins/catalog-unprocessed-entities/src/components/PendingEntities.tsx +++ b/plugins/catalog-unprocessed-entities/src/components/PendingEntities.tsx @@ -21,7 +21,7 @@ import { TableColumn, Table, } from '@backstage/core-components'; -import { Typography, makeStyles } from '@material-ui/core'; +import { Theme, Typography, makeStyles } from '@material-ui/core'; import { UnprocessedEntity } from '../types'; @@ -29,9 +29,8 @@ import { EntityDialog } from './EntityDialog'; import { useApi } from '@backstage/core-plugin-api'; import useAsync from 'react-use/lib/useAsync'; import { catalogUnprocessedEntitiesApiRef } from '../api'; -import { BackstageTheme } from '@backstage/theme'; -const useStyles = makeStyles((theme: BackstageTheme) => ({ +const useStyles = makeStyles((theme: Theme) => ({ successMessage: { background: theme.palette.infoBackground, color: theme.palette.infoText, From 7a9c8a9cd0ced267e20c70efa1995bdf869e7f8b Mon Sep 17 00:00:00 2001 From: Gustaf Lundh Date: Tue, 4 Jul 2023 14:53:57 +0200 Subject: [PATCH 154/194] Changeset Signed-off-by: Gustaf Lundh --- .changeset/silver-balloons-sniff.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/silver-balloons-sniff.md diff --git a/.changeset/silver-balloons-sniff.md b/.changeset/silver-balloons-sniff.md new file mode 100644 index 0000000000..d768cd976a --- /dev/null +++ b/.changeset/silver-balloons-sniff.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-unprocessed-entities': patch +--- + +Fixed spacing for success message From e2fad5e880806947875b98a964ce1d1dc7278977 Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Tue, 4 Jul 2023 16:52:16 +0200 Subject: [PATCH 155/194] Update api -reports & changeset Signed-off-by: Philipp Hugenroth --- .changeset/cool-starfishes-love.md | 2 +- packages/theme/api-report.md | 21 ++++++++++++++------- packages/theme/src/unified/index.ts | 2 +- packages/theme/src/unified/types.ts | 13 +++++++++++++ 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/.changeset/cool-starfishes-love.md b/.changeset/cool-starfishes-love.md index c29ff03efc..63e387c364 100644 --- a/.changeset/cool-starfishes-love.md +++ b/.changeset/cool-starfishes-love.md @@ -2,4 +2,4 @@ '@backstage/theme': patch --- -Overwritting `PaletteOptions` & `ThemeOptions` type to allow usage of `createTheme` from `'@backstage/theme'` as well as `@material-ui/core/styles` with the same type. Additionally replacing default `CSSBaseline` wiht v4 instead of v5 for better backwards compatibilty for now. +Overwrite `PaletteOptions` & `ThemeOptions` type to allow use of `createTheme` from `@backstage/theme` as well as `@material-ui/core/styles` with the same type. Also replaced the default `CSSBaseline` with v4 instead of v5 for better backwards compatibility for now. diff --git a/packages/theme/api-report.md b/packages/theme/api-report.md index fe05ca6b4e..d29ad937cf 100644 --- a/packages/theme/api-report.md +++ b/packages/theme/api-report.md @@ -10,7 +10,8 @@ import type { PaletteOptions } from '@material-ui/core/styles/createPalette'; import { PaletteOptions as PaletteOptions_2 } from '@mui/material/styles'; import { ReactNode } from 'react'; import { Theme } from '@mui/material/styles'; -import { Theme as Theme_2 } from '@material-ui/core'; +import { Theme as Theme_2 } from '@material-ui/core/styles'; +import { Theme as Theme_3 } from '@material-ui/core'; import { ThemeOptions } from '@mui/material/styles'; import { ThemeOptions as ThemeOptions_2 } from '@material-ui/core/styles'; import type { ThemeOptions as ThemeOptions_3 } from '@material-ui/core'; @@ -86,7 +87,7 @@ export type BackstagePaletteOptions = PaletteOptions & BackstagePaletteAdditions; // @public @deprecated -export interface BackstageTheme extends Theme_2 { +export interface BackstageTheme extends Theme_3 { // (undocumented) getPageTheme: (selector: PageThemeSelector) => PageTheme; // (undocumented) @@ -172,13 +173,13 @@ export function createBaseThemeOptions( }; // @public @deprecated -export function createTheme(options: SimpleThemeOptions): Theme_2; +export function createTheme(options: SimpleThemeOptions): Theme_3; // @public @deprecated export function createThemeOptions(options: SimpleThemeOptions): ThemeOptions_3; // @public @deprecated -export function createThemeOverrides(theme: Theme_2): Overrides; +export function createThemeOverrides(theme: Theme_3): Overrides; // @public export function createUnifiedTheme(options: UnifiedThemeOptions): UnifiedTheme; @@ -187,7 +188,7 @@ export function createUnifiedTheme(options: UnifiedThemeOptions): UnifiedTheme; export function createUnifiedThemeFromV4(options: ThemeOptions_2): UnifiedTheme; // @public @deprecated -export const darkTheme: Theme_2; +export const darkTheme: Theme_3; // @public export const defaultComponentThemes: ThemeOptions['components']; @@ -202,7 +203,7 @@ export function genPageTheme(props: { }): PageTheme; // @public @deprecated -export const lightTheme: Theme_2; +export const lightTheme: Theme_3; // @public export type PageTheme = { @@ -380,6 +381,12 @@ export type SimpleThemeOptions = { htmlFontSize?: number; }; +// @public +export type SupportedThemes = Theme_2 | Theme; + +// @public +export type SupportedVersions = 'v4' | 'v5'; + // @public export const themes: { light: UnifiedTheme; @@ -398,7 +405,7 @@ export function transformV5ComponentThemesToV4( // @public export interface UnifiedTheme { // (undocumented) - getTheme(version: string): unknown | undefined; + getTheme(version: SupportedVersions): SupportedThemes | undefined; } // @public diff --git a/packages/theme/src/unified/index.ts b/packages/theme/src/unified/index.ts index f5c805d3ed..747662e195 100644 --- a/packages/theme/src/unified/index.ts +++ b/packages/theme/src/unified/index.ts @@ -20,4 +20,4 @@ export type { UnifiedThemeOptions } from './UnifiedTheme'; export { themes } from './themes'; export { UnifiedThemeProvider } from './UnifiedThemeProvider'; export type { UnifiedThemeProviderProps } from './UnifiedThemeProvider'; -export type { UnifiedTheme } from './types'; +export type { UnifiedTheme, SupportedThemes, SupportedVersions } from './types'; diff --git a/packages/theme/src/unified/types.ts b/packages/theme/src/unified/types.ts index f17e5e234a..2dfea6d9b7 100644 --- a/packages/theme/src/unified/types.ts +++ b/packages/theme/src/unified/types.ts @@ -17,7 +17,20 @@ import { Theme as Mui4Theme } from '@material-ui/core/styles'; import { Theme as Mui5Theme } from '@mui/material/styles'; +/** + * Supported Material UI Versions + * + * Currently: 'v4' and 'v5'. + * + * @public + */ export type SupportedVersions = 'v4' | 'v5'; + +/** + * Supported Material UI Theme Types for `SupportedVersions` + * + * @public + */ export type SupportedThemes = Mui4Theme | Mui5Theme; /** From 033618b5bd50cf3e359fb2c532ca03a293bc77ea Mon Sep 17 00:00:00 2001 From: Philipp Hugenroth Date: Tue, 4 Jul 2023 16:57:08 +0200 Subject: [PATCH 156/194] Fix test Signed-off-by: Philipp Hugenroth --- packages/theme/src/unified/overrides.test.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/theme/src/unified/overrides.test.ts b/packages/theme/src/unified/overrides.test.ts index e84cedade6..c99c0c10a4 100644 --- a/packages/theme/src/unified/overrides.test.ts +++ b/packages/theme/src/unified/overrides.test.ts @@ -18,12 +18,14 @@ import { Theme } from '@mui/material/styles'; import { transformV5ComponentThemesToV4 } from './overrides'; describe('transformV5ComponentThemesToV4', () => { + // TODO: Create actual v5 Theme to avoid missing properties in test const mockTheme = { palette: { primary: { main: 'red', }, }, + spacing: (n: number) => `${n * 8}px`, } as unknown as Theme; it('transforms empty component themes', () => { expect(transformV5ComponentThemesToV4(mockTheme)).toEqual({ From 874c3e8bf9098bf07def3df626d683f7d1a3df51 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 4 Jul 2023 17:28:10 +0200 Subject: [PATCH 157/194] chore: added changeset Signed-off-by: blam --- .changeset/yellow-schools-relax.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/yellow-schools-relax.md diff --git a/.changeset/yellow-schools-relax.md b/.changeset/yellow-schools-relax.md new file mode 100644 index 0000000000..fd5f1fa7f7 --- /dev/null +++ b/.changeset/yellow-schools-relax.md @@ -0,0 +1,5 @@ +--- +'@backstage/theme': patch +--- + +Override the spacing to a v5 compliant method From f973bbdbe5b7a6f43e91400e71dec8ec57e2a6f1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 15:32:48 +0000 Subject: [PATCH 158/194] fix(deps): update dependency @uiw/react-codemirror to v4.21.7 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 714b469755..b62141f93c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18373,9 +18373,9 @@ __metadata: languageName: node linkType: hard -"@uiw/codemirror-extensions-basic-setup@npm:4.21.5": - version: 4.21.5 - resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.21.5" +"@uiw/codemirror-extensions-basic-setup@npm:4.21.7": + version: 4.21.7 + resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.21.7" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/commands": ^6.0.0 @@ -18392,19 +18392,19 @@ __metadata: "@codemirror/search": ">=6.0.0" "@codemirror/state": ">=6.0.0" "@codemirror/view": ">=6.0.0" - checksum: 8684dbc75c37b9942a1545914378291203feda78ff7196fdf50584f5bdf6176b4387a2b1d7f911dde2fdec108aefcf40273497ba8725ae10a69b264e9e6633ac + checksum: c81ccef43396c92049a7bd05fecf6e4f7e1adfaed330892ca472b0d65e1ab919dbdd28475baea833a387547fedbe9c7dcc19b92577e1e8bba42084ee86ab3944 languageName: node linkType: hard "@uiw/react-codemirror@npm:^4.9.3": - version: 4.21.5 - resolution: "@uiw/react-codemirror@npm:4.21.5" + version: 4.21.7 + resolution: "@uiw/react-codemirror@npm:4.21.7" dependencies: "@babel/runtime": ^7.18.6 "@codemirror/commands": ^6.1.0 "@codemirror/state": ^6.1.1 "@codemirror/theme-one-dark": ^6.0.0 - "@uiw/codemirror-extensions-basic-setup": 4.21.5 + "@uiw/codemirror-extensions-basic-setup": 4.21.7 codemirror: ^6.0.0 peerDependencies: "@babel/runtime": ">=7.11.0" @@ -18414,7 +18414,7 @@ __metadata: codemirror: ">=6.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: b3c8c9134b1e8520488682be0a711bbe3283e1323673ed9b0a1a53ee572684311d9a495c73b572e226963b6d0f235215f5da87ef9ab194ee7e6e6ffd74340211 + checksum: c4650957d77556f8c2c5b1b072d7b381c7cbec068ff2c744d2891a88d6fb425d520b7b70addc6c82e809326467dcfa913171d62977009faf41be733b079d3e1e languageName: node linkType: hard From 1a2952107126550db38c9c6e1347440626c33de0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 15:33:52 +0000 Subject: [PATCH 159/194] fix(deps): update dependency docusaurus-plugin-sass to v0.2.4 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- microsite/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 269f752352..876fb6e34b 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -5028,14 +5028,14 @@ __metadata: linkType: hard "docusaurus-plugin-sass@npm:^0.2.3": - version: 0.2.3 - resolution: "docusaurus-plugin-sass@npm:0.2.3" + version: 0.2.4 + resolution: "docusaurus-plugin-sass@npm:0.2.4" dependencies: sass-loader: ^10.1.1 peerDependencies: "@docusaurus/core": ^2.0.0-beta sass: ^1.30.0 - checksum: 928b02fd7c63835d54cdcce2eeda01cb6124707c6d43ef8e77db06474d3e3b4b7282cc0d88fed378cf1f3db2fc93ba8c11366965bb9b668eae19ca805e578acb + checksum: 10e0c9f519dd7ef4666b1fb82d120738feab03ea451c18bab7f785627887f65b8cb72457065a9b2a2664af1490c20b38df9adf525c1b58ce3e324d2b50412734 languageName: node linkType: hard From b4a7c0ba35bff9e151a280fa9234732a4b2f2920 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 4 Jul 2023 18:11:48 +0200 Subject: [PATCH 160/194] chore: should be patch for <1.0.0 Signed-off-by: blam --- .changeset/purple-feet-approve.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.changeset/purple-feet-approve.md b/.changeset/purple-feet-approve.md index c3017bcc3d..1ca40a0989 100644 --- a/.changeset/purple-feet-approve.md +++ b/.changeset/purple-feet-approve.md @@ -1,5 +1,5 @@ --- -'@backstage/core-components': minor +'@backstage/core-components': patch --- -The `Skip to content` button on click focuses on the main article tag and skips the `h1` tag. Users are not able to identify which page they are on currently. Now this minor fix will change the behaviour of the button and focuses on the `h1` tag on the page. +The `Skip to content` button on click focuses on the main article tag and skips the `h1` tag. Users are not able to identify which page they are on currently. Now it's changed the behaviour of the button and focuses on the `h1` tag on the page. From 6250fa5e7c5da8d148bebdedea0c11cb4e9d88c7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 16:21:28 +0000 Subject: [PATCH 161/194] fix(deps): update dependency json-schema-library to v7.4.9 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/yarn.lock b/yarn.lock index 714b469755..05fe3adc65 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14852,20 +14852,20 @@ __metadata: languageName: node linkType: hard -"@sagold/json-pointer@npm:^5.0.0": - version: 5.0.0 - resolution: "@sagold/json-pointer@npm:5.0.0" - checksum: 0a087ff25e28d0c49b56566a14d6186ae0ce9fe538569eb7756c1a70989f2794dbc6f0834b5d2f2a0a79b6f0e3096eb05558664d5ff038daba5a46cb5e752e1a +"@sagold/json-pointer@npm:^5.1.1": + version: 5.1.1 + resolution: "@sagold/json-pointer@npm:5.1.1" + checksum: d0aa16330997d479b8035f22cab3e2f63f3ae8d9e5ab1137746056581606baba47a7b15116a751c9ea430e1aba9ee7a5459a3ee352509a4afca109cce1dcd9e1 languageName: node linkType: hard -"@sagold/json-query@npm:^6.0.0": - version: 6.0.0 - resolution: "@sagold/json-query@npm:6.0.0" +"@sagold/json-query@npm:^6.1.0": + version: 6.1.1 + resolution: "@sagold/json-query@npm:6.1.1" dependencies: - "@sagold/json-pointer": ^5.0.0 - ebnf: ^1.9.0 - checksum: 56bb6151e6e6b1ef26bb03133b440e90d47c013529899e26cedb4c96f8a51f0115717ebab1355a8c3e6ea0c70e5ddaefc54c44330686ae3b2f8cb7d162011d73 + "@sagold/json-pointer": ^5.1.1 + ebnf: ^1.9.1 + checksum: bc9697ae45efce92600185491679379e44d494ed13fdb927984aaade40939e6ab2e6f982cf8b1b8b29ec80df560bab0052a86b349cc0071e0e5feb40c465ba54 languageName: node linkType: hard @@ -23489,12 +23489,12 @@ __metadata: languageName: node linkType: hard -"ebnf@npm:^1.9.0": - version: 1.9.0 - resolution: "ebnf@npm:1.9.0" +"ebnf@npm:^1.9.1": + version: 1.9.1 + resolution: "ebnf@npm:1.9.1" bin: ebnf: dist/bin.js - checksum: a18e616f5f52ad28dcc7ae2749bd4bf81ebe12ad6e98b51ad20077eb066286d4efb5562bd3cd9861965203dde59c392428061e89b4b4df59e96ff92db8f5ceeb + checksum: a361ac739a4981a75e15cd16e0dd0ee944977caa680e689240d5d8cda0cae75d869e5889b7457c0c201687206d6ee47bae3b247a20f851c3a2db457ed480cb87 languageName: node linkType: hard @@ -29715,15 +29715,15 @@ __metadata: linkType: hard "json-schema-library@npm:^7.3.9": - version: 7.4.8 - resolution: "json-schema-library@npm:7.4.8" + version: 7.4.9 + resolution: "json-schema-library@npm:7.4.9" dependencies: - "@sagold/json-pointer": ^5.0.0 - "@sagold/json-query": ^6.0.0 + "@sagold/json-pointer": ^5.1.1 + "@sagold/json-query": ^6.1.0 deepmerge: ^4.2.2 fast-deep-equal: ^3.1.3 valid-url: ^1.0.9 - checksum: bb7b3d13567f72e3c003300e66cd48bf0b8c02e107aa83d11110bf017ae522f63b702faf2f4e854397655b3a12970431df46f8b9e48642ef0de51ce17532912f + checksum: 178a388bb7baf917a71ad369cfffa2952472e2bbffcdbc4711ed8b53b5d2b07aa882317c1479abc33c950667791047312fa1baa213502f128c38287cd726ff79 languageName: node linkType: hard From 7ff4dbe862b8e57823cef7a88e7f6116693e02b9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 16:21:57 +0000 Subject: [PATCH 162/194] fix(deps): update dependency photoswipe to v5.3.8 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 714b469755..bbff26a42b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34530,9 +34530,9 @@ __metadata: linkType: hard "photoswipe@npm:^5.3.7": - version: 5.3.7 - resolution: "photoswipe@npm:5.3.7" - checksum: adfbd76316b7aa140302ff2961fd128dfb23ad02ae1c0691b99a0c6a247f638218f1e6de77ae4d5191d0b5a6d4a1f3561ff1472166f2a636bc4525addee31a47 + version: 5.3.8 + resolution: "photoswipe@npm:5.3.8" + checksum: c33fd86e1a7bb4710d2c971c6e0983a4c41f55b61bf62466d3a7fc1ae3acff3431292cf0b668a52e103092e7ea21ac548fdd90cec7286cd148c6640e915e3184 languageName: node linkType: hard From 2fc17fb329967faca7d15c09d84ca12d2d8d652a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 4 Jul 2023 16:24:25 +0000 Subject: [PATCH 163/194] Version Packages (next) --- .changeset/pre.json | 25 +- docs/releases/v1.16.0-next.1-changelog.md | 1201 +++++++++++++++++ package.json | 2 +- packages/app-defaults/CHANGELOG.md | 11 + packages/app-defaults/package.json | 2 +- packages/app/CHANGELOG.md | 71 + packages/app/package.json | 2 +- packages/backend-next/CHANGELOG.md | 11 + packages/backend-next/package.json | 2 +- packages/backend/CHANGELOG.md | 14 + packages/backend/package.json | 2 +- packages/core-app-api/CHANGELOG.md | 8 + packages/core-app-api/package.json | 2 +- packages/core-components/CHANGELOG.md | 11 + packages/core-components/package.json | 2 +- packages/core-plugin-api/CHANGELOG.md | 8 + packages/core-plugin-api/package.json | 2 +- packages/create-app/CHANGELOG.md | 8 + packages/create-app/package.json | 2 +- packages/dev-utils/CHANGELOG.md | 14 + packages/dev-utils/package.json | 2 +- packages/e2e-test/CHANGELOG.md | 7 + packages/e2e-test/package.json | 2 +- packages/integration-react/CHANGELOG.md | 10 + packages/integration-react/package.json | 2 +- .../techdocs-cli-embedded-app/CHANGELOG.md | 18 + .../techdocs-cli-embedded-app/package.json | 2 +- packages/test-utils/CHANGELOG.md | 11 + packages/test-utils/package.json | 2 +- packages/theme/CHANGELOG.md | 7 + packages/theme/package.json | 2 +- plugins/adr/CHANGELOG.md | 12 + plugins/adr/package.json | 2 +- plugins/airbrake/CHANGELOG.md | 12 + plugins/airbrake/package.json | 2 +- plugins/allure/CHANGELOG.md | 10 + plugins/allure/package.json | 2 +- plugins/analytics-module-ga/CHANGELOG.md | 10 + plugins/analytics-module-ga/package.json | 2 +- plugins/analytics-module-ga4/CHANGELOG.md | 10 + plugins/analytics-module-ga4/package.json | 2 +- plugins/apache-airflow/CHANGELOG.md | 8 + plugins/apache-airflow/package.json | 2 +- plugins/api-docs/CHANGELOG.md | 11 + plugins/api-docs/package.json | 2 +- plugins/apollo-explorer/CHANGELOG.md | 9 + plugins/apollo-explorer/package.json | 2 +- plugins/auth-backend/CHANGELOG.md | 8 + plugins/auth-backend/package.json | 2 +- plugins/azure-devops-backend/CHANGELOG.md | 8 + plugins/azure-devops-backend/package.json | 2 +- plugins/azure-devops/CHANGELOG.md | 10 + plugins/azure-devops/package.json | 2 +- plugins/azure-sites/CHANGELOG.md | 10 + plugins/azure-sites/package.json | 2 +- plugins/badges-backend/CHANGELOG.md | 8 + plugins/badges-backend/package.json | 2 +- plugins/badges/CHANGELOG.md | 10 + plugins/badges/package.json | 2 +- plugins/bazaar/CHANGELOG.md | 12 + plugins/bazaar/package.json | 2 +- plugins/bitrise/CHANGELOG.md | 10 + plugins/bitrise/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- plugins/catalog-customized/CHANGELOG.md | 8 + plugins/catalog-customized/package.json | 2 +- plugins/catalog-graph/CHANGELOG.md | 10 + plugins/catalog-graph/package.json | 2 +- plugins/catalog-import/CHANGELOG.md | 12 + plugins/catalog-import/package.json | 2 +- plugins/catalog-react/CHANGELOG.md | 10 + plugins/catalog-react/package.json | 2 +- .../catalog-unprocessed-entities/CHANGELOG.md | 12 + .../catalog-unprocessed-entities/package.json | 2 +- plugins/catalog/CHANGELOG.md | 13 + plugins/catalog/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- plugins/cicd-statistics/CHANGELOG.md | 8 + plugins/cicd-statistics/package.json | 2 +- plugins/circleci/CHANGELOG.md | 10 + plugins/circleci/package.json | 2 +- plugins/cloudbuild/CHANGELOG.md | 10 + plugins/cloudbuild/package.json | 2 +- plugins/code-climate/CHANGELOG.md | 10 + plugins/code-climate/package.json | 2 +- plugins/code-coverage/CHANGELOG.md | 11 + plugins/code-coverage/package.json | 2 +- plugins/codescene/CHANGELOG.md | 11 + plugins/codescene/package.json | 2 +- plugins/config-schema/CHANGELOG.md | 10 + plugins/config-schema/package.json | 2 +- plugins/cost-insights/CHANGELOG.md | 11 + plugins/cost-insights/package.json | 2 +- plugins/devtools-backend/CHANGELOG.md | 8 + plugins/devtools-backend/package.json | 2 +- plugins/devtools/CHANGELOG.md | 10 + plugins/devtools/package.json | 2 +- plugins/dynatrace/CHANGELOG.md | 10 + plugins/dynatrace/package.json | 2 +- plugins/entity-feedback/CHANGELOG.md | 10 + plugins/entity-feedback/package.json | 2 +- plugins/entity-validation/CHANGELOG.md | 10 + plugins/entity-validation/package.json | 2 +- plugins/example-todo-list/CHANGELOG.md | 9 + plugins/example-todo-list/package.json | 2 +- plugins/explore-react/CHANGELOG.md | 7 + plugins/explore-react/package.json | 2 +- plugins/explore/CHANGELOG.md | 12 + plugins/explore/package.json | 2 +- plugins/firehydrant/CHANGELOG.md | 10 + plugins/firehydrant/package.json | 2 +- plugins/fossa/CHANGELOG.md | 10 + plugins/fossa/package.json | 2 +- plugins/gcalendar/CHANGELOG.md | 9 + plugins/gcalendar/package.json | 2 +- plugins/gcp-projects/CHANGELOG.md | 9 + plugins/gcp-projects/package.json | 2 +- plugins/git-release-manager/CHANGELOG.md | 9 + plugins/git-release-manager/package.json | 2 +- plugins/github-actions/CHANGELOG.md | 11 + plugins/github-actions/package.json | 2 +- plugins/github-deployments/CHANGELOG.md | 11 + plugins/github-deployments/package.json | 2 +- plugins/github-issues/CHANGELOG.md | 10 + plugins/github-issues/package.json | 2 +- .../github-pull-requests-board/CHANGELOG.md | 10 + .../github-pull-requests-board/package.json | 2 +- plugins/gitops-profiles/CHANGELOG.md | 10 + plugins/gitops-profiles/package.json | 2 +- plugins/gocd/CHANGELOG.md | 10 + plugins/gocd/package.json | 2 +- plugins/graphiql/CHANGELOG.md | 9 + plugins/graphiql/package.json | 2 +- plugins/graphql-voyager/CHANGELOG.md | 9 + plugins/graphql-voyager/package.json | 2 +- plugins/home-react/CHANGELOG.md | 8 + plugins/home-react/package.json | 2 +- plugins/home/CHANGELOG.md | 13 + plugins/home/package.json | 2 +- plugins/ilert/CHANGELOG.md | 10 + plugins/ilert/package.json | 2 +- plugins/jenkins/CHANGELOG.md | 10 + plugins/jenkins/package.json | 2 +- plugins/kafka/CHANGELOG.md | 11 + plugins/kafka/package.json | 2 +- plugins/kubernetes-backend/CHANGELOG.md | 10 + plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes/CHANGELOG.md | 12 + plugins/kubernetes/package.json | 2 +- plugins/lighthouse/CHANGELOG.md | 14 + plugins/lighthouse/package.json | 2 +- plugins/linguist-backend/CHANGELOG.md | 8 + plugins/linguist-backend/package.json | 2 +- plugins/linguist/CHANGELOG.md | 10 + plugins/linguist/package.json | 2 +- plugins/microsoft-calendar/CHANGELOG.md | 9 + plugins/microsoft-calendar/package.json | 2 +- plugins/newrelic-dashboard/CHANGELOG.md | 9 + plugins/newrelic-dashboard/package.json | 2 +- plugins/newrelic/CHANGELOG.md | 9 + plugins/newrelic/package.json | 2 +- plugins/nomad/CHANGELOG.md | 11 + plugins/nomad/package.json | 2 +- plugins/octopus-deploy/CHANGELOG.md | 10 + plugins/octopus-deploy/package.json | 2 +- plugins/org-react/CHANGELOG.md | 10 + plugins/org-react/package.json | 2 +- plugins/org/CHANGELOG.md | 10 + plugins/org/package.json | 2 +- plugins/pagerduty/CHANGELOG.md | 11 + plugins/pagerduty/package.json | 2 +- plugins/periskop/CHANGELOG.md | 10 + plugins/periskop/package.json | 2 +- plugins/permission-react/CHANGELOG.md | 8 + plugins/permission-react/package.json | 2 +- plugins/playlist/CHANGELOG.md | 12 + plugins/playlist/package.json | 2 +- plugins/puppetdb/CHANGELOG.md | 10 + plugins/puppetdb/package.json | 2 +- plugins/rollbar/CHANGELOG.md | 10 + plugins/rollbar/package.json | 2 +- plugins/scaffolder-react/CHANGELOG.md | 11 + plugins/scaffolder-react/package.json | 2 +- plugins/scaffolder/CHANGELOG.md | 14 + plugins/scaffolder/package.json | 2 +- plugins/search-react/CHANGELOG.md | 9 + plugins/search-react/package.json | 2 +- plugins/search/CHANGELOG.md | 12 + plugins/search/package.json | 2 +- plugins/sentry/CHANGELOG.md | 10 + plugins/sentry/package.json | 2 +- plugins/shortcuts/CHANGELOG.md | 9 + plugins/shortcuts/package.json | 2 +- plugins/sonarqube-backend/CHANGELOG.md | 8 + plugins/sonarqube-backend/package.json | 2 +- plugins/sonarqube-react/CHANGELOG.md | 7 + plugins/sonarqube-react/package.json | 2 +- plugins/sonarqube/CHANGELOG.md | 13 + plugins/sonarqube/package.json | 2 +- plugins/splunk-on-call/CHANGELOG.md | 10 + plugins/splunk-on-call/package.json | 2 +- plugins/stack-overflow/CHANGELOG.md | 12 + plugins/stack-overflow/package.json | 2 +- plugins/stackstorm/CHANGELOG.md | 9 + plugins/stackstorm/package.json | 2 +- plugins/tech-insights/CHANGELOG.md | 10 + plugins/tech-insights/package.json | 2 +- plugins/tech-radar/CHANGELOG.md | 9 + plugins/tech-radar/package.json | 2 +- .../techdocs-addons-test-utils/CHANGELOG.md | 16 + .../techdocs-addons-test-utils/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- plugins/techdocs-react/CHANGELOG.md | 9 + plugins/techdocs-react/package.json | 2 +- plugins/techdocs/CHANGELOG.md | 14 + plugins/techdocs/package.json | 2 +- plugins/todo/CHANGELOG.md | 10 + plugins/todo/package.json | 2 +- plugins/user-settings/CHANGELOG.md | 11 + plugins/user-settings/package.json | 2 +- plugins/vault/CHANGELOG.md | 10 + plugins/vault/package.json | 2 +- plugins/xcmetrics/CHANGELOG.md | 9 + plugins/xcmetrics/package.json | 2 +- yarn.lock | 63 +- 228 files changed, 2587 insertions(+), 128 deletions(-) create mode 100644 docs/releases/v1.16.0-next.1-changelog.md diff --git a/.changeset/pre.json b/.changeset/pre.json index e724582519..be3759f88a 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -232,21 +232,44 @@ }, "changesets": [ "angry-phones-wash", + "beige-actors-melt", + "chatty-buttons-deny", "cli-always-yarn-pack-freal", + "cold-hounds-cheat", + "cool-starfishes-love", "create-app-1687867724", + "cuddly-guests-hide", "cyan-shirts-deny", "dirty-wasps-draw", "dull-onions-remember", + "fluffy-frogs-change", + "fresh-bears-yawn", "green-otters-wait", + "khaki-rocks-do", "lazy-frogs-destroy", + "lemon-cycles-enjoy", "many-ants-poke", + "mean-bobcats-taste", + "mighty-pandas-deny", "mighty-shoes-refuse", "old-rules-give", + "popular-crabs-deny", "popular-kangaroos-accept", + "purple-feet-approve", "purple-starfishes-design", + "red-cherries-draw", + "renovate-f316d5e", + "seven-pillows-hear", "short-rabbits-roll", + "silver-balloons-sniff", + "sixty-humans-rescue", "sour-humans-begin", + "strange-baboons-look", + "tender-clouds-promise", + "thin-countries-battle", "tough-flowers-suffer", - "twenty-seas-float" + "twenty-seas-float", + "yellow-schools-relax", + "young-frogs-burn" ] } diff --git a/docs/releases/v1.16.0-next.1-changelog.md b/docs/releases/v1.16.0-next.1-changelog.md new file mode 100644 index 0000000000..1b825e7433 --- /dev/null +++ b/docs/releases/v1.16.0-next.1-changelog.md @@ -0,0 +1,1201 @@ +# Release v1.16.0-next.1 + +## @backstage/app-defaults@1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + +## @backstage/core-app-api@1.8.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/core-components@0.13.3-next.1 + +### Patch Changes + +- 7e0f558fbc37: The `Skip to content` button on click focuses on the main article tag and skips the `h1` tag. Users are not able to identify which page they are on currently. Now it's changed the behaviour of the button and focuses on the `h1` tag on the page. +- 015439b5b6ca: Updated dependency `rc-progress` to `3.4.2`. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/core-plugin-api@1.5.3-next.0 + +### Patch Changes + +- 13426ebd1235: Change `IconComponent` type to be compatible with Material UI v5 icons. +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/create-app@0.5.3-next.1 + +### Patch Changes + +- 76b83a4422bb: Post-create message - added instruction to run `yarn install` when app was created with `--skip-install` +- e3ce5dd3f89a: add cy.\*\*.should to cypress eslintrc +- 294b1629de28: Display a warning alert if relations are defined, which don't exist in the catalog. + +## @backstage/dev-utils@1.0.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/app-defaults@1.4.1-next.1 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/core-app-api@1.8.2-next.0 + +## @backstage/integration-react@1.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/test-utils@1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + - @backstage/config@1.0.8 + +## @backstage/theme@0.4.1-next.0 + +### Patch Changes + +- 4f28914d9f0e: Overwrite `PaletteOptions` & `ThemeOptions` type to allow use of `createTheme` from `@backstage/theme` as well as `@material-ui/core/styles` with the same type. Also replaced the default `CSSBaseline` with v4 instead of v5 for better backwards compatibility for now. +- 874c3e8bf909: Override the spacing to a v5 compliant method + +## @backstage/plugin-adr@0.6.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + +## @backstage/plugin-airbrake@0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/dev-utils@1.0.17-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-allure@0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-analytics-module-ga@0.1.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-analytics-module-ga4@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-apache-airflow@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-api-docs@0.9.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-apollo-explorer@0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-auth-backend@0.18.5-next.1 + +### Patch Changes + +- c27ae5004fc2: Support for Token Endpoint Auth Method for OIDC Provider +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/plugin-azure-devops@0.3.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-azure-devops-backend@0.3.26-next.1 + +### Patch Changes + +- ae261e79d256: Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/plugin-azure-sites@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-badges@0.2.44-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-badges-backend@0.2.2-next.1 + +### Patch Changes + +- 2bbdcb4154c3: Added support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/plugin-bazaar@0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/cli@0.22.9-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-bitrise@0.1.47-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-catalog@1.11.3-next.1 + +### Patch Changes + +- 294b1629de28: Display a warning alert if relations are defined, which don't exist in the catalog. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + +## @backstage/plugin-catalog-backend-module-github@0.3.2-next.1 + +### Patch Changes + +- b01b869d7158: fixed event handler to respect configured organization +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/plugin-catalog-graph@0.2.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-catalog-import@0.9.10-next.1 + +### Patch Changes + +- 36b7edf39585: Add a "View Component" button as the primary CTA after registering a new component using a link to catalog-info.yaml +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-catalog-react@1.7.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + +## @backstage/plugin-catalog-unprocessed-entities@0.1.1-next.1 + +### Patch Changes + +- 267396f45bd0: Corrected the installation instructions. +- 7a9c8a9cd0ce: Fixed spacing for success message +- 77b408fad872: install command points to correct package name +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-cicd-statistics@0.1.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-cicd-statistics-module-gitlab@0.1.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-cicd-statistics@0.1.22-next.1 + +## @backstage/plugin-circleci@0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-cloudbuild@0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-code-climate@0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-code-coverage@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-codescene@0.1.15-next.1 + +### Patch Changes + +- 015439b5b6ca: Updated dependency `rc-progress` to `3.4.2`. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-config-schema@0.1.43-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-cost-insights@0.12.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-devtools@0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + +## @backstage/plugin-devtools-backend@0.1.2-next.1 + +### Patch Changes + +- ae261e79d256: Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/plugin-dynatrace@6.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-entity-feedback@0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-entity-validation@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-explore@0.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-explore-react@0.0.30-next.0 + +## @backstage/plugin-explore-react@0.0.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-firehydrant@0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-fossa@0.2.52-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-gcalendar@0.3.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-gcp-projects@0.3.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-git-release-manager@0.3.33-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-github-actions@0.6.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-github-deployments@0.1.51-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-github-issues@0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-github-pull-requests-board@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-gitops-profiles@0.3.38-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-gocd@0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-graphiql@0.2.52-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-graphql-voyager@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-home@0.5.4-next.1 + +### Patch Changes + +- b8ebd3d2e4e5: Fix missing column breakpoints in `CustomHompageGrid` +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-home-react@0.1.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-home-react@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-ilert@0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-jenkins@0.8.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-kafka@0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-kubernetes@0.9.3-next.1 + +### Patch Changes + +- d62fc3fe85ba: Make pod drawer headings consistent +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-kubernetes-backend@0.11.2-next.1 + +### Patch Changes + +- 4db037c20148: Replace reference to deprecated import +- c2e530653539: Add WebSocket support to `kubernetes-backend` proxy. +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/integration-aws-node@0.1.5-next.0 + +## @backstage/plugin-lighthouse@0.4.5-next.1 + +### Patch Changes + +- cb200dbb8038: Added more verbose components (used to render `null`) when no audits for a website corresponding to the provided url were found. + Added `Create New Audit` button for the `AuditListForEntity` component used by `EntityLighthouseContent` and `EmbeddedRouter`. + Removed error alert from `errorApi` if error was due to no audits being found for a website (empty database query result). +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-linguist@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-linguist-backend@0.3.1-next.1 + +### Patch Changes + +- ae261e79d256: Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/plugin-microsoft-calendar@0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-newrelic@0.3.38-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-newrelic-dashboard@0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-nomad@0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-octopus-deploy@0.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-org@0.6.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-org-react@0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-pagerduty@0.6.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-home-react@0.1.1-next.1 + +## @backstage/plugin-periskop@0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-permission-react@0.4.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-playlist@0.1.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-permission-react@0.4.14-next.1 + +## @backstage/plugin-puppetdb@0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-rollbar@0.4.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-scaffolder@1.14.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.1 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-permission-react@0.4.14-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-scaffolder-react@1.5.1-next.1 + +### Patch Changes + +- f74a27de4d2c: Made markdown description theme-able +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-search@1.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-search-react@1.6.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-sentry@0.5.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-shortcuts@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-sonarqube@0.7.1-next.1 + +### Patch Changes + +- fcaf4cfc70ee: Made default config optional +- 015439b5b6ca: Updated dependency `rc-progress` to `3.4.2`. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-sonarqube-react@0.1.7-next.1 + +## @backstage/plugin-sonarqube-backend@0.2.1-next.1 + +### Patch Changes + +- fcaf4cfc70ee: Made default config optional +- Updated dependencies + - @backstage/config@1.0.8 + +## @backstage/plugin-sonarqube-react@0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-splunk-on-call@0.4.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-stack-overflow@0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-home-react@0.1.1-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-stackstorm@0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-tech-insights@0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-tech-radar@0.6.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## @backstage/plugin-techdocs@1.6.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/config@1.0.8 + +## @backstage/plugin-techdocs-addons-test-utils@1.0.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-techdocs@1.6.5-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/core-app-api@1.8.2-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.0.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + +## @backstage/plugin-techdocs-react@1.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + +## @backstage/plugin-todo@0.2.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-user-settings@0.7.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/core-app-api@1.8.2-next.0 + +## @backstage/plugin-vault@0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @backstage/plugin-xcmetrics@0.2.40-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + +## example-app@0.2.85-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.1 + - @backstage/plugin-lighthouse@0.4.5-next.1 + - @backstage/plugin-catalog-import@0.9.10-next.1 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-kubernetes@0.9.3-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.1-next.1 + - @backstage/plugin-home@0.5.4-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/app-defaults@1.4.1-next.1 + - @backstage/cli@0.22.9-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-adr@0.6.3-next.1 + - @backstage/plugin-airbrake@0.3.20-next.1 + - @backstage/plugin-api-docs@0.9.6-next.1 + - @backstage/plugin-azure-devops@0.3.2-next.1 + - @backstage/plugin-azure-sites@0.1.9-next.1 + - @backstage/plugin-badges@0.2.44-next.1 + - @backstage/plugin-catalog-graph@0.2.32-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-circleci@0.3.20-next.1 + - @backstage/plugin-cloudbuild@0.3.20-next.1 + - @backstage/plugin-code-coverage@0.2.13-next.1 + - @backstage/plugin-cost-insights@0.12.9-next.1 + - @backstage/plugin-devtools@0.1.2-next.1 + - @backstage/plugin-dynatrace@6.0.1-next.1 + - @backstage/plugin-entity-feedback@0.2.3-next.1 + - @backstage/plugin-explore@0.4.6-next.1 + - @backstage/plugin-gcalendar@0.3.16-next.1 + - @backstage/plugin-gcp-projects@0.3.39-next.1 + - @backstage/plugin-github-actions@0.6.1-next.1 + - @backstage/plugin-gocd@0.1.26-next.1 + - @backstage/plugin-graphiql@0.2.52-next.1 + - @backstage/plugin-jenkins@0.8.2-next.1 + - @backstage/plugin-kafka@0.3.20-next.1 + - @backstage/plugin-linguist@0.1.5-next.1 + - @backstage/plugin-microsoft-calendar@0.1.5-next.1 + - @backstage/plugin-newrelic@0.3.38-next.1 + - @backstage/plugin-nomad@0.1.1-next.1 + - @backstage/plugin-octopus-deploy@0.2.2-next.1 + - @backstage/plugin-org@0.6.10-next.1 + - @backstage/plugin-pagerduty@0.6.1-next.1 + - @backstage/plugin-playlist@0.1.12-next.1 + - @backstage/plugin-puppetdb@0.1.3-next.1 + - @backstage/plugin-rollbar@0.4.20-next.1 + - @backstage/plugin-scaffolder@1.14.1-next.1 + - @backstage/plugin-search@1.3.3-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-sentry@0.5.5-next.1 + - @backstage/plugin-shortcuts@0.3.12-next.1 + - @backstage/plugin-stack-overflow@0.1.18-next.1 + - @backstage/plugin-stackstorm@0.1.4-next.1 + - @backstage/plugin-tech-insights@0.3.12-next.1 + - @backstage/plugin-tech-radar@0.6.6-next.1 + - @backstage/plugin-techdocs@1.6.5-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.15-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/plugin-todo@0.2.22-next.1 + - @backstage/plugin-user-settings@0.7.5-next.1 + - @backstage/plugin-apache-airflow@0.2.13-next.1 + - @backstage/plugin-newrelic-dashboard@0.2.13-next.1 + - @internal/plugin-catalog-customized@0.0.12-next.1 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + - @backstage/config@1.0.8 + +## example-backend@0.2.85-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-backend@0.11.2-next.1 + - @backstage/plugin-badges-backend@0.2.2-next.1 + - @backstage/plugin-azure-devops-backend@0.3.26-next.1 + - @backstage/plugin-devtools-backend@0.1.2-next.1 + - @backstage/plugin-linguist-backend@0.3.1-next.1 + - @backstage/plugin-auth-backend@0.18.5-next.1 + - example-app@0.2.85-next.1 + - @backstage/config@1.0.8 + +## example-backend-next@0.0.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-backend@0.11.2-next.1 + - @backstage/plugin-badges-backend@0.2.2-next.1 + - @backstage/plugin-azure-devops-backend@0.3.26-next.1 + - @backstage/plugin-devtools-backend@0.1.2-next.1 + - @backstage/plugin-linguist-backend@0.3.1-next.1 + +## e2e-test@0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.3-next.1 + +## techdocs-cli-embedded-app@0.2.84-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/app-defaults@1.4.1-next.1 + - @backstage/cli@0.22.9-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-techdocs@1.6.5-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/config@1.0.8 + +## @internal/plugin-catalog-customized@0.0.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + +## @internal/plugin-todo-list@1.0.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 diff --git a/package.json b/package.json index 376889b47d..2d0c4eb712 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "@types/react": "^17", "@types/react-dom": "^17" }, - "version": "1.16.0-next.0", + "version": "1.16.0-next.1", "dependencies": { "@backstage/errors": "workspace:^", "@manypkg/get-packages": "^1.1.3" diff --git a/packages/app-defaults/CHANGELOG.md b/packages/app-defaults/CHANGELOG.md index 210d1a0426..9448231059 100644 --- a/packages/app-defaults/CHANGELOG.md +++ b/packages/app-defaults/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/app-defaults +## 1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + ## 1.4.1-next.0 ### Patch Changes diff --git a/packages/app-defaults/package.json b/packages/app-defaults/package.json index 4efe2191f3..ad0b58a110 100644 --- a/packages/app-defaults/package.json +++ b/packages/app-defaults/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/app-defaults", "description": "Provides the default wiring of a Backstage App", - "version": "1.4.1-next.0", + "version": "1.4.1-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index cd404b149b..3bc518a984 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,76 @@ # example-app +## 0.2.85-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.1 + - @backstage/plugin-lighthouse@0.4.5-next.1 + - @backstage/plugin-catalog-import@0.9.10-next.1 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-kubernetes@0.9.3-next.1 + - @backstage/plugin-catalog-unprocessed-entities@0.1.1-next.1 + - @backstage/plugin-home@0.5.4-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/app-defaults@1.4.1-next.1 + - @backstage/cli@0.22.9-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-adr@0.6.3-next.1 + - @backstage/plugin-airbrake@0.3.20-next.1 + - @backstage/plugin-api-docs@0.9.6-next.1 + - @backstage/plugin-azure-devops@0.3.2-next.1 + - @backstage/plugin-azure-sites@0.1.9-next.1 + - @backstage/plugin-badges@0.2.44-next.1 + - @backstage/plugin-catalog-graph@0.2.32-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-circleci@0.3.20-next.1 + - @backstage/plugin-cloudbuild@0.3.20-next.1 + - @backstage/plugin-code-coverage@0.2.13-next.1 + - @backstage/plugin-cost-insights@0.12.9-next.1 + - @backstage/plugin-devtools@0.1.2-next.1 + - @backstage/plugin-dynatrace@6.0.1-next.1 + - @backstage/plugin-entity-feedback@0.2.3-next.1 + - @backstage/plugin-explore@0.4.6-next.1 + - @backstage/plugin-gcalendar@0.3.16-next.1 + - @backstage/plugin-gcp-projects@0.3.39-next.1 + - @backstage/plugin-github-actions@0.6.1-next.1 + - @backstage/plugin-gocd@0.1.26-next.1 + - @backstage/plugin-graphiql@0.2.52-next.1 + - @backstage/plugin-jenkins@0.8.2-next.1 + - @backstage/plugin-kafka@0.3.20-next.1 + - @backstage/plugin-linguist@0.1.5-next.1 + - @backstage/plugin-microsoft-calendar@0.1.5-next.1 + - @backstage/plugin-newrelic@0.3.38-next.1 + - @backstage/plugin-nomad@0.1.1-next.1 + - @backstage/plugin-octopus-deploy@0.2.2-next.1 + - @backstage/plugin-org@0.6.10-next.1 + - @backstage/plugin-pagerduty@0.6.1-next.1 + - @backstage/plugin-playlist@0.1.12-next.1 + - @backstage/plugin-puppetdb@0.1.3-next.1 + - @backstage/plugin-rollbar@0.4.20-next.1 + - @backstage/plugin-scaffolder@1.14.1-next.1 + - @backstage/plugin-search@1.3.3-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-sentry@0.5.5-next.1 + - @backstage/plugin-shortcuts@0.3.12-next.1 + - @backstage/plugin-stack-overflow@0.1.18-next.1 + - @backstage/plugin-stackstorm@0.1.4-next.1 + - @backstage/plugin-tech-insights@0.3.12-next.1 + - @backstage/plugin-tech-radar@0.6.6-next.1 + - @backstage/plugin-techdocs@1.6.5-next.1 + - @backstage/plugin-techdocs-module-addons-contrib@1.0.15-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/plugin-todo@0.2.22-next.1 + - @backstage/plugin-user-settings@0.7.5-next.1 + - @backstage/plugin-apache-airflow@0.2.13-next.1 + - @backstage/plugin-newrelic-dashboard@0.2.13-next.1 + - @internal/plugin-catalog-customized@0.0.12-next.1 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + - @backstage/config@1.0.8 + ## 0.2.85-next.0 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index 51d00ba9b0..0f3a65c26a 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.85-next.0", + "version": "0.2.85-next.1", "private": true, "backstage": { "role": "frontend" diff --git a/packages/backend-next/CHANGELOG.md b/packages/backend-next/CHANGELOG.md index 3e5de4d355..242986578e 100644 --- a/packages/backend-next/CHANGELOG.md +++ b/packages/backend-next/CHANGELOG.md @@ -1,5 +1,16 @@ # example-backend-next +## 0.0.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-backend@0.11.2-next.1 + - @backstage/plugin-badges-backend@0.2.2-next.1 + - @backstage/plugin-azure-devops-backend@0.3.26-next.1 + - @backstage/plugin-devtools-backend@0.1.2-next.1 + - @backstage/plugin-linguist-backend@0.3.1-next.1 + ## 0.0.13-next.0 ### Patch Changes diff --git a/packages/backend-next/package.json b/packages/backend-next/package.json index b8e363177b..f8fa51eebc 100644 --- a/packages/backend-next/package.json +++ b/packages/backend-next/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-next", - "version": "0.0.13-next.0", + "version": "0.0.13-next.1", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 0632b08b03..93feb927a4 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,19 @@ # example-backend +## 0.2.85-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-kubernetes-backend@0.11.2-next.1 + - @backstage/plugin-badges-backend@0.2.2-next.1 + - @backstage/plugin-azure-devops-backend@0.3.26-next.1 + - @backstage/plugin-devtools-backend@0.1.2-next.1 + - @backstage/plugin-linguist-backend@0.3.1-next.1 + - @backstage/plugin-auth-backend@0.18.5-next.1 + - example-app@0.2.85-next.1 + - @backstage/config@1.0.8 + ## 0.2.85-next.0 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index 5ab278b9c7..dc78c9a2ba 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.2.85-next.0", + "version": "0.2.85-next.1", "main": "dist/index.cjs.js", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/core-app-api/CHANGELOG.md b/packages/core-app-api/CHANGELOG.md index 6461268841..ff8f8933ff 100644 --- a/packages/core-app-api/CHANGELOG.md +++ b/packages/core-app-api/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/core-app-api +## 1.8.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 1.8.1 ### Patch Changes diff --git a/packages/core-app-api/package.json b/packages/core-app-api/package.json index 8986fee574..3cc679d5a8 100644 --- a/packages/core-app-api/package.json +++ b/packages/core-app-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-app-api", "description": "Core app API used by Backstage apps", - "version": "1.8.1", + "version": "1.8.2-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/core-components/CHANGELOG.md b/packages/core-components/CHANGELOG.md index 9599bad333..839ff9aa63 100644 --- a/packages/core-components/CHANGELOG.md +++ b/packages/core-components/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/core-components +## 0.13.3-next.1 + +### Patch Changes + +- 7e0f558fbc37: The `Skip to content` button on click focuses on the main article tag and skips the `h1` tag. Users are not able to identify which page they are on currently. Now it's changed the behaviour of the button and focuses on the `h1` tag on the page. +- 015439b5b6ca: Updated dependency `rc-progress` to `3.4.2`. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 0.13.3-next.0 ### Patch Changes diff --git a/packages/core-components/package.json b/packages/core-components/package.json index f32af8bb2c..1eed2cdfed 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-components", "description": "Core components used by Backstage plugins and apps", - "version": "0.13.3-next.0", + "version": "0.13.3-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/core-plugin-api/CHANGELOG.md b/packages/core-plugin-api/CHANGELOG.md index 5c3fe8d8be..05be3e4572 100644 --- a/packages/core-plugin-api/CHANGELOG.md +++ b/packages/core-plugin-api/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/core-plugin-api +## 1.5.3-next.0 + +### Patch Changes + +- 13426ebd1235: Change `IconComponent` type to be compatible with Material UI v5 icons. +- Updated dependencies + - @backstage/config@1.0.8 + ## 1.5.2 ### Patch Changes diff --git a/packages/core-plugin-api/package.json b/packages/core-plugin-api/package.json index 71f3463513..b46504385d 100644 --- a/packages/core-plugin-api/package.json +++ b/packages/core-plugin-api/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/core-plugin-api", "description": "Core API used by Backstage plugins", - "version": "1.5.2", + "version": "1.5.3-next.0", "publishConfig": { "access": "public" }, diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 1fa48bff7a..9dcea4d3f0 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/create-app +## 0.5.3-next.1 + +### Patch Changes + +- 76b83a4422bb: Post-create message - added instruction to run `yarn install` when app was created with `--skip-install` +- e3ce5dd3f89a: add cy.\*\*.should to cypress eslintrc +- 294b1629de28: Display a warning alert if relations are defined, which don't exist in the catalog. + ## 0.5.3-next.0 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index ce223bcf8b..38f9e6a69c 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/create-app", "description": "A CLI that helps you create your own Backstage app", - "version": "0.5.3-next.0", + "version": "0.5.3-next.1", "publishConfig": { "access": "public" }, diff --git a/packages/dev-utils/CHANGELOG.md b/packages/dev-utils/CHANGELOG.md index fa598c6d21..2e3a14ec3b 100644 --- a/packages/dev-utils/CHANGELOG.md +++ b/packages/dev-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/dev-utils +## 1.0.17-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/app-defaults@1.4.1-next.1 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/core-app-api@1.8.2-next.0 + ## 1.0.17-next.0 ### Patch Changes diff --git a/packages/dev-utils/package.json b/packages/dev-utils/package.json index 6d1ffc85d3..ca5ec14eca 100644 --- a/packages/dev-utils/package.json +++ b/packages/dev-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/dev-utils", "description": "Utilities for developing Backstage plugins.", - "version": "1.0.17-next.0", + "version": "1.0.17-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index f216ca3548..35deed7d14 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,12 @@ # e2e-test +## 0.2.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.3-next.1 + ## 0.2.5-next.0 ### Patch Changes diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index e684a08fa1..79ada4d39f 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -1,7 +1,7 @@ { "name": "e2e-test", "description": "E2E test for verifying Backstage packages", - "version": "0.2.5-next.0", + "version": "0.2.5-next.1", "private": true, "backstage": { "role": "cli" diff --git a/packages/integration-react/CHANGELOG.md b/packages/integration-react/CHANGELOG.md index 21a1181511..8e58a1fb01 100644 --- a/packages/integration-react/CHANGELOG.md +++ b/packages/integration-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/integration-react +## 1.1.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 1.1.15-next.0 ### Patch Changes diff --git a/packages/integration-react/package.json b/packages/integration-react/package.json index 5c33e4dff0..88a32e3220 100644 --- a/packages/integration-react/package.json +++ b/packages/integration-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/integration-react", "description": "Frontend package for managing integrations towards external systems", - "version": "1.1.15-next.0", + "version": "1.1.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 49a4828c0d..43f56798ad 100644 --- a/packages/techdocs-cli-embedded-app/CHANGELOG.md +++ b/packages/techdocs-cli-embedded-app/CHANGELOG.md @@ -1,5 +1,23 @@ # techdocs-cli-embedded-app +## 0.2.84-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/app-defaults@1.4.1-next.1 + - @backstage/cli@0.22.9-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-techdocs@1.6.5-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/config@1.0.8 + ## 0.2.84-next.0 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index 0ff402d9f4..dc050d2138 100644 --- a/packages/techdocs-cli-embedded-app/package.json +++ b/packages/techdocs-cli-embedded-app/package.json @@ -1,6 +1,6 @@ { "name": "techdocs-cli-embedded-app", - "version": "0.2.84-next.0", + "version": "0.2.84-next.1", "private": true, "backstage": { "role": "frontend" diff --git a/packages/test-utils/CHANGELOG.md b/packages/test-utils/CHANGELOG.md index 6492a744f7..f694388ce5 100644 --- a/packages/test-utils/CHANGELOG.md +++ b/packages/test-utils/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/test-utils +## 1.4.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/core-app-api@1.8.2-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + - @backstage/config@1.0.8 + ## 1.4.1-next.0 ### Patch Changes diff --git a/packages/test-utils/package.json b/packages/test-utils/package.json index b68f25266b..4033a2651c 100644 --- a/packages/test-utils/package.json +++ b/packages/test-utils/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/test-utils", "description": "Utilities to test Backstage plugins and apps.", - "version": "1.4.1-next.0", + "version": "1.4.1-next.1", "publishConfig": { "access": "public" }, diff --git a/packages/theme/CHANGELOG.md b/packages/theme/CHANGELOG.md index ab96891b8f..cfa851b836 100644 --- a/packages/theme/CHANGELOG.md +++ b/packages/theme/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/theme +## 0.4.1-next.0 + +### Patch Changes + +- 4f28914d9f0e: Overwrite `PaletteOptions` & `ThemeOptions` type to allow use of `createTheme` from `@backstage/theme` as well as `@material-ui/core/styles` with the same type. Also replaced the default `CSSBaseline` with v4 instead of v5 for better backwards compatibility for now. +- 874c3e8bf909: Override the spacing to a v5 compliant method + ## 0.4.0 ### Minor Changes diff --git a/packages/theme/package.json b/packages/theme/package.json index 0cd2643146..967f07ae69 100644 --- a/packages/theme/package.json +++ b/packages/theme/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/theme", "description": "material-ui theme for use with Backstage.", - "version": "0.4.0", + "version": "0.4.1-next.0", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/adr/CHANGELOG.md b/plugins/adr/CHANGELOG.md index 83c03faa80..29fa6e5e0c 100644 --- a/plugins/adr/CHANGELOG.md +++ b/plugins/adr/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-adr +## 0.6.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + ## 0.6.3-next.0 ### Patch Changes diff --git a/plugins/adr/package.json b/plugins/adr/package.json index b9111fa80a..4c3df33d3f 100644 --- a/plugins/adr/package.json +++ b/plugins/adr/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-adr", - "version": "0.6.3-next.0", + "version": "0.6.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/airbrake/CHANGELOG.md b/plugins/airbrake/CHANGELOG.md index 3bbd0cce01..735ffe3ccc 100644 --- a/plugins/airbrake/CHANGELOG.md +++ b/plugins/airbrake/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-airbrake +## 0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/dev-utils@1.0.17-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.3.20-next.0 ### Patch Changes diff --git a/plugins/airbrake/package.json b/plugins/airbrake/package.json index 5c01e3614c..52e1e02846 100644 --- a/plugins/airbrake/package.json +++ b/plugins/airbrake/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-airbrake", - "version": "0.3.20-next.0", + "version": "0.3.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/allure/CHANGELOG.md b/plugins/allure/CHANGELOG.md index 77ac0773bd..718b3512b7 100644 --- a/plugins/allure/CHANGELOG.md +++ b/plugins/allure/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-allure +## 0.1.36-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.36-next.0 ### Patch Changes diff --git a/plugins/allure/package.json b/plugins/allure/package.json index 9d18b48b55..64da9b1d71 100644 --- a/plugins/allure/package.json +++ b/plugins/allure/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-allure", "description": "A Backstage plugin that integrates with Allure", - "version": "0.1.36-next.0", + "version": "0.1.36-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga/CHANGELOG.md b/plugins/analytics-module-ga/CHANGELOG.md index 1d4d5503a8..b4717b989a 100644 --- a/plugins/analytics-module-ga/CHANGELOG.md +++ b/plugins/analytics-module-ga/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-analytics-module-ga +## 0.1.31-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 0.1.31-next.0 ### Patch Changes diff --git a/plugins/analytics-module-ga/package.json b/plugins/analytics-module-ga/package.json index 7e16e8fde6..90bf6f786f 100644 --- a/plugins/analytics-module-ga/package.json +++ b/plugins/analytics-module-ga/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga", - "version": "0.1.31-next.0", + "version": "0.1.31-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/analytics-module-ga4/CHANGELOG.md b/plugins/analytics-module-ga4/CHANGELOG.md index 5787ee4598..cf7ca695df 100644 --- a/plugins/analytics-module-ga4/CHANGELOG.md +++ b/plugins/analytics-module-ga4/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-analytics-module-ga4 +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json index e4da26e205..84e3913c7e 100644 --- a/plugins/analytics-module-ga4/package.json +++ b/plugins/analytics-module-ga4/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-analytics-module-ga4", - "version": "0.1.2-next.0", + "version": "0.1.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apache-airflow/CHANGELOG.md b/plugins/apache-airflow/CHANGELOG.md index 8728876d60..142a93bce6 100644 --- a/plugins/apache-airflow/CHANGELOG.md +++ b/plugins/apache-airflow/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-apache-airflow +## 0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.2.13-next.0 ### Patch Changes diff --git a/plugins/apache-airflow/package.json b/plugins/apache-airflow/package.json index 088db151d6..9a75ccb703 100644 --- a/plugins/apache-airflow/package.json +++ b/plugins/apache-airflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apache-airflow", - "version": "0.2.13-next.0", + "version": "0.2.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/api-docs/CHANGELOG.md b/plugins/api-docs/CHANGELOG.md index 7727fdb12b..92223b12c1 100644 --- a/plugins/api-docs/CHANGELOG.md +++ b/plugins/api-docs/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-api-docs +## 0.9.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.9.6-next.0 ### Patch Changes diff --git a/plugins/api-docs/package.json b/plugins/api-docs/package.json index 8715788663..156e856db9 100644 --- a/plugins/api-docs/package.json +++ b/plugins/api-docs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-api-docs", "description": "A Backstage plugin that helps represent API entities in the frontend", - "version": "0.9.6-next.0", + "version": "0.9.6-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/apollo-explorer/CHANGELOG.md b/plugins/apollo-explorer/CHANGELOG.md index e52c044926..4384033822 100644 --- a/plugins/apollo-explorer/CHANGELOG.md +++ b/plugins/apollo-explorer/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-apollo-explorer +## 0.1.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.1.13-next.0 ### Patch Changes diff --git a/plugins/apollo-explorer/package.json b/plugins/apollo-explorer/package.json index e2812944a9..b9cdd4da63 100644 --- a/plugins/apollo-explorer/package.json +++ b/plugins/apollo-explorer/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-apollo-explorer", - "version": "0.1.13-next.0", + "version": "0.1.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index 5c72906f79..126c9e924d 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend +## 0.18.5-next.1 + +### Patch Changes + +- c27ae5004fc2: Support for Token Endpoint Auth Method for OIDC Provider +- Updated dependencies + - @backstage/config@1.0.8 + ## 0.18.5-next.0 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index f9c34f2cdf..ad4e62a60d 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-auth-backend", "description": "A Backstage backend plugin that handles authentication", - "version": "0.18.5-next.0", + "version": "0.18.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops-backend/CHANGELOG.md b/plugins/azure-devops-backend/CHANGELOG.md index 3635266575..a2d5af1098 100644 --- a/plugins/azure-devops-backend/CHANGELOG.md +++ b/plugins/azure-devops-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-azure-devops-backend +## 0.3.26-next.1 + +### Patch Changes + +- ae261e79d256: Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + ## 0.3.26-next.0 ### Patch Changes diff --git a/plugins/azure-devops-backend/package.json b/plugins/azure-devops-backend/package.json index 08411a3079..69c1e5557a 100644 --- a/plugins/azure-devops-backend/package.json +++ b/plugins/azure-devops-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops-backend", - "version": "0.3.26-next.0", + "version": "0.3.26-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-devops/CHANGELOG.md b/plugins/azure-devops/CHANGELOG.md index f880843479..b578eb7845 100644 --- a/plugins/azure-devops/CHANGELOG.md +++ b/plugins/azure-devops/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-azure-devops +## 0.3.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.3.2-next.0 ### Patch Changes diff --git a/plugins/azure-devops/package.json b/plugins/azure-devops/package.json index a7f3ca3876..5dfcb3509d 100644 --- a/plugins/azure-devops/package.json +++ b/plugins/azure-devops/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-devops", - "version": "0.3.2-next.0", + "version": "0.3.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/azure-sites/CHANGELOG.md b/plugins/azure-sites/CHANGELOG.md index 50708e1210..de3fe2a7da 100644 --- a/plugins/azure-sites/CHANGELOG.md +++ b/plugins/azure-sites/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-azure-sites +## 0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.9-next.0 ### Patch Changes diff --git a/plugins/azure-sites/package.json b/plugins/azure-sites/package.json index 16fa82f665..b2ab93f0b6 100644 --- a/plugins/azure-sites/package.json +++ b/plugins/azure-sites/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-azure-sites", - "version": "0.1.9-next.0", + "version": "0.1.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges-backend/CHANGELOG.md b/plugins/badges-backend/CHANGELOG.md index c569e9f71d..520116832b 100644 --- a/plugins/badges-backend/CHANGELOG.md +++ b/plugins/badges-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-badges-backend +## 0.2.2-next.1 + +### Patch Changes + +- 2bbdcb4154c3: Added support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + ## 0.2.2-next.0 ### Patch Changes diff --git a/plugins/badges-backend/package.json b/plugins/badges-backend/package.json index 3106e363cc..140f4e2352 100644 --- a/plugins/badges-backend/package.json +++ b/plugins/badges-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges-backend", "description": "A Backstage backend plugin that generates README badges for your entities", - "version": "0.2.2-next.0", + "version": "0.2.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/badges/CHANGELOG.md b/plugins/badges/CHANGELOG.md index c58c201702..f5046ddeee 100644 --- a/plugins/badges/CHANGELOG.md +++ b/plugins/badges/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-badges +## 0.2.44-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.44-next.0 ### Patch Changes diff --git a/plugins/badges/package.json b/plugins/badges/package.json index b00ec0d563..71fc1790ed 100644 --- a/plugins/badges/package.json +++ b/plugins/badges/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-badges", "description": "A Backstage plugin that generates README badges for your entities", - "version": "0.2.44-next.0", + "version": "0.2.44-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bazaar/CHANGELOG.md b/plugins/bazaar/CHANGELOG.md index f0dbacd17c..29a47fd230 100644 --- a/plugins/bazaar/CHANGELOG.md +++ b/plugins/bazaar/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-bazaar +## 0.2.11-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/cli@0.22.9-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.11-next.0 ### Patch Changes diff --git a/plugins/bazaar/package.json b/plugins/bazaar/package.json index f9678b90f1..c7ab58ad2b 100644 --- a/plugins/bazaar/package.json +++ b/plugins/bazaar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-bazaar", - "version": "0.2.11-next.0", + "version": "0.2.11-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/bitrise/CHANGELOG.md b/plugins/bitrise/CHANGELOG.md index b98ba185f8..0f102c6b07 100644 --- a/plugins/bitrise/CHANGELOG.md +++ b/plugins/bitrise/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-bitrise +## 0.1.47-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.47-next.0 ### Patch Changes diff --git a/plugins/bitrise/package.json b/plugins/bitrise/package.json index d77d1a1bf2..340d5a7b4f 100644 --- a/plugins/bitrise/package.json +++ b/plugins/bitrise/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-bitrise", "description": "A Backstage plugin that integrates towards Bitrise", - "version": "0.1.47-next.0", + "version": "0.1.47-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index 2bbad4fd3e..e28da440f5 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-catalog-backend-module-github +## 0.3.2-next.1 + +### Patch Changes + +- b01b869d7158: fixed event handler to respect configured organization +- Updated dependencies + - @backstage/config@1.0.8 + ## 0.3.2-next.0 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index bb08386642..9e2dbb9bb3 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-backend-module-github", "description": "A Backstage catalog backend module that helps integrate towards GitHub", - "version": "0.3.2-next.0", + "version": "0.3.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-customized/CHANGELOG.md b/plugins/catalog-customized/CHANGELOG.md index c707b912a9..d7314a7c8a 100644 --- a/plugins/catalog-customized/CHANGELOG.md +++ b/plugins/catalog-customized/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/plugin-catalog-customized +## 0.0.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.0.12-next.0 ### Patch Changes diff --git a/plugins/catalog-customized/package.json b/plugins/catalog-customized/package.json index b178254d3c..ec8655bdbe 100644 --- a/plugins/catalog-customized/package.json +++ b/plugins/catalog-customized/package.json @@ -1,7 +1,7 @@ { "name": "@internal/plugin-catalog-customized", "description": "The internal Backstage Customizable plugin for browsing the Backstage catalog", - "version": "0.0.12-next.0", + "version": "0.0.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-graph/CHANGELOG.md b/plugins/catalog-graph/CHANGELOG.md index 38863d49fa..2d54c44826 100644 --- a/plugins/catalog-graph/CHANGELOG.md +++ b/plugins/catalog-graph/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-graph +## 0.2.32-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.32-next.0 ### Patch Changes diff --git a/plugins/catalog-graph/package.json b/plugins/catalog-graph/package.json index 782ce22ee4..eea552ccd2 100644 --- a/plugins/catalog-graph/package.json +++ b/plugins/catalog-graph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-graph", - "version": "0.2.32-next.0", + "version": "0.2.32-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-import/CHANGELOG.md b/plugins/catalog-import/CHANGELOG.md index de07689df2..fc1838a4de 100644 --- a/plugins/catalog-import/CHANGELOG.md +++ b/plugins/catalog-import/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-import +## 0.9.10-next.1 + +### Patch Changes + +- 36b7edf39585: Add a "View Component" button as the primary CTA after registering a new component using a link to catalog-info.yaml +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + ## 0.9.10-next.0 ### Patch Changes diff --git a/plugins/catalog-import/package.json b/plugins/catalog-import/package.json index a87632e05b..9bc8dfded9 100644 --- a/plugins/catalog-import/package.json +++ b/plugins/catalog-import/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-import", "description": "A Backstage plugin the helps you import entities into your catalog", - "version": "0.9.10-next.0", + "version": "0.9.10-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-react/CHANGELOG.md b/plugins/catalog-react/CHANGELOG.md index 88df42e856..af3fb6f39a 100644 --- a/plugins/catalog-react/CHANGELOG.md +++ b/plugins/catalog-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-catalog-react +## 1.7.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + ## 1.7.1-next.0 ### Patch Changes diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index f74b9c0fc5..841a83a7f0 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog-react", "description": "A frontend library that helps other Backstage plugins interact with the catalog", - "version": "1.7.1-next.0", + "version": "1.7.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog-unprocessed-entities/CHANGELOG.md b/plugins/catalog-unprocessed-entities/CHANGELOG.md index e17e0d87fa..a654bdf4ce 100644 --- a/plugins/catalog-unprocessed-entities/CHANGELOG.md +++ b/plugins/catalog-unprocessed-entities/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-unprocessed-entities +## 0.1.1-next.1 + +### Patch Changes + +- 267396f45bd0: Corrected the installation instructions. +- 7a9c8a9cd0ce: Fixed spacing for success message +- 77b408fad872: install command points to correct package name +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.1.1-next.0 ### Patch Changes diff --git a/plugins/catalog-unprocessed-entities/package.json b/plugins/catalog-unprocessed-entities/package.json index de5287c661..5ad157c880 100644 --- a/plugins/catalog-unprocessed-entities/package.json +++ b/plugins/catalog-unprocessed-entities/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-unprocessed-entities", - "version": "0.1.1-next.0", + "version": "0.1.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/catalog/CHANGELOG.md b/plugins/catalog/CHANGELOG.md index d6e3a62d40..1a8b1a610e 100644 --- a/plugins/catalog/CHANGELOG.md +++ b/plugins/catalog/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog +## 1.11.3-next.1 + +### Patch Changes + +- 294b1629de28: Display a warning alert if relations are defined, which don't exist in the catalog. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + ## 1.11.3-next.0 ### Patch Changes diff --git a/plugins/catalog/package.json b/plugins/catalog/package.json index dc4d161b17..71995f76aa 100644 --- a/plugins/catalog/package.json +++ b/plugins/catalog/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-catalog", "description": "The Backstage plugin for browsing the Backstage catalog", - "version": "1.11.3-next.0", + "version": "1.11.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md index af80e6ff12..908e992248 100644 --- a/plugins/cicd-statistics-module-gitlab/CHANGELOG.md +++ b/plugins/cicd-statistics-module-gitlab/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-cicd-statistics-module-gitlab +## 0.1.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-cicd-statistics@0.1.22-next.1 + ## 0.1.16-next.0 ### Patch Changes diff --git a/plugins/cicd-statistics-module-gitlab/package.json b/plugins/cicd-statistics-module-gitlab/package.json index 1ae6ad86d0..134e7b355b 100644 --- a/plugins/cicd-statistics-module-gitlab/package.json +++ b/plugins/cicd-statistics-module-gitlab/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics-module-gitlab", "description": "CI/CD Statistics plugin module; Gitlab CICD", - "version": "0.1.16-next.0", + "version": "0.1.16-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cicd-statistics/CHANGELOG.md b/plugins/cicd-statistics/CHANGELOG.md index 8a2734388d..bf95a80f96 100644 --- a/plugins/cicd-statistics/CHANGELOG.md +++ b/plugins/cicd-statistics/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-cicd-statistics +## 0.1.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.22-next.0 ### Patch Changes diff --git a/plugins/cicd-statistics/package.json b/plugins/cicd-statistics/package.json index fea49294a8..15e3679d4a 100644 --- a/plugins/cicd-statistics/package.json +++ b/plugins/cicd-statistics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cicd-statistics", "description": "A frontend plugin visualizing CI/CD pipeline statistics (build time)", - "version": "0.1.22-next.0", + "version": "0.1.22-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/circleci/CHANGELOG.md b/plugins/circleci/CHANGELOG.md index 4876a85517..2a82b32d7f 100644 --- a/plugins/circleci/CHANGELOG.md +++ b/plugins/circleci/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-circleci +## 0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.3.20-next.0 ### Patch Changes diff --git a/plugins/circleci/package.json b/plugins/circleci/package.json index 5d67134d2d..502e75e3bc 100644 --- a/plugins/circleci/package.json +++ b/plugins/circleci/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-circleci", "description": "A Backstage plugin that integrates towards Circle CI", - "version": "0.3.20-next.0", + "version": "0.3.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cloudbuild/CHANGELOG.md b/plugins/cloudbuild/CHANGELOG.md index 9009d28477..a3e016c63b 100644 --- a/plugins/cloudbuild/CHANGELOG.md +++ b/plugins/cloudbuild/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-cloudbuild +## 0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.3.20-next.0 ### Patch Changes diff --git a/plugins/cloudbuild/package.json b/plugins/cloudbuild/package.json index 76ae80d4b6..da73d77619 100644 --- a/plugins/cloudbuild/package.json +++ b/plugins/cloudbuild/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cloudbuild", "description": "A Backstage plugin that integrates towards Google Cloud Build", - "version": "0.3.20-next.0", + "version": "0.3.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-climate/CHANGELOG.md b/plugins/code-climate/CHANGELOG.md index cadc5aa7e5..943656cb3a 100644 --- a/plugins/code-climate/CHANGELOG.md +++ b/plugins/code-climate/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-code-climate +## 0.1.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.20-next.0 ### Patch Changes diff --git a/plugins/code-climate/package.json b/plugins/code-climate/package.json index adb9cf72ef..140527935a 100644 --- a/plugins/code-climate/package.json +++ b/plugins/code-climate/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-code-climate", - "version": "0.1.20-next.0", + "version": "0.1.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/code-coverage/CHANGELOG.md b/plugins/code-coverage/CHANGELOG.md index e3c83cde4a..e5e4cb1967 100644 --- a/plugins/code-coverage/CHANGELOG.md +++ b/plugins/code-coverage/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-code-coverage +## 0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + ## 0.2.13-next.0 ### Patch Changes diff --git a/plugins/code-coverage/package.json b/plugins/code-coverage/package.json index 53e5210cad..f3f27b7647 100644 --- a/plugins/code-coverage/package.json +++ b/plugins/code-coverage/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-code-coverage", "description": "A Backstage plugin that helps you keep track of your code coverage", - "version": "0.2.13-next.0", + "version": "0.2.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/codescene/CHANGELOG.md b/plugins/codescene/CHANGELOG.md index cb509d1f03..224aab3891 100644 --- a/plugins/codescene/CHANGELOG.md +++ b/plugins/codescene/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-codescene +## 0.1.15-next.1 + +### Patch Changes + +- 015439b5b6ca: Updated dependency `rc-progress` to `3.4.2`. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 0.1.15-next.0 ### Patch Changes diff --git a/plugins/codescene/package.json b/plugins/codescene/package.json index 9c2bdef3d3..39382c1047 100644 --- a/plugins/codescene/package.json +++ b/plugins/codescene/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-codescene", - "version": "0.1.15-next.0", + "version": "0.1.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/config-schema/CHANGELOG.md b/plugins/config-schema/CHANGELOG.md index 606f289435..af512a13dc 100644 --- a/plugins/config-schema/CHANGELOG.md +++ b/plugins/config-schema/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-config-schema +## 0.1.43-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 0.1.43-next.0 ### Patch Changes diff --git a/plugins/config-schema/package.json b/plugins/config-schema/package.json index b5f6f8fd28..95d143f7e2 100644 --- a/plugins/config-schema/package.json +++ b/plugins/config-schema/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-config-schema", "description": "A Backstage plugin that lets you browse the configuration schema of your app", - "version": "0.1.43-next.0", + "version": "0.1.43-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/cost-insights/CHANGELOG.md b/plugins/cost-insights/CHANGELOG.md index e375e8a973..bc6f1cf986 100644 --- a/plugins/cost-insights/CHANGELOG.md +++ b/plugins/cost-insights/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-cost-insights +## 0.12.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + ## 0.12.9-next.0 ### Patch Changes diff --git a/plugins/cost-insights/package.json b/plugins/cost-insights/package.json index 8855daa10b..269c39b0ba 100644 --- a/plugins/cost-insights/package.json +++ b/plugins/cost-insights/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-cost-insights", "description": "A Backstage plugin that helps you keep track of your cloud spend", - "version": "0.12.9-next.0", + "version": "0.12.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index 18108e24ef..fe6a5f4ef6 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-devtools-backend +## 0.1.2-next.1 + +### Patch Changes + +- ae261e79d256: Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index 388eccfa9e..365bdcf737 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools-backend", - "version": "0.1.2-next.0", + "version": "0.1.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/devtools/CHANGELOG.md b/plugins/devtools/CHANGELOG.md index ed2ec3cfff..53229aaeed 100644 --- a/plugins/devtools/CHANGELOG.md +++ b/plugins/devtools/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-devtools +## 0.1.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-permission-react@0.4.14-next.1 + ## 0.1.2-next.0 ### Patch Changes diff --git a/plugins/devtools/package.json b/plugins/devtools/package.json index 903f946dd7..a8ee7370bb 100644 --- a/plugins/devtools/package.json +++ b/plugins/devtools/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools", - "version": "0.1.2-next.0", + "version": "0.1.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/dynatrace/CHANGELOG.md b/plugins/dynatrace/CHANGELOG.md index b684b0eb55..5848d469e8 100644 --- a/plugins/dynatrace/CHANGELOG.md +++ b/plugins/dynatrace/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-dynatrace +## 6.0.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 6.0.1-next.0 ### Patch Changes diff --git a/plugins/dynatrace/package.json b/plugins/dynatrace/package.json index d78c4a40a5..48a501d38e 100644 --- a/plugins/dynatrace/package.json +++ b/plugins/dynatrace/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-dynatrace", - "version": "6.0.1-next.0", + "version": "6.0.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-feedback/CHANGELOG.md b/plugins/entity-feedback/CHANGELOG.md index 089f5c48f7..6907043121 100644 --- a/plugins/entity-feedback/CHANGELOG.md +++ b/plugins/entity-feedback/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-entity-feedback +## 0.2.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.3-next.0 ### Patch Changes diff --git a/plugins/entity-feedback/package.json b/plugins/entity-feedback/package.json index 3323a56051..d976fdaa7c 100644 --- a/plugins/entity-feedback/package.json +++ b/plugins/entity-feedback/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-feedback", - "version": "0.2.3-next.0", + "version": "0.2.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/entity-validation/CHANGELOG.md b/plugins/entity-validation/CHANGELOG.md index 1866f8b708..c9666a38ff 100644 --- a/plugins/entity-validation/CHANGELOG.md +++ b/plugins/entity-validation/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-entity-validation +## 0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.5-next.0 ### Patch Changes diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index 9c7d659eec..5acaa503f8 100644 --- a/plugins/entity-validation/package.json +++ b/plugins/entity-validation/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-entity-validation", - "version": "0.1.5-next.0", + "version": "0.1.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/example-todo-list/CHANGELOG.md b/plugins/example-todo-list/CHANGELOG.md index 4ed4bde47f..e13003a05b 100644 --- a/plugins/example-todo-list/CHANGELOG.md +++ b/plugins/example-todo-list/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list +## 1.0.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 1.0.15-next.0 ### Patch Changes diff --git a/plugins/example-todo-list/package.json b/plugins/example-todo-list/package.json index 7caafb04dd..490c4107e2 100644 --- a/plugins/example-todo-list/package.json +++ b/plugins/example-todo-list/package.json @@ -1,6 +1,6 @@ { "name": "@internal/plugin-todo-list", - "version": "1.0.15-next.0", + "version": "1.0.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore-react/CHANGELOG.md b/plugins/explore-react/CHANGELOG.md index 1606a801a4..f0f68ed638 100644 --- a/plugins/explore-react/CHANGELOG.md +++ b/plugins/explore-react/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-explore-react +## 0.0.30-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.0.29 ### Patch Changes diff --git a/plugins/explore-react/package.json b/plugins/explore-react/package.json index 9e18889565..b016080a63 100644 --- a/plugins/explore-react/package.json +++ b/plugins/explore-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore-react", "description": "A frontend library for Backstage plugins that want to interact with the explore plugin", - "version": "0.0.29", + "version": "0.0.30-next.0", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/explore/CHANGELOG.md b/plugins/explore/CHANGELOG.md index 6dab3ae1d1..805a0ae7b0 100644 --- a/plugins/explore/CHANGELOG.md +++ b/plugins/explore/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-explore +## 0.4.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-explore-react@0.0.30-next.0 + ## 0.4.6-next.0 ### Patch Changes diff --git a/plugins/explore/package.json b/plugins/explore/package.json index 13988f428c..294427d701 100644 --- a/plugins/explore/package.json +++ b/plugins/explore/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-explore", "description": "A Backstage plugin for building an exploration page of your software ecosystem", - "version": "0.4.6-next.0", + "version": "0.4.6-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/firehydrant/CHANGELOG.md b/plugins/firehydrant/CHANGELOG.md index dc3d3326f1..57bc323f4a 100644 --- a/plugins/firehydrant/CHANGELOG.md +++ b/plugins/firehydrant/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-firehydrant +## 0.2.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.4-next.0 ### Patch Changes diff --git a/plugins/firehydrant/package.json b/plugins/firehydrant/package.json index 9c56e726eb..94654c3dd3 100644 --- a/plugins/firehydrant/package.json +++ b/plugins/firehydrant/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-firehydrant", "description": "A Backstage plugin that integrates towards FireHydrant", - "version": "0.2.4-next.0", + "version": "0.2.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/fossa/CHANGELOG.md b/plugins/fossa/CHANGELOG.md index b96510cbcb..da988516b2 100644 --- a/plugins/fossa/CHANGELOG.md +++ b/plugins/fossa/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-fossa +## 0.2.52-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.52-next.0 ### Patch Changes diff --git a/plugins/fossa/package.json b/plugins/fossa/package.json index bf78a608ae..22a93f3470 100644 --- a/plugins/fossa/package.json +++ b/plugins/fossa/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-fossa", "description": "A Backstage plugin that integrates towards FOSSA", - "version": "0.2.52-next.0", + "version": "0.2.52-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcalendar/CHANGELOG.md b/plugins/gcalendar/CHANGELOG.md index d526cbc224..40a1617bac 100644 --- a/plugins/gcalendar/CHANGELOG.md +++ b/plugins/gcalendar/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gcalendar +## 0.3.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.3.16-next.0 ### Patch Changes diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index 885175763c..13aafde89a 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-gcalendar", - "version": "0.3.16-next.0", + "version": "0.3.16-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gcp-projects/CHANGELOG.md b/plugins/gcp-projects/CHANGELOG.md index 27c0f7eef0..d77e673709 100644 --- a/plugins/gcp-projects/CHANGELOG.md +++ b/plugins/gcp-projects/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-gcp-projects +## 0.3.39-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.3.39-next.0 ### Patch Changes diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index e958a026bf..ea3ac6e22b 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gcp-projects", "description": "A Backstage plugin that helps you manage projects in GCP", - "version": "0.3.39-next.0", + "version": "0.3.39-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/git-release-manager/CHANGELOG.md b/plugins/git-release-manager/CHANGELOG.md index 1f7792d331..49b5bfb6b0 100644 --- a/plugins/git-release-manager/CHANGELOG.md +++ b/plugins/git-release-manager/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-git-release-manager +## 0.3.33-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.3.33-next.0 ### Patch Changes diff --git a/plugins/git-release-manager/package.json b/plugins/git-release-manager/package.json index 21c2ae6e4a..cde9a47e46 100644 --- a/plugins/git-release-manager/package.json +++ b/plugins/git-release-manager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-git-release-manager", "description": "A Backstage plugin that helps you manage releases in git", - "version": "0.3.33-next.0", + "version": "0.3.33-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-actions/CHANGELOG.md b/plugins/github-actions/CHANGELOG.md index aa0935ba32..b6c5ee384b 100644 --- a/plugins/github-actions/CHANGELOG.md +++ b/plugins/github-actions/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-github-actions +## 0.6.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.6.1-next.0 ### Patch Changes diff --git a/plugins/github-actions/package.json b/plugins/github-actions/package.json index 468d77f847..e592446e0c 100644 --- a/plugins/github-actions/package.json +++ b/plugins/github-actions/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-actions", "description": "A Backstage plugin that integrates towards GitHub Actions", - "version": "0.6.1-next.0", + "version": "0.6.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-deployments/CHANGELOG.md b/plugins/github-deployments/CHANGELOG.md index 043830f1e7..0719ae347d 100644 --- a/plugins/github-deployments/CHANGELOG.md +++ b/plugins/github-deployments/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-github-deployments +## 0.1.51-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.51-next.0 ### Patch Changes diff --git a/plugins/github-deployments/package.json b/plugins/github-deployments/package.json index 7a10383c5b..d0918bd1b7 100644 --- a/plugins/github-deployments/package.json +++ b/plugins/github-deployments/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-deployments", "description": "A Backstage plugin that integrates towards GitHub Deployments", - "version": "0.1.51-next.0", + "version": "0.1.51-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-issues/CHANGELOG.md b/plugins/github-issues/CHANGELOG.md index 0ce60173e6..5e9eaafa8f 100644 --- a/plugins/github-issues/CHANGELOG.md +++ b/plugins/github-issues/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-github-issues +## 0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.9-next.0 ### Patch Changes diff --git a/plugins/github-issues/package.json b/plugins/github-issues/package.json index cc8f5582c3..902825c91b 100644 --- a/plugins/github-issues/package.json +++ b/plugins/github-issues/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-github-issues", - "version": "0.2.9-next.0", + "version": "0.2.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/github-pull-requests-board/CHANGELOG.md b/plugins/github-pull-requests-board/CHANGELOG.md index 662d998597..ba387b632d 100644 --- a/plugins/github-pull-requests-board/CHANGELOG.md +++ b/plugins/github-pull-requests-board/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-github-pull-requests-board +## 0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.14-next.0 ### Patch Changes diff --git a/plugins/github-pull-requests-board/package.json b/plugins/github-pull-requests-board/package.json index d9b807b6fc..a3a3910ae9 100644 --- a/plugins/github-pull-requests-board/package.json +++ b/plugins/github-pull-requests-board/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-github-pull-requests-board", "description": "A Backstage plugin that allows you to see all open Pull Requests for all the repositories owned by your team", - "version": "0.1.14-next.0", + "version": "0.1.14-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gitops-profiles/CHANGELOG.md b/plugins/gitops-profiles/CHANGELOG.md index 85e567a355..d80d21d23d 100644 --- a/plugins/gitops-profiles/CHANGELOG.md +++ b/plugins/gitops-profiles/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gitops-profiles +## 0.3.38-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 0.3.38-next.0 ### Patch Changes diff --git a/plugins/gitops-profiles/package.json b/plugins/gitops-profiles/package.json index b9e813086d..2c099f507a 100644 --- a/plugins/gitops-profiles/package.json +++ b/plugins/gitops-profiles/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gitops-profiles", "description": "A Backstage plugin that helps you manage GitOps profiles", - "version": "0.3.38-next.0", + "version": "0.3.38-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/gocd/CHANGELOG.md b/plugins/gocd/CHANGELOG.md index bf4977390f..f54cfe703e 100644 --- a/plugins/gocd/CHANGELOG.md +++ b/plugins/gocd/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-gocd +## 0.1.26-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.26-next.0 ### Patch Changes diff --git a/plugins/gocd/package.json b/plugins/gocd/package.json index 66f7521cd8..7a14d49e6f 100644 --- a/plugins/gocd/package.json +++ b/plugins/gocd/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-gocd", "description": "A Backstage plugin that integrates towards GoCD", - "version": "0.1.26-next.0", + "version": "0.1.26-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/graphiql/CHANGELOG.md b/plugins/graphiql/CHANGELOG.md index ec5a7f8e25..f5f89ee353 100644 --- a/plugins/graphiql/CHANGELOG.md +++ b/plugins/graphiql/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphiql +## 0.2.52-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.2.52-next.0 ### Patch Changes diff --git a/plugins/graphiql/package.json b/plugins/graphiql/package.json index e7ce00be1c..25179e2b46 100644 --- a/plugins/graphiql/package.json +++ b/plugins/graphiql/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphiql", "description": "Backstage plugin for browsing GraphQL APIs", - "version": "0.2.52-next.0", + "version": "0.2.52-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/graphql-voyager/CHANGELOG.md b/plugins/graphql-voyager/CHANGELOG.md index 90f899932f..99181b3c1a 100644 --- a/plugins/graphql-voyager/CHANGELOG.md +++ b/plugins/graphql-voyager/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-graphql-voyager +## 0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.1.5-next.0 ### Patch Changes diff --git a/plugins/graphql-voyager/package.json b/plugins/graphql-voyager/package.json index 9fd3eccd54..7224ec943e 100644 --- a/plugins/graphql-voyager/package.json +++ b/plugins/graphql-voyager/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-graphql-voyager", "description": "Backstage plugin for GraphQL Voyager", - "version": "0.1.5-next.0", + "version": "0.1.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home-react/CHANGELOG.md b/plugins/home-react/CHANGELOG.md index 07b5e817aa..32d08c127b 100644 --- a/plugins/home-react/CHANGELOG.md +++ b/plugins/home-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-home-react +## 0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.1.1-next.0 ### Patch Changes diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index 94facb55fa..2e50b74950 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home-react", "description": "A Backstage plugin that contains react components helps you build a home page", - "version": "0.1.1-next.0", + "version": "0.1.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index cdf140b2d5..013151b2a3 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-home +## 0.5.4-next.1 + +### Patch Changes + +- b8ebd3d2e4e5: Fix missing column breakpoints in `CustomHompageGrid` +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-home-react@0.1.1-next.1 + - @backstage/config@1.0.8 + ## 0.5.4-next.0 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index 156fcd12e5..0c25b87eff 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-home", "description": "A Backstage plugin that helps you build a home page", - "version": "0.5.4-next.0", + "version": "0.5.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/ilert/CHANGELOG.md b/plugins/ilert/CHANGELOG.md index df53ce78bc..0acd2a9716 100644 --- a/plugins/ilert/CHANGELOG.md +++ b/plugins/ilert/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-ilert +## 0.2.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.9-next.0 ### Patch Changes diff --git a/plugins/ilert/package.json b/plugins/ilert/package.json index 0b231ec789..4c40e93c69 100644 --- a/plugins/ilert/package.json +++ b/plugins/ilert/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-ilert", "description": "A Backstage plugin that integrates towards iLert", - "version": "0.2.9-next.0", + "version": "0.2.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/jenkins/CHANGELOG.md b/plugins/jenkins/CHANGELOG.md index 20528abe26..e6191e5d7d 100644 --- a/plugins/jenkins/CHANGELOG.md +++ b/plugins/jenkins/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-jenkins +## 0.8.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.8.2-next.0 ### Patch Changes diff --git a/plugins/jenkins/package.json b/plugins/jenkins/package.json index 3cce27104d..21d02efcb0 100644 --- a/plugins/jenkins/package.json +++ b/plugins/jenkins/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-jenkins", "description": "A Backstage plugin that integrates towards Jenkins", - "version": "0.8.2-next.0", + "version": "0.8.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kafka/CHANGELOG.md b/plugins/kafka/CHANGELOG.md index f3fc4a9084..3f435101b4 100644 --- a/plugins/kafka/CHANGELOG.md +++ b/plugins/kafka/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-kafka +## 0.3.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + ## 0.3.20-next.0 ### Patch Changes diff --git a/plugins/kafka/package.json b/plugins/kafka/package.json index 38e661e577..d3720683e8 100644 --- a/plugins/kafka/package.json +++ b/plugins/kafka/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kafka", "description": "A Backstage plugin that integrates towards Kafka", - "version": "0.3.20-next.0", + "version": "0.3.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index 03f6b1680a..f6b6cc7fbf 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-kubernetes-backend +## 0.11.2-next.1 + +### Patch Changes + +- 4db037c20148: Replace reference to deprecated import +- c2e530653539: Add WebSocket support to `kubernetes-backend` proxy. +- Updated dependencies + - @backstage/config@1.0.8 + - @backstage/integration-aws-node@0.1.5-next.0 + ## 0.11.2-next.0 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index 74a6032b1c..2564fb381d 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes-backend", "description": "A Backstage backend plugin that integrates towards Kubernetes", - "version": "0.11.2-next.0", + "version": "0.11.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/kubernetes/CHANGELOG.md b/plugins/kubernetes/CHANGELOG.md index 7aa5ce5830..33fc9df07d 100644 --- a/plugins/kubernetes/CHANGELOG.md +++ b/plugins/kubernetes/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-kubernetes +## 0.9.3-next.1 + +### Patch Changes + +- d62fc3fe85ba: Make pod drawer headings consistent +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + ## 0.9.3-next.0 ### Patch Changes diff --git a/plugins/kubernetes/package.json b/plugins/kubernetes/package.json index b59735a6ee..88e3fca3ea 100644 --- a/plugins/kubernetes/package.json +++ b/plugins/kubernetes/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-kubernetes", "description": "A Backstage plugin that integrates towards Kubernetes", - "version": "0.9.3-next.0", + "version": "0.9.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/lighthouse/CHANGELOG.md b/plugins/lighthouse/CHANGELOG.md index f52d23ddcf..df47e72340 100644 --- a/plugins/lighthouse/CHANGELOG.md +++ b/plugins/lighthouse/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-lighthouse +## 0.4.5-next.1 + +### Patch Changes + +- cb200dbb8038: Added more verbose components (used to render `null`) when no audits for a website corresponding to the provided url were found. + Added `Create New Audit` button for the `AuditListForEntity` component used by `EntityLighthouseContent` and `EmbeddedRouter`. + Removed error alert from `errorApi` if error was due to no audits being found for a website (empty database query result). +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + ## 0.4.5-next.0 ### Patch Changes diff --git a/plugins/lighthouse/package.json b/plugins/lighthouse/package.json index 57125aed05..4ff3da7e86 100644 --- a/plugins/lighthouse/package.json +++ b/plugins/lighthouse/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-lighthouse", "description": "A Backstage plugin that integrates towards Lighthouse", - "version": "0.4.5-next.0", + "version": "0.4.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist-backend/CHANGELOG.md b/plugins/linguist-backend/CHANGELOG.md index c9b56eeaf7..8b7fe6ec10 100644 --- a/plugins/linguist-backend/CHANGELOG.md +++ b/plugins/linguist-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-linguist-backend +## 0.3.1-next.1 + +### Patch Changes + +- ae261e79d256: Added alpha support for the [new backend system](https://backstage.io/docs/backend-system/) +- Updated dependencies + - @backstage/config@1.0.8 + ## 0.3.1-next.0 ### Patch Changes diff --git a/plugins/linguist-backend/package.json b/plugins/linguist-backend/package.json index 0239b241d3..6d7f4aff6c 100644 --- a/plugins/linguist-backend/package.json +++ b/plugins/linguist-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist-backend", - "version": "0.3.1-next.0", + "version": "0.3.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/linguist/CHANGELOG.md b/plugins/linguist/CHANGELOG.md index 2c778736ea..d95c9e3ee4 100644 --- a/plugins/linguist/CHANGELOG.md +++ b/plugins/linguist/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-linguist +## 0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.5-next.0 ### Patch Changes diff --git a/plugins/linguist/package.json b/plugins/linguist/package.json index 65a364e31e..17fd8efd36 100644 --- a/plugins/linguist/package.json +++ b/plugins/linguist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-linguist", - "version": "0.1.5-next.0", + "version": "0.1.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/microsoft-calendar/CHANGELOG.md b/plugins/microsoft-calendar/CHANGELOG.md index 870087196d..1895ef0859 100644 --- a/plugins/microsoft-calendar/CHANGELOG.md +++ b/plugins/microsoft-calendar/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-microsoft-calendar +## 0.1.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.1.5-next.0 ### Patch Changes diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index 5e4f6f3b73..643aac7da0 100644 --- a/plugins/microsoft-calendar/package.json +++ b/plugins/microsoft-calendar/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-microsoft-calendar", - "version": "0.1.5-next.0", + "version": "0.1.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic-dashboard/CHANGELOG.md b/plugins/newrelic-dashboard/CHANGELOG.md index 0c9d6dc094..e5a93b88b4 100644 --- a/plugins/newrelic-dashboard/CHANGELOG.md +++ b/plugins/newrelic-dashboard/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-newrelic-dashboard +## 0.2.13-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.13-next.0 ### Patch Changes diff --git a/plugins/newrelic-dashboard/package.json b/plugins/newrelic-dashboard/package.json index ce6a2e7ad5..e60ccd4966 100644 --- a/plugins/newrelic-dashboard/package.json +++ b/plugins/newrelic-dashboard/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-newrelic-dashboard", - "version": "0.2.13-next.0", + "version": "0.2.13-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/newrelic/CHANGELOG.md b/plugins/newrelic/CHANGELOG.md index aedb63b85e..f7e30869af 100644 --- a/plugins/newrelic/CHANGELOG.md +++ b/plugins/newrelic/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-newrelic +## 0.3.38-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.3.38-next.0 ### Patch Changes diff --git a/plugins/newrelic/package.json b/plugins/newrelic/package.json index 4cc89bab73..6aa78f878a 100644 --- a/plugins/newrelic/package.json +++ b/plugins/newrelic/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-newrelic", "description": "A Backstage plugin that integrates towards New Relic", - "version": "0.3.38-next.0", + "version": "0.3.38-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/nomad/CHANGELOG.md b/plugins/nomad/CHANGELOG.md index 79d516ab59..2aad8b7fdc 100644 --- a/plugins/nomad/CHANGELOG.md +++ b/plugins/nomad/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-nomad +## 0.1.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/config@1.0.8 + ## 0.1.1-next.0 ### Patch Changes diff --git a/plugins/nomad/package.json b/plugins/nomad/package.json index 3d4311cbc7..787c1a5a3b 100644 --- a/plugins/nomad/package.json +++ b/plugins/nomad/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-nomad", - "version": "0.1.1-next.0", + "version": "0.1.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/octopus-deploy/CHANGELOG.md b/plugins/octopus-deploy/CHANGELOG.md index 329ff12a05..a5af9a2fac 100644 --- a/plugins/octopus-deploy/CHANGELOG.md +++ b/plugins/octopus-deploy/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-octopus-deploy +## 0.2.2-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.2-next.0 ### Patch Changes diff --git a/plugins/octopus-deploy/package.json b/plugins/octopus-deploy/package.json index 82555e6e1b..017fa7c1b6 100644 --- a/plugins/octopus-deploy/package.json +++ b/plugins/octopus-deploy/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-octopus-deploy", - "version": "0.2.2-next.0", + "version": "0.2.2-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org-react/CHANGELOG.md b/plugins/org-react/CHANGELOG.md index 5fbe806dd9..a2b3f1215a 100644 --- a/plugins/org-react/CHANGELOG.md +++ b/plugins/org-react/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-org-react +## 0.1.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.9-next.0 ### Patch Changes diff --git a/plugins/org-react/package.json b/plugins/org-react/package.json index c5e185cdcc..92844dec72 100644 --- a/plugins/org-react/package.json +++ b/plugins/org-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-org-react", - "version": "0.1.9-next.0", + "version": "0.1.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/org/CHANGELOG.md b/plugins/org/CHANGELOG.md index 96870f2ea2..257a6dfd46 100644 --- a/plugins/org/CHANGELOG.md +++ b/plugins/org/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-org +## 0.6.10-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.6.10-next.0 ### Patch Changes diff --git a/plugins/org/package.json b/plugins/org/package.json index 4091ed33a2..58dffff561 100644 --- a/plugins/org/package.json +++ b/plugins/org/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-org", "description": "A Backstage plugin that helps you create entity pages for your organization", - "version": "0.6.10-next.0", + "version": "0.6.10-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/pagerduty/CHANGELOG.md b/plugins/pagerduty/CHANGELOG.md index ca1e46329d..5408f90b08 100644 --- a/plugins/pagerduty/CHANGELOG.md +++ b/plugins/pagerduty/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-pagerduty +## 0.6.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-home-react@0.1.1-next.1 + ## 0.6.1-next.0 ### Patch Changes diff --git a/plugins/pagerduty/package.json b/plugins/pagerduty/package.json index 68b67f640d..f0c44dff37 100644 --- a/plugins/pagerduty/package.json +++ b/plugins/pagerduty/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-pagerduty", "description": "A Backstage plugin that integrates towards PagerDuty", - "version": "0.6.1-next.0", + "version": "0.6.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/periskop/CHANGELOG.md b/plugins/periskop/CHANGELOG.md index 745ede4de1..1a8bbc2b58 100644 --- a/plugins/periskop/CHANGELOG.md +++ b/plugins/periskop/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-periskop +## 0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.18-next.0 ### Patch Changes diff --git a/plugins/periskop/package.json b/plugins/periskop/package.json index f6bbff2a2c..b49b3c0332 100644 --- a/plugins/periskop/package.json +++ b/plugins/periskop/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-periskop", - "version": "0.1.18-next.0", + "version": "0.1.18-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/permission-react/CHANGELOG.md b/plugins/permission-react/CHANGELOG.md index f0f7bd32ea..0200e8eb27 100644 --- a/plugins/permission-react/CHANGELOG.md +++ b/plugins/permission-react/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-permission-react +## 0.4.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 0.4.14-next.0 ### Patch Changes diff --git a/plugins/permission-react/package.json b/plugins/permission-react/package.json index 264005c88f..62e49109d7 100644 --- a/plugins/permission-react/package.json +++ b/plugins/permission-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-react", - "version": "0.4.14-next.0", + "version": "0.4.14-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/playlist/CHANGELOG.md b/plugins/playlist/CHANGELOG.md index 4266f1f1d1..f8b4652a4a 100644 --- a/plugins/playlist/CHANGELOG.md +++ b/plugins/playlist/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-playlist +## 0.1.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-permission-react@0.4.14-next.1 + ## 0.1.12-next.0 ### Patch Changes diff --git a/plugins/playlist/package.json b/plugins/playlist/package.json index 39cea31218..e7ff67002e 100644 --- a/plugins/playlist/package.json +++ b/plugins/playlist/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-playlist", - "version": "0.1.12-next.0", + "version": "0.1.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/puppetdb/CHANGELOG.md b/plugins/puppetdb/CHANGELOG.md index b4c78d1cb1..418488715f 100644 --- a/plugins/puppetdb/CHANGELOG.md +++ b/plugins/puppetdb/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-puppetdb +## 0.1.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.3-next.0 ### Patch Changes diff --git a/plugins/puppetdb/package.json b/plugins/puppetdb/package.json index 0d958d61c2..06755eca4f 100644 --- a/plugins/puppetdb/package.json +++ b/plugins/puppetdb/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-puppetdb", "description": "Backstage plugin to visualize resource information and Puppet facts from PuppetDB.", - "version": "0.1.3-next.0", + "version": "0.1.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/rollbar/CHANGELOG.md b/plugins/rollbar/CHANGELOG.md index 473e1b897b..eda81f4ec4 100644 --- a/plugins/rollbar/CHANGELOG.md +++ b/plugins/rollbar/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-rollbar +## 0.4.20-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.4.20-next.0 ### Patch Changes diff --git a/plugins/rollbar/package.json b/plugins/rollbar/package.json index 7454737254..52ca3f79b3 100644 --- a/plugins/rollbar/package.json +++ b/plugins/rollbar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-rollbar", "description": "A Backstage plugin that integrates towards Rollbar", - "version": "0.4.20-next.0", + "version": "0.4.20-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md index 3b7bce6a1d..36b8f81279 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-react +## 1.5.1-next.1 + +### Patch Changes + +- f74a27de4d2c: Made markdown description theme-able +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 1.5.1-next.0 ### Patch Changes diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 2fadab8a0f..75ef9137f4 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder-react", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", - "version": "1.5.1-next.0", + "version": "1.5.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index 4e3ff61b5b..ecb71e559d 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-scaffolder +## 1.14.1-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/plugin-scaffolder-react@1.5.1-next.1 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-permission-react@0.4.14-next.1 + - @backstage/config@1.0.8 + ## 1.14.1-next.0 ### Patch Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 08179c90cc..5637284f85 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-scaffolder", "description": "The Backstage plugin that helps you create new things", - "version": "1.14.1-next.0", + "version": "1.14.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search-react/CHANGELOG.md b/plugins/search-react/CHANGELOG.md index 574560e1d8..bbacf1735a 100644 --- a/plugins/search-react/CHANGELOG.md +++ b/plugins/search-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-search-react +## 1.6.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 1.6.3-next.0 ### Patch Changes diff --git a/plugins/search-react/package.json b/plugins/search-react/package.json index 8527750f05..a126663fa5 100644 --- a/plugins/search-react/package.json +++ b/plugins/search-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-react", - "version": "1.6.3-next.0", + "version": "1.6.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/search/CHANGELOG.md b/plugins/search/CHANGELOG.md index e01effe1c5..0a5dba0e77 100644 --- a/plugins/search/CHANGELOG.md +++ b/plugins/search/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-search +## 1.3.3-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/config@1.0.8 + ## 1.3.3-next.0 ### Patch Changes diff --git a/plugins/search/package.json b/plugins/search/package.json index be3ab80816..5fc1015233 100644 --- a/plugins/search/package.json +++ b/plugins/search/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-search", "description": "The Backstage plugin that provides your backstage app with search", - "version": "1.3.3-next.0", + "version": "1.3.3-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sentry/CHANGELOG.md b/plugins/sentry/CHANGELOG.md index f5d875f6e4..2a9a56e87f 100644 --- a/plugins/sentry/CHANGELOG.md +++ b/plugins/sentry/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-sentry +## 0.5.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.5.5-next.0 ### Patch Changes diff --git a/plugins/sentry/package.json b/plugins/sentry/package.json index 9bb841c30b..f17cc8aeba 100644 --- a/plugins/sentry/package.json +++ b/plugins/sentry/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sentry", "description": "A Backstage plugin that integrates towards Sentry", - "version": "0.5.5-next.0", + "version": "0.5.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/shortcuts/CHANGELOG.md b/plugins/shortcuts/CHANGELOG.md index e272fcc42c..24e3915a0e 100644 --- a/plugins/shortcuts/CHANGELOG.md +++ b/plugins/shortcuts/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-shortcuts +## 0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.3.12-next.0 ### Patch Changes diff --git a/plugins/shortcuts/package.json b/plugins/shortcuts/package.json index 94f5eb59e6..266e3390f7 100644 --- a/plugins/shortcuts/package.json +++ b/plugins/shortcuts/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-shortcuts", "description": "A Backstage plugin that provides a shortcuts feature to the sidebar", - "version": "0.3.12-next.0", + "version": "0.3.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-backend/CHANGELOG.md b/plugins/sonarqube-backend/CHANGELOG.md index 5a7db5d0e0..8a844cfc66 100644 --- a/plugins/sonarqube-backend/CHANGELOG.md +++ b/plugins/sonarqube-backend/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-sonarqube-backend +## 0.2.1-next.1 + +### Patch Changes + +- fcaf4cfc70ee: Made default config optional +- Updated dependencies + - @backstage/config@1.0.8 + ## 0.2.1-next.0 ### Patch Changes diff --git a/plugins/sonarqube-backend/package.json b/plugins/sonarqube-backend/package.json index ac6eb27395..95a94944c0 100644 --- a/plugins/sonarqube-backend/package.json +++ b/plugins/sonarqube-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-backend", - "version": "0.2.1-next.0", + "version": "0.2.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube-react/CHANGELOG.md b/plugins/sonarqube-react/CHANGELOG.md index 6a061ade31..e2df71fa1f 100644 --- a/plugins/sonarqube-react/CHANGELOG.md +++ b/plugins/sonarqube-react/CHANGELOG.md @@ -1,5 +1,12 @@ # @backstage/plugin-sonarqube-react +## 0.1.7-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.1.7-next.0 ### Patch Changes diff --git a/plugins/sonarqube-react/package.json b/plugins/sonarqube-react/package.json index 266fbcf489..ea72e80e3c 100644 --- a/plugins/sonarqube-react/package.json +++ b/plugins/sonarqube-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-sonarqube-react", - "version": "0.1.7-next.0", + "version": "0.1.7-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/sonarqube/CHANGELOG.md b/plugins/sonarqube/CHANGELOG.md index b77a8d83ab..f2ed3ea2e2 100644 --- a/plugins/sonarqube/CHANGELOG.md +++ b/plugins/sonarqube/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-sonarqube +## 0.7.1-next.1 + +### Patch Changes + +- fcaf4cfc70ee: Made default config optional +- 015439b5b6ca: Updated dependency `rc-progress` to `3.4.2`. +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-sonarqube-react@0.1.7-next.1 + ## 0.7.1-next.0 ### Patch Changes diff --git a/plugins/sonarqube/package.json b/plugins/sonarqube/package.json index a97ca78e0f..564abd82ae 100644 --- a/plugins/sonarqube/package.json +++ b/plugins/sonarqube/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-sonarqube", "description": "", - "version": "0.7.1-next.0", + "version": "0.7.1-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/splunk-on-call/CHANGELOG.md b/plugins/splunk-on-call/CHANGELOG.md index 971c5e388e..d7b3e74d4e 100644 --- a/plugins/splunk-on-call/CHANGELOG.md +++ b/plugins/splunk-on-call/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-splunk-on-call +## 0.4.9-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.4.9-next.0 ### Patch Changes diff --git a/plugins/splunk-on-call/package.json b/plugins/splunk-on-call/package.json index d24e81993d..838ce07ead 100644 --- a/plugins/splunk-on-call/package.json +++ b/plugins/splunk-on-call/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-splunk-on-call", "description": "A Backstage plugin that integrates towards Splunk On-Call", - "version": "0.4.9-next.0", + "version": "0.4.9-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stack-overflow/CHANGELOG.md b/plugins/stack-overflow/CHANGELOG.md index 434aa953d8..738a2cc217 100644 --- a/plugins/stack-overflow/CHANGELOG.md +++ b/plugins/stack-overflow/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-stack-overflow +## 0.1.18-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-home-react@0.1.1-next.1 + - @backstage/config@1.0.8 + ## 0.1.18-next.0 ### Patch Changes diff --git a/plugins/stack-overflow/package.json b/plugins/stack-overflow/package.json index bac7780c89..0ffaba5fc7 100644 --- a/plugins/stack-overflow/package.json +++ b/plugins/stack-overflow/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-stack-overflow", - "version": "0.1.18-next.0", + "version": "0.1.18-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/stackstorm/CHANGELOG.md b/plugins/stackstorm/CHANGELOG.md index fc741a6c5e..980e2ecbe2 100644 --- a/plugins/stackstorm/CHANGELOG.md +++ b/plugins/stackstorm/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-stackstorm +## 0.1.4-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.1.4-next.0 ### Patch Changes diff --git a/plugins/stackstorm/package.json b/plugins/stackstorm/package.json index 5b2f7aaaea..1454b64558 100644 --- a/plugins/stackstorm/package.json +++ b/plugins/stackstorm/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-stackstorm", "description": "A Backstage plugin that integrates towards StackStorm", - "version": "0.1.4-next.0", + "version": "0.1.4-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-insights/CHANGELOG.md b/plugins/tech-insights/CHANGELOG.md index 4c730ad3ac..85108423aa 100644 --- a/plugins/tech-insights/CHANGELOG.md +++ b/plugins/tech-insights/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-tech-insights +## 0.3.12-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.3.12-next.0 ### Patch Changes diff --git a/plugins/tech-insights/package.json b/plugins/tech-insights/package.json index 6a6e60895f..18424202a5 100644 --- a/plugins/tech-insights/package.json +++ b/plugins/tech-insights/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-tech-insights", - "version": "0.3.12-next.0", + "version": "0.3.12-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/tech-radar/CHANGELOG.md b/plugins/tech-radar/CHANGELOG.md index e0eb7132e1..3b7e0a55f4 100644 --- a/plugins/tech-radar/CHANGELOG.md +++ b/plugins/tech-radar/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-tech-radar +## 0.6.6-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.6.6-next.0 ### Patch Changes diff --git a/plugins/tech-radar/package.json b/plugins/tech-radar/package.json index 59d0e7f47f..73759b07f5 100644 --- a/plugins/tech-radar/package.json +++ b/plugins/tech-radar/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-tech-radar", "description": "A Backstage plugin that lets you display a Tech Radar for your organization", - "version": "0.6.6-next.0", + "version": "0.6.6-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-addons-test-utils/CHANGELOG.md b/plugins/techdocs-addons-test-utils/CHANGELOG.md index 6cbae369d3..5ef6737dec 100644 --- a/plugins/techdocs-addons-test-utils/CHANGELOG.md +++ b/plugins/techdocs-addons-test-utils/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-techdocs-addons-test-utils +## 1.0.16-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/plugin-catalog@1.11.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/test-utils@1.4.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-techdocs@1.6.5-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/core-app-api@1.8.2-next.0 + ## 1.0.16-next.0 ### Patch Changes diff --git a/plugins/techdocs-addons-test-utils/package.json b/plugins/techdocs-addons-test-utils/package.json index 7815ad4544..581224f21c 100644 --- a/plugins/techdocs-addons-test-utils/package.json +++ b/plugins/techdocs-addons-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-addons-test-utils", - "version": "1.0.16-next.0", + "version": "1.0.16-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 25344e3e2d..88d53ee8d0 100644 --- a/plugins/techdocs-module-addons-contrib/CHANGELOG.md +++ b/plugins/techdocs-module-addons-contrib/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-techdocs-module-addons-contrib +## 1.0.15-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + ## 1.0.15-next.0 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index f730249288..a80f098bb7 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", "description": "Plugin module for contributed TechDocs Addons", - "version": "1.0.15-next.0", + "version": "1.0.15-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/techdocs-react/CHANGELOG.md b/plugins/techdocs-react/CHANGELOG.md index 4957b83a41..e1a6c0544f 100644 --- a/plugins/techdocs-react/CHANGELOG.md +++ b/plugins/techdocs-react/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-techdocs-react +## 1.1.8-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/config@1.0.8 + ## 1.1.8-next.0 ### Patch Changes diff --git a/plugins/techdocs-react/package.json b/plugins/techdocs-react/package.json index 758afb2741..3fccc297a7 100644 --- a/plugins/techdocs-react/package.json +++ b/plugins/techdocs-react/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs-react", "description": "Shared frontend utilities for TechDocs and Addons", - "version": "1.1.8-next.0", + "version": "1.1.8-next.1", "publishConfig": { "access": "public", "main": "dist/index.esm.js", diff --git a/plugins/techdocs/CHANGELOG.md b/plugins/techdocs/CHANGELOG.md index 55e584f71d..411050b660 100644 --- a/plugins/techdocs/CHANGELOG.md +++ b/plugins/techdocs/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-techdocs +## 1.6.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/integration-react@1.1.15-next.1 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/plugin-search-react@1.6.3-next.1 + - @backstage/plugin-techdocs-react@1.1.8-next.1 + - @backstage/config@1.0.8 + ## 1.6.5-next.0 ### Patch Changes diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 9578ca46f0..91384073e8 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-techdocs", "description": "The Backstage plugin that renders technical documentation for your components", - "version": "1.6.5-next.0", + "version": "1.6.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/todo/CHANGELOG.md b/plugins/todo/CHANGELOG.md index 8a4ea6a6b1..91380417c4 100644 --- a/plugins/todo/CHANGELOG.md +++ b/plugins/todo/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-todo +## 0.2.22-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.2.22-next.0 ### Patch Changes diff --git a/plugins/todo/package.json b/plugins/todo/package.json index 58f2d19ea7..cd8eff8c19 100644 --- a/plugins/todo/package.json +++ b/plugins/todo/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-todo", "description": "A Backstage plugin that lets you browse TODO comments in your source code", - "version": "0.2.22-next.0", + "version": "0.2.22-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/user-settings/CHANGELOG.md b/plugins/user-settings/CHANGELOG.md index 6a96e894ce..e22f8bb533 100644 --- a/plugins/user-settings/CHANGELOG.md +++ b/plugins/user-settings/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-user-settings +## 0.7.5-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + - @backstage/core-app-api@1.8.2-next.0 + ## 0.7.5-next.0 ### Patch Changes diff --git a/plugins/user-settings/package.json b/plugins/user-settings/package.json index b76f5af19d..07ff3b3b40 100644 --- a/plugins/user-settings/package.json +++ b/plugins/user-settings/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-user-settings", "description": "A Backstage plugin that provides a settings page", - "version": "0.7.5-next.0", + "version": "0.7.5-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/vault/CHANGELOG.md b/plugins/vault/CHANGELOG.md index b52005530b..9c2a227da8 100644 --- a/plugins/vault/CHANGELOG.md +++ b/plugins/vault/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-vault +## 0.1.14-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + - @backstage/plugin-catalog-react@1.7.1-next.1 + ## 0.1.14-next.0 ### Patch Changes diff --git a/plugins/vault/package.json b/plugins/vault/package.json index 8669879ea7..ca5130ef45 100644 --- a/plugins/vault/package.json +++ b/plugins/vault/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-vault", "description": "A Backstage plugin that integrates towards Vault", - "version": "0.1.14-next.0", + "version": "0.1.14-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/plugins/xcmetrics/CHANGELOG.md b/plugins/xcmetrics/CHANGELOG.md index 16c263e885..55a58d6e3c 100644 --- a/plugins/xcmetrics/CHANGELOG.md +++ b/plugins/xcmetrics/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-xcmetrics +## 0.2.40-next.1 + +### Patch Changes + +- Updated dependencies + - @backstage/theme@0.4.1-next.0 + - @backstage/core-components@0.13.3-next.1 + - @backstage/core-plugin-api@1.5.3-next.0 + ## 0.2.40-next.0 ### Patch Changes diff --git a/plugins/xcmetrics/package.json b/plugins/xcmetrics/package.json index 5ea15c4181..ecc41db534 100644 --- a/plugins/xcmetrics/package.json +++ b/plugins/xcmetrics/package.json @@ -1,7 +1,7 @@ { "name": "@backstage/plugin-xcmetrics", "description": "A Backstage plugin that shows XCode build metrics for your components", - "version": "0.2.40-next.0", + "version": "0.2.40-next.1", "main": "src/index.ts", "types": "src/index.ts", "license": "Apache-2.0", diff --git a/yarn.lock b/yarn.lock index 714b469755..ee9157b922 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4318,7 +4318,26 @@ __metadata: languageName: unknown linkType: soft -"@backstage/core-plugin-api@^1.3.0, @backstage/core-plugin-api@^1.5.0, @backstage/core-plugin-api@^1.5.2, @backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": +"@backstage/core-plugin-api@npm:^1.3.0, @backstage/core-plugin-api@npm:^1.5.0, @backstage/core-plugin-api@npm:^1.5.2": + version: 1.5.2 + resolution: "@backstage/core-plugin-api@npm:1.5.2" + dependencies: + "@backstage/config": ^1.0.8 + "@backstage/types": ^1.1.0 + "@backstage/version-bridge": ^1.0.4 + "@types/react": ^16.13.1 || ^17.0.0 + history: ^5.0.0 + prop-types: ^15.7.2 + zen-observable: ^0.10.0 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + react-router-dom: 6.0.0-beta.0 || ^6.3.0 + checksum: 50877e943b109d31502a45c3edec37da568e7bc866ae26fe527416c7b433b95baf33d2c04eb1e1dfc30c7d4a6916228c03af98e29c50e3ab5f133803d9105215 + languageName: node + linkType: hard + +"@backstage/core-plugin-api@workspace:^, @backstage/core-plugin-api@workspace:packages/core-plugin-api": version: 0.0.0-use.local resolution: "@backstage/core-plugin-api@workspace:packages/core-plugin-api" dependencies: @@ -9965,7 +9984,35 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@^0.4.0, @backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": +"@backstage/theme@npm:^0.2.16, @backstage/theme@npm:^0.2.18": + version: 0.2.19 + resolution: "@backstage/theme@npm:0.2.19" + dependencies: + "@material-ui/core": ^4.12.2 + peerDependencies: + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + checksum: 93ca110a3f953d6d98b4a5f2163beaa1bd1f95adb66a593e85eb523a7012acf654b6148db54008a6434805a4bd9016d67e5c6a317bc56940ee6800aecbb97d6f + languageName: node + linkType: hard + +"@backstage/theme@npm:^0.4.0": + version: 0.4.0 + resolution: "@backstage/theme@npm:0.4.0" + dependencies: + "@emotion/react": ^11.10.5 + "@emotion/styled": ^11.10.5 + "@mui/material": ^5.12.2 + peerDependencies: + "@material-ui/core": ^4.12.2 + "@types/react": ^16.13.1 || ^17.0.0 + react: ^16.13.1 || ^17.0.0 + react-dom: ^16.13.1 || ^17.0.0 + checksum: 12a78d2fe753a64dc65d930c7f5c6af6c356de882e2431b5d30d448e91db9f59640df92424c27c71fe4d795dbe7d71dff6b16772004cbd49f82430a73f653422 + languageName: node + linkType: hard + +"@backstage/theme@workspace:^, @backstage/theme@workspace:packages/theme": version: 0.0.0-use.local resolution: "@backstage/theme@workspace:packages/theme" dependencies: @@ -9982,18 +10029,6 @@ __metadata: languageName: unknown linkType: soft -"@backstage/theme@npm:^0.2.16, @backstage/theme@npm:^0.2.18": - version: 0.2.19 - resolution: "@backstage/theme@npm:0.2.19" - dependencies: - "@material-ui/core": ^4.12.2 - peerDependencies: - react: ^16.13.1 || ^17.0.0 - react-dom: ^16.13.1 || ^17.0.0 - checksum: 93ca110a3f953d6d98b4a5f2163beaa1bd1f95adb66a593e85eb523a7012acf654b6148db54008a6434805a4bd9016d67e5c6a317bc56940ee6800aecbb97d6f - languageName: node - linkType: hard - "@backstage/types@^1.0.2, @backstage/types@^1.1.0, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" From 85f46cf1ff21714d650e5e0785aad69f844ffd73 Mon Sep 17 00:00:00 2001 From: Taras Mankovski Date: Fri, 30 Jun 2023 14:16:20 -0700 Subject: [PATCH 164/194] Update README.md Correct README to include correct catalog API endpoint and example code Signed-off-by: Taras Mankovski --- .../README.md | 34 +++++++++---------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/plugins/catalog-backend-module-incremental-ingestion/README.md b/plugins/catalog-backend-module-incremental-ingestion/README.md index 6ba3e7c3ca..1172980102 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/README.md +++ b/plugins/catalog-backend-module-incremental-ingestion/README.md @@ -101,16 +101,16 @@ If you want to manage your incremental entity providers via REST endpoints, the | Method | Path | Description | | ------ | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- | -| GET | `/incremental/health` | Checks the health of all incremental providers. Returns array of any unhealthy ones. | -| GET | `/incremental/providers` | Get a list of all known incremental entity providers | -| GET | `/incremental/providers/:provider` | Checks the status of an incremental provider (resting, interstitial, etc). | -| POST | `/incremental/providers/:provider/trigger` | Triggers a provider's next action immediately. E.g., if it's currently interstitial, it will trigger the next burst. | -| POST | `/incremental/providers/:provider/start` | Stop the current ingestion cycle and start a new one immediately. | -| POST | `/incremental/providers/:provider/cancel` | Stop the current ingestion cycle and start a new one in 24 hours. | -| DELETE | `/incremental/providers/:provider` | Completely remove all records for the provider and schedule it to start again in 24 hours. | -| GET | `/incremental/providers/:provider/marks` | Retrieve a list of all ingestion marks for the current ingestion cycle. | -| DELETE | `/incremental/providers/:provider/marks` | Remove all ingestion marks for the current ingestion cycle. | -| POST | `/incremental/cleanup` | Completely remove all records for ALL providers and schedule them to start again in 24 hours. (CAUTION! Can cause orphans!) | +| GET | `/api/catalog/incremental/health` | Checks the health of all incremental providers. Returns array of any unhealthy ones. | +| GET | `/api/catalog/incremental/providers` | Get a list of all known incremental entity providers | +| GET | `/api/catalog/incremental/providers/:provider` | Checks the status of an incremental provider (resting, interstitial, etc). | +| POST | `/api/catalog/incremental/providers/:provider/trigger` | Triggers a provider's next action immediately. E.g., if it's currently interstitial, it will trigger the next burst. | +| POST | `/api/catalog/incremental/providers/:provider/start` | Stop the current ingestion cycle and start a new one immediately. | +| POST | `/api/catalog/incremental/providers/:provider/cancel` | Stop the current ingestion cycle and start a new one in 24 hours. | +| DELETE | `/api/catalog/incremental/providers/:provider` | Completely remove all records for the provider and schedule it to start again in 24 hours. | +| GET | `/api/catalog/incremental/providers/:provider/marks` | Retrieve a list of all ingestion marks for the current ingestion cycle. | +| DELETE | `/api/catalog/incremental/providers/:provider/marks` | Remove all ingestion marks for the current ingestion cycle. | +| POST | `/api/catalog/incremental/cleanup` | Completely remove all records for ALL providers and schedule them to start again in 24 hours. (CAUTION! Can cause orphans!) | In all cases, `:provider` is the name of the incremental entity provider. @@ -323,21 +323,21 @@ incrementalBuilder.addIncrementalEntityProvider(myEntityProvider, { // How long should it attempt to read pages from the API in a // single burst? Keep this short. The Incremental Entity Provider // will attempt to read as many pages as it can in this time - burstLength: Duration.fromObject({ seconds: 3 }), + burstLength: { seconds: 3 }, // How long should it wait between bursts? - burstInterval: Duration.fromObject({ seconds: 3 }), + burstInterval: { seconds: 3 }, // How long should it rest before re-ingesting again? - restLength: Duration.fromObject({ day: 1 }), + restLength: { day: 1 }, // Optional back-off configuration - how long should it wait to retry // in the event of an error? backoff: [ - Duration.fromObject({ seconds: 5 }), - Duration.fromObject({ seconds: 30 }), - Duration.fromObject({ minutes: 10 }), - Duration.fromObject({ hours: 3 }), + { seconds: 5 }, + { seconds: 30 }, + { minutes: 10 }, + { hours: 3 }, ], // Optional. Use this to prevent removal of entities above a given From e1d615757f486cdafcde3ad7e544bca34f193e62 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 4 Jul 2023 11:02:04 +0200 Subject: [PATCH 165/194] chore: add changeset Signed-off-by: blam --- .changeset/pretty-apes-know.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/pretty-apes-know.md diff --git a/.changeset/pretty-apes-know.md b/.changeset/pretty-apes-know.md new file mode 100644 index 0000000000..983c78a592 --- /dev/null +++ b/.changeset/pretty-apes-know.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +--- + +Update readme and instructions From 2acc8ee4e4dfc9a9fed4cbdec6cdb139e2978c06 Mon Sep 17 00:00:00 2001 From: blam Date: Tue, 4 Jul 2023 11:21:45 +0200 Subject: [PATCH 166/194] chore: make pretty Signed-off-by: blam --- .../README.md | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/plugins/catalog-backend-module-incremental-ingestion/README.md b/plugins/catalog-backend-module-incremental-ingestion/README.md index 1172980102..3728121540 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/README.md +++ b/plugins/catalog-backend-module-incremental-ingestion/README.md @@ -99,8 +99,8 @@ export default async function createPlugin( If you want to manage your incremental entity providers via REST endpoints, the following endpoints are available: -| Method | Path | Description | -| ------ | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- | +| Method | Path | Description | +| ------ | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/catalog/incremental/health` | Checks the health of all incremental providers. Returns array of any unhealthy ones. | | GET | `/api/catalog/incremental/providers` | Get a list of all known incremental entity providers | | GET | `/api/catalog/incremental/providers/:provider` | Checks the status of an incremental provider (resting, interstitial, etc). | @@ -333,12 +333,7 @@ incrementalBuilder.addIncrementalEntityProvider(myEntityProvider, { // Optional back-off configuration - how long should it wait to retry // in the event of an error? - backoff: [ - { seconds: 5 }, - { seconds: 30 }, - { minutes: 10 }, - { hours: 3 }, - ], + backoff: [{ seconds: 5 }, { seconds: 30 }, { minutes: 10 }, { hours: 3 }], // Optional. Use this to prevent removal of entities above a given // percentage. This can be helpful if a data source is flaky and From 36b463f16f6e056ed98162151157e5fb8bd36411 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 18:52:57 +0000 Subject: [PATCH 167/194] chore(deps): update dependency aws-sdk-client-mock to v2.2.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 90b46a6221..a10bd1fff6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19549,13 +19549,13 @@ __metadata: linkType: hard "aws-sdk-client-mock@npm:^2.0.0": - version: 2.1.1 - resolution: "aws-sdk-client-mock@npm:2.1.1" + version: 2.2.0 + resolution: "aws-sdk-client-mock@npm:2.2.0" dependencies: "@types/sinon": ^10.0.10 sinon: ^14.0.2 tslib: ^2.1.0 - checksum: 8330b88cdaeae401390ece094344ed727db0b007369d862a88afc0a29249828b95cce809faa0c2289c1af99528af0e765b4aba8156b948d01a12299390195cea + checksum: 25232d56cd0401bc1212730a4a0192efc5154a211a648fe0cb4d71bd693216f63c8f13776ef04b4b36fb8eb70b9a7d19d87a3979816b9fd153450d44515d5598 languageName: node linkType: hard From 77f92d11b5b80ffccf588f1f9414416804b6630f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 19:14:15 +0000 Subject: [PATCH 168/194] chore(deps): update dependency aws-sdk-client-mock-jest to v2.2.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/yarn.lock b/yarn.lock index ec034a3ede..818959aeb2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19537,14 +19537,14 @@ __metadata: linkType: hard "aws-sdk-client-mock-jest@npm:^2.0.0": - version: 2.1.1 - resolution: "aws-sdk-client-mock-jest@npm:2.1.1" + version: 2.2.0 + resolution: "aws-sdk-client-mock-jest@npm:2.2.0" dependencies: "@types/jest": ^28.1.3 tslib: ^2.1.0 peerDependencies: - aws-sdk-client-mock: 2.1.1 - checksum: 4b5ca96bbcaa60ea3ea947821c7ff1f073c1342a12ce5c778b70832bdcc6106e10591e98e09b22c5b0d83dfc6fe554e8a08d5df5cf067a7eaadb804087b891ed + aws-sdk-client-mock: 2.2.0 + checksum: 2b9367077b745df34da049e2c90f4d743e38369d2d0f0469582ad27a8db52c2f1d5a711ec93b398bd54b732e1454e0028ef161eaea29a0309094ca24ef51a926 languageName: node linkType: hard From ff45cb559e49a2df68f6f2b7872d3a721b916a13 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 19:14:39 +0000 Subject: [PATCH 169/194] chore(deps): update dependency esbuild to ^0.18.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .changeset/renovate-46eac46.md | 6 + packages/cli/package.json | 2 +- plugins/scaffolder-backend/package.json | 2 +- yarn.lock | 188 ++++++++++++------------ 4 files changed, 102 insertions(+), 96 deletions(-) create mode 100644 .changeset/renovate-46eac46.md diff --git a/.changeset/renovate-46eac46.md b/.changeset/renovate-46eac46.md new file mode 100644 index 0000000000..a4fe7eb71a --- /dev/null +++ b/.changeset/renovate-46eac46.md @@ -0,0 +1,6 @@ +--- +'@backstage/cli': patch +'@backstage/plugin-scaffolder-backend': patch +--- + +Updated dependency `esbuild` to `^0.18.0`. diff --git a/packages/cli/package.json b/packages/cli/package.json index ae59c998b0..c804b0990b 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -78,7 +78,7 @@ "cross-spawn": "^7.0.3", "css-loader": "^6.5.1", "diff": "^5.0.0", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "esbuild-loader": "^2.18.0", "eslint": "^8.6.0", "eslint-config-prettier": "^8.3.0", diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index cbac0ae98f..d3f222dc52 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -110,7 +110,7 @@ "@types/nunjucks": "^3.1.4", "@types/supertest": "^2.0.8", "@types/zen-observable": "^0.8.0", - "esbuild": "^0.17.0", + "esbuild": "^0.18.0", "jest-when": "^3.1.0", "mock-fs": "^5.1.0", "msw": "^1.0.0", diff --git a/yarn.lock b/yarn.lock index ec034a3ede..0a02e5e85e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3968,7 +3968,7 @@ __metadata: css-loader: ^6.5.1 del: ^7.0.0 diff: ^5.0.0 - esbuild: ^0.17.0 + esbuild: ^0.18.0 esbuild-loader: ^2.18.0 eslint: ^8.6.0 eslint-config-prettier: ^8.3.0 @@ -8610,7 +8610,7 @@ __metadata: command-exists: ^1.2.9 compression: ^1.7.4 cors: ^2.8.5 - esbuild: ^0.17.0 + esbuild: ^0.18.0 express: ^4.17.1 express-promise-router: ^4.1.0 fs-extra: 10.1.0 @@ -10754,9 +10754,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/android-arm64@npm:0.17.19" +"@esbuild/android-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-arm64@npm:0.18.11" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -10775,9 +10775,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/android-arm@npm:0.17.19" +"@esbuild/android-arm@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-arm@npm:0.18.11" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -10789,9 +10789,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/android-x64@npm:0.17.19" +"@esbuild/android-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/android-x64@npm:0.18.11" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -10803,9 +10803,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/darwin-arm64@npm:0.17.19" +"@esbuild/darwin-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/darwin-arm64@npm:0.18.11" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -10817,9 +10817,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/darwin-x64@npm:0.17.19" +"@esbuild/darwin-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/darwin-x64@npm:0.18.11" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -10831,9 +10831,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/freebsd-arm64@npm:0.17.19" +"@esbuild/freebsd-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/freebsd-arm64@npm:0.18.11" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -10845,9 +10845,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/freebsd-x64@npm:0.17.19" +"@esbuild/freebsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/freebsd-x64@npm:0.18.11" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -10859,9 +10859,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-arm64@npm:0.17.19" +"@esbuild/linux-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-arm64@npm:0.18.11" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -10873,9 +10873,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-arm@npm:0.17.19" +"@esbuild/linux-arm@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-arm@npm:0.18.11" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -10887,9 +10887,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-ia32@npm:0.17.19" +"@esbuild/linux-ia32@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-ia32@npm:0.18.11" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -10908,9 +10908,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-loong64@npm:0.17.19" +"@esbuild/linux-loong64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-loong64@npm:0.18.11" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -10922,9 +10922,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-mips64el@npm:0.17.19" +"@esbuild/linux-mips64el@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-mips64el@npm:0.18.11" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -10936,9 +10936,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-ppc64@npm:0.17.19" +"@esbuild/linux-ppc64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-ppc64@npm:0.18.11" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -10950,9 +10950,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-riscv64@npm:0.17.19" +"@esbuild/linux-riscv64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-riscv64@npm:0.18.11" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -10964,9 +10964,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-s390x@npm:0.17.19" +"@esbuild/linux-s390x@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-s390x@npm:0.18.11" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -10978,9 +10978,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/linux-x64@npm:0.17.19" +"@esbuild/linux-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/linux-x64@npm:0.18.11" conditions: os=linux & cpu=x64 languageName: node linkType: hard @@ -10992,9 +10992,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/netbsd-x64@npm:0.17.19" +"@esbuild/netbsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/netbsd-x64@npm:0.18.11" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard @@ -11006,9 +11006,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/openbsd-x64@npm:0.17.19" +"@esbuild/openbsd-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/openbsd-x64@npm:0.18.11" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -11020,9 +11020,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/sunos-x64@npm:0.17.19" +"@esbuild/sunos-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/sunos-x64@npm:0.18.11" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -11034,9 +11034,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/win32-arm64@npm:0.17.19" +"@esbuild/win32-arm64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-arm64@npm:0.18.11" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -11048,9 +11048,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/win32-ia32@npm:0.17.19" +"@esbuild/win32-ia32@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-ia32@npm:0.18.11" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -11062,9 +11062,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.17.19": - version: 0.17.19 - resolution: "@esbuild/win32-x64@npm:0.17.19" +"@esbuild/win32-x64@npm:0.18.11": + version: 0.18.11 + resolution: "@esbuild/win32-x64@npm:0.18.11" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -24105,32 +24105,32 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.17.0": - version: 0.17.19 - resolution: "esbuild@npm:0.17.19" +"esbuild@npm:^0.18.0": + version: 0.18.11 + resolution: "esbuild@npm:0.18.11" dependencies: - "@esbuild/android-arm": 0.17.19 - "@esbuild/android-arm64": 0.17.19 - "@esbuild/android-x64": 0.17.19 - "@esbuild/darwin-arm64": 0.17.19 - "@esbuild/darwin-x64": 0.17.19 - "@esbuild/freebsd-arm64": 0.17.19 - "@esbuild/freebsd-x64": 0.17.19 - "@esbuild/linux-arm": 0.17.19 - "@esbuild/linux-arm64": 0.17.19 - "@esbuild/linux-ia32": 0.17.19 - "@esbuild/linux-loong64": 0.17.19 - "@esbuild/linux-mips64el": 0.17.19 - "@esbuild/linux-ppc64": 0.17.19 - "@esbuild/linux-riscv64": 0.17.19 - "@esbuild/linux-s390x": 0.17.19 - "@esbuild/linux-x64": 0.17.19 - "@esbuild/netbsd-x64": 0.17.19 - "@esbuild/openbsd-x64": 0.17.19 - "@esbuild/sunos-x64": 0.17.19 - "@esbuild/win32-arm64": 0.17.19 - "@esbuild/win32-ia32": 0.17.19 - "@esbuild/win32-x64": 0.17.19 + "@esbuild/android-arm": 0.18.11 + "@esbuild/android-arm64": 0.18.11 + "@esbuild/android-x64": 0.18.11 + "@esbuild/darwin-arm64": 0.18.11 + "@esbuild/darwin-x64": 0.18.11 + "@esbuild/freebsd-arm64": 0.18.11 + "@esbuild/freebsd-x64": 0.18.11 + "@esbuild/linux-arm": 0.18.11 + "@esbuild/linux-arm64": 0.18.11 + "@esbuild/linux-ia32": 0.18.11 + "@esbuild/linux-loong64": 0.18.11 + "@esbuild/linux-mips64el": 0.18.11 + "@esbuild/linux-ppc64": 0.18.11 + "@esbuild/linux-riscv64": 0.18.11 + "@esbuild/linux-s390x": 0.18.11 + "@esbuild/linux-x64": 0.18.11 + "@esbuild/netbsd-x64": 0.18.11 + "@esbuild/openbsd-x64": 0.18.11 + "@esbuild/sunos-x64": 0.18.11 + "@esbuild/win32-arm64": 0.18.11 + "@esbuild/win32-ia32": 0.18.11 + "@esbuild/win32-x64": 0.18.11 dependenciesMeta: "@esbuild/android-arm": optional: true @@ -24178,7 +24178,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: ac11b1a5a6008e4e37ccffbd6c2c054746fc58d0ed4a2f9ee643bd030cfcea9a33a235087bc777def8420f2eaafb3486e76adb7bdb7241a9143b43a69a10afd8 + checksum: fbd981388fe391c4f0a1b71120ca86ee75cc6de88c01bd6883f26d8450cb3beeaae602459f9a8b9dc9e026ad68b67cda2cad5f5327c9960a53fa0cb358c61d97 languageName: node linkType: hard From 62c6dd14183a33700f9b9b521a62fe00e690ebf4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 20:35:28 +0000 Subject: [PATCH 170/194] chore(deps): update dependency eslint to v8.44.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 69 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/yarn.lock b/yarn.lock index ec034a3ede..94fb36d1f9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,6 +5,13 @@ __metadata: version: 6 cacheKey: 8 +"@aashutoshrathi/word-wrap@npm:^1.2.3": + version: 1.2.6 + resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" + checksum: ada901b9e7c680d190f1d012c84217ce0063d8f5c5a7725bb91ec3c5ed99bb7572680eb2d2938a531ccbaec39a95422fcd8a6b4a13110c7d98dd75402f66a0cd + languageName: node + linkType: hard + "@adobe/css-tools@npm:^4.0.1": version: 4.0.1 resolution: "@adobe/css-tools@npm:4.0.1" @@ -11087,27 +11094,27 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^2.0.3": - version: 2.0.3 - resolution: "@eslint/eslintrc@npm:2.0.3" +"@eslint/eslintrc@npm:^2.1.0": + version: 2.1.0 + resolution: "@eslint/eslintrc@npm:2.1.0" dependencies: ajv: ^6.12.4 debug: ^4.3.2 - espree: ^9.5.2 + espree: ^9.6.0 globals: ^13.19.0 ignore: ^5.2.0 import-fresh: ^3.2.1 js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: ddc51f25f8524d8231db9c9bf03177e503d941a332e8d5ce3b10b09241be4d5584a378a529a27a527586bfbccf3031ae539eb891352033c340b012b4d0c81d92 + checksum: d5ed0adbe23f6571d8c9bb0ca6edf7618dc6aed4046aa56df7139f65ae7b578874e0d9c796df784c25bda648ceb754b6320277d828c8b004876d7443b8dc018c languageName: node linkType: hard -"@eslint/js@npm:8.42.0": - version: 8.42.0 - resolution: "@eslint/js@npm:8.42.0" - checksum: 750558843ac458f7da666122083ee05306fc087ecc1e5b21e7e14e23885775af6c55bcc92283dff1862b7b0d8863ec676c0f18c7faf1219c722fe91a8ece56b6 +"@eslint/js@npm:8.44.0": + version: 8.44.0 + resolution: "@eslint/js@npm:8.44.0" + checksum: fc539583226a28f5677356e9f00d2789c34253f076643d2e32888250e509a4e13aafe0880cb2425139051de0f3a48d25bfc5afa96b7304f203b706c17340e3cf languageName: node linkType: hard @@ -18858,12 +18865,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.0": - version: 8.8.0 - resolution: "acorn@npm:8.8.0" +"acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.9.0": + version: 8.9.0 + resolution: "acorn@npm:8.9.0" bin: acorn: bin/acorn - checksum: 7270ca82b242eafe5687a11fea6e088c960af712683756abf0791b68855ea9cace3057bd5e998ffcef50c944810c1e0ca1da526d02b32110e13c722aa959afdc + checksum: 25dfb94952386ecfb847e61934de04a4e7c2dc21c2e700fc4e2ef27ce78cb717700c4c4f279cd630bb4774948633c3859fc16063ec8573bda4568e0a312e6744 languageName: node linkType: hard @@ -24600,13 +24607,13 @@ __metadata: linkType: hard "eslint@npm:^8.33.0, eslint@npm:^8.6.0": - version: 8.42.0 - resolution: "eslint@npm:8.42.0" + version: 8.44.0 + resolution: "eslint@npm:8.44.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/regexpp": ^4.4.0 - "@eslint/eslintrc": ^2.0.3 - "@eslint/js": 8.42.0 + "@eslint/eslintrc": ^2.1.0 + "@eslint/js": 8.44.0 "@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/module-importer": ^1.0.1 "@nodelib/fs.walk": ^1.2.8 @@ -24618,7 +24625,7 @@ __metadata: escape-string-regexp: ^4.0.0 eslint-scope: ^7.2.0 eslint-visitor-keys: ^3.4.1 - espree: ^9.5.2 + espree: ^9.6.0 esquery: ^1.4.2 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -24638,13 +24645,13 @@ __metadata: lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 - optionator: ^0.9.1 + optionator: ^0.9.3 strip-ansi: ^6.0.1 strip-json-comments: ^3.1.0 text-table: ^0.2.0 bin: eslint: bin/eslint.js - checksum: 07105397b5f2ff4064b983b8971e8c379ec04b1dfcc9d918976b3e00377189000161dac991d82ba14f8759e466091b8c71146f602930ca810c290ee3fcb3faf0 + checksum: d06309ce4aafb9d27d558c8e5e5aa5cba3bbec3ce8ceccbc7d4b7a35f2b67fd40189159155553270e2e6febeb69bd8a3b60d6241c8f5ddc2ef1702ccbd328501 languageName: node linkType: hard @@ -24655,14 +24662,14 @@ __metadata: languageName: node linkType: hard -"espree@npm:^9.0.0, espree@npm:^9.5.2": - version: 9.5.2 - resolution: "espree@npm:9.5.2" +"espree@npm:^9.0.0, espree@npm:^9.6.0": + version: 9.6.0 + resolution: "espree@npm:9.6.0" dependencies: - acorn: ^8.8.0 + acorn: ^8.9.0 acorn-jsx: ^5.3.2 eslint-visitor-keys: ^3.4.1 - checksum: 6506289d6eb26471c0b383ee24fee5c8ae9d61ad540be956b3127be5ce3bf687d2ba6538ee5a86769812c7c552a9d8239e8c4d150f9ea056c6d5cbe8399c03c1 + checksum: 1287979510efb052a6a97c73067ea5d0a40701b29adde87bbe2d3eb1667e39ca55e8129e20e2517fed3da570150e7ef470585228459a8f3e3755f45007a1c662 languageName: node linkType: hard @@ -33642,17 +33649,17 @@ __metadata: languageName: node linkType: hard -"optionator@npm:^0.9.1": - version: 0.9.1 - resolution: "optionator@npm:0.9.1" +"optionator@npm:^0.9.3": + version: 0.9.3 + resolution: "optionator@npm:0.9.3" dependencies: + "@aashutoshrathi/word-wrap": ^1.2.3 deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - word-wrap: ^1.2.3 - checksum: dbc6fa065604b24ea57d734261914e697bd73b69eff7f18e967e8912aa2a40a19a9f599a507fa805be6c13c24c4eae8c71306c239d517d42d4c041c942f508a0 + checksum: 09281999441f2fe9c33a5eeab76700795365a061563d66b098923eb719251a42bdbe432790d35064d0816ead9296dbeb1ad51a733edf4167c96bd5d0882e428a languageName: node linkType: hard @@ -42059,7 +42066,7 @@ __metadata: languageName: node linkType: hard -"word-wrap@npm:^1.2.3, word-wrap@npm:~1.2.3": +"word-wrap@npm:~1.2.3": version: 1.2.3 resolution: "word-wrap@npm:1.2.3" checksum: 30b48f91fcf12106ed3186ae4fa86a6a1842416df425be7b60485de14bec665a54a68e4b5156647dec3a70f25e84d270ca8bc8cd23182ed095f5c7206a938c1f From 9c3f5de10f642f2139b501ee43680ad46fa7575d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 4 Jul 2023 20:35:57 +0000 Subject: [PATCH 171/194] chore(deps): update dependency swr to v2.2.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index ec034a3ede..f8c438cf91 100644 --- a/yarn.lock +++ b/yarn.lock @@ -39704,13 +39704,13 @@ __metadata: linkType: hard "swr@npm:^2.0.0": - version: 2.1.5 - resolution: "swr@npm:2.1.5" + version: 2.2.0 + resolution: "swr@npm:2.2.0" dependencies: use-sync-external-store: ^1.2.0 peerDependencies: react: ^16.11.0 || ^17.0.0 || ^18.0.0 - checksum: f2ef9b83ec4b2ebf4d520578ab847307700db01ffcab64b3aec6ea94feaf96ca10e38e8b08bc8adfab8eaa6ec1bdfd64f82b6f5c14cc4cb5cf11e6fd22b405a4 + checksum: 1f04795ff9dff54987cbf8a544afc9e42d1350a99e899be8a7cdc4885f561e3ee464f78245ee2ebc8ced262b04023d134f731e276227319dc2d6e1843389ddd8 languageName: node linkType: hard From c5a6557d2cf1608bc23f2dc9a45edb0307dc709a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 00:39:24 +0000 Subject: [PATCH 172/194] fix(deps): update codemirror to v6.8.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 81ae0add81..8d9b2a41d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10343,8 +10343,8 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0": - version: 6.7.0 - resolution: "@codemirror/language@npm:6.7.0" + version: 6.8.0 + resolution: "@codemirror/language@npm:6.8.0" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 @@ -10352,7 +10352,7 @@ __metadata: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: 673905e9eb80f039a5e6c59a8aeca217e124a9a03734848043192aeff9e5b3a82f150559f7bd637ee197c4b2171eb5b04e757d717922128ea4fecca1ac6ecac4 + checksum: 64408d996641931fa4c6b892e17ee1fdaee0f63d3d84c019a6ea7b1e6d1c774f92357b95c2ebaed60545062b795b72d0a058c03578b2bf4023c87726e97b5d2f languageName: node linkType: hard @@ -10407,13 +10407,13 @@ __metadata: linkType: hard "@codemirror/view@npm:^6.0.0": - version: 6.13.0 - resolution: "@codemirror/view@npm:6.13.0" + version: 6.14.0 + resolution: "@codemirror/view@npm:6.14.0" dependencies: "@codemirror/state": ^6.1.4 style-mod: ^4.0.0 w3c-keyname: ^2.2.4 - checksum: 3c4713eba5cf54afd9cf92f42295f7a9b42f4041ad9c17fc3dbbeebeb94f95fe3b2bd5377265ceed71a070d5b2472bae2fbb5013254c7e85fe5e1e3b5c807d79 + checksum: f8fbb8e8cf1bc23de8cd64b1e645112d13f72cd2f1609fb9047d616908c2189ff518b89f21484371e7a37ba1804288452558e96488791f0c850f62b8e28dc163 languageName: node linkType: hard From 0a9094a94d0399323064d393516cb9f5854be125 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 01:37:12 +0000 Subject: [PATCH 173/194] fix(deps): update dependency @apisyouwonthate/style-guide to v1.5.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3913b93b90..57c5c242aa 100644 --- a/yarn.lock +++ b/yarn.lock @@ -83,12 +83,12 @@ __metadata: linkType: hard "@apisyouwonthate/style-guide@npm:^1.4.0": - version: 1.4.0 - resolution: "@apisyouwonthate/style-guide@npm:1.4.0" + version: 1.5.0 + resolution: "@apisyouwonthate/style-guide@npm:1.5.0" dependencies: "@stoplight/spectral-formats": ^1.2.0 "@stoplight/spectral-functions": ^1.6.1 - checksum: c17d7bb12977be4cf495ce661077c611abc473c555186bb6c61e26a06bf43aa66aebdee6711b2ee2bdac3e933fd0a2276cf1bf706d48ad48f736111548e2283b + checksum: e19c7a758342e9e5abba27c3a589375cde997a6f2f6ec7fc599e0abe0de52481554e1676776ec93ba7141f4a2ad365ca99e7e007fbcf4bbe3c40fbc4f7ea53e2 languageName: node linkType: hard From b947b34992327096e055c688187e0247c401c9e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 01:37:56 +0000 Subject: [PATCH 174/194] fix(deps): update dependency @google-cloud/container to v4.13.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3913b93b90..01a6fab01f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -11259,11 +11259,11 @@ __metadata: linkType: hard "@google-cloud/container@npm:^4.0.0": - version: 4.11.0 - resolution: "@google-cloud/container@npm:4.11.0" + version: 4.13.0 + resolution: "@google-cloud/container@npm:4.13.0" dependencies: google-gax: ^3.5.8 - checksum: c5257d86ff73a1770ef6004965cca4d2107a3814257a97b4bace14a75be19455d8598db29b43cd66173b847a494cb10b35c9bbdcf8c262726afb4c7a521a8120 + checksum: 21e57e8c69e2df8cf6899541dc405f9a6c05d999289cf211c2bb8dc6e33bf7ef36ff255cfde75c6448dd335fb5b707e77f5df49bee561decbd5ed398c58db6f6 languageName: node linkType: hard From 930ff9eed29a88e5b8cb991109370ae259820b0d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 02:18:59 +0000 Subject: [PATCH 175/194] fix(deps): update dependency @keyv/redis to v2.7.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e2733408c1..a0270a91d0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12736,11 +12736,11 @@ __metadata: linkType: hard "@keyv/redis@npm:^2.5.3": - version: 2.6.1 - resolution: "@keyv/redis@npm:2.6.1" + version: 2.7.0 + resolution: "@keyv/redis@npm:2.7.0" dependencies: ioredis: ^5.3.2 - checksum: c0c0aa7d0b449ef295ab65bcc38d42a2f6f606f49bf1d9bc95cd0276d60854c4d579d6dfce9e070f350a07987dfde9d452884ee05e8f87215c49c304b27a68ab + checksum: 2bf16d99f54fa5177c375eb170f46076715e6a17fd65840d10638e441af8a4dd065927a18b45abb9531746ddab54f865884347c80f7e188c981a40f8245269ab languageName: node linkType: hard From 5b45c4778f6a3f2b248feb6c75626741e9bd89c2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 02:19:28 +0000 Subject: [PATCH 176/194] fix(deps): update dependency @microsoft/microsoft-graph-types to v2.35.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index e2733408c1..32b0d3e3c6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13256,9 +13256,9 @@ __metadata: linkType: hard "@microsoft/microsoft-graph-types@npm:^2.25.0, @microsoft/microsoft-graph-types@npm:^2.6.0": - version: 2.33.0 - resolution: "@microsoft/microsoft-graph-types@npm:2.33.0" - checksum: 9a07e258750cfdedebdc05670c9951fe507ba0868839a411ff36592015660a547d1e4fd9abec1533da979238ef674ce2bf4c363ab0ae2082818313fba0978ecb + version: 2.35.0 + resolution: "@microsoft/microsoft-graph-types@npm:2.35.0" + checksum: d2053799a8b78f5743a64853727e3887101cbb6b26558b8a6e8501b561b04d4bca1dac6c74534229b9e40daa489f47188ae5837ada42108a50d4062cfb60f57e languageName: node linkType: hard From 5bf6c235da3d9091ceba36b2706d0ef9157aefa1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 03:15:26 +0000 Subject: [PATCH 177/194] fix(deps): update dependency @swc/core to v1.3.68 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- microsite/yarn.lock | 86 ++++++++++++++++++++++----------------------- storybook/yarn.lock | 86 ++++++++++++++++++++++----------------------- yarn.lock | 86 ++++++++++++++++++++++----------------------- 3 files changed, 129 insertions(+), 129 deletions(-) diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 941f3ca46f..e0f008bf9c 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2604,90 +2604,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-darwin-arm64@npm:1.3.67" +"@swc/core-darwin-arm64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-arm64@npm:1.3.68" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-darwin-x64@npm:1.3.67" +"@swc/core-darwin-x64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-x64@npm:1.3.68" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.67" +"@swc/core-linux-arm-gnueabihf@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.67" +"@swc/core-linux-arm64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.67" +"@swc/core-linux-arm64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.67" +"@swc/core-linux-x64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-x64-musl@npm:1.3.67" +"@swc/core-linux-x64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-musl@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.67" +"@swc/core-win32-arm64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.67" +"@swc/core-win32-ia32-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.67" +"@swc/core-win32-x64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.68" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.67 - resolution: "@swc/core@npm:1.3.67" + version: 1.3.68 + resolution: "@swc/core@npm:1.3.68" dependencies: - "@swc/core-darwin-arm64": 1.3.67 - "@swc/core-darwin-x64": 1.3.67 - "@swc/core-linux-arm-gnueabihf": 1.3.67 - "@swc/core-linux-arm64-gnu": 1.3.67 - "@swc/core-linux-arm64-musl": 1.3.67 - "@swc/core-linux-x64-gnu": 1.3.67 - "@swc/core-linux-x64-musl": 1.3.67 - "@swc/core-win32-arm64-msvc": 1.3.67 - "@swc/core-win32-ia32-msvc": 1.3.67 - "@swc/core-win32-x64-msvc": 1.3.67 + "@swc/core-darwin-arm64": 1.3.68 + "@swc/core-darwin-x64": 1.3.68 + "@swc/core-linux-arm-gnueabihf": 1.3.68 + "@swc/core-linux-arm64-gnu": 1.3.68 + "@swc/core-linux-arm64-musl": 1.3.68 + "@swc/core-linux-x64-gnu": 1.3.68 + "@swc/core-linux-x64-musl": 1.3.68 + "@swc/core-win32-arm64-msvc": 1.3.68 + "@swc/core-win32-ia32-msvc": 1.3.68 + "@swc/core-win32-x64-msvc": 1.3.68 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -2714,7 +2714,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 89959d2402d3c9b70181c72c612e8236a7357ea9d58a32d4c0ed13bbe0b1a84257b5808efe9db2b39879fe82a7b78ea3884fad37d5ac44808f21ca01149a28ec + checksum: f56ad1d4cb91f7cc1cb5d4b9894bbb528da0b2eabc98984581f5b3f3187cf2c0d512003880f6ff7a3f6d215b7a3dcbf5a9c45e8a428ac2d711941027c0151d89 languageName: node linkType: hard diff --git a/storybook/yarn.lock b/storybook/yarn.lock index e3c58dd149..b59dda5e31 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2840,90 +2840,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-darwin-arm64@npm:1.3.67" +"@swc/core-darwin-arm64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-arm64@npm:1.3.68" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-darwin-x64@npm:1.3.67" +"@swc/core-darwin-x64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-x64@npm:1.3.68" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.67" +"@swc/core-linux-arm-gnueabihf@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.67" +"@swc/core-linux-arm64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.67" +"@swc/core-linux-arm64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.67" +"@swc/core-linux-x64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-x64-musl@npm:1.3.67" +"@swc/core-linux-x64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-musl@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.67" +"@swc/core-win32-arm64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.67" +"@swc/core-win32-ia32-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.67" +"@swc/core-win32-x64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.68" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.67 - resolution: "@swc/core@npm:1.3.67" + version: 1.3.68 + resolution: "@swc/core@npm:1.3.68" dependencies: - "@swc/core-darwin-arm64": 1.3.67 - "@swc/core-darwin-x64": 1.3.67 - "@swc/core-linux-arm-gnueabihf": 1.3.67 - "@swc/core-linux-arm64-gnu": 1.3.67 - "@swc/core-linux-arm64-musl": 1.3.67 - "@swc/core-linux-x64-gnu": 1.3.67 - "@swc/core-linux-x64-musl": 1.3.67 - "@swc/core-win32-arm64-msvc": 1.3.67 - "@swc/core-win32-ia32-msvc": 1.3.67 - "@swc/core-win32-x64-msvc": 1.3.67 + "@swc/core-darwin-arm64": 1.3.68 + "@swc/core-darwin-x64": 1.3.68 + "@swc/core-linux-arm-gnueabihf": 1.3.68 + "@swc/core-linux-arm64-gnu": 1.3.68 + "@swc/core-linux-arm64-musl": 1.3.68 + "@swc/core-linux-x64-gnu": 1.3.68 + "@swc/core-linux-x64-musl": 1.3.68 + "@swc/core-win32-arm64-msvc": 1.3.68 + "@swc/core-win32-ia32-msvc": 1.3.68 + "@swc/core-win32-x64-msvc": 1.3.68 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -2950,7 +2950,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 89959d2402d3c9b70181c72c612e8236a7357ea9d58a32d4c0ed13bbe0b1a84257b5808efe9db2b39879fe82a7b78ea3884fad37d5ac44808f21ca01149a28ec + checksum: f56ad1d4cb91f7cc1cb5d4b9894bbb528da0b2eabc98984581f5b3f3187cf2c0d512003880f6ff7a3f6d215b7a3dcbf5a9c45e8a428ac2d711941027c0151d89 languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index b2767f1a01..68a552c1cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -15919,90 +15919,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-darwin-arm64@npm:1.3.67" +"@swc/core-darwin-arm64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-arm64@npm:1.3.68" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-darwin-x64@npm:1.3.67" +"@swc/core-darwin-x64@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-darwin-x64@npm:1.3.68" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.67" +"@swc/core-linux-arm-gnueabihf@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.68" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.67" +"@swc/core-linux-arm64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-gnu@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.67" +"@swc/core-linux-arm64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-arm64-musl@npm:1.3.68" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.67" +"@swc/core-linux-x64-gnu@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-gnu@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-linux-x64-musl@npm:1.3.67" +"@swc/core-linux-x64-musl@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-linux-x64-musl@npm:1.3.68" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.67" +"@swc/core-win32-arm64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-arm64-msvc@npm:1.3.68" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.67" +"@swc/core-win32-ia32-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-ia32-msvc@npm:1.3.68" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.67": - version: 1.3.67 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.67" +"@swc/core-win32-x64-msvc@npm:1.3.68": + version: 1.3.68 + resolution: "@swc/core-win32-x64-msvc@npm:1.3.68" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.67 - resolution: "@swc/core@npm:1.3.67" + version: 1.3.68 + resolution: "@swc/core@npm:1.3.68" dependencies: - "@swc/core-darwin-arm64": 1.3.67 - "@swc/core-darwin-x64": 1.3.67 - "@swc/core-linux-arm-gnueabihf": 1.3.67 - "@swc/core-linux-arm64-gnu": 1.3.67 - "@swc/core-linux-arm64-musl": 1.3.67 - "@swc/core-linux-x64-gnu": 1.3.67 - "@swc/core-linux-x64-musl": 1.3.67 - "@swc/core-win32-arm64-msvc": 1.3.67 - "@swc/core-win32-ia32-msvc": 1.3.67 - "@swc/core-win32-x64-msvc": 1.3.67 + "@swc/core-darwin-arm64": 1.3.68 + "@swc/core-darwin-x64": 1.3.68 + "@swc/core-linux-arm-gnueabihf": 1.3.68 + "@swc/core-linux-arm64-gnu": 1.3.68 + "@swc/core-linux-arm64-musl": 1.3.68 + "@swc/core-linux-x64-gnu": 1.3.68 + "@swc/core-linux-x64-musl": 1.3.68 + "@swc/core-win32-arm64-msvc": 1.3.68 + "@swc/core-win32-ia32-msvc": 1.3.68 + "@swc/core-win32-x64-msvc": 1.3.68 peerDependencies: "@swc/helpers": ^0.5.0 dependenciesMeta: @@ -16029,7 +16029,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 89959d2402d3c9b70181c72c612e8236a7357ea9d58a32d4c0ed13bbe0b1a84257b5808efe9db2b39879fe82a7b78ea3884fad37d5ac44808f21ca01149a28ec + checksum: f56ad1d4cb91f7cc1cb5d4b9894bbb528da0b2eabc98984581f5b3f3187cf2c0d512003880f6ff7a3f6d215b7a3dcbf5a9c45e8a428ac2d711941027c0151d89 languageName: node linkType: hard From 99d271e7cc59cd6e6ebde33abac76474e9e70db7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 04:43:05 +0000 Subject: [PATCH 178/194] fix(deps): update dependency @react-hookz/web to v23.1.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index b2767f1a01..7035f5c2c8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14520,8 +14520,8 @@ __metadata: linkType: hard "@react-hookz/web@npm:^23.0.0": - version: 23.0.1 - resolution: "@react-hookz/web@npm:23.0.1" + version: 23.1.0 + resolution: "@react-hookz/web@npm:23.1.0" dependencies: "@react-hookz/deep-equal": ^1.0.4 peerDependencies: @@ -14531,7 +14531,7 @@ __metadata: peerDependenciesMeta: js-cookie: optional: true - checksum: 321770570c947321ba44de6ecee17337e4bb0c2a0c9d0dff5cf29e999faa2b7c1132c72a15aface46da9a709b715042ab48a30085d2a8feefba91aac96e82037 + checksum: bf28241ccbf0c139d4cc843ebe04a963c74935abf9846ae1d64964ecc96b7c214441835a6ad82d9b00ebbd36c7f74a8b193f8035dfc9f2ab49055ff3d035d8b8 languageName: node linkType: hard From 659b93c80b11c8b2325af5a2fbbc1ee9bc55b9c8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 05:28:09 +0000 Subject: [PATCH 179/194] fix(deps): update dependency core-js to v3.31.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7035f5c2c8..c272299aea 100644 --- a/yarn.lock +++ b/yarn.lock @@ -21899,9 +21899,9 @@ __metadata: linkType: hard "core-js@npm:^3.6.5": - version: 3.30.2 - resolution: "core-js@npm:3.30.2" - checksum: 73d47e2b9d9f502800973982d08e995bbf04832e20b04e04be31dd7607247158271315e9328788a2408190e291c7ffbefad141167b1e57dea9f983e1e723541e + version: 3.31.0 + resolution: "core-js@npm:3.31.0" + checksum: f7cf9b3010f7ca99c026d95b61743baca1a85512742ed2b67e8f65a72ac4f4fe0b90b00057783e886bdd39d3a295f42f845d33e7cba3973ed263df978343ab79 languageName: node linkType: hard From c6c396c07b72076dac9a873d95499b2cf082b76f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 08:32:06 +0000 Subject: [PATCH 180/194] fix(deps): update dependency elastic-builder to v2.21.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 708eeeb74d..12a96c4e70 100644 --- a/yarn.lock +++ b/yarn.lock @@ -23570,8 +23570,8 @@ __metadata: linkType: hard "elastic-builder@npm:^2.16.0": - version: 2.19.0 - resolution: "elastic-builder@npm:2.19.0" + version: 2.21.0 + resolution: "elastic-builder@npm:2.21.0" dependencies: lodash.has: ^4.5.2 lodash.hasin: ^4.5.2 @@ -23581,7 +23581,7 @@ __metadata: lodash.isobject: ^3.0.2 lodash.isstring: ^4.0.1 lodash.omit: ^4.5.0 - checksum: 14c3a2e2a76f44425dfff4c57e16f077553845976422cb35c35d235e1ea59942b86c379e516828e8390e3c53360a564ff94ee3aa961a5f2fb791da7e5e97012c + checksum: c612efc567c48835c97b1156ac8e6bcf826d83b8606e42bfde108410d3b1279bf7ead1eac58ff45808c2780668db78d5801aebc75f02b588d4f6de1fa0e0cded languageName: node linkType: hard From 5b7d4ffe0bc9f529e5598074e4cc8ec278a65f51 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 08:44:29 +0000 Subject: [PATCH 181/194] fix(deps): update dependency google-auth-library to v8.9.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/yarn.lock b/yarn.lock index 49f0207d80..fd79047678 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26223,13 +26223,13 @@ __metadata: languageName: node linkType: hard -"gcp-metadata@npm:^5.2.0": - version: 5.2.0 - resolution: "gcp-metadata@npm:5.2.0" +"gcp-metadata@npm:^5.3.0": + version: 5.3.0 + resolution: "gcp-metadata@npm:5.3.0" dependencies: gaxios: ^5.0.0 json-bigint: ^1.0.0 - checksum: 4e7ed589c814bb79cbf052b0eda1d5e219fbee030f4772eca27ec1e6e1faa85ba0ef3b17ea5c3fd51a54fc5429c924b4edbb260ac147701f211fb9807b893544 + checksum: 891ea0b902a17f33d7bae753830d23962b63af94ed071092c30496e7d26f8128ba9af43c3d38474bea29cb32a884b4bcb5720ce8b9de4a7e1108475d3d7ae219 languageName: node linkType: hard @@ -26584,19 +26584,19 @@ __metadata: linkType: hard "google-auth-library@npm:^8.0.0, google-auth-library@npm:^8.0.1, google-auth-library@npm:^8.0.2": - version: 8.8.0 - resolution: "google-auth-library@npm:8.8.0" + version: 8.9.0 + resolution: "google-auth-library@npm:8.9.0" dependencies: arrify: ^2.0.0 base64-js: ^1.3.0 ecdsa-sig-formatter: ^1.0.11 fast-text-encoding: ^1.0.0 gaxios: ^5.0.0 - gcp-metadata: ^5.2.0 + gcp-metadata: ^5.3.0 gtoken: ^6.1.0 jws: ^4.0.0 lru-cache: ^6.0.0 - checksum: 4552805466679e258febc4c0621d401d510df267f2f105957b8925b79c1454d9a2e5d53af211dd90a1848658f608babac7f5bc2f3c536c441ba32ba3641d335d + checksum: 8e0bc5f1e91804523786413bf4358e4c5ad94b1e873c725ddd03d0f1c242e2b38e26352c0f375334fbc1d94110f761b304aa0429de49b4a27ebc3875a5b56644 languageName: node linkType: hard From cb907ec7546a38abb9cc01e9167678dab9ae1b04 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 09:12:59 +0000 Subject: [PATCH 182/194] fix(deps): update dependency graphql to v16.7.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c801c6440b..a212529053 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26846,9 +26846,9 @@ __metadata: linkType: hard "graphql@npm:^15.0.0 || ^16.0.0, graphql@npm:^16.0.0": - version: 16.6.0 - resolution: "graphql@npm:16.6.0" - checksum: bf1d9e3c1938ce3c1a81e909bd3ead1ae4707c577f91cff1ca2eca474bfbc7873d5d7b942e1e9777ff5a8304421dba57a4b76d7a29eb19de8711cb70e3c2415e + version: 16.7.1 + resolution: "graphql@npm:16.7.1" + checksum: c924d8428daf0e96a5ea43e9bc3cd1b6802899907d284478ac8f705c8fd233a0a51eef915f7569fb5de8acb2e85b802ccc6c85c2b157ad805c1e9adba5a299bd languageName: node linkType: hard From c3ff6542463efbaa9fa8b1e242429427a1db2315 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 09:13:28 +0000 Subject: [PATCH 183/194] fix(deps): update dependency graphql-ws to v5.14.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index c801c6440b..7a2bfcb6a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -26837,11 +26837,11 @@ __metadata: linkType: hard "graphql-ws@npm:^5.4.1, graphql-ws@npm:^5.9.0": - version: 5.12.1 - resolution: "graphql-ws@npm:5.12.1" + version: 5.14.0 + resolution: "graphql-ws@npm:5.14.0" peerDependencies: graphql: ">=0.11 <=16" - checksum: 88d587c431feba681957faecd96101bb3860e1a4765f34b8cae1c514e7f98754b5f31c6b3127775e4732f26883b0802fe426bf9f7031c16cd0b25a27ad90ec9c + checksum: 7b622944823fa12a77ea490656121a77e1a1daf08114a6a0b027922113f4481d95f4fe380a5de369a51657ef777d35757dc31f63e41071c21f3e97ca47e4205a languageName: node linkType: hard From 276cfc664e9d4b31ef9b7070bb7046ed3ce6636c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 10:16:16 +0000 Subject: [PATCH 184/194] fix(deps): update dependency isomorphic-git to v1.24.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index d1347929aa..1fb9efd0d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -28664,8 +28664,8 @@ __metadata: linkType: hard "isomorphic-git@npm:^1.23.0": - version: 1.23.0 - resolution: "isomorphic-git@npm:1.23.0" + version: 1.24.2 + resolution: "isomorphic-git@npm:1.24.2" dependencies: async-lock: ^1.1.0 clean-git-ref: ^2.0.1 @@ -28680,7 +28680,7 @@ __metadata: simple-get: ^4.0.1 bin: isogit: cli.cjs - checksum: a733c1183855a90edd6d82cfdccd467886045fa98af211a50df7cbb2d3088e122542b9eef0f79ebe9d5e127a81c62dfa0ff561d906f0c9d4e5eb7a0c1f13f56f + checksum: 5c69ebf32624ac175fda11b49970e235dd380f18d5ebb80580e1c1b9649bb95aa5f02dc9d2967acf99f485e40f558659c0d14f1ee87bbcc06330a1fcfa5ffb93 languageName: node linkType: hard From 325a32e9476ebf055b5eda8d248154c797c73006 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 11:05:53 +0000 Subject: [PATCH 185/194] fix(deps): update dependency jscodeshift to ^0.15.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .changeset/renovate-739552f.md | 5 +++ packages/codemods/package.json | 2 +- yarn.lock | 67 +++++++++++++++++++++++++--------- 3 files changed, 56 insertions(+), 18 deletions(-) create mode 100644 .changeset/renovate-739552f.md diff --git a/.changeset/renovate-739552f.md b/.changeset/renovate-739552f.md new file mode 100644 index 0000000000..ca23cec183 --- /dev/null +++ b/.changeset/renovate-739552f.md @@ -0,0 +1,5 @@ +--- +'@backstage/codemods': patch +--- + +Updated dependency `jscodeshift` to `^0.15.0`. diff --git a/packages/codemods/package.json b/packages/codemods/package.json index acb0f10dd1..ae35baef6a 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -36,7 +36,7 @@ "@backstage/cli-common": "workspace:^", "chalk": "^4.0.0", "commander": "^9.1.0", - "jscodeshift": "^0.14.0", + "jscodeshift": "^0.15.0", "jscodeshift-add-imports": "^1.0.10" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 1fb9efd0d4..8ea1410026 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4059,7 +4059,7 @@ __metadata: "@types/node": ^16.11.26 chalk: ^4.0.0 commander: ^9.1.0 - jscodeshift: ^0.14.0 + jscodeshift: ^0.15.0 jscodeshift-add-imports: ^1.0.10 ts-node: ^10.0.0 bin: @@ -19427,6 +19427,18 @@ __metadata: languageName: node linkType: hard +"assert@npm:^2.0.0": + version: 2.0.0 + resolution: "assert@npm:2.0.0" + dependencies: + es6-object-assign: ^1.1.0 + is-nan: ^1.2.1 + object-is: ^1.0.1 + util: ^0.12.0 + checksum: bb91f181a86d10588ee16c5e09c280f9811373974c29974cbe401987ea34e966699d7989a812b0e19377b511ea0bc627f5905647ce569311824848ede382cae8 + languageName: node + linkType: hard + "ast-types-flow@npm:^0.0.7": version: 0.0.7 resolution: "ast-types-flow@npm:0.0.7" @@ -19443,12 +19455,12 @@ __metadata: languageName: node linkType: hard -"ast-types@npm:0.15.2": - version: 0.15.2 - resolution: "ast-types@npm:0.15.2" +"ast-types@npm:^0.16.1": + version: 0.16.1 + resolution: "ast-types@npm:0.16.1" dependencies: tslib: ^2.0.1 - checksum: 24f0d86bf9e4c8dae16fa24b13c1776f2c2677040bcfbd4eb4f27911db49020be4876885e45e6cfcc548ed4dfea3a0742d77e3346b84fae47379cb0b89e9daa0 + checksum: 21c186da9fdb1d8087b1b7dabbc4059f91aa5a1e593a9776b4393cc1eaa857e741b2dda678d20e34b16727b78fef3ab59cf8f0c75ed1ba649c78fe194e5c114b languageName: node linkType: hard @@ -23871,6 +23883,13 @@ __metadata: languageName: node linkType: hard +"es6-object-assign@npm:^1.1.0": + version: 1.1.0 + resolution: "es6-object-assign@npm:1.1.0" + checksum: 8d4fdf63484d78b5c64cacc2c2e1165bc7b6a64b739d2a9db6a4dc8641d99cc9efb433cdd4dc3d3d6b00bfa6ce959694e4665e3255190339945c5f33b692b5d8 + languageName: node + linkType: hard + "esbuild-android-64@npm:0.15.18": version: 0.15.18 resolution: "esbuild-android-64@npm:0.15.18" @@ -28210,6 +28229,16 @@ __metadata: languageName: node linkType: hard +"is-nan@npm:^1.2.1": + version: 1.3.2 + resolution: "is-nan@npm:1.3.2" + dependencies: + call-bind: ^1.0.0 + define-properties: ^1.1.3 + checksum: 5dfadcef6ad12d3029d43643d9800adbba21cf3ce2ec849f734b0e14ee8da4070d82b15fdb35138716d02587c6578225b9a22779cab34888a139cc43e4e3610a + languageName: node + linkType: hard + "is-negative-zero@npm:^2.0.2": version: 2.0.2 resolution: "is-negative-zero@npm:2.0.2" @@ -29533,9 +29562,9 @@ __metadata: languageName: node linkType: hard -"jscodeshift@npm:^0.14.0": - version: 0.14.0 - resolution: "jscodeshift@npm:0.14.0" +"jscodeshift@npm:^0.15.0": + version: 0.15.0 + resolution: "jscodeshift@npm:0.15.0" dependencies: "@babel/core": ^7.13.16 "@babel/parser": ^7.13.16 @@ -29553,14 +29582,17 @@ __metadata: micromatch: ^4.0.4 neo-async: ^2.5.0 node-dir: ^0.1.17 - recast: ^0.21.0 + recast: ^0.23.1 temp: ^0.8.4 write-file-atomic: ^2.3.0 peerDependencies: "@babel/preset-env": ^7.1.6 + peerDependenciesMeta: + "@babel/preset-env": + optional: true bin: jscodeshift: bin/jscodeshift.js - checksum: 54ea6d639455883336f80b38a70648821c88b7942315dc0fbab01bc34a9ad0f0f78e3bd69304b5ab167e4262d6ed7e6284c6d32525ab01c89d9118df89b3e2a0 + checksum: 2ab7e7fe0fdaaeeeb6a26a570b19f60ccd42a779ad918372c3f7bf3ea534727cdd80d02161ebef952a9869fcb5adfb4accb66b386633fa5279e8018a47e7500f languageName: node linkType: hard @@ -33385,7 +33417,7 @@ __metadata: languageName: node linkType: hard -"object-is@npm:^1.1.5": +"object-is@npm:^1.0.1, object-is@npm:^1.1.5": version: 1.1.5 resolution: "object-is@npm:1.1.5" dependencies: @@ -36840,15 +36872,16 @@ __metadata: languageName: node linkType: hard -"recast@npm:^0.21.0": - version: 0.21.5 - resolution: "recast@npm:0.21.5" +"recast@npm:^0.23.1": + version: 0.23.2 + resolution: "recast@npm:0.23.2" dependencies: - ast-types: 0.15.2 + assert: ^2.0.0 + ast-types: ^0.16.1 esprima: ~4.0.0 source-map: ~0.6.1 tslib: ^2.0.1 - checksum: 03cc7f57562238ba258d468be67bf7446ce7a707bc87a087891dad15afead46c36e9aaeedf2130e2ab5a465244a9c62bfd4127849761cf8f4085abe2f3e5f485 + checksum: 04c2617cb04c4d02a5c9e1bb75b8e7afc21d1ba7babce25303732f035c3d4b2f945d727f34c3976223d800592ea31e6641cfd33700a8699c02025040174af0b6 languageName: node linkType: hard @@ -41222,7 +41255,7 @@ __metadata: languageName: node linkType: hard -"util@npm:^0.12.3": +"util@npm:^0.12.0, util@npm:^0.12.3": version: 0.12.5 resolution: "util@npm:0.12.5" dependencies: From be6395601d1f623d726ffb48454fa1381d8cdd84 Mon Sep 17 00:00:00 2001 From: rui ma Date: Wed, 5 Jul 2023 21:52:05 +0800 Subject: [PATCH 186/194] feat: support k8s proxy working fine with cluster url has subpath Signed-off-by: rui ma --- .changeset/polite-shrimps-confess.md | 5 +++ .../src/service/KubernetesProxy.test.ts | 42 +++++++++++++++++++ .../src/service/KubernetesProxy.ts | 10 ++++- 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 .changeset/polite-shrimps-confess.md diff --git a/.changeset/polite-shrimps-confess.md b/.changeset/polite-shrimps-confess.md new file mode 100644 index 0000000000..05981c9461 --- /dev/null +++ b/.changeset/polite-shrimps-confess.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Proxy endpoint supports cluster URLs with subpath diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index 038a3d4bad..1bd79e9401 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -638,4 +638,46 @@ describe('KubernetesProxy', () => { expect(response.status).toEqual(500); }); + + it('should get res through proxy with cluster url has sub path', async () => { + worker.use( + rest.get( + 'http://localhost:9999/subpath/api/v1/namespaces', + (_req, res, ctx) => { + return res( + ctx.status(200), + ctx.json({ + kind: 'NamespaceList', + apiVersion: 'v1', + items: [], + }), + ); + }, + ), + ); + permissionApi.authorize.mockResolvedValue([ + { result: AuthorizeResult.ALLOW }, + ]); + clusterSupplier.getClusters.mockResolvedValue([ + { + name: 'cluster1', + url: 'http://localhost:9999/subpath', + authProvider: '', + }, + ]); + authTranslator.decorateClusterDetailsWithAuth.mockImplementation( + async x => x, + ); + const app = express().use( + Router().use('/mountpath', proxy.createRequestHandler({ permissionApi })), + ); + + const requestPromise = request(app) + .get('/mountpath/api/v1/namespaces') + .set(HEADER_KUBERNETES_CLUSTER, 'cluster1'); + worker.use(rest.all(requestPromise.url, (req: any) => req.passthrough())); + const response = await requestPromise; + + expect(response.status).toEqual(200); + }); }); diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts index 36617bbbad..21c381b73e 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts @@ -138,7 +138,15 @@ export class KubernetesProxy { ws: true, secure: !originalCluster.skipTLSVerify, changeOrigin: true, - pathRewrite: { [`^${originalReq.baseUrl}`]: '' }, + pathRewrite: async (path, req) => { + // Re-evaluate the cluster on each request, in case it has changed + const cluster = await this.getClusterForRequest(req); + const url = new URL(cluster.url); + return path.replace( + new RegExp(`^${originalReq.baseUrl}`), + url.pathname || '', + ); + }, router: async req => { // Re-evaluate the cluster on each request, in case it has changed const cluster = await this.getClusterForRequest(req); From 0bbf26da60e5f074f4eb8d6dbf1b5ca7f208609d Mon Sep 17 00:00:00 2001 From: mario_ma Date: Wed, 5 Jul 2023 22:18:05 +0800 Subject: [PATCH 187/194] Update plugins/kubernetes-backend/src/service/KubernetesProxy.ts Co-authored-by: Jamie Klassen Signed-off-by: mario_ma --- plugins/kubernetes-backend/src/service/KubernetesProxy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts index 21c381b73e..b0f2e2759b 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts @@ -143,7 +143,7 @@ export class KubernetesProxy { const cluster = await this.getClusterForRequest(req); const url = new URL(cluster.url); return path.replace( - new RegExp(`^${originalReq.baseUrl}`), + new RegExp(`^${req.baseUrl}`), url.pathname || '', ); }, From 0a7e7c5d0c047e1675d7f87129f285d28eacee7f Mon Sep 17 00:00:00 2001 From: Jonathan Sundquist Date: Wed, 5 Jul 2023 08:33:03 -0500 Subject: [PATCH 188/194] fix(confluence-to-markdown): update config struture This change is being implemented so there is not a conflict between confluence-to-markdown and the confluence search plugin. Both items make use of `confluence.auth`. The confluence-to-markdown expects `auth` to be a string where as within the search plugin it is an object. Similarly both items expect a username and password or a token. In order to elimiate the duplicate code, this action is being updated to make use of the `auth` object and all items moving under this object. Signed-off-by: Jonathan Sundquist --- .changeset/cool-beans-tap.md | 5 ++ .../README.md | 22 ++++---- .../config.d.ts | 50 ++++++++++--------- .../confluence/confluenceToMarkdown.test.ts | 4 +- .../src/actions/confluence/helpers.test.ts | 22 +++++--- .../src/actions/confluence/helpers.ts | 20 ++++---- 6 files changed, 71 insertions(+), 52 deletions(-) create mode 100644 .changeset/cool-beans-tap.md diff --git a/.changeset/cool-beans-tap.md b/.changeset/cool-beans-tap.md new file mode 100644 index 0000000000..554bdfe1cf --- /dev/null +++ b/.changeset/cool-beans-tap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': minor +--- + +This change updates the configuration structure of the action so that it does not conflict with other plugins. diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/README.md b/plugins/scaffolder-backend-module-confluence-to-markdown/README.md index 7dd9bd96b1..87f6acc6fe 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/README.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/README.md @@ -65,7 +65,8 @@ There is some configuration that needs to be setup to use this action, these are ```yaml confluence: baseUrl: 'https://confluence.example.com' - token: '${CONFLUENCE_TOKEN}' + auth: + token: '${CONFLUENCE_TOKEN}' ``` The sections below will go into more details about the Base URL and Auth Methods. @@ -85,8 +86,9 @@ For `bearer`: ```yaml confluence: baseUrl: 'https://confluence.example.com' - auth: 'bearer' - token: '${CONFLUENCE_TOKEN}' + auth: + type: 'bearer' + token: '${CONFLUENCE_TOKEN}' ``` For `basic`: @@ -94,9 +96,10 @@ For `basic`: ```yaml confluence: baseUrl: 'https://confluence.example.com' - auth: 'basic' - token: '${CONFLUENCE_TOKEN}' - email: 'example@company.org' + auth: + type: 'basic' + token: '${CONFLUENCE_TOKEN}' + email: 'example@company.org' ``` For `userpass` @@ -104,9 +107,10 @@ For `userpass` ```yaml confluence: baseUrl: 'https://confluence.example.com' - auth: 'userpass' - username: 'your-username' - password: 'your-password' + auth: + type: 'userpass' + username: 'your-username' + password: 'your-password' ``` **Note:** For `basic` and `bearer` authorization methods you will need an access token for authorization with `Read` permissions. You can create a Personal Access Token (PAT) in Confluence. The value used should be the raw token as it will be encoded for you by the action. diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/config.d.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/config.d.ts index 259d34cbf6..117d265ee1 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/config.d.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/config.d.ts @@ -21,29 +21,31 @@ export interface Config { * The base URL for accessing the Confluence API */ baseUrl: string; - /** - * Authentication method - basic, bearer, username/password - */ - auth: 'basic' | 'bearer' | 'userpass'; - /** - * Token used for the basic and bearer auth methods - * @visibility secret - */ - token?: string; - /** - * Email used with the token for the basic auth method - * @visibility secret - */ - email?: string; - /** - * Username used with the Username/Password auth method - * @visibility secret - */ - username?: string; - /** - * Password used with the Username/Password auth method - * @visibility secret - */ - password?: string; + auth: { + /** + * Authentication method - basic, bearer, username/password + */ + type: 'basic' | 'bearer' | 'userpass'; + /** + * Token used for the basic and bearer auth methods + * @visibility secret + */ + token?: string; + /** + * Email used with the token for the basic auth method + * @visibility secret + */ + email?: string; + /** + * Username used with the Username/Password auth method + * @visibility secret + */ + username?: string; + /** + * Password used with the Username/Password auth method + * @visibility secret + */ + password?: string; + }; }; } diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts index 6d6a3ac757..b3e2925265 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/confluenceToMarkdown.test.ts @@ -47,7 +47,9 @@ describe('confluence:transform:markdown', () => { const config = new ConfigReader({ confluence: { baseUrl: baseUrl, - token: 'fake_token', + auth: { + token: 'fake_token', + }, }, }); diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts index 43d3b4b7dc..42d83c18a8 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.test.ts @@ -57,8 +57,10 @@ describe('getConfluenceConfig', () => { const config = new ConfigReader({ confluence: { baseUrl: 'https://example.atlassian.net', - auth: 'bearer', - token: 'fake_token', + auth: { + type: 'bearer', + token: 'fake_token', + }, }, }); @@ -78,9 +80,11 @@ describe('getConfluenceConfig', () => { const config = new ConfigReader({ confluence: { baseUrl: 'https://example.atlassian.net', - auth: 'basic', - token: 'fake_token', - email: 'example@example.atlassian.net', + auth: { + type: 'basic', + token: 'fake_token', + email: 'example@example.atlassian.net', + }, }, }); @@ -100,9 +104,11 @@ describe('getConfluenceConfig', () => { const config = new ConfigReader({ confluence: { baseUrl: 'https://example.atlassian.net', - auth: 'userpass', - username: 'fake_user', - password: 'fake_password', + auth: { + type: 'userpass', + username: 'fake_user', + password: 'fake_password', + }, }, }); diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts index b2156a1103..65992b10f3 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/actions/confluence/helpers.ts @@ -43,7 +43,7 @@ export interface Results { results: Result[]; } -export type ConfluenceConfig = { +export type LocalConfluenceConfig = { baseUrl: string; auth: string; token?: string; @@ -53,13 +53,13 @@ export type ConfluenceConfig = { }; export const getConfluenceConfig = (config: Config) => { - const confluenceConfig: ConfluenceConfig = { + const confluenceConfig = { baseUrl: config.getString('confluence.baseUrl'), - auth: config.getOptionalString('confluence.auth') ?? 'bearer', - token: config.getOptionalString('confluence.token'), - email: config.getOptionalString('confluence.email'), - username: config.getOptionalString('confluence.username'), - password: config.getOptionalString('confluence.password'), + auth: config.getOptionalString('confluence.auth.type') ?? 'bearer', + token: config.getOptionalString('confluence.auth.token'), + email: config.getOptionalString('confluence.auth.email'), + username: config.getOptionalString('confluence.auth.username'), + password: config.getOptionalString('confluence.auth.password'), }; if ( @@ -89,7 +89,7 @@ export const getConfluenceConfig = (config: Config) => { return confluenceConfig; }; -export const getAuthorizationHeaderValue = (config: ConfluenceConfig) => { +export const getAuthorizationHeaderValue = (config: LocalConfluenceConfig) => { switch (config.auth) { case 'bearer': return `Bearer ${config.token}`; @@ -116,7 +116,7 @@ export const readFileAsString = async (fileDir: string) => { export const fetchConfluence = async ( relativeUrl: string, - config: ConfluenceConfig, + config: LocalConfluenceConfig, ) => { const baseUrl = config.baseUrl; const authHeaderValue = getAuthorizationHeaderValue(config); @@ -137,7 +137,7 @@ export const fetchConfluence = async ( export const getAndWriteAttachments = async ( arr: Results, workspace: string, - config: ConfluenceConfig, + config: LocalConfluenceConfig, mkdocsDir: string, ) => { const productArr: string[][] = []; From 991e3fb58c2e7d83c2bb98ecd7b789259673ff0c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 14:52:19 +0000 Subject: [PATCH 189/194] fix(deps): update dependency json-schema-to-ts to v2.9.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1fb9efd0d4..28b80df38c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -29784,13 +29784,13 @@ __metadata: linkType: hard "json-schema-to-ts@npm:^2.6.2": - version: 2.7.2 - resolution: "json-schema-to-ts@npm:2.7.2" + version: 2.9.1 + resolution: "json-schema-to-ts@npm:2.9.1" dependencies: "@babel/runtime": ^7.18.3 "@types/json-schema": ^7.0.9 ts-algebra: ^1.2.0 - checksum: cc359d3b2aed035b550582e85989a6fdd4d54bbfd5a2933c9a1e242709a04a7babdba53f5c22280e11b4bd9730b08a933d060fc69810814310908cce76f9e152 + checksum: c2471993484f69452eb4f1c732a3b4d73842430f8c9a1486d72fda9fc9ca6ae4761164817edddd8463204caec2d3169a95d5e9e4d9d39f1e94f7377bdafb740b languageName: node linkType: hard From 06e05fb8599f47f23517affa3abaab8f2c4ef0a9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 14:52:53 +0000 Subject: [PATCH 190/194] fix(deps): update dependency kubernetes-models to v4.3.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 1fb9efd0d4..2c97640222 100644 --- a/yarn.lock +++ b/yarn.lock @@ -12744,7 +12744,7 @@ __metadata: languageName: node linkType: hard -"@kubernetes-models/apimachinery@npm:^1.1.0": +"@kubernetes-models/apimachinery@npm:^1.1.0, @kubernetes-models/apimachinery@npm:^1.2.1": version: 1.2.1 resolution: "@kubernetes-models/apimachinery@npm:1.2.1" dependencies: @@ -12755,7 +12755,7 @@ __metadata: languageName: node linkType: hard -"@kubernetes-models/base@npm:^4.0.0, @kubernetes-models/base@npm:^4.0.1, @kubernetes-models/base@npm:^4.0.3": +"@kubernetes-models/base@npm:^4.0.1, @kubernetes-models/base@npm:^4.0.3": version: 4.0.3 resolution: "@kubernetes-models/base@npm:4.0.3" dependencies: @@ -12766,7 +12766,7 @@ __metadata: languageName: node linkType: hard -"@kubernetes-models/validate@npm:^3.0.0, @kubernetes-models/validate@npm:^3.1.1": +"@kubernetes-models/validate@npm:^3.1.1": version: 3.1.1 resolution: "@kubernetes-models/validate@npm:3.1.1" dependencies: @@ -30367,14 +30367,14 @@ __metadata: linkType: hard "kubernetes-models@npm:^4.1.0": - version: 4.1.0 - resolution: "kubernetes-models@npm:4.1.0" + version: 4.3.1 + resolution: "kubernetes-models@npm:4.3.1" dependencies: - "@kubernetes-models/apimachinery": ^1.1.0 - "@kubernetes-models/base": ^4.0.0 - "@kubernetes-models/validate": ^3.0.0 + "@kubernetes-models/apimachinery": ^1.2.1 + "@kubernetes-models/base": ^4.0.3 + "@kubernetes-models/validate": ^3.1.1 tslib: ^2.4.0 - checksum: 1c3195a78ca422a6436f9c4143288a4d29f53b75ff597d72f44cc7f274714daab40a5bb99dd13e02edf3ce11a41f1df34d3d0bb1930b6401cc21c44666ad2b6b + checksum: cf0b8ac25b1583f237b08e5554893b38e9f67d25e5acb095cb1d9001dd3c1102e746fb69165b04627499af125ca2e2376e8ae14a69d1de0ab8ac32ab8f9f83e2 languageName: node linkType: hard From 47154c8ddba679fe2d42348f5db8cb4f417e1244 Mon Sep 17 00:00:00 2001 From: Jamie Klassen Date: Tue, 4 Jul 2023 17:57:03 -0400 Subject: [PATCH 191/194] proxy only adds auth header with nonempty token Signed-off-by: Jamie Klassen --- .changeset/shiny-meals-chew.md | 6 ++++ .../src/service/KubernetesProxy.test.ts | 20 +++++++------ .../src/service/KubernetesProxy.ts | 30 ++++++++++--------- 3 files changed, 33 insertions(+), 23 deletions(-) create mode 100644 .changeset/shiny-meals-chew.md diff --git a/.changeset/shiny-meals-chew.md b/.changeset/shiny-meals-chew.md new file mode 100644 index 0000000000..b1763a610f --- /dev/null +++ b/.changeset/shiny-meals-chew.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Fixed a bug where the proxy endpoint would error when used in combination with +a local kubectl proxy process and a token-based auth strategy on-cluster. diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index 038a3d4bad..0bbd2d167e 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -548,15 +548,17 @@ describe('KubernetesProxy', () => { }); worker.use( - rest.get('http://localhost:8001/api/v1/namespaces', (_req, res, ctx) => { - return res( - ctx.status(200), - ctx.json({ - kind: 'NamespaceList', - apiVersion: 'v1', - items: [], - }), - ); + rest.get('http://localhost:8001/api/v1/namespaces', (req, res, ctx) => { + return req.headers.get('Authorization') + ? res(ctx.status(401)) + : res( + ctx.status(200), + ctx.json({ + kind: 'NamespaceList', + apiVersion: 'v1', + items: [], + }), + ); }), ); diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts index 36617bbbad..cf3009b5c9 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.ts @@ -93,14 +93,12 @@ export class KubernetesProxy { ): RequestHandler { const { permissionApi } = options; return async (req, res, next) => { - const token = getBearerTokenFromAuthorizationHeader( - req.header('authorization'), - ); - const authorizeResponse = await permissionApi.authorize( [{ permission: kubernetesProxyPermission }], { - token, + token: getBearerTokenFromAuthorizationHeader( + req.header('authorization'), + ), }, ); const auth = authorizeResponse[0]; @@ -110,15 +108,19 @@ export class KubernetesProxy { return; } - req.headers.authorization = - req.header(HEADER_KUBERNETES_AUTH) ?? - `Bearer ${ - ( - await this.getClusterForRequest(req).then(cd => - this.authTranslator.decorateClusterDetailsWithAuth(cd, {}), - ) - ).serviceAccountToken - }`; + const authHeader = req.header(HEADER_KUBERNETES_AUTH); + if (authHeader) { + req.headers.authorization = authHeader; + } else { + const { serviceAccountToken } = await this.getClusterForRequest( + req, + ).then(cd => + this.authTranslator.decorateClusterDetailsWithAuth(cd, {}), + ); + if (serviceAccountToken) { + req.headers.authorization = `Bearer ${serviceAccountToken}`; + } + } const middleware = await this.getMiddleware(req); middleware(req, res, next); From 811b705a27b874f2dbad4b2a1e3d8e71ac2842ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 5 Jul 2023 15:36:24 +0000 Subject: [PATCH 192/194] fix(deps): update dependency pg to v8.11.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 109 ++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 93 insertions(+), 16 deletions(-) diff --git a/yarn.lock b/yarn.lock index 28b80df38c..a3858e96b5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -17535,13 +17535,13 @@ __metadata: linkType: hard "@types/pg@npm:^8.6.6": - version: 8.6.6 - resolution: "@types/pg@npm:8.6.6" + version: 8.10.2 + resolution: "@types/pg@npm:8.10.2" dependencies: "@types/node": "*" pg-protocol: "*" - pg-types: ^2.2.0 - checksum: ac145553a8ad2f357feacad1bceaf5d6ce904eb9d66233b84c469a2b4fa3738d4ebdf29b7ea45387be2d07f915fd873a229f90a2f766d7c377afa7c41fbcf8d1 + pg-types: ^4.0.1 + checksum: 49da89f64cec1bd12a3fbc0c72b17d685c2fee579726a529f62fcab395dbc5696d80455073409947a577164b3c53a90181a331e4a5d9357679f724d4ce37f4b9 languageName: node linkType: hard @@ -33457,7 +33457,7 @@ __metadata: languageName: node linkType: hard -"obuf@npm:^1.0.0, obuf@npm:^1.1.2": +"obuf@npm:^1.0.0, obuf@npm:^1.1.2, obuf@npm:~1.1.2": version: 1.1.2 resolution: "obuf@npm:1.1.2" checksum: 41a2ba310e7b6f6c3b905af82c275bf8854896e2e4c5752966d64cbcd2f599cfffd5932006bcf3b8b419dfdacebb3a3912d5d94e10f1d0acab59876c8757f27f @@ -34476,13 +34476,27 @@ __metadata: languageName: node linkType: hard -"pg-connection-string@npm:2.5.0, pg-connection-string@npm:^2.3.0, pg-connection-string@npm:^2.4.0, pg-connection-string@npm:^2.5.0": +"pg-cloudflare@npm:^1.1.1": + version: 1.1.1 + resolution: "pg-cloudflare@npm:1.1.1" + checksum: 32aac06b5dc4588bbf78801b6267781bc7e13be672009df949d08e9627ba9fdc26924916665d4de99d47f9b0495301930547488dad889d826856976c7b3f3731 + languageName: node + linkType: hard + +"pg-connection-string@npm:2.5.0": version: 2.5.0 resolution: "pg-connection-string@npm:2.5.0" checksum: a6f3a068f7c9416a5b33a326811caf0dfaaee045c225b7c628b4c9b4e9a2b25bdd12a21e4c48940e1000ea223a4e608ca122d2ff3dd08c8b1db0fc9f5705133a languageName: node linkType: hard +"pg-connection-string@npm:^2.3.0, pg-connection-string@npm:^2.4.0, pg-connection-string@npm:^2.6.1": + version: 2.6.1 + resolution: "pg-connection-string@npm:2.6.1" + checksum: 882344a47e1ecf3a91383e0809bf2ac48facea97fcec0358d6e060e1cbcb8737acde419b4c86f05da4ce4a16634ee50fff1d2bb787d73b52ccbfde697243ad8a + languageName: node + linkType: hard + "pg-int8@npm:1.0.1": version: 1.0.1 resolution: "pg-int8@npm:1.0.1" @@ -34490,12 +34504,19 @@ __metadata: languageName: node linkType: hard -"pg-pool@npm:^3.6.0": - version: 3.6.0 - resolution: "pg-pool@npm:3.6.0" +"pg-numeric@npm:1.0.2": + version: 1.0.2 + resolution: "pg-numeric@npm:1.0.2" + checksum: 8899f8200caa1744439a8778a9eb3ceefb599d893e40a09eef84ee0d4c151319fd416634a6c0fc7b7db4ac268710042da5be700b80ef0de716fe089b8652c84f + languageName: node + linkType: hard + +"pg-pool@npm:^3.6.1": + version: 3.6.1 + resolution: "pg-pool@npm:3.6.1" peerDependencies: pg: ">=8.0" - checksum: f3fe050fbfe27406369340c4c26efcbe21a388ace085a876453de0ea496a315c38b2dc739ac97d4767a359e911da2ec4810467f72601eeec8ad540e58b27987c + checksum: 8a6513e6f74a794708c9dd16d2ccda0debadc56435ec2582de2b2e35b01315550c5dab8a0a9a2a16f4adce45523228f5739940fb7687ec7e9c300f284eb08fd1 languageName: node linkType: hard @@ -34506,7 +34527,7 @@ __metadata: languageName: node linkType: hard -"pg-types@npm:^2.1.0, pg-types@npm:^2.2.0": +"pg-types@npm:^2.1.0": version: 2.2.0 resolution: "pg-types@npm:2.2.0" dependencies: @@ -34519,23 +34540,42 @@ __metadata: languageName: node linkType: hard +"pg-types@npm:^4.0.1": + version: 4.0.1 + resolution: "pg-types@npm:4.0.1" + dependencies: + pg-int8: 1.0.1 + pg-numeric: 1.0.2 + postgres-array: ~3.0.1 + postgres-bytea: ~3.0.0 + postgres-date: ~2.0.1 + postgres-interval: ^3.0.0 + postgres-range: ^1.1.1 + checksum: 05258ef2f27a75f1bf4e243f36bb749f85148339d3be818147bcc4aebe019ad7589a6869150713140250d81e5a46ec25dc6e0a031ea77e23db5ca232a0d7a3dc + languageName: node + linkType: hard + "pg@npm:^8.3.0, pg@npm:^8.4.0": - version: 8.10.0 - resolution: "pg@npm:8.10.0" + version: 8.11.1 + resolution: "pg@npm:8.11.1" dependencies: buffer-writer: 2.0.0 packet-reader: 1.0.0 - pg-connection-string: ^2.5.0 - pg-pool: ^3.6.0 + pg-cloudflare: ^1.1.1 + pg-connection-string: ^2.6.1 + pg-pool: ^3.6.1 pg-protocol: ^1.6.0 pg-types: ^2.1.0 pgpass: 1.x peerDependencies: pg-native: ">=3.0.1" + dependenciesMeta: + pg-cloudflare: + optional: true peerDependenciesMeta: pg-native: optional: true - checksum: c6be78f2e823f2ae3c618c8e54a6622592dd71b556fb665d7eaedcbcc2fa5d210a8bcf519401e72526a65b9d797f19b772f48f29b9d9f31e98dd526fd27d61e0 + checksum: e608fe1c52725e1c0c4cbdf97e29df8f41b9fd21aed821866e3488b3a0622be1c19801d8d8eb31f0de35f040c4f69163c211358e7df8c48d15ee8f660d2bd4cc languageName: node linkType: hard @@ -35206,6 +35246,13 @@ __metadata: languageName: node linkType: hard +"postgres-array@npm:~3.0.1": + version: 3.0.2 + resolution: "postgres-array@npm:3.0.2" + checksum: 5955f9dffeb6fa960c1a0b04fd4b2ba16813ddb636934ad26f902e4d76a91c0b743dcc6edc4cffc52deba7d547505e0020adea027c1d50a774f989cf955420d1 + languageName: node + linkType: hard + "postgres-bytea@npm:~1.0.0": version: 1.0.0 resolution: "postgres-bytea@npm:1.0.0" @@ -35213,6 +35260,15 @@ __metadata: languageName: node linkType: hard +"postgres-bytea@npm:~3.0.0": + version: 3.0.0 + resolution: "postgres-bytea@npm:3.0.0" + dependencies: + obuf: ~1.1.2 + checksum: 5f917a003fcaa0df7f285e1c37108ad474ce91193466b9bd4bcaecef2cdea98ca069c00aa6a8dbe6d2e7192336cadc3c9b36ae48d1555a299521918e00e2936b + languageName: node + linkType: hard + "postgres-date@npm:~1.0.4": version: 1.0.5 resolution: "postgres-date@npm:1.0.5" @@ -35220,6 +35276,13 @@ __metadata: languageName: node linkType: hard +"postgres-date@npm:~2.0.1": + version: 2.0.1 + resolution: "postgres-date@npm:2.0.1" + checksum: 0304bf8641a01412e4f5c3a374604e2e3dbc9dbee71d30df12fe60b32560c5674f887c2d15bafa2996f3b618b617398e7605f0e3669db43f31e614dfe69f8de7 + languageName: node + linkType: hard + "postgres-interval@npm:^1.1.0": version: 1.2.0 resolution: "postgres-interval@npm:1.2.0" @@ -35229,6 +35292,20 @@ __metadata: languageName: node linkType: hard +"postgres-interval@npm:^3.0.0": + version: 3.0.0 + resolution: "postgres-interval@npm:3.0.0" + checksum: c7a1cf006de97de663b6b8c4d2b167aa9909a238c4866a94b15d303762f5ac884ff4796cd6e2111b7f0a91302b83c570453aa8506fd005b5a5d5dfa87441bebc + languageName: node + linkType: hard + +"postgres-range@npm:^1.1.1": + version: 1.1.3 + resolution: "postgres-range@npm:1.1.3" + checksum: bf7e194a18c490d02bda0bd02035a8da454d8fd2b22c55d3d03f185c038b2a6f52d0804417d8090864afefc2b7ed664b2d12c2454a4a0f545dcbbb86488fbdf1 + languageName: node + linkType: hard + "prebuild-install@npm:^6.0.1": version: 6.1.4 resolution: "prebuild-install@npm:6.1.4" From 75beae3be43b52e7d9ce9e40dde05722fd7d625c Mon Sep 17 00:00:00 2001 From: Jonathan Sundquist Date: Wed, 5 Jul 2023 14:10:29 -0500 Subject: [PATCH 193/194] updating change set to include breaking changes and how to update Signed-off-by: Jonathan Sundquist --- .changeset/cool-beans-tap.md | 73 +++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 1 deletion(-) diff --git a/.changeset/cool-beans-tap.md b/.changeset/cool-beans-tap.md index 554bdfe1cf..fcea5dd7ef 100644 --- a/.changeset/cool-beans-tap.md +++ b/.changeset/cool-beans-tap.md @@ -2,4 +2,75 @@ '@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': minor --- -This change updates the configuration structure of the action so that it does not conflict with other plugins. +**BREAKING** + +This change updates the configuration of the confluence-to-markdown action so that it does not conflict with other confluence plguins. Currently many plugins make use of the `confluence.auth` configuration. However, only the confluence-to-markdown action uses the `confluence.auth` as a string. This change updates it so that `confluence.auth` is an object. + +## Required Changes + +Below are examples for updating `bearer`, `basic`, and `userpass` implementations. + +For `bearer`: +Before: + +```yaml +confluence: + baseUrl: 'https://confluence.example.com' + auth: 'bearer' + token: '${CONFLUENCE_TOKEN}' +``` + +After: + +```yaml +confluence: + baseUrl: 'https://confluence.example.com' + auth: + type: 'bearer' + token: '${CONFLUENCE_TOKEN}' +``` + +For `basic`: + +Before: + +```yaml +confluence: + baseUrl: 'https://confluence.example.com' + auth: 'basic' + token: '${CONFLUENCE_TOKEN}' + email: 'example@company.org' +``` + +After: + +```yaml +confluence: + baseUrl: 'https://confluence.example.com' + auth: + type: 'basic' + token: '${CONFLUENCE_TOKEN}' + email: 'example@company.org' +``` + +For `userpass` +Before: + +```yaml +confluence: + baseUrl: 'https://confluence.example.com' + auth: 'userpass' + username: 'your-username' + password: 'your-password' +``` + +After: + +```yaml +confluence: + baseUrl: 'https://confluence.example.com' + auth: + type: 'userpass' + username: 'your-username' + password: 'your-password' +``` From dd367967e2e11c63792c979d8a409d78ce65c69e Mon Sep 17 00:00:00 2001 From: Andreas Berger Date: Thu, 6 Jul 2023 09:08:32 +0200 Subject: [PATCH 194/194] Fixed a bug in `gitlab:group:ensureExists` where `repos` was always set as the root group. Signed-off-by: Andreas Berger --- .changeset/wicked-ears-scream.md | 5 +++++ .../createGitlabGroupEnsureExistsAction.test.ts | 12 ++++++------ .../actions/createGitlabGroupEnsureExistsAction.ts | 6 ++++-- 3 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 .changeset/wicked-ears-scream.md diff --git a/.changeset/wicked-ears-scream.md b/.changeset/wicked-ears-scream.md new file mode 100644 index 0000000000..44bb0d92d6 --- /dev/null +++ b/.changeset/wicked-ears-scream.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +--- + +Fixed a bug in `gitlab:group:ensureExists` where `repos` was always set as the root group. diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.test.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.test.ts index 3c67477ed5..72dcddc83d 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.test.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.test.ts @@ -51,17 +51,17 @@ describe('gitlab:group:ensureExists', () => { mockGitlabClient.Groups.search.mockResolvedValue([ { id: 1, - full_path: 'repos/bar', + full_path: 'bar', }, { id: 2, - full_path: 'repos/foo', + full_path: 'foo', }, ]); mockGitlabClient.Groups.create.mockResolvedValue({ id: 3, - full_path: 'repos/foo/bar', + full_path: 'foo/bar', }); const config = new ConfigReader({ @@ -98,15 +98,15 @@ describe('gitlab:group:ensureExists', () => { mockGitlabClient.Groups.search.mockResolvedValue([ { id: 1, - full_path: 'repos/bar', + full_path: 'bar', }, { id: 2, - full_path: 'repos/foo', + full_path: 'foo', }, { id: 42, - full_path: 'repos/foo/bar', + full_path: 'foo/bar', }, ]); diff --git a/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.ts b/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.ts index 169cdb5b25..74d3805254 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/actions/createGitlabGroupEnsureExistsAction.ts @@ -66,10 +66,12 @@ export const createGitlabGroupEnsureExistsAction = (options: { token: token, }); - let currentPath: string = 'repos'; + let currentPath: string | null = null; let parent: GroupSchema | null = null; for (const pathElement of path) { - const fullPath = `${currentPath}/${pathElement}`; + const fullPath: string = currentPath + ? `${currentPath}/${pathElement}` + : pathElement; const result = (await api.Groups.search( fullPath, )) as unknown as Array; // recast since the return type for search is wrong in the gitbeaker typings