From d10337b93529cd81eb5118451c480f5321958dbf Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Mon, 7 Oct 2024 23:12:55 +0200 Subject: [PATCH 001/213] feat: deprecate logStream, add logger Signed-off-by: ElaineDeMattosSilvaB --- .../src/actions/executeShellCommand.ts | 27 ++++++++++++++----- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/plugins/scaffolder-node/src/actions/executeShellCommand.ts b/plugins/scaffolder-node/src/actions/executeShellCommand.ts index ce54989589..cb87330f9a 100644 --- a/plugins/scaffolder-node/src/actions/executeShellCommand.ts +++ b/plugins/scaffolder-node/src/actions/executeShellCommand.ts @@ -16,6 +16,7 @@ import { spawn, SpawnOptionsWithoutStdio } from 'child_process'; import { PassThrough, Writable } from 'stream'; +import { Logger } from 'winston'; /** * Options for {@link executeShellCommand}. @@ -29,7 +30,12 @@ export type ExecuteShellCommandOptions = { args: string[]; /** options to pass to spawn */ options?: SpawnOptionsWithoutStdio; - /** stream to capture stdout and stderr output */ + /** logger to capture stdout and stderr output */ + logger?: Logger; + /** + * stream to capture stdout and stderr output + * @deprecated please provide a logger instead. + */ logStream?: Writable; }; @@ -45,20 +51,27 @@ export async function executeShellCommand( command, args, options: spawnOptions, + logger, logStream = new PassThrough(), } = options; await new Promise((resolve, reject) => { const process = spawn(command, args, spawnOptions); - process.stdout.on('data', stream => { - logStream.write(stream); + process.stdout.on('data', chunk => { + logStream?.write(chunk); + logger?.log( + 'info', + Buffer.isBuffer(chunk) ? chunk.toString('utf8').trim() : chunk.trim(), + ); }); - - process.stderr.on('data', stream => { - logStream.write(stream); + process.stderr.on('data', chunk => { + logStream?.write(chunk); + logger?.log( + 'error', + Buffer.isBuffer(chunk) ? chunk.toString('utf8').trim() : chunk.trim(), + ); }); - process.on('error', error => { return reject(error); }); From a771c791d6f4ea7c941f8354213756397a2c7acd Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Mon, 7 Oct 2024 23:14:20 +0200 Subject: [PATCH 002/213] feat: fix actions Signed-off-by: ElaineDeMattosSilvaB --- .../src/actions/fetch/cookiecutter.test.ts | 18 ++++---- .../src/actions/fetch/cookiecutter.ts | 29 +++++------- .../src/actions/fetch/rails/index.test.ts | 14 +++--- .../src/actions/fetch/rails/index.ts | 18 +++----- .../fetch/rails/railsNewRunner.test.ts | 44 +++++++++---------- .../src/actions/fetch/rails/railsNewRunner.ts | 16 +++---- 6 files changed, 64 insertions(+), 75 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index 52946ce7fd..c88c7cde54 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -15,16 +15,16 @@ */ import { ContainerRunner } from '@backstage/backend-common'; -import { ConfigReader } from '@backstage/config'; -import { JsonObject } from '@backstage/types'; -import { ScmIntegrations } from '@backstage/integration'; +import { UrlReaderService } from '@backstage/backend-plugin-api'; import { createMockDirectory } from '@backstage/backend-test-utils'; -import { createFetchCookiecutterAction } from './cookiecutter'; -import { join } from 'path'; +import { ConfigReader } from '@backstage/config'; +import { ScmIntegrations } from '@backstage/integration'; import type { ActionContext } from '@backstage/plugin-scaffolder-node'; import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; -import { Writable } from 'stream'; -import { UrlReaderService } from '@backstage/backend-plugin-api'; +import { JsonObject } from '@backstage/types'; +import { join } from 'path'; +import { Logger } from 'winston'; +import { createFetchCookiecutterAction } from './cookiecutter'; const executeShellCommand = jest.fn(); const commandExists = jest.fn(); @@ -168,7 +168,7 @@ describe('fetch:cookiecutter', () => { join(mockTmpDir, 'template'), '--verbose', ], - logStream: expect.any(Writable), + logger: expect.any(Logger), }), ); }); @@ -189,7 +189,7 @@ describe('fetch:cookiecutter', () => { }, workingDir: '/input', envVars: { HOME: '/tmp' }, - logStream: expect.any(Writable), + logger: expect.any(Logger), }), ); }); diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index 6e540d7fca..1b61376a31 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -19,18 +19,18 @@ import { UrlReaderService, resolveSafeChildPath, } from '@backstage/backend-plugin-api'; -import { JsonObject, JsonValue } from '@backstage/types'; import { InputError } from '@backstage/errors'; import { ScmIntegrations } from '@backstage/integration'; +import { + createTemplateAction, + executeShellCommand, + fetchContents, +} from '@backstage/plugin-scaffolder-node'; +import { JsonObject, JsonValue } from '@backstage/types'; import commandExists from 'command-exists'; import fs from 'fs-extra'; import path, { resolve as resolvePath } from 'path'; -import { PassThrough, Writable } from 'stream'; -import { - createTemplateAction, - fetchContents, - executeShellCommand, -} from '@backstage/plugin-scaffolder-node'; +import { Logger } from 'winston'; import { examples } from './cookiecutter.examples'; export class CookiecutterRunner { @@ -57,14 +57,14 @@ export class CookiecutterRunner { public async run({ workspacePath, values, - logStream, + logger, imageName, templateDir, templateContentsDir, }: { workspacePath: string; values: JsonObject; - logStream: Writable; + logger: Logger; imageName?: string; templateDir: string; templateContentsDir: string; @@ -99,7 +99,7 @@ export class CookiecutterRunner { await executeShellCommand({ command: 'cookiecutter', args: ['--no-input', '-o', intermediateDir, templateDir, '--verbose'], - logStream, + logger, }); } else { if (this.containerRunner === undefined) { @@ -116,7 +116,7 @@ export class CookiecutterRunner { // Set the home directory inside the container as something that applications can // write to, otherwise they will just fail trying to write to / envVars: { HOME: '/tmp' }, - logStream, + logger, }); } @@ -247,15 +247,10 @@ export function createFetchCookiecutterAction(options: { _extensions: ctx.input.extensions, }; - const logStream = new PassThrough(); - logStream.on('data', chunk => { - ctx.logger.info(chunk.toString()); - }); - // Will execute the template in ./template and put the result in ./result await cookiecutter.run({ workspacePath: workDir, - logStream, + logger: ctx.logger, values: values, imageName: ctx.input.imageName, templateDir: templateDir, diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts index 616c90e0de..3ea3e01bef 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts @@ -28,15 +28,15 @@ jest.mock('./railsNewRunner', () => { }); import { ContainerRunner } from '@backstage/backend-common'; +import { UrlReaderService } from '@backstage/backend-plugin-api'; +import { createMockDirectory } from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; -import { resolve as resolvePath } from 'path'; -import { createFetchRailsAction } from './index'; import { fetchContents } from '@backstage/plugin-scaffolder-node'; -import { createMockDirectory } from '@backstage/backend-test-utils'; import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; -import { Writable } from 'stream'; -import { UrlReaderService } from '@backstage/backend-plugin-api'; +import { resolve as resolvePath } from 'path'; +import { Logger } from 'winston'; +import { createFetchRailsAction } from './index'; describe('fetch:rails', () => { const mockDir = createMockDirectory(); @@ -106,7 +106,7 @@ describe('fetch:rails', () => { expect(mockRailsTemplater.run).toHaveBeenCalledWith({ workspacePath: mockContext.workspacePath, - logStream: expect.any(Writable), + logger: expect.any(Logger), values: mockContext.input.values, }); }); @@ -122,7 +122,7 @@ describe('fetch:rails', () => { expect(mockRailsTemplater.run).toHaveBeenCalledWith({ workspacePath: mockContext.workspacePath, - logStream: expect.any(Writable), + logger: expect.any(Logger), values: { ...mockContext.input.values, imageName: 'foo/rails-custom-image', diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts index 4d5db0f3ef..223aeb19a2 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts @@ -15,20 +15,19 @@ */ import { ContainerRunner } from '@backstage/backend-common'; -import { JsonObject } from '@backstage/types'; import { InputError } from '@backstage/errors'; import { ScmIntegrations } from '@backstage/integration'; -import fs from 'fs-extra'; import { createTemplateAction, fetchContents, } from '@backstage/plugin-scaffolder-node'; +import { JsonObject } from '@backstage/types'; +import fs from 'fs-extra'; -import { resolve as resolvePath } from 'path'; -import { RailsNewRunner } from './railsNewRunner'; -import { PassThrough } from 'stream'; -import { examples } from './index.examples'; import { UrlReaderService } from '@backstage/backend-plugin-api'; +import { resolve as resolvePath } from 'path'; +import { examples } from './index.examples'; +import { RailsNewRunner } from './railsNewRunner'; /** * Creates the `fetch:rails` Scaffolder action. @@ -219,15 +218,10 @@ export function createFetchRailsAction(options: { throw new Error(`Image ${imageName} is not allowed`); } - const logStream = new PassThrough(); - logStream.on('data', chunk => { - ctx.logger.info(chunk.toString()); - }); - // Will execute the template in ./template and put the result in ./result await templateRunner.run({ workspacePath: workDir, - logStream, + logger: ctx.logger, values: { ...ctx.input.values, imageName }, }); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 47104c66e1..2fd1b954c2 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -28,10 +28,10 @@ jest.mock( ); import { ContainerRunner } from '@backstage/backend-common'; -import path from 'path'; -import { PassThrough } from 'stream'; -import { RailsNewRunner } from './railsNewRunner'; import { createMockDirectory } from '@backstage/backend-test-utils'; +import path from 'path'; +import { Logger } from 'winston'; +import { RailsNewRunner } from './railsNewRunner'; describe('Rails Templater', () => { const containerRunner: jest.Mocked = { @@ -47,7 +47,7 @@ describe('Rails Templater', () => { describe('when running on docker', () => { it('should run the correct bindings for the volumes', async () => { - const logStream = new PassThrough(); + const logger = new Logger(); const values = { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', @@ -65,7 +65,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logStream, + logger, }); expect(containerRunner.runContainer).toHaveBeenCalledWith({ @@ -78,12 +78,12 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', - logStream: logStream, + logger: logger, }); }); it('should use the provided imageName', async () => { - const logStream = new PassThrough(); + const logger = new Logger(); const values = { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', @@ -101,7 +101,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logStream, + logger, }); expect(containerRunner.runContainer).toHaveBeenCalledWith( @@ -112,7 +112,7 @@ describe('Rails Templater', () => { }); it('should pass through the streamer to the run docker helper', async () => { - const stream = new PassThrough(); + const logger = new Logger(); const values = { owner: 'angeliski', @@ -131,7 +131,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logStream: stream, + logger, }); expect(containerRunner.runContainer).toHaveBeenCalledWith({ @@ -144,12 +144,12 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', - logStream: stream, + logger, }); }); it('update the template path to correct location', async () => { - const logStream = new PassThrough(); + const logger = new Logger(); const values = { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', @@ -168,7 +168,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logStream, + logger, }); expect(containerRunner.runContainer).toHaveBeenCalledWith({ @@ -186,14 +186,14 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', - logStream: logStream, + logger, }); }); }); describe('when rails is available', () => { it('use the binary', async () => { - const stream = new PassThrough(); + const logger = new Logger(); const values = { owner: 'angeliski', @@ -213,7 +213,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logStream: stream, + logger, }); expect(executeShellCommand).toHaveBeenCalledWith({ @@ -222,12 +222,12 @@ describe('Rails Templater', () => { 'new', path.join(mockDir.path, 'intermediate', 'rails-project'), ]), - logStream: stream, + logger, }); }); it('update the template path to correct location', async () => { - const stream = new PassThrough(); + const logger = new Logger(); const values = { owner: 'angeliski', @@ -248,7 +248,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logStream: stream, + logger, }); expect(executeShellCommand).toHaveBeenCalledWith({ @@ -259,14 +259,14 @@ describe('Rails Templater', () => { '--template', path.join(mockDir.path, './something.rb'), ]), - logStream: stream, + logger, }); }); }); describe('when nothing was generated', () => { it('throws an error', async () => { - const stream = new PassThrough(); + const logger = new Logger(); mockDir.setContent({ intermediate: {}, @@ -282,7 +282,7 @@ describe('Rails Templater', () => { name: 'rails-project', imageName: 'foo/rails-custom-image', }, - logStream: stream, + logger, }), ).rejects.toThrow(/No data generated by rails/); }); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts index 31cfea4a76..386e7b427f 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts @@ -15,16 +15,16 @@ */ import { ContainerRunner } from '@backstage/backend-common'; +import { executeShellCommand } from '@backstage/plugin-scaffolder-node'; +import { JsonObject } from '@backstage/types'; +import commandExists from 'command-exists'; import fs from 'fs-extra'; import path from 'path'; -import { executeShellCommand } from '@backstage/plugin-scaffolder-node'; -import commandExists from 'command-exists'; +import { Logger } from 'winston'; import { railsArgumentResolver, RailsRunOptions, } from './railsArgumentResolver'; -import { JsonObject } from '@backstage/types'; -import { Writable } from 'stream'; export class RailsNewRunner { private readonly containerRunner?: ContainerRunner; @@ -36,11 +36,11 @@ export class RailsNewRunner { public async run({ workspacePath, values, - logStream, + logger, }: { workspacePath: string; values: JsonObject; - logStream: Writable; + logger: Logger; }): Promise { const intermediateDir = path.join(workspacePath, 'intermediate'); await fs.ensureDir(intermediateDir); @@ -71,7 +71,7 @@ export class RailsNewRunner { `${intermediateDir}${path.sep}${name}`, ...arrayExtraArguments, ], - logStream, + logger, }); } else { if (!imageName) { @@ -96,7 +96,7 @@ export class RailsNewRunner { // Set the home directory inside the container as something that applications can // write to, otherwise they will just fail trying to write to / envVars: { HOME: '/tmp' }, - logStream, + logger, }); } From 16e339ea2665442daf1d14e8784d904748cfb644 Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Mon, 7 Oct 2024 23:14:59 +0200 Subject: [PATCH 003/213] feat: add api-report, changesets and package files Signed-off-by: ElaineDeMattosSilvaB --- .changeset/violet-seas-pretend.md | 7 +++++++ .../scaffolder-backend-module-cookiecutter/report.api.md | 2 -- plugins/scaffolder-backend-module-rails/package.json | 1 + plugins/scaffolder-node/report.api.md | 1 + yarn.lock | 1 + 5 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 .changeset/violet-seas-pretend.md diff --git a/.changeset/violet-seas-pretend.md b/.changeset/violet-seas-pretend.md new file mode 100644 index 0000000000..09774f0af8 --- /dev/null +++ b/.changeset/violet-seas-pretend.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-scaffolder-node': minor +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +--- + +Deprecate the `logStream` option in `executeShellCommand`, replacing it with a logger instance. diff --git a/plugins/scaffolder-backend-module-cookiecutter/report.api.md b/plugins/scaffolder-backend-module-cookiecutter/report.api.md index 19f43389dc..316dc6b4a8 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/report.api.md +++ b/plugins/scaffolder-backend-module-cookiecutter/report.api.md @@ -3,8 +3,6 @@ > 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 { ContainerRunner } from '@backstage/backend-common'; import { JsonObject } from '@backstage/types'; diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 56cd2c0451..62929c41f7 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -52,6 +52,7 @@ "@backstage/types": "workspace:^", "command-exists": "^1.2.9", "fs-extra": "^11.0.0", + "winston": "^3.2.1", "yaml": "^2.0.0" }, "devDependencies": { diff --git a/plugins/scaffolder-node/report.api.md b/plugins/scaffolder-node/report.api.md index c6cabda02c..26735e18de 100644 --- a/plugins/scaffolder-node/report.api.md +++ b/plugins/scaffolder-node/report.api.md @@ -191,6 +191,7 @@ export type ExecuteShellCommandOptions = { command: string; args: string[]; options?: SpawnOptionsWithoutStdio; + logger?: Logger; logStream?: Writable; }; diff --git a/yarn.lock b/yarn.lock index cd65c170d6..7348496686 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7450,6 +7450,7 @@ __metadata: command-exists: ^1.2.9 fs-extra: ^11.0.0 jest-when: ^3.1.0 + winston: ^3.2.1 yaml: ^2.0.0 languageName: unknown linkType: soft From 9655c15815c7be7cd31efbfee522bb9a73c1890f Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 15 Oct 2024 13:32:55 +0200 Subject: [PATCH 004/213] fix: remove logger from runContainer Signed-off-by: ElaineDeMattosSilvaB --- .../src/actions/fetch/cookiecutter.test.ts | 1 - .../src/actions/fetch/cookiecutter.ts | 1 - .../src/actions/fetch/rails/railsNewRunner.test.ts | 3 --- .../src/actions/fetch/rails/railsNewRunner.ts | 1 - 4 files changed, 6 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index c88c7cde54..bb47f3e19a 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -189,7 +189,6 @@ describe('fetch:cookiecutter', () => { }, workingDir: '/input', envVars: { HOME: '/tmp' }, - logger: expect.any(Logger), }), ); }); diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index 1b61376a31..5f7f91daab 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -116,7 +116,6 @@ export class CookiecutterRunner { // Set the home directory inside the container as something that applications can // write to, otherwise they will just fail trying to write to / envVars: { HOME: '/tmp' }, - logger, }); } diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 2fd1b954c2..3abbd24ace 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -78,7 +78,6 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', - logger: logger, }); }); @@ -144,7 +143,6 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', - logger, }); }); @@ -186,7 +184,6 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', - logger, }); }); }); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts index 386e7b427f..906c2e6404 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts @@ -96,7 +96,6 @@ export class RailsNewRunner { // Set the home directory inside the container as something that applications can // write to, otherwise they will just fail trying to write to / envVars: { HOME: '/tmp' }, - logger, }); } From bfc374068ed6a5c011b5759c2695aa75a1528bba Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 15 Oct 2024 21:33:12 +0200 Subject: [PATCH 005/213] feat: add tests Signed-off-by: ElaineDeMattosSilvaB --- .../src/actions/executeShellCommand.test.ts | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 plugins/scaffolder-node/src/actions/executeShellCommand.test.ts diff --git a/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts b/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts new file mode 100644 index 0000000000..91ee2c52fd --- /dev/null +++ b/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts @@ -0,0 +1,147 @@ +/* + * Copyright 2024 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. + */ + +// Copyright 2024 DB Systel GmbH +// Licensed under the DBISL, see the accompanying file LICENSE. + +import { spawn } from 'child_process'; +import { PassThrough, Writable } from 'stream'; +import { Logger } from 'winston'; +import { executeShellCommand } from './executeShellCommand'; + +jest.mock('child_process', () => ({ + spawn: jest.fn(), +})); + +describe('executeShellCommand', () => { + let mockSpawn: jest.Mock; + let mockProcess: any; + let mockLogger: jest.Mocked; + let mockLogStream: Writable; + + beforeEach(() => { + mockSpawn = spawn as jest.Mock; + mockProcess = { + stdout: new PassThrough(), + stderr: new PassThrough(), + on: jest.fn((event: string, callback: (code: number) => void) => { + if (event === 'close') { + callback(0); + } + }), + }; + mockSpawn.mockReturnValue(mockProcess); + + mockLogStream = new PassThrough(); + + mockLogger = { + log: jest.fn(), + } as unknown as jest.Mocked; + jest.clearAllMocks(); + }); + + afterEach(() => { + jest.resetAllMocks(); + }); + + it('should execute without logger or logStream', async () => { + await executeShellCommand({ + command: 'echo', + args: ['Hello World'], + }); + + expect(mockSpawn).toHaveBeenCalledWith('echo', ['Hello World'], undefined); + }); + + it('should execute with logger but no logStream', async () => { + const logStreamSpy = jest.spyOn(mockLogStream, 'write'); + await executeShellCommand({ + command: 'echo', + args: ['Hello World'], + logger: mockLogger, + }); + + // Simulate command output + mockProcess.stdout.emit('data', Buffer.from('Hello World\n')); + + mockProcess.on('close', (code: any) => { + expect(code).toBe(0); + expect(logStreamSpy).not.toHaveBeenCalled(); + expect(mockLogger.log).toHaveBeenCalledWith('info', 'Hello World'); + expect(mockLogger.log).not.toHaveBeenCalledWith( + 'error', + expect.anything(), + ); + }); + }); + + it('should execute with logStream but no logger', async () => { + const logStreamSpy = jest.spyOn(mockLogStream, 'write'); + + await executeShellCommand({ + command: 'echo', + args: ['Hello World'], + logStream: mockLogStream, + }); + + mockProcess.stdout.emit('data', Buffer.from('Hello World\n')); + mockProcess.stderr.emit('data', Buffer.from('Command not found\n')); + + mockProcess.on('close', () => { + expect(logStreamSpy).toHaveBeenCalledWith(expect.any(Buffer)); + expect(logStreamSpy).toHaveBeenCalledTimes(2); + expect(mockLogger.log).not.toHaveBeenCalled(); + }); + }); + + it('should execute with both logger and logStream', async () => { + const logStreamSpy = jest.spyOn(mockLogStream, 'write'); + + await executeShellCommand({ + command: 'echo', + args: ['Hello World'], + logger: mockLogger, + logStream: mockLogStream, + }); + + mockProcess.stdout.emit('data', Buffer.from('Hello World\n')); + mockProcess.stderr.emit('data', Buffer.from('Command not found\n')); + + mockProcess.on('close', () => { + expect(mockLogger.log).toHaveBeenCalledWith('info', 'Hello World'); + expect(mockLogger.log).toHaveBeenCalledWith('error', 'Command not found'); + expect(logStreamSpy).toHaveBeenCalledTimes(2); + }); + }); + + it('should handle non-zero exit code', async () => { + mockProcess.on.mockImplementation( + (event: string, callback: (arg0: number) => void) => { + if (event === 'close') { + callback(1); // Simulate command failing + } + }, + ); + + await expect( + executeShellCommand({ + command: 'echo', + args: ['Hello World'], + logger: mockLogger, + }), + ).rejects.toThrow('Command echo failed, exit code: 1'); + }); +}); From 346ba744896a2d28c7e7a9a968730049314b8349 Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 15 Oct 2024 21:53:08 +0200 Subject: [PATCH 006/213] fix: remove logger from cookiecutter and rails Signed-off-by: ElaineDeMattosSilvaB --- .../src/actions/fetch/cookiecutter.test.ts | 5 ++- .../src/actions/fetch/cookiecutter.ts | 16 +++++--- .../src/actions/fetch/rails/index.test.ts | 6 +-- .../src/actions/fetch/rails/index.ts | 8 +++- .../fetch/rails/railsNewRunner.test.ts | 37 ++++++++++--------- .../src/actions/fetch/rails/railsNewRunner.ts | 9 +++-- 6 files changed, 49 insertions(+), 32 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index bb47f3e19a..ce8a34a6ed 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -23,7 +23,7 @@ import type { ActionContext } from '@backstage/plugin-scaffolder-node'; import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; import { JsonObject } from '@backstage/types'; import { join } from 'path'; -import { Logger } from 'winston'; +import { Writable } from 'stream'; import { createFetchCookiecutterAction } from './cookiecutter'; const executeShellCommand = jest.fn(); @@ -168,7 +168,7 @@ describe('fetch:cookiecutter', () => { join(mockTmpDir, 'template'), '--verbose', ], - logger: expect.any(Logger), + logStream: expect.any(Writable), }), ); }); @@ -189,6 +189,7 @@ describe('fetch:cookiecutter', () => { }, workingDir: '/input', envVars: { HOME: '/tmp' }, + logStream: expect.any(Writable), }), ); }); diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index 5f7f91daab..269630817c 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -30,7 +30,7 @@ import { JsonObject, JsonValue } from '@backstage/types'; import commandExists from 'command-exists'; import fs from 'fs-extra'; import path, { resolve as resolvePath } from 'path'; -import { Logger } from 'winston'; +import { PassThrough, Writable } from 'stream'; import { examples } from './cookiecutter.examples'; export class CookiecutterRunner { @@ -57,14 +57,14 @@ export class CookiecutterRunner { public async run({ workspacePath, values, - logger, + logStream, imageName, templateDir, templateContentsDir, }: { workspacePath: string; values: JsonObject; - logger: Logger; + logStream: Writable; imageName?: string; templateDir: string; templateContentsDir: string; @@ -99,7 +99,7 @@ export class CookiecutterRunner { await executeShellCommand({ command: 'cookiecutter', args: ['--no-input', '-o', intermediateDir, templateDir, '--verbose'], - logger, + logStream, }); } else { if (this.containerRunner === undefined) { @@ -116,6 +116,7 @@ export class CookiecutterRunner { // Set the home directory inside the container as something that applications can // write to, otherwise they will just fail trying to write to / envVars: { HOME: '/tmp' }, + logStream, }); } @@ -246,10 +247,15 @@ export function createFetchCookiecutterAction(options: { _extensions: ctx.input.extensions, }; + const logStream = new PassThrough(); + logStream.on('data', chunk => { + ctx.logger.info(chunk.toString()); + }); + // Will execute the template in ./template and put the result in ./result await cookiecutter.run({ workspacePath: workDir, - logger: ctx.logger, + logStream, values: values, imageName: ctx.input.imageName, templateDir: templateDir, diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts index 3ea3e01bef..c2d3ead6bb 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts @@ -35,7 +35,7 @@ import { ScmIntegrations } from '@backstage/integration'; import { fetchContents } from '@backstage/plugin-scaffolder-node'; import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; import { resolve as resolvePath } from 'path'; -import { Logger } from 'winston'; +import { Writable } from 'stream'; import { createFetchRailsAction } from './index'; describe('fetch:rails', () => { @@ -106,7 +106,7 @@ describe('fetch:rails', () => { expect(mockRailsTemplater.run).toHaveBeenCalledWith({ workspacePath: mockContext.workspacePath, - logger: expect.any(Logger), + logStream: expect.any(Writable), values: mockContext.input.values, }); }); @@ -122,7 +122,7 @@ describe('fetch:rails', () => { expect(mockRailsTemplater.run).toHaveBeenCalledWith({ workspacePath: mockContext.workspacePath, - logger: expect.any(Logger), + logStream: expect.any(Writable), values: { ...mockContext.input.values, imageName: 'foo/rails-custom-image', diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts index 223aeb19a2..a063ce0a5b 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts @@ -26,6 +26,7 @@ import fs from 'fs-extra'; import { UrlReaderService } from '@backstage/backend-plugin-api'; import { resolve as resolvePath } from 'path'; +import { PassThrough } from 'stream'; import { examples } from './index.examples'; import { RailsNewRunner } from './railsNewRunner'; @@ -218,10 +219,15 @@ export function createFetchRailsAction(options: { throw new Error(`Image ${imageName} is not allowed`); } + const logStream = new PassThrough(); + logStream.on('data', chunk => { + ctx.logger.info(chunk.toString()); + }); + // Will execute the template in ./template and put the result in ./result await templateRunner.run({ workspacePath: workDir, - logger: ctx.logger, + logStream, values: { ...ctx.input.values, imageName }, }); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index 3abbd24ace..c53f368516 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -30,7 +30,7 @@ jest.mock( import { ContainerRunner } from '@backstage/backend-common'; import { createMockDirectory } from '@backstage/backend-test-utils'; import path from 'path'; -import { Logger } from 'winston'; +import { PassThrough } from 'stream'; import { RailsNewRunner } from './railsNewRunner'; describe('Rails Templater', () => { @@ -47,7 +47,7 @@ describe('Rails Templater', () => { describe('when running on docker', () => { it('should run the correct bindings for the volumes', async () => { - const logger = new Logger(); + const logStream = new PassThrough(); const values = { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', @@ -65,7 +65,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logger, + logStream, }); expect(containerRunner.runContainer).toHaveBeenCalledWith({ @@ -78,11 +78,12 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', + logStream: logStream, }); }); it('should use the provided imageName', async () => { - const logger = new Logger(); + const logStream = new PassThrough(); const values = { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', @@ -100,7 +101,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logger, + logStream, }); expect(containerRunner.runContainer).toHaveBeenCalledWith( @@ -111,7 +112,7 @@ describe('Rails Templater', () => { }); it('should pass through the streamer to the run docker helper', async () => { - const logger = new Logger(); + const stream = new PassThrough(); const values = { owner: 'angeliski', @@ -130,7 +131,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logger, + logStream: stream, }); expect(containerRunner.runContainer).toHaveBeenCalledWith({ @@ -143,11 +144,12 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', + logStream: stream, }); }); it('update the template path to correct location', async () => { - const logger = new Logger(); + const logStream = new PassThrough(); const values = { owner: 'angeliski', storePath: 'https://github.com/angeliski/rails-project', @@ -166,7 +168,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logger, + logStream, }); expect(containerRunner.runContainer).toHaveBeenCalledWith({ @@ -184,13 +186,14 @@ describe('Rails Templater', () => { [path.join(mockDir.path, 'intermediate')]: '/output', }, workingDir: '/input', + logStream: logStream, }); }); }); describe('when rails is available', () => { it('use the binary', async () => { - const logger = new Logger(); + const stream = new PassThrough(); const values = { owner: 'angeliski', @@ -210,7 +213,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logger, + logStream: stream, }); expect(executeShellCommand).toHaveBeenCalledWith({ @@ -219,12 +222,12 @@ describe('Rails Templater', () => { 'new', path.join(mockDir.path, 'intermediate', 'rails-project'), ]), - logger, + logStream: stream, }); }); it('update the template path to correct location', async () => { - const logger = new Logger(); + const stream = new PassThrough(); const values = { owner: 'angeliski', @@ -245,7 +248,7 @@ describe('Rails Templater', () => { await templater.run({ workspacePath: mockDir.path, values, - logger, + logStream: stream, }); expect(executeShellCommand).toHaveBeenCalledWith({ @@ -256,14 +259,14 @@ describe('Rails Templater', () => { '--template', path.join(mockDir.path, './something.rb'), ]), - logger, + logStream: stream, }); }); }); describe('when nothing was generated', () => { it('throws an error', async () => { - const logger = new Logger(); + const stream = new PassThrough(); mockDir.setContent({ intermediate: {}, @@ -279,7 +282,7 @@ describe('Rails Templater', () => { name: 'rails-project', imageName: 'foo/rails-custom-image', }, - logger, + logStream: stream, }), ).rejects.toThrow(/No data generated by rails/); }); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts index 906c2e6404..fe2470eef8 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts @@ -20,7 +20,7 @@ import { JsonObject } from '@backstage/types'; import commandExists from 'command-exists'; import fs from 'fs-extra'; import path from 'path'; -import { Logger } from 'winston'; +import { Writable } from 'stream'; import { railsArgumentResolver, RailsRunOptions, @@ -36,11 +36,11 @@ export class RailsNewRunner { public async run({ workspacePath, values, - logger, + logStream, }: { workspacePath: string; values: JsonObject; - logger: Logger; + logStream: Writable; }): Promise { const intermediateDir = path.join(workspacePath, 'intermediate'); await fs.ensureDir(intermediateDir); @@ -71,7 +71,7 @@ export class RailsNewRunner { `${intermediateDir}${path.sep}${name}`, ...arrayExtraArguments, ], - logger, + logStream, }); } else { if (!imageName) { @@ -96,6 +96,7 @@ export class RailsNewRunner { // Set the home directory inside the container as something that applications can // write to, otherwise they will just fail trying to write to / envVars: { HOME: '/tmp' }, + logStream, }); } From a6795414641bd34bc0eb694e835e3fae9fe5759f Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 15 Oct 2024 22:01:49 +0200 Subject: [PATCH 007/213] fix: remove winston logger from the rails package.json Signed-off-by: ElaineDeMattosSilvaB --- .../report.api.md | 2 + .../package.json | 83 +++++++++---------- yarn.lock | 1 - 3 files changed, 43 insertions(+), 43 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/report.api.md b/plugins/scaffolder-backend-module-cookiecutter/report.api.md index 316dc6b4a8..19f43389dc 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/report.api.md +++ b/plugins/scaffolder-backend-module-cookiecutter/report.api.md @@ -3,6 +3,8 @@ > 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 { ContainerRunner } from '@backstage/backend-common'; import { JsonObject } from '@backstage/types'; diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 62f688b5c0..9b6e5b87be 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,46 +1,8 @@ { - "name": "@backstage/plugin-scaffolder-backend-module-rails", - "version": "0.5.1-next.2", - "description": "A module for the scaffolder backend that lets you template projects using Rails", "backstage": { - "role": "backend-plugin-module", "pluginId": "scaffolder", - "pluginPackage": "@backstage/plugin-scaffolder-backend" - }, - "publishConfig": { - "access": "public" - }, - "homepage": "https://backstage.io", - "repository": { - "type": "git", - "url": "https://github.com/backstage/backstage", - "directory": "plugins/scaffolder-backend-module-rails" - }, - "license": "Apache-2.0", - "exports": { - ".": "./src/index.ts", - "./package.json": "./package.json" - }, - "main": "src/index.ts", - "types": "src/index.ts", - "typesVersions": { - "*": { - "package.json": [ - "package.json" - ] - } - }, - "files": [ - "dist" - ], - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint": "backstage-cli package lint", - "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack", - "start": "backstage-cli package start", - "test": "backstage-cli package test" + "pluginPackage": "@backstage/plugin-scaffolder-backend", + "role": "backend-plugin-module" }, "dependencies": { "@backstage/backend-common": "^0.25.0", @@ -52,9 +14,9 @@ "@backstage/types": "workspace:^", "command-exists": "^1.2.9", "fs-extra": "^11.0.0", - "winston": "^3.2.1", "yaml": "^2.0.0" }, + "description": "A module for the scaffolder backend that lets you template projects using Rails", "devDependencies": { "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", @@ -63,5 +25,42 @@ "@types/fs-extra": "^11.0.0", "@types/node": "^18.17.8", "jest-when": "^3.1.0" - } + }, + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "files": [ + "dist" + ], + "homepage": "https://backstage.io", + "license": "Apache-2.0", + "main": "src/index.ts", + "name": "@backstage/plugin-scaffolder-backend-module-rails", + "publishConfig": { + "access": "public" + }, + "repository": { + "directory": "plugins/scaffolder-backend-module-rails", + "type": "git", + "url": "https://github.com/backstage/backstage" + }, + "scripts": { + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", + "postpack": "backstage-cli package postpack", + "prepack": "backstage-cli package prepack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" + }, + "types": "src/index.ts", + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, + "version": "0.5.1-next.2" } diff --git a/yarn.lock b/yarn.lock index 0d66938b6f..8bbf86bd74 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7498,7 +7498,6 @@ __metadata: command-exists: ^1.2.9 fs-extra: ^11.0.0 jest-when: ^3.1.0 - winston: ^3.2.1 yaml: ^2.0.0 languageName: unknown linkType: soft From 322de9395d425dc066a1d65989231e5f3b74b4d8 Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 15 Oct 2024 22:09:40 +0200 Subject: [PATCH 008/213] fix: package.sjon Signed-off-by: ElaineDeMattosSilvaB --- .../package.json | 78 +++++++++---------- 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 9b6e5b87be..188892b2e2 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,9 +1,47 @@ { + "name": "@backstage/plugin-scaffolder-backend-module-rails", + "version": "0.5.1", + "description": "A module for the scaffolder backend that lets you template projects using Rails", "backstage": { "pluginId": "scaffolder", "pluginPackage": "@backstage/plugin-scaffolder-backend", "role": "backend-plugin-module" }, + "publishConfig": { + "access": "public" + }, + "homepage": "https://backstage.io", + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-rails" + }, + "license": "Apache-2.0", + "exports": { + ".": "./src/index.ts", + "./package.json": "./package.json" + }, + "main": "src/index.ts", + "types": "src/index.ts", + "typesVersions": { + "*": { + "package.json": [ + "package.json" + ] + } + }, + "files": [ + "dist" + ], + "scripts": { + "build": "backstage-cli package build", + "clean": "backstage-cli package clean", + "lint": "backstage-cli package lint", + "prepack": "backstage-cli package prepack", + "postpack": "backstage-cli package postpack", + "start": "backstage-cli package start", + "test": "backstage-cli package test" + }, "dependencies": { "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", @@ -16,7 +54,6 @@ "fs-extra": "^11.0.0", "yaml": "^2.0.0" }, - "description": "A module for the scaffolder backend that lets you template projects using Rails", "devDependencies": { "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", @@ -25,42 +62,5 @@ "@types/fs-extra": "^11.0.0", "@types/node": "^18.17.8", "jest-when": "^3.1.0" - }, - "exports": { - ".": "./src/index.ts", - "./package.json": "./package.json" - }, - "files": [ - "dist" - ], - "homepage": "https://backstage.io", - "license": "Apache-2.0", - "main": "src/index.ts", - "name": "@backstage/plugin-scaffolder-backend-module-rails", - "publishConfig": { - "access": "public" - }, - "repository": { - "directory": "plugins/scaffolder-backend-module-rails", - "type": "git", - "url": "https://github.com/backstage/backstage" - }, - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint": "backstage-cli package lint", - "postpack": "backstage-cli package postpack", - "prepack": "backstage-cli package prepack", - "start": "backstage-cli package start", - "test": "backstage-cli package test" - }, - "types": "src/index.ts", - "typesVersions": { - "*": { - "package.json": [ - "package.json" - ] - } - }, - "version": "0.5.1-next.2" + } } From a3dbd2302fa16b783c1e6e7baa618500639f0bcf Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 22 Oct 2024 06:46:09 +0200 Subject: [PATCH 009/213] fix: change winston logger for loggerservice Signed-off-by: ElaineDeMattosSilvaB --- .../src/actions/executeShellCommand.test.ts | 22 +++++++++---------- .../src/actions/executeShellCommand.ts | 10 ++++----- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts b/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts index 91ee2c52fd..aa60f31df4 100644 --- a/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts +++ b/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts @@ -17,9 +17,9 @@ // Copyright 2024 DB Systel GmbH // Licensed under the DBISL, see the accompanying file LICENSE. +import { LoggerService } from '@backstage/backend-plugin-api'; import { spawn } from 'child_process'; import { PassThrough, Writable } from 'stream'; -import { Logger } from 'winston'; import { executeShellCommand } from './executeShellCommand'; jest.mock('child_process', () => ({ @@ -29,7 +29,7 @@ jest.mock('child_process', () => ({ describe('executeShellCommand', () => { let mockSpawn: jest.Mock; let mockProcess: any; - let mockLogger: jest.Mocked; + let mockLogger: jest.Mocked; let mockLogStream: Writable; beforeEach(() => { @@ -48,8 +48,9 @@ describe('executeShellCommand', () => { mockLogStream = new PassThrough(); mockLogger = { - log: jest.fn(), - } as unknown as jest.Mocked; + info: jest.fn(), + error: jest.fn(), + } as unknown as jest.Mocked; jest.clearAllMocks(); }); @@ -80,11 +81,8 @@ describe('executeShellCommand', () => { mockProcess.on('close', (code: any) => { expect(code).toBe(0); expect(logStreamSpy).not.toHaveBeenCalled(); - expect(mockLogger.log).toHaveBeenCalledWith('info', 'Hello World'); - expect(mockLogger.log).not.toHaveBeenCalledWith( - 'error', - expect.anything(), - ); + expect(mockLogger.info).toHaveBeenCalledWith('Hello World'); + expect(mockLogger.error).not.toHaveBeenCalledWith(expect.anything()); }); }); @@ -103,7 +101,7 @@ describe('executeShellCommand', () => { mockProcess.on('close', () => { expect(logStreamSpy).toHaveBeenCalledWith(expect.any(Buffer)); expect(logStreamSpy).toHaveBeenCalledTimes(2); - expect(mockLogger.log).not.toHaveBeenCalled(); + expect(mockLogger.info).not.toHaveBeenCalled(); }); }); @@ -121,8 +119,8 @@ describe('executeShellCommand', () => { mockProcess.stderr.emit('data', Buffer.from('Command not found\n')); mockProcess.on('close', () => { - expect(mockLogger.log).toHaveBeenCalledWith('info', 'Hello World'); - expect(mockLogger.log).toHaveBeenCalledWith('error', 'Command not found'); + expect(mockLogger.info).toHaveBeenCalledWith('Hello World'); + expect(mockLogger.error).toHaveBeenCalledWith('Command not found'); expect(logStreamSpy).toHaveBeenCalledTimes(2); }); }); diff --git a/plugins/scaffolder-node/src/actions/executeShellCommand.ts b/plugins/scaffolder-node/src/actions/executeShellCommand.ts index cb87330f9a..1d45d74327 100644 --- a/plugins/scaffolder-node/src/actions/executeShellCommand.ts +++ b/plugins/scaffolder-node/src/actions/executeShellCommand.ts @@ -14,9 +14,9 @@ * limitations under the License. */ +import { LoggerService } from '@backstage/backend-plugin-api'; import { spawn, SpawnOptionsWithoutStdio } from 'child_process'; import { PassThrough, Writable } from 'stream'; -import { Logger } from 'winston'; /** * Options for {@link executeShellCommand}. @@ -31,7 +31,7 @@ export type ExecuteShellCommandOptions = { /** options to pass to spawn */ options?: SpawnOptionsWithoutStdio; /** logger to capture stdout and stderr output */ - logger?: Logger; + logger?: LoggerService; /** * stream to capture stdout and stderr output * @deprecated please provide a logger instead. @@ -60,15 +60,13 @@ export async function executeShellCommand( process.stdout.on('data', chunk => { logStream?.write(chunk); - logger?.log( - 'info', + logger?.info( Buffer.isBuffer(chunk) ? chunk.toString('utf8').trim() : chunk.trim(), ); }); process.stderr.on('data', chunk => { logStream?.write(chunk); - logger?.log( - 'error', + logger?.error( Buffer.isBuffer(chunk) ? chunk.toString('utf8').trim() : chunk.trim(), ); }); From edf47addc41a4b7868a0a4d7f5e6da256d6d4c92 Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 22 Oct 2024 07:14:09 +0200 Subject: [PATCH 010/213] fix: update report.api doc Signed-off-by: ElaineDeMattosSilvaB --- plugins/scaffolder-node/report.api.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-node/report.api.md b/plugins/scaffolder-node/report.api.md index 75c964f6d6..0fa84d5407 100644 --- a/plugins/scaffolder-node/report.api.md +++ b/plugins/scaffolder-node/report.api.md @@ -9,6 +9,7 @@ import { BackstageCredentials } from '@backstage/backend-plugin-api'; import { JsonObject } from '@backstage/types'; import { JsonValue } from '@backstage/types'; import { Logger } from 'winston'; +import { LoggerService } from '@backstage/backend-plugin-api'; import { Observable } from '@backstage/types'; import { Schema } from 'jsonschema'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -191,7 +192,7 @@ export type ExecuteShellCommandOptions = { command: string; args: string[]; options?: SpawnOptionsWithoutStdio; - logger?: Logger; + logger?: LoggerService; logStream?: Writable; }; From 03f5d1c644859b33b2eba6d5abf9739d493b2e55 Mon Sep 17 00:00:00 2001 From: Juan Escalada Date: Fri, 25 Oct 2024 18:33:36 +0900 Subject: [PATCH 011/213] Add custom column example for existing Kind Signed-off-by: Juan Escalada --- .../software-catalog/catalog-customization.md | 46 ++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 0c8eb7bcda..2f97874336 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -63,7 +63,51 @@ There are many options that can be set using `tableOptions`, the full list of se ## Customize Columns -By default the columns you see in the `CatalogIndexPage` were selected to be a good starting point for most but there may be reasons that you would like to customize these with more or less columns. One primary use case for this customization is if you added a custom Kind. Support for this was added in v1.23.0 of Backstage, make sure you are on that version or newer to use this feature. Here's an example of how to make this customization: +The columns you see in the `CatalogIndexPage` were selected to be a good starting point for most, but there may be cases where you would like to add or remove columns from existing or custom Kinds. + +### Adding a column to an existing Kind + +Suppose we want to add a new User Email column to the `User` kind in the Catalog. We can do this by creating a new column factory in `/plugins/catalog/src/components/CatalogTable/columns.tsx`: + +```tsx title="packages/catalog/src/components/CatalogTable/columns.tsx" +export const columnFactories = Object.freeze({ + createNameColumn(options?: { + defaultKind?: string; + }): TableColumn { + // ... + createUserEmailColumn(): TableColumn { + return { + title: 'User Email', + field: 'entity.spec?.profile?.["email"]', + render: ({ entity }) => ( + + ), + }; + }, + } +}); +``` + +Then, we can call this new column factory in `/plugins/catalog/src/components/CatalogTable/defaultCatalogTableColumnsFunc.tsx`: + +```tsx title="packages/catalog/src/components/CatalogTable/defaultCatalogTableColumnsFunc.tsx" +// ... + switch (filters.kind?.value) { + case 'user': + return [ + ...descriptionTagColumns, + {/* highlight-add-next-line */} + columnFactories.createUserEmailColumn(), + ]; +// ... +``` + +### Adding columns to a custom or specific Kind + +Another use case for customization is when adding a custom `Kind`. This feature is available in Backstage >= `v1.23.0`. For example: ```tsx title="packages/app/src/App.tsx" import { From db32340cb130fcae9e0fc9e150c7e4dd1098e8d1 Mon Sep 17 00:00:00 2001 From: Juan Escalada Date: Fri, 25 Oct 2024 18:46:02 +0900 Subject: [PATCH 012/213] Improve wording Signed-off-by: Juan Escalada --- .../software-catalog/catalog-customization.md | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 2f97874336..8a66342aea 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -75,6 +75,7 @@ export const columnFactories = Object.freeze({ defaultKind?: string; }): TableColumn { // ... + {/* highlight-add-start */} createUserEmailColumn(): TableColumn { return { title: 'User Email', @@ -87,6 +88,7 @@ export const columnFactories = Object.freeze({ ), }; }, + {/* highlight-add-end */} } }); ``` @@ -141,7 +143,7 @@ const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { :::note Note -The above example has been simplified and you will most likely have more code then just this in your `App.tsx` file. +In the examples above, the contents of the files have been shortened for simplicity. ::: @@ -212,15 +214,15 @@ const customActions: TableProps['actions'] = [ :::note Note -The above example has been simplified and you will most likely have more code then just this in your `App.tsx` file. +In the example above, the contents of `App.tsx` has been shortened for simplicity. ::: -The above customization will override the existing actions. Currently the only way to keep them and add your own is to also include the existing actions in your array by copying them from the [`defaultActions`](https://github.com/backstage/backstage/blob/57397e7d6d2d725712c439f4ab93f2ac6aa27bf8/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx#L113-L168). +The above customization will override the existing actions. Currently, the only way to keep them and add your own is to also include the existing actions in your array by copying them from the [`defaultActions`](https://github.com/backstage/backstage/blob/57397e7d6d2d725712c439f4ab93f2ac6aa27bf8/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx#L113-L168). ## Customize Filters -There are three options you have for filters: adjusting the existing filters with props, adding or removing the default filters, or creating a brand new custom filter. The following sections cover these cases +There are various ways to customize filters: adjusting the existing filters with props, adding or removing default filters, creating brand-new custom filters, etc. The following sections cover these cases: ### Default Filter Props @@ -249,7 +251,7 @@ import { DefaultFilters } from '@backstage/plugin-catalog-react'; ### Removing Default Filters -You may have reasons not use the Lifecycle, Tag, and Processing Status filters, here's an example of how you would remove them: +If you have reasons not to use the Lifecycle, Tag, and Processing Status filters, here's an example of how to remove them: ```tsx title="packages/app/src/App.tsx" import { @@ -280,7 +282,7 @@ import { ### Custom Filters -You can add custom filters. For example, suppose that I want to allow filtering by a custom annotation added to entities, `company.com/security-tier`. Here is how we can build a filter to support that need. +You can add custom filters. For example, suppose that we want to allow filtering by a custom annotation added to entities, `company.com/security-tier`. Here is how we can build a filter to support that need. First we need to create a new filter that implements the `EntityFilter` interface: From f847e9cb09c39651c90aeb4fb8cf0354fb108014 Mon Sep 17 00:00:00 2001 From: Elaine Mattos Date: Tue, 22 Oct 2024 11:51:31 +0200 Subject: [PATCH 013/213] fix: remove improper license Signed-off-by: ElaineDeMattosSilvaB --- .../scaffolder-node/src/actions/executeShellCommand.test.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts b/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts index aa60f31df4..67951f915c 100644 --- a/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts +++ b/plugins/scaffolder-node/src/actions/executeShellCommand.test.ts @@ -13,10 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ - -// Copyright 2024 DB Systel GmbH -// Licensed under the DBISL, see the accompanying file LICENSE. - import { LoggerService } from '@backstage/backend-plugin-api'; import { spawn } from 'child_process'; import { PassThrough, Writable } from 'stream'; From 7a462f286ed339e9ab9ece1043b91fc867305062 Mon Sep 17 00:00:00 2001 From: Juan Escalada Date: Thu, 7 Nov 2024 13:12:49 +0900 Subject: [PATCH 014/213] Fix custom column example Signed-off-by: Juan Escalada --- .../software-catalog/catalog-customization.md | 103 ++++++++++++------ 1 file changed, 71 insertions(+), 32 deletions(-) diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 8a66342aea..63556b1626 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -67,44 +67,83 @@ The columns you see in the `CatalogIndexPage` were selected to be a good startin ### Adding a column to an existing Kind -Suppose we want to add a new User Email column to the `User` kind in the Catalog. We can do this by creating a new column factory in `/plugins/catalog/src/components/CatalogTable/columns.tsx`: +Suppose we want to add a new User Email column to the `User` kind in the Catalog. We can do this by overriding the `columns` that we pass into the `CatalogIndexPage` component in our `App.tsx`. First, we need to match the entity kind that we want to override, and then define the columns to show: -```tsx title="packages/catalog/src/components/CatalogTable/columns.tsx" -export const columnFactories = Object.freeze({ - createNameColumn(options?: { - defaultKind?: string; - }): TableColumn { - // ... - {/* highlight-add-start */} - createUserEmailColumn(): TableColumn { - return { - title: 'User Email', - field: 'entity.spec?.profile?.["email"]', - render: ({ entity }) => ( - - ), - }; - }, - {/* highlight-add-end */} +```tsx title="packages/app/src/App.tsx" +{ + /* highlight-add-start */ +} +const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { + if (entityListContext.filters.kind?.value === 'user') { + return [ + // Existing columns (Name, Description, Tags) + CatalogTable.columns.createNameColumn(), + CatalogTable.columns.createMetadataDescriptionColumn(), + CatalogTable.columns.createTagsColumn(), + // Add new columns here + ]; } -}); + + return CatalogTable.defaultColumnsFunc(entityListContext); +}; +{ + /* highlight-add-end */ +} ``` -Then, we can call this new column factory in `/plugins/catalog/src/components/CatalogTable/defaultCatalogTableColumnsFunc.tsx`: +Some other possible values for the existing entity kinds are `user`, `domain`, `system`, `group`, `template` and `location`. -```tsx title="packages/catalog/src/components/CatalogTable/defaultCatalogTableColumnsFunc.tsx" -// ... - switch (filters.kind?.value) { - case 'user': - return [ - ...descriptionTagColumns, +Then, we can implement the `createUserEmailColumn` function and add it to the list of columns. `field` is used to access the data from the entity, while `render` lets us customize how we display the data: + +```tsx title="packages/app/src/App.tsx" +{/* highlight-add-start */} +const createUserEmailColumn = (): TableColumn => ({ + title: 'User Email', + field: 'entity.spec.profile.email', + render: ({ entity }) => ( + + ), +}); +{/* highlight-add-end */} + +const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { + if (entityListContext.filters.kind?.value === 'user') { + return [ + // Existing columns (Name, Description, Tags) + CatalogTable.columns.createNameColumn(), + CatalogTable.columns.createMetadataDescriptionColumn(), + CatalogTable.columns.createTagsColumn(), + // Add new columns here + {/* highlight-add-next-line */} + createUserEmailColumn(), + ]; + } + + return CatalogTable.defaultColumnsFunc(entityListContext); +}; +``` + +Finally, we can pass the `myColumnsFunc` to the `CatalogIndexPage` component: + +```tsx title="packages/app/src/App.tsx" +const routes = ( + + + } + /> + {/* Other routes */} + +) ``` ### Adding columns to a custom or specific Kind From 662d7b0b333d5fc301e412a9d82ea9b38f9be0bc Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Mon, 11 Nov 2024 13:00:22 +0100 Subject: [PATCH 015/213] Add taskID and tests Signed-off-by: Fabio Vincenzi --- .../tasks/NunjucksWorkflowRunner.test.ts | 28 +++++++++++++++++++ .../tasks/NunjucksWorkflowRunner.ts | 11 +++++++- 2 files changed, 38 insertions(+), 1 deletion(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 0bcbd2f917..ecd9b73750 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -684,6 +684,34 @@ describe('NunjucksWorkflowRunner', () => { expect(output.foo).toEqual('BACKSTAGE'); }); + + it('should include task ID in the templated context', async () => { + const task = createMockTaskWithSpec({ + apiVersion: 'scaffolder.backstage.io/v1beta3', + steps: [ + { + id: 'test', + name: 'name', + action: 'jest-mock-action', + input: { + values: { + taskId: '${{context.task.id}}', + }, + }, + }, + ], + output: {}, + parameters: {}, + }); + + await runner.execute(task); + + expect(fakeActionHandler).toHaveBeenCalledWith( + expect.objectContaining({ + input: { values: { taskId: 'test-workspace' } }, + }), + ); + }); }); describe('redactions', () => { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index 6f7551568f..d5736ef928 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -80,6 +80,11 @@ type TemplateContext = { ref?: string; }; each?: JsonValue; + context: { + task: { + id: string; + }; + }; }; type CheckpointState = @@ -480,11 +485,15 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { const taskTrack = await this.tracker.taskStart(task); await fs.ensureDir(workspacePath); - const context: TemplateContext = { parameters: task.spec.parameters, steps: {}, user: task.spec.user, + context: { + task: { + id: taskId, + }, + }, }; const [decision]: PolicyDecision[] = From 5d9e5c8483c55a4e8563909f78a5ca4dd46f6d73 Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Tue, 12 Nov 2024 12:55:13 +0100 Subject: [PATCH 016/213] add changeset Signed-off-by: Fabio Vincenzi --- .changeset/famous-dryers-protect.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/famous-dryers-protect.md diff --git a/.changeset/famous-dryers-protect.md b/.changeset/famous-dryers-protect.md new file mode 100644 index 0000000000..f1da5fc511 --- /dev/null +++ b/.changeset/famous-dryers-protect.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': minor +--- + +New `taskId` Context Variable in Scaffolder Templates From 21af8faf5a119f86f1e416a74daa8a4ad9ba4ed3 Mon Sep 17 00:00:00 2001 From: Juan Escalada <97265671+jescalada@users.noreply.github.com> Date: Mon, 18 Nov 2024 19:28:16 -0800 Subject: [PATCH 017/213] Update docs/features/software-catalog/catalog-customization.md Co-authored-by: Vincenzo Scamporlino Signed-off-by: Juan Escalada <97265671+jescalada@users.noreply.github.com> --- docs/features/software-catalog/catalog-customization.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 63556b1626..c3355f53b4 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -91,8 +91,6 @@ const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { } ``` -Some other possible values for the existing entity kinds are `user`, `domain`, `system`, `group`, `template` and `location`. - Then, we can implement the `createUserEmailColumn` function and add it to the list of columns. `field` is used to access the data from the entity, while `render` lets us customize how we display the data: ```tsx title="packages/app/src/App.tsx" From 63d121cc56d19bc2a5ba6f6989c8ee678288c43b Mon Sep 17 00:00:00 2001 From: Juan Escalada <97265671+jescalada@users.noreply.github.com> Date: Mon, 18 Nov 2024 19:28:59 -0800 Subject: [PATCH 018/213] Update docs/features/software-catalog/catalog-customization.md Co-authored-by: Vincenzo Scamporlino Signed-off-by: Juan Escalada <97265671+jescalada@users.noreply.github.com> --- docs/features/software-catalog/catalog-customization.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index c3355f53b4..98d1af9b3d 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -76,10 +76,8 @@ Suppose we want to add a new User Email column to the `User` kind in the Catalog const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { if (entityListContext.filters.kind?.value === 'user') { return [ - // Existing columns (Name, Description, Tags) - CatalogTable.columns.createNameColumn(), - CatalogTable.columns.createMetadataDescriptionColumn(), - CatalogTable.columns.createTagsColumn(), + // Render existing columns + ...CatalogTable.defaultColumnsFunc(entityListContext), // Add new columns here ]; } From 6d0b7bc126d3dbc30ef8139b3545787bbd46cc89 Mon Sep 17 00:00:00 2001 From: Juan Escalada <97265671+jescalada@users.noreply.github.com> Date: Mon, 18 Nov 2024 19:29:30 -0800 Subject: [PATCH 019/213] Update docs/features/software-catalog/catalog-customization.md Co-authored-by: Vincenzo Scamporlino Signed-off-by: Juan Escalada <97265671+jescalada@users.noreply.github.com> --- docs/features/software-catalog/catalog-customization.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/features/software-catalog/catalog-customization.md b/docs/features/software-catalog/catalog-customization.md index 98d1af9b3d..c56f763a4e 100644 --- a/docs/features/software-catalog/catalog-customization.md +++ b/docs/features/software-catalog/catalog-customization.md @@ -108,10 +108,9 @@ const createUserEmailColumn = (): TableColumn => ({ const myColumnsFunc: CatalogTableColumnsFunc = entityListContext => { if (entityListContext.filters.kind?.value === 'user') { return [ - // Existing columns (Name, Description, Tags) - CatalogTable.columns.createNameColumn(), - CatalogTable.columns.createMetadataDescriptionColumn(), - CatalogTable.columns.createTagsColumn(), + return [ + // Render existing columns + ...CatalogTable.defaultColumnsFunc(entityListContext), // Add new columns here {/* highlight-add-next-line */} createUserEmailColumn(), From 575e07bbbc94639f3af46f4e80597e15436040a1 Mon Sep 17 00:00:00 2001 From: mario ma Date: Thu, 28 Nov 2024 19:32:45 +0800 Subject: [PATCH 020/213] feat: add partner Signed-off-by: mario ma --- microsite/src/pages/community/index.tsx | 5 +++++ microsite/static/img/partner-logo-alauda.png | Bin 0 -> 5972 bytes 2 files changed, 5 insertions(+) create mode 100644 microsite/static/img/partner-logo-alauda.png diff --git a/microsite/src/pages/community/index.tsx b/microsite/src/pages/community/index.tsx index a32f5edd13..c9367f4662 100644 --- a/microsite/src/pages/community/index.tsx +++ b/microsite/src/pages/community/index.tsx @@ -101,6 +101,11 @@ const Community = () => { url: 'https://statusneo.com/backstage', logo: 'img/partner-logo-statusneo.png', }, + { + name: 'Alauda', + url: 'https://www.alauda.io/community/169249', + logo: 'img/partner-logo-alauda.png', + }, ]; //#endregion diff --git a/microsite/static/img/partner-logo-alauda.png b/microsite/static/img/partner-logo-alauda.png new file mode 100644 index 0000000000000000000000000000000000000000..09392a2582129dd3f0668c3fa2ba70bfb00ab972 GIT binary patch literal 5972 zcmV-a7pv%rP)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91$e;rN1ONa40RR91A^-pY0Qo=S>i_^2zDYzuRCodHT?up+MYg`x-G5fH zLXai03kZmWKOqnThQ$RO9p60jJnGCD2MpkTp32kX8XvBl5%uYaqA2c18J~k2k5MEJ z0fZ0`366|}9f4s9StR+Fu6p17$^WPO-;!XW&hfwJ{ORgjw{BJ4zW3Ixr8|P!1WKe| zLusaix|5(`LeUgbbhaj_r#k4mTa&@qDW9&Ly0yYCFEmhhR`{;IrRCl4Kv<|QB6vHMM z$Qurg?mfCl9PFezT4g&bub@OpEz?G*sa;zt*1TiG{eo^r=NCFnQ%xi#;{4r4=JfTcxPB7RD{-3;YKX0FMW5jQ z7i%C`St$^t9>7{kieD~XMH`Tg8A#f-%4te^6vF7{7fysLFWEL==sBn~2v1Qp!X`IX zt1^)u4FemAD+`#tkZpvr@Jo@3=B71LRV~ql#&lWQjOr=M%e& zNg#>@Zc_1?4K&aclr42?&^`3^i6!DhloF?%h5ZaAOp^-X`OgOzM-)!`FdRIrYc#9= z1@U31ad1hYY8Q%~b+z;`MwB_=xeQ2L!h@1DsL7z;Q8AVUVi1!+TO@!L)|4hX-_+5= zXDWDNGzkk0$ayZqq*uOMBu<8L&qc# zkbuX7xvfT{0th6q=#zy&zP}aMQEBKe<_U@hMPSHUyUC%`;@wL`Qv{kQXrWG=pshlu zB_N6vBX+~G@8~mrM@dl_#j;`&@JYboz=F`Jl{KqG4#CNOYejTaS|dr5!7S3~;ep$K z``B~hz-d>Aa0}MW%ct8T@DT6-=QPE4_@-op>SE}BWeL>OPy^aOAC7w!e)afO!@)kI zOj_L;{W7p-I~bJ&gG8m3u*zqI;hSg&=eO&=_9*R1OQk9pTOJCAOvq7JFR$i{C)>q0 zM*Itu032@ZELE1S(YMk=-F1^1jU?K2~>2x||LPC~w zQ-(%*SEbA@x*?94N;|H5wVKMxvSScUkQ)4qg@psJh}UDnMunOV@SBq22ycIInH z*Y>2L{<5;NsB^aA~AVDo!shDjg%9{k%4?+dJ&W;bDz}AwWISUzUzsXs}S9v77Us;Ek3p8 z`vGLizGz>D6f!|4aZ-_X)D&XpR~!De8;m=~0E<;(S_=I(xS`OYjVBh1&B1u}uW(yhg@S^D?k7FkWkR|xR7#D&;@25?-boTqTWBy4Q|*mAslLp~EBy23 zitZi7T`h*#4wCRkEAPb9OM>j8N|XoDu)vhGrED}uVT6LNElMtF}l%#=#zLJs}#G&6(}@lZglc*>)QPW z8^1z0)Y8ps*Y0U2`w;TvG)hIAZE|BGH2hv%!Wsx4z{Ot4uaJKUPK)qKkDhpLED!9D zQw{Wd*GWm6Qf8{R>KD^m^dle#1B8chmkQ!wU}^DMa{!>^4`ErWHxRxMD;4j091rA1 zPhgIr;Nc?yn$bGsjvqgy(L;~HqRvCx(oh2BPW1%|-sJ4bKP8nDSr@}do=h-$KD%z+ z(h!Afy|y5V(o${o@=wNiq?{+D%117*!CTu616RqwWurx7OplzBlUw+BkF1n8mM>rK z3gXt;w_?Zc!{gx~pMiLWqOz#Y2c77Fr!$L$>xepF-I*aZ{oPD$nU<9uO%ubbXR z8+mc4HDCvOCPt?PmHVkLj$h5^O>v%Y{3BvXMTT-=NcxEZ3f9|0>QRWaZ%|VZK4Kw( z#423Z;D^_GTL67akV0K$YTm1hii+AZ$7x}Ll+#%NFKEt3{Wjyk6K=xq8yLb$IHn4a z@;u85T@dmM*ifwU%tE{7=I2jiFWTwgEGQU&x!JFSDuQ^#W+Aj2)4Le= zZ>m`R`sR)0uW=eyI~z*Aa+XA@w09#U?GK`gucuW4w_?V=(|QY;I|5N*08S! zjAV9N8ud0XX{kcT;Dy7UVlqtwXs9g?%nwxbL=x zE-o+n*N3%~m6 zuK_O!W7<~N=-G~$-}9gijJ&XxbKRn@2)OqxJUS(b)j)P6wvi6^4G_g+n=7WQCMpdW zZ}Upqnw;E%`;q?^=%UV5xWVzshYO)I&VZ)^4(a_uh}&H!YgTOAwv9tLhHA*;tGbhF zhg9kv-1~V$-Dt9@Rk6e2(Wb+p+YIXImOkU?W?|0HY`&gIf2?huGWhaJ)!)+(P&LBw z$6-8^fb)0F35PdD(;ajOsFlbF2+qQkSC|H?I6mnMC-hT*;TeQ5Wdy3W*1uVE7*AS_ zgPX>azl|Hqssw3^aciA(;Gu+gRW8yhpwdww>SrZ{AU}`Syo;>H!TC@)@22%@zQB_6 zi@5bG3TNTO!s*q|h1&y~)VRGta|y9)Q^nujwHk+or_xkh8SZ)HYZa98PKQkF-d||1 zZ>lK&z+xOeK5T%SHk2=eyq4J+tDZ2Zv36X?-QlF~Kyc%EM?hzgSObNB)jyvO)P_$| zop?cfiB;5BfU}0k2A~Y3u>P?G&Drq=g{Ir8R$9I4FL8yZ1sBt z-qj15sNx}tM2WW?A^`R?*!x<6dDsARt_&b_8&c6XP{JhM^gsK9;~ zt$~$u>~4Fg&CGO+EmKW5MiHFFk5oY?;@Ml-JQg&lP8vqIw)&dkka|6|!8#9Nd{3W-rI(^@t5HB6{kAUxwd6zJm7WRNkQD&=;^ zaXVP~t-_A+0QJY4GP|V4D%^O1CMNtpF1X>`&Rj z0do!8PdnM^-C^^TpO=4i&c_68Xh=@Bjp{b$D#3TI%cfH(ljQRR&F^?ThhA^Dm1?=k zz{I9B{U8+}=CTQ=g`{&*m{_tBA%<=NIN82k8ujEBj6LO{rv7LoKS(Rsy{a`QN?J1& zk3{x;6d})Yxm-4*wX(qG+z{N`>chm@b}u|wfRy+er5(-`QuYNZRK{_{ll@_Kau}ji zHrZe=<2zV~?LlLC^&G4OTIX;!HoERjg-HeGOt#G68zs5THs^qy^Wb*bODQ$fjzIqu zG^&#TjpNbXCKqUJ_KC(QM(LqG?4WE-!aiT1k+m<1N=>IbL12yD1N0c8`eH?EVaB!i zPS%fTB$DJIG-7X{A)FAZut~W&)((Mj|g_<`VEoR4EPRy_Aflj=%@Dmhj>()$r~*^EpI zjbBu=k4y+>TxQ&j%qOV)sUs|!xCVGO>Q(_!UL}ZZ27;qLSB@DoChQ2ElQW?kLY2!~ zW!!-TP-EFVgYPv{UOh;4F5C)a~l3*6F+mP6ow1ctq4C`cNL zLXT(8p|J?JY-K}1x(s8<`TVf3y&1XnjC-Y#d ziruEWbX4AXdFPHB*PHv;&W7Tqo_!Z6SlcSJjJgAolQAV2qBi5)#TPo zawbg3LcR}1;@FPVljbNTnRnYj(>?~F%{$}4O!6ql%{U)tUHYYw`9;}en0KJn!`j9i zUadq8PM@J}#U|gK=_Tqse4#DkNF9kM+Or4Y5gW2;q3I_zx;=BYZ`VJ7&i+r8c+$j< z2j_PtMI9w;FSkuaVVa=s4_$ z5ojiqwn%ui2JnJ+^MzeOA*DE^k@&wgYs%}btT${}d2DoE;R}#Ot`(1V^@W$bAHm`k zqjC$YutO}QM`5?$7aj%AZR|xYcW3oEW9PR!4=#mqmb9Q%8uaDnIMX%q+}!ai;W?{G zQ)iR(UVva@d<$LlRO(DM$Ys((D0e>kjqMaVkcxeZI>IMw+W~l!wI;O$U(4Z-tP}MQ z6jgMA*Gt`Ce9I6GRpFdfm-;#?f?iDrZLrRKig!WEYzD%Nc)z2lR4v%DkN%F?-aIHF zh9%o1)d6NstU|n*D(D4$mU;p&u^ghMo%T6Vm7b)3So=MVgwk*b=noTMtYS3UGSXCh z=FI0^4gBrkk*yRVw)1tNB^2O+{T}uBJz5;@3voXV%GgqW=n4-=!o!x0>o(?$DSQG( z{Rk*}S*RS4`>D7ci7?OzCHm9Aemy_lR1uo%I%&KapX5Qie6JT+Lp>}Mr~;H2i# zSur+zjXv^IOX)bu@`y*8Lz>0~J9%}~vEQ`4vAviGDns+5&m&+YRdMljE12`yo@Y^TE7ELXe&CQR7l!gEhU`Vyn!hu% zL=Eo@L*bCbOu&(5A?}0JH=+R^eW8atP+j z%Kk|(GTi-+9XRPL8~+Dk;+=?kHh?CQg7OB*HW=x=1l_zV+&d#y{uLGFyU2*U3(ssm z@O!O!L1{LQwRnE$oA0ZVR)r5DZN4onm76zATCY2NXS)6bY_QV`F1HN`-e-sof>wb5 z5tR*=+3wnL!|!**oAd~_G46x@a{asn9toO|u^f9PH`iv<|88rJh}e>%!jWeMJdj$E zF^kq=YwHYM_(HD97@~(lsJ#%&WrINqq&yLZk_(!v(^H|qCF(tV(`SYMB@{d;L`1$( z$T|{P>*fa)6}Fa_*Wl%x#i@r+{1wMfCSYXzH@q-4636JXuwQ{th<2i$RcPB^u+zSu zyq?*9hF~7ep!{Ufu4?m|HQza%mp~zoet^2CA*P>(PMwXH>bof+nxMedVDJf|`}cL- zXp&xYi=QD*O-CFdc!a_P{|)SKtu}RUAxU`|`f(20+#TgHna9^*2;YEm7%St*wWl@X zXs%Oz`9<08ks~iy;BYj4gqY{oa4u8e6bDNsQZx;(IViOS9`0kb|5H+~y{1SWp_6$6 zgNr|m#QR@jhrbW@YpJYUM_ZlFssD{t)%WoB)pXLtdC-+Xa3JZB2k(7ggOc9YO!H%< z>1QEtqMrx6OSwPozry2x+=!40&u=bpi72~NH;6}o(}trjiTXh|sh1Bo(Pxlh5oCE8 z Date: Fri, 29 Nov 2024 01:00:02 +0100 Subject: [PATCH 021/213] fix(website): update links and package names for plugins we migrated from janus-idp to community-plugins Signed-off-by: Christoph Jerolimov --- microsite/data/plugins/3scale.yaml | 6 ++-- .../data/plugins/analytics-module-matomo.yaml | 4 +-- microsite/data/plugins/feedback.yaml | 4 +-- microsite/data/plugins/jfrog-artifactory.yaml | 6 ++-- microsite/data/plugins/keycloak.yaml | 6 ++-- microsite/data/plugins/kiali.yaml | 2 +- .../plugins/nexus-repository-manager.yaml | 6 ++-- microsite/data/plugins/ocm.yaml | 6 ++-- microsite/data/plugins/quay.yaml | 6 ++-- microsite/data/plugins/tekton.yaml | 6 ++-- microsite/data/plugins/topology.yaml | 6 ++-- microsite/static/img/3scale.svg | 22 +++++++++++++ microsite/static/img/jfrog-artifactory.svg | 22 +++++++++++++ microsite/static/img/keycloak.svg | 22 +++++++++++++ microsite/static/img/kiali.svg | 22 +++++++++++++ .../static/img/nexus-repository-manager.svg | 22 +++++++++++++ microsite/static/img/ocm.svg | 22 +++++++++++++ microsite/static/img/quay.svg | 22 +++++++++++++ microsite/static/img/tekton.svg | 32 +++++++++++++++++++ microsite/static/img/topology.svg | 22 +++++++++++++ 20 files changed, 237 insertions(+), 29 deletions(-) create mode 100644 microsite/static/img/3scale.svg create mode 100644 microsite/static/img/jfrog-artifactory.svg create mode 100644 microsite/static/img/keycloak.svg create mode 100644 microsite/static/img/kiali.svg create mode 100644 microsite/static/img/nexus-repository-manager.svg create mode 100644 microsite/static/img/ocm.svg create mode 100644 microsite/static/img/quay.svg create mode 100644 microsite/static/img/tekton.svg create mode 100644 microsite/static/img/topology.svg diff --git a/microsite/data/plugins/3scale.yaml b/microsite/data/plugins/3scale.yaml index fa568c17bf..1b27e1ee84 100644 --- a/microsite/data/plugins/3scale.yaml +++ b/microsite/data/plugins/3scale.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Discovery description: Synchronize 3scale content into the Backstage catalog. -documentation: https://janus-idp.io/plugins/3scale -iconUrl: https://janus-idp.io/images/plugins/3scale.svg -npmPackageName: '@janus-idp/backstage-plugin-3scale-backend' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/3scale/plugins/3scale-backend/README.md +iconUrl: /img/3scale.svg +npmPackageName: '@backstage-community/plugin-3scale-backend' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/analytics-module-matomo.yaml b/microsite/data/plugins/analytics-module-matomo.yaml index a90d2897bb..88ce08c868 100644 --- a/microsite/data/plugins/analytics-module-matomo.yaml +++ b/microsite/data/plugins/analytics-module-matomo.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Monitoring description: Track usage of your Backstage instance using Matomo Analytics. -documentation: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/README.md +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-matomo/README.md iconUrl: /img/matomo.png -npmPackageName: '@janus-idp/backstage-plugin-analytics-module-matomo' +npmPackageName: '@backstage-community/plugin-analytics-module-matomo' addedDate: '2023-10-17' diff --git a/microsite/data/plugins/feedback.yaml b/microsite/data/plugins/feedback.yaml index 8e8e00165e..fce9588653 100644 --- a/microsite/data/plugins/feedback.yaml +++ b/microsite/data/plugins/feedback.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Quality description: A plugin for collecting user feedbacks for your application. # Max 170 characters -documentation: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/feedback#readme +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/entity-feedback/plugins/entity-feedback/README.md iconUrl: /img/plugin-feedback-logo.svg -npmPackageName: '@janus-idp/backstage-plugin-feedback' +npmPackageName: '@backstage-community/plugin-entity-feedback' addedDate: '2024-04-09' diff --git a/microsite/data/plugins/jfrog-artifactory.yaml b/microsite/data/plugins/jfrog-artifactory.yaml index 6765fe3d8d..b4f1ef567e 100644 --- a/microsite/data/plugins/jfrog-artifactory.yaml +++ b/microsite/data/plugins/jfrog-artifactory.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Image description: View container image details from JFrog Artifactory in Backstage. -documentation: https://janus-idp.io/plugins/jfrog-artifactory -iconUrl: https://janus-idp.io/images/plugins/jfrog-artifactory.svg -npmPackageName: '@janus-idp/backstage-plugin-jfrog-artifactory' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/jfrog-artifactory/plugins/jfrog-artifactory/README.md +iconUrl: /img/jfrog-artifactory.svg +npmPackageName: '@backstage-community/plugin-jfrog-artifactory' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/keycloak.yaml b/microsite/data/plugins/keycloak.yaml index 3da89c3d0a..4136f50f95 100644 --- a/microsite/data/plugins/keycloak.yaml +++ b/microsite/data/plugins/keycloak.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Authentication/Authorization description: Load users and groups from Keycloak, enabling use of multiple authentication providers to be applied to Backstage entities. -documentation: https://janus-idp.io/plugins/keycloak -iconUrl: https://janus-idp.io/images/plugins/keycloak.svg -npmPackageName: '@janus-idp/backstage-plugin-keycloak-backend' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/keycloak/plugins/catalog-backend-module-keycloak/README.md +iconUrl: /img/keycloak.svg +npmPackageName: '@backstage-community/plugin-catalog-backend-module-keycloak' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/kiali.yaml b/microsite/data/plugins/kiali.yaml index a85aa6444a..86299c5045 100644 --- a/microsite/data/plugins/kiali.yaml +++ b/microsite/data/plugins/kiali.yaml @@ -5,6 +5,6 @@ authorUrl: https://redhat.com category: Istio description: Configure, visualize, validate and troubleshoot your mesh with Istio documentation: https://janus-idp.io/plugins/kiali -iconUrl: https://janus-idp.io/images/plugins/kiali.svg +iconUrl: /img/kiali.svg npmPackageName: '@janus-idp/backstage-plugin-kiali' addedDate: '2023-07-25' diff --git a/microsite/data/plugins/nexus-repository-manager.yaml b/microsite/data/plugins/nexus-repository-manager.yaml index aca1e366e2..77b62c841d 100644 --- a/microsite/data/plugins/nexus-repository-manager.yaml +++ b/microsite/data/plugins/nexus-repository-manager.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Image description: View information about the build artifacts in your Nexus Repository Manager in Backstage. -documentation: https://janus-idp.io/plugins/nexus-repository-manager -iconUrl: https://janus-idp.io/images/plugins/nexus-repository-manager.svg -npmPackageName: '@janus-idp/backstage-plugin-nexus-repository-manager' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/nexus-repository-manager/plugins/nexus-repository-manager/README.md +iconUrl: /img/nexus-repository-manager.svg +npmPackageName: '@backstage-community/plugin-nexus-repository-manager' addedDate: '2023-10-25' diff --git a/microsite/data/plugins/ocm.yaml b/microsite/data/plugins/ocm.yaml index 6cf77ca678..1756029b27 100644 --- a/microsite/data/plugins/ocm.yaml +++ b/microsite/data/plugins/ocm.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Infrastructure description: View clusters from OCM's MultiClusterHub and MultiCluster Engine in Backstage. -documentation: https://janus-idp.io/plugins/ocm -iconUrl: https://janus-idp.io/images/plugins/ocm.svg -npmPackageName: '@janus-idp/backstage-plugin-ocm' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/ocm/plugins/ocm/README.md +iconUrl: /img/ocm.svg +npmPackageName: '@backstage-community/plugin-ocm' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/quay.yaml b/microsite/data/plugins/quay.yaml index 79ae1c3408..9bcbf82de8 100644 --- a/microsite/data/plugins/quay.yaml +++ b/microsite/data/plugins/quay.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Image description: View container image details from Quay in Backstage. -documentation: https://janus-idp.io/plugins/quay -iconUrl: https://janus-idp.io/images/plugins/quay.svg -npmPackageName: '@janus-idp/backstage-plugin-quay' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/quay/plugins/quay/README.md +iconUrl: /img/quay.svg +npmPackageName: '@backstage-community/plugin-quay' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/tekton.yaml b/microsite/data/plugins/tekton.yaml index 27540a81d3..71aa433a83 100644 --- a/microsite/data/plugins/tekton.yaml +++ b/microsite/data/plugins/tekton.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: CI/CD description: Easily view Tekton PipelineRun status for your services in Backstage. -documentation: https://janus-idp.io/plugins/tekton -iconUrl: https://janus-idp.io/images/plugins/tekton.svg -npmPackageName: '@janus-idp/backstage-plugin-tekton' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/tekton/plugins/tekton/README.md +iconUrl: /img/tekton.svg +npmPackageName: '@backstage-community/plugin-tekton' addedDate: '2023-05-15' diff --git a/microsite/data/plugins/topology.yaml b/microsite/data/plugins/topology.yaml index 9d3b816bd4..f1b74ef45b 100644 --- a/microsite/data/plugins/topology.yaml +++ b/microsite/data/plugins/topology.yaml @@ -4,7 +4,7 @@ author: Red Hat authorUrl: https://redhat.com category: Kubernetes description: Visualize the deployment status and related resources of your applications deployed on any Kubernetes cluster. -documentation: https://janus-idp.io/plugins/topology -iconUrl: https://janus-idp.io/images/plugins/topology.svg -npmPackageName: '@janus-idp/backstage-plugin-topology' +documentation: https://github.com/backstage/community-plugins/blob/main/workspaces/topology/plugins/topology/README.md +iconUrl: /img/topology.svg +npmPackageName: '@backstage-community/plugin-topology' addedDate: '2023-05-15' diff --git a/microsite/static/img/3scale.svg b/microsite/static/img/3scale.svg new file mode 100644 index 0000000000..46551958aa --- /dev/null +++ b/microsite/static/img/3scale.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/jfrog-artifactory.svg b/microsite/static/img/jfrog-artifactory.svg new file mode 100644 index 0000000000..ded672b4bc --- /dev/null +++ b/microsite/static/img/jfrog-artifactory.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/keycloak.svg b/microsite/static/img/keycloak.svg new file mode 100644 index 0000000000..871bd5b0f8 --- /dev/null +++ b/microsite/static/img/keycloak.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/kiali.svg b/microsite/static/img/kiali.svg new file mode 100644 index 0000000000..bfc8510040 --- /dev/null +++ b/microsite/static/img/kiali.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/nexus-repository-manager.svg b/microsite/static/img/nexus-repository-manager.svg new file mode 100644 index 0000000000..6f145811cc --- /dev/null +++ b/microsite/static/img/nexus-repository-manager.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/microsite/static/img/ocm.svg b/microsite/static/img/ocm.svg new file mode 100644 index 0000000000..6ee5c74f9e --- /dev/null +++ b/microsite/static/img/ocm.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/quay.svg b/microsite/static/img/quay.svg new file mode 100644 index 0000000000..cf3c5e435e --- /dev/null +++ b/microsite/static/img/quay.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/tekton.svg b/microsite/static/img/tekton.svg new file mode 100644 index 0000000000..a5fdd252df --- /dev/null +++ b/microsite/static/img/tekton.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/microsite/static/img/topology.svg b/microsite/static/img/topology.svg new file mode 100644 index 0000000000..21d84a888a --- /dev/null +++ b/microsite/static/img/topology.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From 0046fa224f299fd0493f9280b48da542d7e9f535 Mon Sep 17 00:00:00 2001 From: Christoph Jerolimov Date: Fri, 29 Nov 2024 01:36:16 +0100 Subject: [PATCH 022/213] fix(website): fix different broken icons on the plugin page Signed-off-by: Christoph Jerolimov --- microsite/data/plugins/github-codespaces.yaml | 2 +- microsite/data/plugins/gitops-cluster.yaml | 1 - microsite/data/plugins/rollbar.yaml | 2 +- microsite/data/plugins/tech-radar.yaml | 2 +- microsite/static/img/tech-radar.svg | 14 ++++++++++++++ 5 files changed, 17 insertions(+), 4 deletions(-) create mode 100644 microsite/static/img/tech-radar.svg diff --git a/microsite/data/plugins/github-codespaces.yaml b/microsite/data/plugins/github-codespaces.yaml index 043be3200b..90f90d778c 100644 --- a/microsite/data/plugins/github-codespaces.yaml +++ b/microsite/data/plugins/github-codespaces.yaml @@ -5,7 +5,7 @@ authorUrl: https://github.com/adityasinghal26 category: Development description: Integrates GitHub Codespaces for a Backstage component with the Authenticated User. documentation: https://github.com/adityasinghal26/backstage-plugins/tree/main/plugins/github-codespaces -iconUrl: https://github.com/adityasinghal26/backstage-plugins/blob/main/plugins/github-codespaces/images/GitHubLogo.png +iconUrl: https://avatars.githubusercontent.com/u/9919?s=200&v=4 npmPackageName: '@adityasinghal26/plugin-github-codespaces' tags: - github diff --git a/microsite/data/plugins/gitops-cluster.yaml b/microsite/data/plugins/gitops-cluster.yaml index 8e67c9c25d..395ab8ec75 100644 --- a/microsite/data/plugins/gitops-cluster.yaml +++ b/microsite/data/plugins/gitops-cluster.yaml @@ -5,7 +5,6 @@ authorUrl: https://www.weave.works/ category: Kubernetes description: Create GitOps-managed Kubernetes clusters. Currently, it supports provisioning EKS clusters on GitHub via GitHub Actions. documentation: https://github.com/backstage/community-plugins/tree/main/workspaces/gitops-profiles/plugins/gitops-profiles -iconUrl: https://res-5.cloudinary.com/crunchbase-production/image/upload/c_lpad,h_256,w_256,f_auto,q_auto:eco/v1462316670/i9d3delzvx1erzjhmcws.png npmPackageName: '@backstage-community/plugin-gitops-profiles' tags: - kubernetes diff --git a/microsite/data/plugins/rollbar.yaml b/microsite/data/plugins/rollbar.yaml index 0dd39d5fe9..3777705b38 100644 --- a/microsite/data/plugins/rollbar.yaml +++ b/microsite/data/plugins/rollbar.yaml @@ -5,6 +5,6 @@ authorUrl: https://github.com/andrewthauer category: Monitoring description: View Rollbar errors for your services in Backstage. documentation: https://github.com/backstage/community-plugins/tree/main/workspaces/rollbar/plugins/rollbar -iconUrl: https://rollbar.com/assets/media/rollbar-mark-color.png +iconUrl: https://cdn.rollbar.com/wp-content/themes/rollbar/assets/img/logo-white-rollbar.svg npmPackageName: '@backstage-community/plugin-rollbar' addedDate: '2020-11-03' diff --git a/microsite/data/plugins/tech-radar.yaml b/microsite/data/plugins/tech-radar.yaml index 37f4e02b92..5db68eef27 100644 --- a/microsite/data/plugins/tech-radar.yaml +++ b/microsite/data/plugins/tech-radar.yaml @@ -5,6 +5,6 @@ authorUrl: https://github.com/spotify category: Discovery description: Visualize the your company's official guidelines of different areas of software development. documentation: https://github.com/backstage/community-plugins/tree/main/workspaces/tech-radar/plugins/tech-radar -iconUrl: https://www.materialui.co/materialIcons/action/track_changes_white_192x192.png +iconUrl: /img/tech-radar.svg npmPackageName: '@backstage-community/plugin-tech-radar' addedDate: '2020-11-03' diff --git a/microsite/static/img/tech-radar.svg b/microsite/static/img/tech-radar.svg new file mode 100644 index 0000000000..350ff4f9cc --- /dev/null +++ b/microsite/static/img/tech-radar.svg @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file From e937ce0ba3bab9fefe34b1b5c4a9dec0fdea6d12 Mon Sep 17 00:00:00 2001 From: Daniel Figueiredo Date: Tue, 5 Nov 2024 12:14:15 -0500 Subject: [PATCH 023/213] fix: @typescript-eslint incompatible versions with eslint@8.x.x Signed-off-by: Daniel Figueiredo --- .changeset/calm-tigers-boil.md | 5 + packages/cli/package.json | 4 +- yarn.lock | 164 ++++++++++++++++++++++----------- 3 files changed, 118 insertions(+), 55 deletions(-) create mode 100644 .changeset/calm-tigers-boil.md diff --git a/.changeset/calm-tigers-boil.md b/.changeset/calm-tigers-boil.md new file mode 100644 index 0000000000..0e19371805 --- /dev/null +++ b/.changeset/calm-tigers-boil.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Fixed incompatible `@typescript-eslint` versions with current `eslint@8.x.x` diff --git a/packages/cli/package.json b/packages/cli/package.json index bb338388a3..14e4966c34 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -77,8 +77,8 @@ "@swc/jest": "^0.2.22", "@types/jest": "^29.5.11", "@types/webpack-env": "^1.15.2", - "@typescript-eslint/eslint-plugin": "^6.12.0", - "@typescript-eslint/parser": "^6.7.2", + "@typescript-eslint/eslint-plugin": "^7.18.0", + "@typescript-eslint/parser": "^7.18.0", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "^3.0.0", "bfj": "^8.0.0", diff --git a/yarn.lock b/yarn.lock index daa4928cc2..47154efab9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4005,8 +4005,8 @@ __metadata: "@types/webpack-env": ^1.15.2 "@types/webpack-sources": ^3.2.3 "@types/yarnpkg__lockfile": ^1.1.4 - "@typescript-eslint/eslint-plugin": ^6.12.0 - "@typescript-eslint/parser": ^6.7.2 + "@typescript-eslint/eslint-plugin": ^7.18.0 + "@typescript-eslint/parser": ^7.18.0 "@vitejs/plugin-react": ^4.3.1 "@yarnpkg/lockfile": ^1.1.0 "@yarnpkg/parsers": ^3.0.0 @@ -10120,10 +10120,10 @@ __metadata: languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.8.1 - resolution: "@eslint-community/regexpp@npm:4.8.1" - checksum: 82d62c845ef42b810f268cfdc84d803a2da01735fb52e902fd34bdc09f92464a094fd8e4802839874b000b2f73f67c972859e813ba705233515d3e954f234bf2 +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.6.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 languageName: node linkType: hard @@ -20604,46 +20604,44 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^6.12.0": - version: 6.21.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" +"@typescript-eslint/eslint-plugin@npm:^7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" dependencies: - "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/type-utils": 6.21.0 - "@typescript-eslint/utils": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - debug: ^4.3.4 + "@eslint-community/regexpp": ^4.10.0 + "@typescript-eslint/scope-manager": 7.18.0 + "@typescript-eslint/type-utils": 7.18.0 + "@typescript-eslint/utils": 7.18.0 + "@typescript-eslint/visitor-keys": 7.18.0 graphemer: ^1.4.0 - ignore: ^5.2.4 + ignore: ^5.3.1 natural-compare: ^1.4.0 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 + ts-api-utils: ^1.3.0 peerDependencies: - "@typescript-eslint/parser": ^6.0.0 || ^6.0.0-alpha - eslint: ^7.0.0 || ^8.0.0 + "@typescript-eslint/parser": ^7.0.0 + eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 5ef2c502255e643e98051e87eb682c2a257e87afd8ec3b9f6274277615e1c2caf3131b352244cfb1987b8b2c415645eeacb9113fa841fc4c9b2ac46e8aed6efd + checksum: dfcf150628ca2d4ccdfc20b46b0eae075c2f16ef5e70d9d2f0d746acf4c69a09f962b93befee01a529f14bbeb3e817b5aba287d7dd0edc23396bc5ed1f448c3d languageName: node linkType: hard -"@typescript-eslint/parser@npm:^6.7.2": - version: 6.21.0 - resolution: "@typescript-eslint/parser@npm:6.21.0" +"@typescript-eslint/parser@npm:^7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/parser@npm:7.18.0" dependencies: - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 + "@typescript-eslint/scope-manager": 7.18.0 + "@typescript-eslint/types": 7.18.0 + "@typescript-eslint/typescript-estree": 7.18.0 + "@typescript-eslint/visitor-keys": 7.18.0 debug: ^4.3.4 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 162fe3a867eeeffda7328bce32dae45b52283c68c8cb23258fb9f44971f761991af61f71b8c9fe1aa389e93dfe6386f8509c1273d870736c507d76dd40647b68 + checksum: 132b56ac3b2d90b588d61d005a70f6af322860974225b60201cbf45abf7304d67b7d8a6f0ade1c188ac4e339884e78d6dcd450417f1481998f9ddd155bab0801 languageName: node linkType: hard @@ -20667,6 +20665,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/scope-manager@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/scope-manager@npm:7.18.0" + dependencies: + "@typescript-eslint/types": 7.18.0 + "@typescript-eslint/visitor-keys": 7.18.0 + checksum: b982c6ac13d8c86bb3b949c6b4e465f3f60557c2ccf4cc229799827d462df56b9e4d3eaed7711d79b875422fc3d71ec1ebcb5195db72134d07c619e3c5506b57 + languageName: node + linkType: hard + "@typescript-eslint/scope-manager@npm:8.16.0": version: 8.16.0 resolution: "@typescript-eslint/scope-manager@npm:8.16.0" @@ -20677,20 +20685,20 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/type-utils@npm:6.21.0" +"@typescript-eslint/type-utils@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/type-utils@npm:7.18.0" dependencies: - "@typescript-eslint/typescript-estree": 6.21.0 - "@typescript-eslint/utils": 6.21.0 + "@typescript-eslint/typescript-estree": 7.18.0 + "@typescript-eslint/utils": 7.18.0 debug: ^4.3.4 - ts-api-utils: ^1.0.1 + ts-api-utils: ^1.3.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.56.0 peerDependenciesMeta: typescript: optional: true - checksum: 77025473f4d80acf1fafcce99c5c283e557686a61861febeba9c9913331f8a41e930bf5cd8b7a54db502a57b6eb8ea6d155cbd4f41349ed00e3d7aeb1f477ddc + checksum: 68fd5df5146c1a08cde20d59b4b919acab06a1b06194fe4f7ba1b928674880249890785fbbc97394142f2ef5cff5a7fba9b8a940449e7d5605306505348e38bc languageName: node linkType: hard @@ -20708,6 +20716,13 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/types@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/types@npm:7.18.0" + checksum: 7df2750cd146a0acd2d843208d69f153b458e024bbe12aab9e441ad2c56f47de3ddfeb329c4d1ea0079e2577fea4b8c1c1ce15315a8d49044586b04fedfe7a4d + languageName: node + linkType: hard + "@typescript-eslint/types@npm:8.16.0": version: 8.16.0 resolution: "@typescript-eslint/types@npm:8.16.0" @@ -20752,6 +20767,25 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/typescript-estree@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" + dependencies: + "@typescript-eslint/types": 7.18.0 + "@typescript-eslint/visitor-keys": 7.18.0 + debug: ^4.3.4 + globby: ^11.1.0 + is-glob: ^4.0.3 + minimatch: ^9.0.4 + semver: ^7.6.0 + ts-api-utils: ^1.3.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: c82d22ec9654973944f779eb4eb94c52f4a6eafaccce2f0231ff7757313f3a0d0256c3252f6dfe6d43f57171d09656478acb49a629a9d0c193fb959bc3f36116 + languageName: node + linkType: hard + "@typescript-eslint/typescript-estree@npm:8.16.0": version: 8.16.0 resolution: "@typescript-eslint/typescript-estree@npm:8.16.0" @@ -20771,20 +20805,17 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.21.0, @typescript-eslint/utils@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" +"@typescript-eslint/utils@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/utils@npm:7.18.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@types/json-schema": ^7.0.12 - "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0 - semver: ^7.5.4 + "@typescript-eslint/scope-manager": 7.18.0 + "@typescript-eslint/types": 7.18.0 + "@typescript-eslint/typescript-estree": 7.18.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 + eslint: ^8.56.0 + checksum: 751dbc816dab8454b7dc6b26a56671dbec08e3f4ef94c2661ce1c0fc48fa2d05a64e03efe24cba2c22d03ba943cd3c5c7a5e1b7b03bbb446728aec1c640bd767 languageName: node linkType: hard @@ -20806,6 +20837,23 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/utils@npm:^6.0.0": + version: 6.21.0 + resolution: "@typescript-eslint/utils@npm:6.21.0" + dependencies: + "@eslint-community/eslint-utils": ^4.4.0 + "@types/json-schema": ^7.0.12 + "@types/semver": ^7.5.0 + "@typescript-eslint/scope-manager": 6.21.0 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/typescript-estree": 6.21.0 + semver: ^7.5.4 + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 + languageName: node + linkType: hard + "@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.8.1": version: 8.16.0 resolution: "@typescript-eslint/utils@npm:8.16.0" @@ -20843,6 +20891,16 @@ __metadata: languageName: node linkType: hard +"@typescript-eslint/visitor-keys@npm:7.18.0": + version: 7.18.0 + resolution: "@typescript-eslint/visitor-keys@npm:7.18.0" + dependencies: + "@typescript-eslint/types": 7.18.0 + eslint-visitor-keys: ^3.4.3 + checksum: 6e806a7cdb424c5498ea187a5a11d0fef7e4602a631be413e7d521e5aec1ab46ba00c76cfb18020adaa0a8c9802354a163bfa0deb74baa7d555526c7517bb158 + languageName: node + linkType: hard + "@typescript-eslint/visitor-keys@npm:8.16.0": version: 8.16.0 resolution: "@typescript-eslint/visitor-keys@npm:8.16.0" @@ -31664,10 +31722,10 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.4, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.3.1 - resolution: "ignore@npm:5.3.1" - checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 +"ignore@npm:^5.1.4, ignore@npm:^5.1.8, ignore@npm:^5.2.0, ignore@npm:^5.2.4, ignore@npm:^5.3.1": + version: 5.3.2 + resolution: "ignore@npm:5.3.2" + checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be languageName: node linkType: hard From bc440c7455bcf314c0d3d7f4afa5087b42ca49a7 Mon Sep 17 00:00:00 2001 From: Daniel Figueiredo Date: Wed, 4 Dec 2024 12:05:03 -0500 Subject: [PATCH 024/213] chore: bump packages, rebase, address pr comments Signed-off-by: Daniel Figueiredo --- packages/cli/package.json | 20 +-- yarn.lock | 276 ++++++++++++++------------------------ 2 files changed, 112 insertions(+), 184 deletions(-) diff --git a/packages/cli/package.json b/packages/cli/package.json index 14e4966c34..65579eb4e4 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -77,8 +77,8 @@ "@swc/jest": "^0.2.22", "@types/jest": "^29.5.11", "@types/webpack-env": "^1.15.2", - "@typescript-eslint/eslint-plugin": "^7.18.0", - "@typescript-eslint/parser": "^7.18.0", + "@typescript-eslint/eslint-plugin": "^8.17.0", + "@typescript-eslint/parser": "^8.16.0", "@yarnpkg/lockfile": "^1.1.0", "@yarnpkg/parsers": "^3.0.0", "bfj": "^8.0.0", @@ -95,14 +95,14 @@ "eslint": "^8.6.0", "eslint-config-prettier": "^9.0.0", "eslint-formatter-friendly": "^7.0.0", - "eslint-plugin-deprecation": "^2.0.0", - "eslint-plugin-import": "^2.25.4", - "eslint-plugin-jest": "^28.0.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.28.0", - "eslint-plugin-react-hooks": "^4.3.0", - "eslint-plugin-unused-imports": "^3.0.0", - "eslint-webpack-plugin": "^4.0.0", + "eslint-plugin-deprecation": "^3.0.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-jest": "^28.9.0", + "eslint-plugin-jsx-a11y": "^6.10.2", + "eslint-plugin-react": "^7.37.2", + "eslint-plugin-react-hooks": "^5.0.0", + "eslint-plugin-unused-imports": "^4.1.4", + "eslint-webpack-plugin": "^4.2.0", "express": "^4.17.1", "fork-ts-checker-webpack-plugin": "^9.0.0", "fs-extra": "^11.2.0", diff --git a/yarn.lock b/yarn.lock index 47154efab9..948cdfd744 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4005,8 +4005,8 @@ __metadata: "@types/webpack-env": ^1.15.2 "@types/webpack-sources": ^3.2.3 "@types/yarnpkg__lockfile": ^1.1.4 - "@typescript-eslint/eslint-plugin": ^7.18.0 - "@typescript-eslint/parser": ^7.18.0 + "@typescript-eslint/eslint-plugin": ^8.17.0 + "@typescript-eslint/parser": ^8.16.0 "@vitejs/plugin-react": ^4.3.1 "@yarnpkg/lockfile": ^1.1.0 "@yarnpkg/parsers": ^3.0.0 @@ -4025,14 +4025,14 @@ __metadata: eslint: ^8.6.0 eslint-config-prettier: ^9.0.0 eslint-formatter-friendly: ^7.0.0 - eslint-plugin-deprecation: ^2.0.0 - eslint-plugin-import: ^2.25.4 - eslint-plugin-jest: ^28.0.0 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 - eslint-plugin-unused-imports: ^3.0.0 - eslint-webpack-plugin: ^4.0.0 + eslint-plugin-deprecation: ^3.0.0 + eslint-plugin-import: ^2.31.0 + eslint-plugin-jest: ^28.9.0 + eslint-plugin-jsx-a11y: ^6.10.2 + eslint-plugin-react: ^7.37.2 + eslint-plugin-react-hooks: ^5.0.0 + eslint-plugin-unused-imports: ^4.1.4 + eslint-webpack-plugin: ^4.2.0 express: ^4.17.1 fork-ts-checker-webpack-plugin: ^9.0.0 fs-extra: ^11.2.0 @@ -19473,7 +19473,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.12, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.11, @types/json-schema@npm:^7.0.15, @types/json-schema@npm:^7.0.4, @types/json-schema@npm:^7.0.5, @types/json-schema@npm:^7.0.6, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.15 resolution: "@types/json-schema@npm:7.0.15" checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 @@ -20183,7 +20183,7 @@ __metadata: languageName: node linkType: hard -"@types/semver@npm:7.5.8, @types/semver@npm:^7.1.0, @types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4, @types/semver@npm:^7.5.0": +"@types/semver@npm:7.5.8, @types/semver@npm:^7.1.0, @types/semver@npm:^7.3.12, @types/semver@npm:^7.3.4": version: 7.5.8 resolution: "@types/semver@npm:7.5.8" checksum: ea6f5276f5b84c55921785a3a27a3cd37afee0111dfe2bcb3e03c31819c197c782598f17f0b150a69d453c9584cd14c4c4d7b9a55d2c5e6cacd4d66fdb3b3663 @@ -20604,44 +20604,44 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/eslint-plugin@npm:^7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/eslint-plugin@npm:7.18.0" +"@typescript-eslint/eslint-plugin@npm:^8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/eslint-plugin@npm:8.17.0" dependencies: "@eslint-community/regexpp": ^4.10.0 - "@typescript-eslint/scope-manager": 7.18.0 - "@typescript-eslint/type-utils": 7.18.0 - "@typescript-eslint/utils": 7.18.0 - "@typescript-eslint/visitor-keys": 7.18.0 + "@typescript-eslint/scope-manager": 8.17.0 + "@typescript-eslint/type-utils": 8.17.0 + "@typescript-eslint/utils": 8.17.0 + "@typescript-eslint/visitor-keys": 8.17.0 graphemer: ^1.4.0 ignore: ^5.3.1 natural-compare: ^1.4.0 ts-api-utils: ^1.3.0 peerDependencies: - "@typescript-eslint/parser": ^7.0.0 - eslint: ^8.56.0 + "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: dfcf150628ca2d4ccdfc20b46b0eae075c2f16ef5e70d9d2f0d746acf4c69a09f962b93befee01a529f14bbeb3e817b5aba287d7dd0edc23396bc5ed1f448c3d + checksum: 4743b5eefb87ee7dd95af67b32efc111a38decc19f9d11385092d210b3176c99a2b7a8af520347b34c01d65a91fe2eea22c19bbb7ea1d80d73be803f88abb69e languageName: node linkType: hard -"@typescript-eslint/parser@npm:^7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/parser@npm:7.18.0" +"@typescript-eslint/parser@npm:^8.16.0": + version: 8.17.0 + resolution: "@typescript-eslint/parser@npm:8.17.0" dependencies: - "@typescript-eslint/scope-manager": 7.18.0 - "@typescript-eslint/types": 7.18.0 - "@typescript-eslint/typescript-estree": 7.18.0 - "@typescript-eslint/visitor-keys": 7.18.0 + "@typescript-eslint/scope-manager": 8.17.0 + "@typescript-eslint/types": 8.17.0 + "@typescript-eslint/typescript-estree": 8.17.0 + "@typescript-eslint/visitor-keys": 8.17.0 debug: ^4.3.4 peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 132b56ac3b2d90b588d61d005a70f6af322860974225b60201cbf45abf7304d67b7d8a6f0ade1c188ac4e339884e78d6dcd450417f1481998f9ddd155bab0801 + checksum: 3d330fc777cc34d8f21c7668a6ef48a1ce91905efde000f561cde76a630433c2a76d46857f7a62dc23c530e6441a5ea18b89c52e7fa5a099144c54bfe646dc35 languageName: node linkType: hard @@ -20655,16 +20655,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/scope-manager@npm:6.21.0" - dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - checksum: 71028b757da9694528c4c3294a96cc80bc7d396e383a405eab3bc224cda7341b88e0fc292120b35d3f31f47beac69f7083196c70616434072fbcd3d3e62d3376 - languageName: node - linkType: hard - "@typescript-eslint/scope-manager@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/scope-manager@npm:7.18.0" @@ -20675,30 +20665,30 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/scope-manager@npm:8.16.0" +"@typescript-eslint/scope-manager@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/scope-manager@npm:8.17.0" dependencies: - "@typescript-eslint/types": 8.16.0 - "@typescript-eslint/visitor-keys": 8.16.0 - checksum: 12427e2a95a8b0cb49259be1a8a9a23f734fd0dbabbc5cebf1ba56b48812e2ca7ba32b71ededf24efa1a9da07a13b20ced004e2eea6f4b8c07003438f664ce30 + "@typescript-eslint/types": 8.17.0 + "@typescript-eslint/visitor-keys": 8.17.0 + checksum: c5f628e5b4793181a219fc8be4dc2653b2a2a158c4add645b3ba063b9618f5892e5bbf6726c9e674731e698a3df4f2ddb671494482e0f59b6625c43810f78eeb languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/type-utils@npm:7.18.0" +"@typescript-eslint/type-utils@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/type-utils@npm:8.17.0" dependencies: - "@typescript-eslint/typescript-estree": 7.18.0 - "@typescript-eslint/utils": 7.18.0 + "@typescript-eslint/typescript-estree": 8.17.0 + "@typescript-eslint/utils": 8.17.0 debug: ^4.3.4 ts-api-utils: ^1.3.0 peerDependencies: - eslint: ^8.56.0 + eslint: ^8.57.0 || ^9.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 68fd5df5146c1a08cde20d59b4b919acab06a1b06194fe4f7ba1b928674880249890785fbbc97394142f2ef5cff5a7fba9b8a940449e7d5605306505348e38bc + checksum: 2619ffcfa1c2afaa71d20afec3ffaf08af9d4215767c39bb8af13c52bdc1d6985174721467d7373f5e3e6b723837980a2c29bcf1ad7a15c2ba1208d52a2c346c languageName: node linkType: hard @@ -20709,13 +20699,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/types@npm:6.21.0" - checksum: 9501b47d7403417af95fc1fb72b2038c5ac46feac0e1598a46bcb43e56a606c387e9dcd8a2a0abe174c91b509f2d2a8078b093786219eb9a01ab2fbf9ee7b684 - languageName: node - linkType: hard - "@typescript-eslint/types@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/types@npm:7.18.0" @@ -20723,10 +20706,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/types@npm:8.16.0" - checksum: 1ed10343dc65c7fd493cfe789639f547f4c730e6e04472007fa92a00ff1fb77b31fc8016a350a10e553d38b12485f78c331d91c071dc08f69476076f5bbef5cd +"@typescript-eslint/types@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/types@npm:8.17.0" + checksum: 5f6933903ce4af536f180c9e326c18da715f6f400e6bc5b89828dcb5779ae5693bf95c59d253e105c9efe6ffd2046d0db868bcfb1c5288c5e194bae4ebaa9976 languageName: node linkType: hard @@ -20748,25 +20731,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.21.0" - dependencies: - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/visitor-keys": 6.21.0 - debug: ^4.3.4 - globby: ^11.1.0 - is-glob: ^4.0.3 - minimatch: 9.0.3 - semver: ^7.5.4 - ts-api-utils: ^1.0.1 - peerDependenciesMeta: - typescript: - optional: true - checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 - languageName: node - linkType: hard - "@typescript-eslint/typescript-estree@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/typescript-estree@npm:7.18.0" @@ -20786,12 +20750,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.16.0" +"@typescript-eslint/typescript-estree@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.17.0" dependencies: - "@typescript-eslint/types": 8.16.0 - "@typescript-eslint/visitor-keys": 8.16.0 + "@typescript-eslint/types": 8.17.0 + "@typescript-eslint/visitor-keys": 8.17.0 debug: ^4.3.4 fast-glob: ^3.3.2 is-glob: ^4.0.3 @@ -20801,21 +20765,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 047ae08a7774e4be4307409970d7b8b27d46d10e302ed236199b1b7648242d2aa10b7d1dbeae1fed0f55f683c863f9d399e50108c215e35370fb6a3851bda427 + checksum: 35d3dca3cde7a1f3a7a1e4e5a25a69b6151338cd329dceeb52880e6f05048d10c9ac472a07e558fdfb7acc10dd60cd106284e834cfe40ced3d2c4527e8727335 languageName: node linkType: hard -"@typescript-eslint/utils@npm:7.18.0": - version: 7.18.0 - resolution: "@typescript-eslint/utils@npm:7.18.0" +"@typescript-eslint/utils@npm:8.17.0, @typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.8.1": + version: 8.17.0 + resolution: "@typescript-eslint/utils@npm:8.17.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 7.18.0 - "@typescript-eslint/types": 7.18.0 - "@typescript-eslint/typescript-estree": 7.18.0 + "@typescript-eslint/scope-manager": 8.17.0 + "@typescript-eslint/types": 8.17.0 + "@typescript-eslint/typescript-estree": 8.17.0 peerDependencies: - eslint: ^8.56.0 - checksum: 751dbc816dab8454b7dc6b26a56671dbec08e3f4ef94c2661ce1c0fc48fa2d05a64e03efe24cba2c22d03ba943cd3c5c7a5e1b7b03bbb446728aec1c640bd767 + eslint: ^8.57.0 || ^9.0.0 + peerDependenciesMeta: + typescript: + optional: true + checksum: 67d8e390eb661e96b7782e6a900f7eb5825baae0b09e89e67159a576b157db4fd83f78887bbbb1778cd4097e0022f3ea2a9be12aab215320d47f13c03e1558d7 languageName: node linkType: hard @@ -20837,37 +20804,17 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/utils@npm:^6.0.0": - version: 6.21.0 - resolution: "@typescript-eslint/utils@npm:6.21.0" +"@typescript-eslint/utils@npm:^7.0.0": + version: 7.18.0 + resolution: "@typescript-eslint/utils@npm:7.18.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@types/json-schema": ^7.0.12 - "@types/semver": ^7.5.0 - "@typescript-eslint/scope-manager": 6.21.0 - "@typescript-eslint/types": 6.21.0 - "@typescript-eslint/typescript-estree": 6.21.0 - semver: ^7.5.4 + "@typescript-eslint/scope-manager": 7.18.0 + "@typescript-eslint/types": 7.18.0 + "@typescript-eslint/typescript-estree": 7.18.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 - checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 - languageName: node - linkType: hard - -"@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0, @typescript-eslint/utils@npm:^8.8.1": - version: 8.16.0 - resolution: "@typescript-eslint/utils@npm:8.16.0" - dependencies: - "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.16.0 - "@typescript-eslint/types": 8.16.0 - "@typescript-eslint/typescript-estree": 8.16.0 - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 5e3c4b4d453bee6c38715f851d517ad3bbdb9335de5c2ef487e350eea97ae8b2e996046a1d8f3a93109e06a569d1e161b4ef8d33c530766931e4dbc43cb26ed7 + eslint: ^8.56.0 + checksum: 751dbc816dab8454b7dc6b26a56671dbec08e3f4ef94c2661ce1c0fc48fa2d05a64e03efe24cba2c22d03ba943cd3c5c7a5e1b7b03bbb446728aec1c640bd767 languageName: node linkType: hard @@ -20881,16 +20828,6 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.21.0": - version: 6.21.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.21.0" - dependencies: - "@typescript-eslint/types": 6.21.0 - eslint-visitor-keys: ^3.4.1 - checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 - languageName: node - linkType: hard - "@typescript-eslint/visitor-keys@npm:7.18.0": version: 7.18.0 resolution: "@typescript-eslint/visitor-keys@npm:7.18.0" @@ -20901,13 +20838,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.16.0": - version: 8.16.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.16.0" +"@typescript-eslint/visitor-keys@npm:8.17.0": + version: 8.17.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.17.0" dependencies: - "@typescript-eslint/types": 8.16.0 + "@typescript-eslint/types": 8.17.0 eslint-visitor-keys: ^4.2.0 - checksum: e7444d3d57b4fcdebfa0d7effcdff9c928d77b6a6765da6980f0dbeb6438af707bd4c2c21e24e7ae1638f9c4a5697168f94027fff94ad663da57fa5f44f0983d + checksum: f92f659ec88a1ce34f5003722a133ced1ebf9b3dfc1c0ff18caa5362d4722307edb42fa606ebf80aada8525abe78b24143ef93864d38a1e359605096f1fe2f00 languageName: node linkType: hard @@ -28188,21 +28125,21 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-deprecation@npm:^2.0.0": - version: 2.0.0 - resolution: "eslint-plugin-deprecation@npm:2.0.0" +"eslint-plugin-deprecation@npm:^3.0.0": + version: 3.0.0 + resolution: "eslint-plugin-deprecation@npm:3.0.0" dependencies: - "@typescript-eslint/utils": ^6.0.0 + "@typescript-eslint/utils": ^7.0.0 + ts-api-utils: ^1.3.0 tslib: ^2.3.1 - tsutils: ^3.21.0 peerDependencies: - eslint: ^7.0.0 || ^8.0.0 + eslint: ^8.0.0 typescript: ^4.2.4 || ^5.0.0 - checksum: d79611e902ac419a21e51eab582fcdbcf8170aff820c5e5197e7d242e7ca6bda59c0077d88404970c25993017398dd65c96df7d31a833e332d45dd330935324b + checksum: 702549a4438da736b4e58caeafda6ab748ea7ecbbeca79eeb01b4ea25d7504590c3f10caf7c49faa2b76ae9ec9d0b79ede48c171fcc3b724cf3231fbb0bccaa6 languageName: node linkType: hard -"eslint-plugin-import@npm:^2.25.4": +"eslint-plugin-import@npm:^2.31.0": version: 2.31.0 resolution: "eslint-plugin-import@npm:2.31.0" dependencies: @@ -28231,7 +28168,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jest@npm:^28.0.0": +"eslint-plugin-jest@npm:^28.9.0": version: 28.9.0 resolution: "eslint-plugin-jest@npm:28.9.0" dependencies: @@ -28249,7 +28186,7 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-jsx-a11y@npm:^6.5.1": +"eslint-plugin-jsx-a11y@npm:^6.10.2": version: 6.10.2 resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" dependencies: @@ -28287,16 +28224,16 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-react-hooks@npm:^4.3.0": - version: 4.6.2 - resolution: "eslint-plugin-react-hooks@npm:4.6.2" +"eslint-plugin-react-hooks@npm:^5.0.0": + version: 5.0.0 + resolution: "eslint-plugin-react-hooks@npm:5.0.0" peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - checksum: 395c433610f59577cfcf3f2e42bcb130436c8a0b3777ac64f441d88c5275f4fcfc89094cedab270f2822daf29af1079151a7a6579a8e9ea8cee66540ba0384c4 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + checksum: eddd514a8796e8f805aa0c712d5fe6120fa6db778e3ad2949459b208f8a4bed6a48c152edfa9613f137c7527b00b42d489b5f94363d01d3a509e1f31630674dd languageName: node linkType: hard -"eslint-plugin-react@npm:^7.28.0": +"eslint-plugin-react@npm:^7.28.0, eslint-plugin-react@npm:^7.37.2": version: 7.37.2 resolution: "eslint-plugin-react@npm:7.37.2" dependencies: @@ -28348,25 +28285,16 @@ __metadata: languageName: node linkType: hard -"eslint-plugin-unused-imports@npm:^3.0.0": - version: 3.2.0 - resolution: "eslint-plugin-unused-imports@npm:3.2.0" - dependencies: - eslint-rule-composer: ^0.3.0 +"eslint-plugin-unused-imports@npm:^4.1.4": + version: 4.1.4 + resolution: "eslint-plugin-unused-imports@npm:4.1.4" peerDependencies: - "@typescript-eslint/eslint-plugin": 6 - 7 - eslint: 8 + "@typescript-eslint/eslint-plugin": ^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0 + eslint: ^9.0.0 || ^8.0.0 peerDependenciesMeta: "@typescript-eslint/eslint-plugin": optional: true - checksum: e85ae4f3af489294ef5e0969ab904fa87f9fa7c959ca0804f30845438db4aeb0428ddad7ab06a70608e93121626799977241b442fdf126a4d0667be57390c3d6 - languageName: node - linkType: hard - -"eslint-rule-composer@npm:^0.3.0": - version: 0.3.0 - resolution: "eslint-rule-composer@npm:0.3.0" - checksum: c2f57cded8d1c8f82483e0ce28861214347e24fd79fd4144667974cd334d718f4ba05080aaef2399e3bbe36f7d6632865110227e6b176ed6daa2d676df9281b1 + checksum: 1f4ce3e3972699345513840f3af1b783033dbc3a3e85b62ce12b3f6a89fd8c92afe46d0c00af40bacb14465445983ba0ccc326a6fd5132553061fb0e47bcba19 languageName: node linkType: hard @@ -28404,7 +28332,7 @@ __metadata: languageName: node linkType: hard -"eslint-webpack-plugin@npm:^4.0.0": +"eslint-webpack-plugin@npm:^4.2.0": version: 4.2.0 resolution: "eslint-webpack-plugin@npm:4.2.0" dependencies: @@ -45207,7 +45135,7 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.0.1, ts-api-utils@npm:^1.3.0": +"ts-api-utils@npm:^1.3.0": version: 1.3.0 resolution: "ts-api-utils@npm:1.3.0" peerDependencies: From 315f6eb0244d2c1943a195c66e9e73fe4e16e4a5 Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Tue, 10 Dec 2024 12:19:06 +0100 Subject: [PATCH 025/213] Add task id to ActionContext Signed-off-by: Fabio Vincenzi --- .../src/scaffolder/tasks/NunjucksWorkflowRunner.ts | 3 +++ plugins/scaffolder-node/src/actions/types.ts | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index 81bcb30a64..dcbfcc0a34 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -372,6 +372,9 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { await action.handler({ input: iteration.input, + task: { + id: await task.getWorkspaceName(), + }, secrets: task.secrets ?? {}, // TODO(blam): move to LoggerService and away from Winston logger: loggerToWinstonLogger(taskLogger), diff --git a/plugins/scaffolder-node/src/actions/types.ts b/plugins/scaffolder-node/src/actions/types.ts index 5dd9d5526f..51addda05c 100644 --- a/plugins/scaffolder-node/src/actions/types.ts +++ b/plugins/scaffolder-node/src/actions/types.ts @@ -57,6 +57,13 @@ export type ActionContext< */ getInitiatorCredentials(): Promise; + /** + * Optional task information + */ + task?: { + id: string; + }; + templateInfo?: TemplateInfo; /** From 9295c16b7890858c2fadfa421897bf45e31d6b0d Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Tue, 10 Dec 2024 17:22:13 +0100 Subject: [PATCH 026/213] add changeset Signed-off-by: Fabio Vincenzi --- .changeset/wise-students-tell.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/wise-students-tell.md diff --git a/.changeset/wise-students-tell.md b/.changeset/wise-students-tell.md new file mode 100644 index 0000000000..12acb5f892 --- /dev/null +++ b/.changeset/wise-students-tell.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-node': patch +--- + +Add task id to ActionContext From a024f23ce6e2e795681040b6ecb06c6029714008 Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Tue, 10 Dec 2024 17:36:01 +0100 Subject: [PATCH 027/213] add api report Signed-off-by: Fabio Vincenzi --- plugins/scaffolder-node/report.api.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/plugins/scaffolder-node/report.api.md b/plugins/scaffolder-node/report.api.md index c14a689d1a..a8f7b4da67 100644 --- a/plugins/scaffolder-node/report.api.md +++ b/plugins/scaffolder-node/report.api.md @@ -41,6 +41,9 @@ export type ActionContext< ): void; createTemporaryDirectory(): Promise; getInitiatorCredentials(): Promise; + task?: { + id: string; + }; templateInfo?: TemplateInfo; isDryRun?: boolean; user?: { From 4a8dbbd0c2c61d3380c13c21f4ddd4cd01d7e81a Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 10 Dec 2024 19:01:31 +0100 Subject: [PATCH 028/213] fix: remove unnecessary changes by the auto imports grupping Signed-off-by: ElaineDeMattosSilvaB --- .../src/actions/fetch/cookiecutter.test.ts | 10 +++++----- .../src/actions/fetch/cookiecutter.ts | 12 ++++++------ plugins/scaffolder-backend-module-rails/package.json | 8 ++++---- .../src/actions/fetch/rails/index.test.ts | 10 +++++----- .../src/actions/fetch/rails/index.ts | 8 ++++---- .../src/actions/fetch/rails/railsNewRunner.test.ts | 2 +- .../src/actions/fetch/rails/railsNewRunner.ts | 8 ++++---- 7 files changed, 29 insertions(+), 29 deletions(-) diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts index ce8a34a6ed..52946ce7fd 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.test.ts @@ -15,16 +15,16 @@ */ import { ContainerRunner } from '@backstage/backend-common'; -import { UrlReaderService } from '@backstage/backend-plugin-api'; -import { createMockDirectory } from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; +import { JsonObject } from '@backstage/types'; import { ScmIntegrations } from '@backstage/integration'; +import { createMockDirectory } from '@backstage/backend-test-utils'; +import { createFetchCookiecutterAction } from './cookiecutter'; +import { join } from 'path'; import type { ActionContext } from '@backstage/plugin-scaffolder-node'; import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; -import { JsonObject } from '@backstage/types'; -import { join } from 'path'; import { Writable } from 'stream'; -import { createFetchCookiecutterAction } from './cookiecutter'; +import { UrlReaderService } from '@backstage/backend-plugin-api'; const executeShellCommand = jest.fn(); const commandExists = jest.fn(); diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts index 269630817c..6e540d7fca 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/actions/fetch/cookiecutter.ts @@ -19,18 +19,18 @@ import { UrlReaderService, resolveSafeChildPath, } from '@backstage/backend-plugin-api'; +import { JsonObject, JsonValue } from '@backstage/types'; import { InputError } from '@backstage/errors'; import { ScmIntegrations } from '@backstage/integration'; -import { - createTemplateAction, - executeShellCommand, - fetchContents, -} from '@backstage/plugin-scaffolder-node'; -import { JsonObject, JsonValue } from '@backstage/types'; import commandExists from 'command-exists'; import fs from 'fs-extra'; import path, { resolve as resolvePath } from 'path'; import { PassThrough, Writable } from 'stream'; +import { + createTemplateAction, + fetchContents, + executeShellCommand, +} from '@backstage/plugin-scaffolder-node'; import { examples } from './cookiecutter.examples'; export class CookiecutterRunner { diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 188892b2e2..fe0046f17f 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,11 +1,11 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", - "version": "0.5.1", + "version": "0.5.4-next.2", "description": "A module for the scaffolder backend that lets you template projects using Rails", "backstage": { + "role": "backend-plugin-module", "pluginId": "scaffolder", - "pluginPackage": "@backstage/plugin-scaffolder-backend", - "role": "backend-plugin-module" + "pluginPackage": "@backstage/plugin-scaffolder-backend" }, "publishConfig": { "access": "public" @@ -60,7 +60,7 @@ "@backstage/plugin-scaffolder-node-test-utils": "workspace:^", "@types/command-exists": "^1.2.0", "@types/fs-extra": "^11.0.0", - "@types/node": "^18.17.8", + "@types/node": "^20.16.0", "jest-when": "^3.1.0" } } diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts index c2d3ead6bb..616c90e0de 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.test.ts @@ -28,15 +28,15 @@ jest.mock('./railsNewRunner', () => { }); import { ContainerRunner } from '@backstage/backend-common'; -import { UrlReaderService } from '@backstage/backend-plugin-api'; -import { createMockDirectory } from '@backstage/backend-test-utils'; import { ConfigReader } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; -import { fetchContents } from '@backstage/plugin-scaffolder-node'; -import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; import { resolve as resolvePath } from 'path'; -import { Writable } from 'stream'; import { createFetchRailsAction } from './index'; +import { fetchContents } from '@backstage/plugin-scaffolder-node'; +import { createMockDirectory } from '@backstage/backend-test-utils'; +import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; +import { Writable } from 'stream'; +import { UrlReaderService } from '@backstage/backend-plugin-api'; describe('fetch:rails', () => { const mockDir = createMockDirectory(); diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts index a063ce0a5b..4d5db0f3ef 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/index.ts @@ -15,20 +15,20 @@ */ import { ContainerRunner } from '@backstage/backend-common'; +import { JsonObject } from '@backstage/types'; import { InputError } from '@backstage/errors'; import { ScmIntegrations } from '@backstage/integration'; +import fs from 'fs-extra'; import { createTemplateAction, fetchContents, } from '@backstage/plugin-scaffolder-node'; -import { JsonObject } from '@backstage/types'; -import fs from 'fs-extra'; -import { UrlReaderService } from '@backstage/backend-plugin-api'; import { resolve as resolvePath } from 'path'; +import { RailsNewRunner } from './railsNewRunner'; import { PassThrough } from 'stream'; import { examples } from './index.examples'; -import { RailsNewRunner } from './railsNewRunner'; +import { UrlReaderService } from '@backstage/backend-plugin-api'; /** * Creates the `fetch:rails` Scaffolder action. diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts index c53f368516..47104c66e1 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.test.ts @@ -28,10 +28,10 @@ jest.mock( ); import { ContainerRunner } from '@backstage/backend-common'; -import { createMockDirectory } from '@backstage/backend-test-utils'; import path from 'path'; import { PassThrough } from 'stream'; import { RailsNewRunner } from './railsNewRunner'; +import { createMockDirectory } from '@backstage/backend-test-utils'; describe('Rails Templater', () => { const containerRunner: jest.Mocked = { diff --git a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts index fe2470eef8..31cfea4a76 100644 --- a/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts +++ b/plugins/scaffolder-backend-module-rails/src/actions/fetch/rails/railsNewRunner.ts @@ -15,16 +15,16 @@ */ import { ContainerRunner } from '@backstage/backend-common'; -import { executeShellCommand } from '@backstage/plugin-scaffolder-node'; -import { JsonObject } from '@backstage/types'; -import commandExists from 'command-exists'; import fs from 'fs-extra'; import path from 'path'; -import { Writable } from 'stream'; +import { executeShellCommand } from '@backstage/plugin-scaffolder-node'; +import commandExists from 'command-exists'; import { railsArgumentResolver, RailsRunOptions, } from './railsArgumentResolver'; +import { JsonObject } from '@backstage/types'; +import { Writable } from 'stream'; export class RailsNewRunner { private readonly containerRunner?: ContainerRunner; From 7dd0013c130fc1607a0d3e1ecd0423d1e6281db5 Mon Sep 17 00:00:00 2001 From: ElaineDeMattosSilvaB Date: Tue, 10 Dec 2024 19:06:27 +0100 Subject: [PATCH 029/213] feat: add changeset Signed-off-by: ElaineDeMattosSilvaB --- .changeset/{violet-seas-pretend.md => strong-students-beg.md} | 2 -- 1 file changed, 2 deletions(-) rename .changeset/{violet-seas-pretend.md => strong-students-beg.md} (54%) diff --git a/.changeset/violet-seas-pretend.md b/.changeset/strong-students-beg.md similarity index 54% rename from .changeset/violet-seas-pretend.md rename to .changeset/strong-students-beg.md index 09774f0af8..01fc24b996 100644 --- a/.changeset/violet-seas-pretend.md +++ b/.changeset/strong-students-beg.md @@ -1,7 +1,5 @@ --- '@backstage/plugin-scaffolder-node': minor -'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch -'@backstage/plugin-scaffolder-backend-module-rails': patch --- Deprecate the `logStream` option in `executeShellCommand`, replacing it with a logger instance. From 51bf762181dbc798c7bd4e22cd4feab59e004df1 Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Fri, 13 Dec 2024 18:22:14 +0100 Subject: [PATCH 030/213] make task not optional in ActionContext Signed-off-by: Fabio Vincenzi --- .changeset/famous-dryers-protect.md | 3 ++- .changeset/wise-students-tell.md | 5 ----- plugins/scaffolder-node/report.api.md | 2 +- 3 files changed, 3 insertions(+), 7 deletions(-) delete mode 100644 .changeset/wise-students-tell.md diff --git a/.changeset/famous-dryers-protect.md b/.changeset/famous-dryers-protect.md index f1da5fc511..b015a562aa 100644 --- a/.changeset/famous-dryers-protect.md +++ b/.changeset/famous-dryers-protect.md @@ -1,5 +1,6 @@ --- '@backstage/plugin-scaffolder-backend': minor +'@backstage/plugin-scaffolder-node': patch --- -New `taskId` Context Variable in Scaffolder Templates +Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. diff --git a/.changeset/wise-students-tell.md b/.changeset/wise-students-tell.md deleted file mode 100644 index 12acb5f892..0000000000 --- a/.changeset/wise-students-tell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/plugin-scaffolder-node': patch ---- - -Add task id to ActionContext diff --git a/plugins/scaffolder-node/report.api.md b/plugins/scaffolder-node/report.api.md index a8f7b4da67..1141f0ada0 100644 --- a/plugins/scaffolder-node/report.api.md +++ b/plugins/scaffolder-node/report.api.md @@ -41,7 +41,7 @@ export type ActionContext< ): void; createTemporaryDirectory(): Promise; getInitiatorCredentials(): Promise; - task?: { + task: { id: string; }; templateInfo?: TemplateInfo; From b253c2174586ddfcb4cf62b402817f77c51a2849 Mon Sep 17 00:00:00 2001 From: jolies93 <64967243+jolies93@users.noreply.github.com> Date: Fri, 13 Dec 2024 16:47:53 -0600 Subject: [PATCH 031/213] Update provider.md Corrected the Callback URL since we encountered this when implementing. Also removed the scopes config item - including this resulted in errors for us. I had submitted a PR before, and I addressed two feedback items - one was wording and the other was a request to include the optional configurations in the instructions. Both are addressed. Apologize I had to make a new PR because I had issues with the other being open so long and I didn't rebase it correctly - better to start fresh. Signed-off-by: jolies93 <64967243+jolies93@users.noreply.github.com> --- docs/auth/atlassian/provider.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/docs/auth/atlassian/provider.md b/docs/auth/atlassian/provider.md index f4793d4f51..53b2ade626 100644 --- a/docs/auth/atlassian/provider.md +++ b/docs/auth/atlassian/provider.md @@ -28,7 +28,7 @@ Name your integration and click on the `Create` button. Settings for local development: -- Callback URL: `http://localhost:7007/api/auth/atlassian` +- Callback URL: `http://localhost:7007/api/auth/atlassian/handler/frame` - Use rotating refresh tokens - For permissions, you **must** enable `View user profile` for the currently logged-in user, under `User identity API` @@ -46,18 +46,24 @@ auth: development: clientId: ${AUTH_ATLASSIAN_CLIENT_ID} clientSecret: ${AUTH_ATLASSIAN_CLIENT_SECRET} - scope: ${AUTH_ATLASSIAN_SCOPES} + audience: "https://api.atlassian.com" + callbackUrl: "https://backstage.example.com/api/auth/atlassian/handler/frame" + additionalScopes: + - "read:jira-user" + - "read:jira-work" signIn: resolvers: # See https://backstage.io/docs/auth/atlassian/provider#resolvers for more resolvers - resolver: usernameMatchingUserEntityName ``` -The Atlassian provider is a structure with three configuration keys: +The Atlassian provider is a structure with the following configuration keys: - `clientId`: The Key you generated in the developer console. - `clientSecret`: The Secret tied to the generated Key. -- `scope`: List of scopes the app has permissions for, separated by spaces. +- `audience`: (Optional) Specifies the intended recipient of the tokens. +- `callbackUrl`: (Optional) Must match the redirect URL set in Atlassian OAuth settings. +- `additionalScopes` : (Optional) Additional permissions requested from Atlassian. **NOTE:** the scopes `offline_access`, `read:jira-work`, and `read:jira-user` are provided by default. From bed5f35e351296665d9535ac0aae32307a8a7497 Mon Sep 17 00:00:00 2001 From: Heikki Hellgren Date: Mon, 16 Sep 2024 18:24:02 +0300 Subject: [PATCH 032/213] docs(notifications): split to multiple docs and add more info - split docs to 3 different pages; getting started, processors and usage - add information about email notifications - add information about scaffolder module Signed-off-by: Heikki Hellgren --- .changeset/gorgeous-zebras-tan.md | 5 + .../config/vocabularies/Backstage/accept.txt | 1 + docs/notifications/index.md | 240 +----------------- docs/notifications/processors.md | 107 ++++++++ docs/notifications/usage.md | 212 ++++++++++++++++ microsite/sidebars.js | 6 +- mkdocs.yml | 4 + .../README.md | 39 ++- 8 files changed, 373 insertions(+), 241 deletions(-) create mode 100644 .changeset/gorgeous-zebras-tan.md create mode 100644 docs/notifications/processors.md create mode 100644 docs/notifications/usage.md diff --git a/.changeset/gorgeous-zebras-tan.md b/.changeset/gorgeous-zebras-tan.md new file mode 100644 index 0000000000..7a71d9c724 --- /dev/null +++ b/.changeset/gorgeous-zebras-tan.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-notifications-backend-module-email': patch +--- + +Added more examples of the plugin configuration diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index e0389f0adb..2119400fa7 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -381,6 +381,7 @@ sdks seb semlas semver +sendmail serializable Serverless shoutout diff --git a/docs/notifications/index.md b/docs/notifications/index.md index bb8a7dc246..5b5e2bcfa2 100644 --- a/docs/notifications/index.md +++ b/docs/notifications/index.md @@ -130,226 +130,6 @@ export default app.createRoot( If the signals plugin is properly configured, it will be automatically discovered by the notifications plugin and used. -## Configuration - -### Notifications Backend - -The Notifications backend plugin provides an API to create notifications, list notifications per logged-in user, and search based on parameters. - -The plugin uses a relational [database](https://backstage.io/docs/getting-started/config/database) for persistence; no specifics are introduced in this context. - -No additional configuration in the app-config is needed, except for optional additional modules for `processors`. - -### Notifications Frontend - -The recipients of notifications have to be entities in the catalog, e.g., of the User or Group kind. - -Otherwise, no specific configuration is needed for the front-end notifications plugin. - -All parametrization is done through component properties, such as the `NotificationsSidebarItem`, which can be used as an active left-side menu item in the front-end. - -![Notifications Page](notificationsPage.png) - -In the `packages/app/src/components/Root/Root.tsx`, tweak the [properties](https://backstage.io/docs/reference/plugin-notifications.notificationssidebaritem) of the `` per specific needs. - -## Use - -New notifications can be sent either by a backend plugin or an external service through the REST API. - -### Backend - -Regardless of technical feasibility, a backend plugin should avoid directly accessing the notifications REST API. -Instead, it should integrate with the `@backstage/plugin-notifications-node` to `send` (create) a new notification. - -The reasons for this approach include the propagation of authorization in the API request and improved maintenance and backward compatibility in the future. - -```ts -import { notificationService } from '@backstage/plugin-notifications-node'; - -export const myPlugin = createBackendPlugin({ - pluginId: 'myPlugin', - register(env) { - env.registerInit({ - deps: { - // ... - notificationService: notificationService, - }, - async init({ config, logger, httpRouter, notificationService }) { - httpRouter.use( - await createRouter({ - // ... - notificationService, - }), - ); - }, - }); - }, -}); -``` - -To emit a new notification: - -```ts -notificationService.send({ - recipients /* of the broadcast or entity type */, - payload /* actual message */, -}); -``` - -Refer the [API documentation](https://github.com/backstage/backstage/blob/master/plugins/notifications-node/report.api.md) for further details. - -### Signals - -The use of signals with notifications is optional but generally enhances user experience and performance. - -When a notification is created, a new signal is emitted to a general-purpose message bus to announce it to subscribed listeners. - -The frontend maintains a persistent connection (WebSocket) to receive these announcements from the notifications channel. -The specific details of the updated or created notification should be retrieved via a request to the notifications API, except for new notifications, where the payload is included in the signal for performance reasons. - -In a frontend plugin, to subscribe for notifications' signals: - -```ts -import { useSignal } from '@backstage/plugin-signals-react'; - -const { lastSignal } = useSignal('notifications'); - -React.useEffect(() => { - /* ... */ -}, [lastSignal, notificationsApi]); -``` - -#### Using signals in your own plugin - -It's possible to use signals in your own plugin to deliver data from the backend to the frontend in near real-time. - -To use signals in your own frontend plugin, you need to add the `useSignal` hook from `@backstage/plugin-signals-react` from `@backstage/plugin-notifications-common` with optional generic type of the signal. - -```ts -// To use the same type of signal in the backend, this should be placed in a shared common package -export type MySignalType = { - user: string; - data: string; - // .... -}; - -const { lastSignal } = useSignal('my-plugin'); - -useEffect(() => { - if (lastSignal) { - // Do something with the signal - } -}, [lastSignal]); -``` - -To send signals from the backend plugin, you must add the `signalsServiceRef` to your plugin or module as a dependency. - -```ts -import { signalsServiceRef } from '@backstage/plugin-signals-node'; -export const myPlugin = createBackendPlugin({ - pluginId: 'my', - register(env) { - env.registerInit({ - deps: { - httpRouter: coreServices.httpRouter, - signals: signalsServiceRef, - }, - async init({ httpRouter, signals }) { - httpRouter.use( - await createRouter({ - signals, - }), - ); - }, - }); - }, -}); -``` - -To send the signal using the service, you can use the `publish` method. - -```ts -signals.publish({ user: 'user', data: 'test' }); -``` - -### Consuming Notifications - -In a front-end plugin, the simplest way to query a notification is by its ID: - -```ts -import { useApi } from '@backstage/core-plugin-api'; -import { notificationsApiRef } from '@backstage/plugin-notifications'; - -const notificationsApi = useApi(notificationsApiRef); - -notificationsApi.getNotification(yourId); - -// or with connection to signals: -notificationsApi.getNotification(lastSignal.notification_id); -``` - -### Extending Notifications via Processors - -The notifications can be extended with `NotificationProcessor`. These processors allow to decorate notifications before they are sent or/and send the notifications to external services. - -Depending on the needs, a processor can modify the content of a notification or route it to different systems like email, Slack, or other services. - -A good example of how to write a processor is the [Email Processor](https://github.com/backstage/backstage/tree/master/plugins/notifications-backend-module-email). - -Start off by creating a notification processor: - -```ts -import { Notification } from '@backstage/plugin-notifications-common'; -import { NotificationProcessor } from '@backstage/plugin-notifications-node'; - -class MyNotificationProcessor implements NotificationProcessor { - // preProcess is called before the notification is saved to database. - // This is a good place to modify the notification before it is saved and sent to the user. - async preProcess(notification: Notification): Promise { - if (notification.origin === 'plugin-my-plugin') { - notification.payload.icon = 'my-icon'; - } - return notification; - } - - // postProcess is called after the notification is saved to database and the signal is emitted. - // This is a good place to send the notification to external services. - async postProcess(notification: Notification): Promise { - nodemailer.sendEmail({ - from: 'backstage', - to: 'user', - subject: notification.payload.title, - text: notification.payload.description, - }); - } -} -``` - -Both of the processing functions are optional, and you can implement only one of them. - -Add the notification processor to the notification system by: - -```ts -import { notificationsProcessingExtensionPoint } from '@backstage/plugin-notifications-node'; -import { Notification } from '@backstage/plugin-notifications-common'; - -export const myPlugin = createBackendPlugin({ - pluginId: 'myPlugin', - register(env) { - env.registerInit({ - deps: { - notifications: notificationsProcessingExtensionPoint, - // ... - }, - async init({ notifications }) { - // ... - notifications.addProcessor(new MyNotificationProcessor()); - }, - }); - }, -}); -``` - ### User-specific notification settings The notifications plugin provides a way for users to manage their notification settings. To enable this, you must @@ -375,19 +155,6 @@ You can customize the origin names shown in the UI by passing an object where th Each notification processor will receive its own column in the settings page, where the user can enable or disable notifications from that processor. -### External Services - -When the emitter of a notification is a Backstage backend plugin, it is mandatory to use the integration via `@backstage/plugin-notifications-node` as described above. - -If the emitter is a service external to Backstage, an HTTP POST request can be issued directly to the API, assuming that authentication is properly configured. -Refer to the [service-to-service auth documentation](https://backstage.io/docs/auth/service-to-service-auth) for more details, focusing on the Static Tokens section for the simplest setup option. - -An example request for creating a broadcast notification might look like: - -```bash -curl -X POST https://[BACKSTAGE_BACKEND]/api/notifications/notifications -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_BASE64_SHARED_KEY_TOKEN" -d '{"recipients":{"type":"broadcast"},"payload": {"title": "Title of broadcast message","link": "http://foo.com/bar","severity": "high","topic": "The topic"}}' -``` - ## Additional info An example of a backend plugin sending notifications can be found in https://github.com/backstage/backstage/tree/master/plugins/scaffolder-backend-module-notifications. @@ -395,9 +162,10 @@ An example of a backend plugin sending notifications can be found in https://git Sources of the notifications and signal plugins: - https://github.com/backstage/backstage/blob/master/plugins/notifications - - https://github.com/backstage/backstage/blob/master/plugins/notifications-backend - +- https://github.com/backstage/backstage/blob/master/plugins/notifications-common - https://github.com/backstage/backstage/blob/master/plugins/notifications-node - +- https://github.com/backstage/backstage/blob/master/plugins/signals-backend +- https://github.com/backstage/backstage/blob/master/plugins/signals +- https://github.com/backstage/backstage/blob/master/plugins/signals-node - https://github.com/backstage/backstage/blob/master/plugins/signals-react diff --git a/docs/notifications/processors.md b/docs/notifications/processors.md new file mode 100644 index 0000000000..abee7c97c3 --- /dev/null +++ b/docs/notifications/processors.md @@ -0,0 +1,107 @@ +--- +id: processors +title: Processors +description: How to setup notification processors +--- + +Notifications can be extended with `NotificationProcessor`. These processors allow you to decorate notifications before they are sent and/or send the notifications to external services. + +Depending on your needs, a processor can modify the content of a notification or route it to different systems like email, Slack, or other services. + +A good example of how to write a processor is the [Email Processor](https://github.com/backstage/backstage/tree/master/plugins/notifications-backend-module-email). + +Start off by creating a notification processor: + +```ts +import { Notification } from '@backstage/plugin-notifications-common'; +import { NotificationProcessor } from '@backstage/plugin-notifications-node'; + +class MyNotificationProcessor implements NotificationProcessor { + // preProcess is called before the notification is saved to database. + // This is a good place to modify the notification before it is saved and sent to the user. + async preProcess(notification: Notification): Promise { + if (notification.origin === 'plugin-my-plugin') { + notification.payload.icon = 'my-icon'; + } + return notification; + } + + // postProcess is called after the notification is saved to database and the signal is emitted. + // This is a good place to send the notification to external services. + async postProcess(notification: Notification): Promise { + nodemailer.sendEmail({ + from: 'backstage', + to: 'user', + subject: notification.payload.title, + text: notification.payload.description, + }); + } +} +``` + +Both of the processing functions are optional, and you can just implement one of them. + +Add the notification processor to the notification system by: + +```ts +import { notificationsProcessingExtensionPoint } from '@backstage/plugin-notifications-node'; +import { Notification } from '@backstage/plugin-notifications-common'; + +export const myPlugin = createBackendPlugin({ + pluginId: 'myPlugin', + register(env) { + env.registerInit({ + deps: { + notifications: notificationsProcessingExtensionPoint, + // ... + }, + async init({ notifications }) { + // ... + notifications.addProcessor(new MyNotificationProcessor()); + }, + }); + }, +}); +``` + +## Built-in Processors + +Backstage comes with some processors that can be used immediately. + +### Email Processor + +Email processor is used to send notifications to users using email. To install the email processor, add the `@backstage/plugin-notifications-backend-module-email` package to your backend. + +```bash +yarn workspace backend add @backstage/plugin-notifications-backend-module-email +``` + +Add the email processor to your backend: + +```ts +import { createBackend } from '@backstage/plugin-notifications-backend'; +const backend = createBackend(); +// ... +backend.add(import('@backstage/plugin-notifications-backend-module-email')); +``` + +To configure the email processor, you need to add the following configuration to your `app-config.yaml`: + +```yaml +notifications: + email: + smtp: + host: smtp.example.com + port: 587 + secure: false + username: ${SMTP_USERNAME} + password: ${SMTP_PASSWORD} +``` + +Apart from STMP, the email processor also supports the following transmissions: + +- SES +- sendmail +- stream (only for debugging purposes) + +See more information at https://github.com/backstage/backstage/blob/master/plugins/notifications-backend-module-email/README.md diff --git a/docs/notifications/usage.md b/docs/notifications/usage.md new file mode 100644 index 0000000000..59fbd83e3b --- /dev/null +++ b/docs/notifications/usage.md @@ -0,0 +1,212 @@ +--- +id: usage +title: Usage +description: How to use the notifications and signals +--- + +## Notifications Backend + +The Notifications backend plugin provides an API to create notifications, list notifications per logged-in user, and search based on parameters. + +The plugin uses a relational [database](https://backstage.io/docs/getting-started/config/database) for persistence; no specifics are introduced in this context. + +No additional configuration in the app-config is needed, except for optional additional modules for `processors`. + +## Notifications Frontend + +The recipients of notifications have to be entities in the catalog, e.g., of the User or Group kind. + +Otherwise, no specific configuration is needed for the front-end notifications plugin. + +All parametrization is done through component properties, such as the `NotificationsSidebarItem`, which can be used as an active left-side menu item in the front-end. + +![Notifications Page](notificationsPage.png) + +In the `packages/app/src/components/Root/Root.tsx`, tweak the [properties](https://backstage.io/docs/reference/plugin-notifications.notificationssidebaritem) of the `` per specific needs. + +## Usage + +New notifications can be sent either by a backend plugin or an external service through the REST API. + +## Backend + +Regardless of technical feasibility, a backend plugin should avoid directly accessing the notifications REST API. +Instead, it should integrate with the `@backstage/plugin-notifications-node` to `send` (create) a new notification. + +The reasons for this approach include the propagation of authorization in the API request and improved maintenance and backward compatibility in the future. + +```ts +import { notificationService } from '@backstage/plugin-notifications-node'; + +export const myPlugin = createBackendPlugin({ + pluginId: 'myPlugin', + register(env) { + env.registerInit({ + deps: { + // ... + notificationService: notificationService, + }, + async init({ + // ... + notificationService, + }) { + httpRouter.use( + await createRouter({ + // ... + notificationService, + }), + ); + }, + }); + }, +}); +``` + +To emit a new notification: + +```ts +await notificationService.send({ + recipients /* of the broadcast or entity type */, + payload /* actual message */, +}); +``` + +Refer the [API documentation](https://github.com/backstage/backstage/blob/master/plugins/notifications-node/report.api.md) for further details. + +### External Services + +When the emitter of a notification is a Backstage backend plugin, it is mandatory to use the integration via `@backstage/plugin-notifications-node` as described above. + +If the emitter is a service external to Backstage, an HTTP POST request can be issued directly to the API, assuming that authentication is properly configured. +Refer to the [service-to-service auth documentation](https://backstage.io/docs/auth/service-to-service-auth) for more details, focusing on the Static Tokens section for the simplest setup option. + +An example request for creating a broadcast notification might look like: + +```bash +curl -X POST https://[BACKSTAGE_BACKEND]/api/notifications -H "Content-Type: application/json" -H "Authorization: Bearer YOUR_BASE64_SHARED_KEY_TOKEN" -d '{"recipients":{"type":"broadcast"},"payload": {"title": "Title of broadcast message","link": "http://foo.com/bar","severity": "high","topic": "The topic"}}' +``` + +### Scaffolder Templates + +You can use the `@backstage/plugin-scaffolder-backend-module-notifications` to send notifications when scaffolder templates are run. To install the module, add it to your backend plugin: + +```bash +yarn workspace backend add @backstage/plugin-scaffolder-backend-module-notifications +``` + +Then, add the module to your backend: + +```ts +const backend = createBackend(); +// ... +backend.add( + import('@backstage/plugin-scaffolder-backend-module-notifications'), +); +``` + +In your template you can now use `notification:send` action as part of the steps: + +```yaml +steps: + - id: notify + name: Notify + action: notification:send + input: + recipients: entity + entityRefs: + - component:default/backstage + title: 'Template executed' + info: 'Your template has been executed' + severity: 'info' + link: https://backstage.io +``` + +## Signals + +The use of signals with notifications is optional but generally enhances user experience and performance. + +When a notification is created, a new signal is emitted to a general-purpose message bus to announce it to subscribed listeners. + +The frontend maintains a persistent connection (WebSocket) to receive these announcements from the notifications channel. +The specific details of the updated or created notification should be retrieved via a request to the notifications API, except for new notifications, where the payload is included in the signal for performance reasons. + +In a frontend plugin, to subscribe to notifications' signals: + +```ts +import { useSignal } from '@backstage/plugin-signals-react'; + +const { lastSignal } = useSignal('notifications'); + +React.useEffect(() => { + /* ... */ +}, [lastSignal, notificationsApi]); +``` + +#### Using signals in your own plugin + +It's possible to use signals in your own plugin to deliver data from the backend to the frontend in near real-time. + +To use signals in your own frontend plugin, you need to add the `useSignal` hook from `@backstage/plugin-signals-react` from `@backstage/plugin-notifications-common` with optional generic type of the signal. + +```ts +// To use the same type of signal in the backend, this should be placed in a shared common package +export type MySignalType = { + user: string; + data: string; + // .... +}; + +const { lastSignal } = useSignal('my-plugin'); + +useEffect(() => { + if (lastSignal) { + // Do something with the signal + } +}, [lastSignal]); +``` + +To send signals from the backend plugin, you must add the `signalsServiceRef` to your plugin or module as a dependency. + +```ts +import { signalsServiceRef } from '@backstage/plugin-signals-node'; +export const myPlugin = createBackendPlugin({ + pluginId: 'my', + register(env) { + env.registerInit({ + deps: { + httpRouter: coreServices.httpRouter, + signals: signalsServiceRef, + }, + async init({ httpRouter, signals }) { + httpRouter.use( + await createRouter({ + signals, + }), + ); + }, + }); + }, +}); +``` + +To send the signal using the service, you can use the `publish` method. + +```ts +signals.publish({ user: 'user', data: 'test' }); +``` + +## Consuming Notifications + +In a front-end plugin, the simplest way to query a notification is by its ID: + +```ts +import { useApi } from '@backstage/core-plugin-api'; +import { notificationsApiRef } from '@backstage/plugin-notifications'; + +const notificationsApi = useApi(notificationsApiRef); + +notificationsApi.getNotification(yourId); + +// or with connection to signals: +notificationsApi.getNotification(lastSignal.notification_id); +``` diff --git a/microsite/sidebars.js b/microsite/sidebars.js index e48e3b7b52..546a43b8c6 100644 --- a/microsite/sidebars.js +++ b/microsite/sidebars.js @@ -102,7 +102,11 @@ module.exports = { { type: 'category', label: 'Notifications', - items: ['notifications/index'], + items: [ + 'notifications/index', + 'notifications/processors', + 'notifications/usage', + ], }, { type: 'category', diff --git a/mkdocs.yml b/mkdocs.yml index 748cdd8232..a7e693e5fc 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -158,6 +158,10 @@ nav: - Reading Backstage Configuration: 'conf/reading.md' - Writing Backstage Configuration: 'conf/writing.md' - Defining Configuration for your Plugin: 'conf/defining.md' + - Notifications: + - Getting Started: 'notifications/index.md' + - Usage: 'notifications/usage.md' + - Processors: 'notifications/processors.md' - Authentication and identity: - Adding Authentication: 'auth/index.md' - Included providers: diff --git a/plugins/notifications-backend-module-email/README.md b/plugins/notifications-backend-module-email/README.md index 1defad74b4..3ccee8f1e8 100644 --- a/plugins/notifications-backend-module-email/README.md +++ b/plugins/notifications-backend-module-email/README.md @@ -24,13 +24,13 @@ export const notificationsModuleEmailDecorator = createBackendModule({ }, async init({ emailTemplates }) { emailTemplates.setTemplateRenderer({ - getSubject(notification) { + async getSubject(notification) { return `New notification from ${notification.source}`; }, - getText(notification) { + async getText(notification) { return notification.content; }, - getHtml(notification) { + async getHtml(notification) { return `

${notification.content}

`; }, }); @@ -54,19 +54,50 @@ notifications: secure: false username: 'my-username' password: 'my-password' + + # AWS SES + # transportConfig: + # transport: 'ses' + # accessKeyId: 'my-access-key + # region: 'us-west-2' + + # sendmail + # transportConfig: + # transport: 'sendmail' + # path: '/usr/sbin/sendmail' + # newline: 'unix' + # The email sender address sender: 'sender@mycompany.com' replyTo: 'no-reply@mycompany.com' - # Who to get email for broadcast notifications + # Who to send email for broadcast notifications broadcastConfig: receiver: 'users' # How many emails to send concurrently, defaults to 2 concurrencyLimit: 10 + # How much to throttle between emails, defaults to 100ms + throttleInterval: + seconds: 60 # Cache configuration for email addresses # This is to prevent unnecessary calls to the catalog cache: ttl: days: 1 + # Notification filter which this processor will handle + filter: + # Minimum severity of the notification to send email + minSeverity: high + # Maximum severity of the notification to send email + maxSeverity: critical + # Topics that are excluded from sending email + excludedTopics: + - scaffolder + # List of allowed email addresses to get notifications via email + allowlistEmailAddresses: + - john.doe@backstage.io + # List of denied email addresses to get notifications via email + denylistEmailAddresses: + - jane.doe@backstage.io ``` See `config.d.ts` for more options for configuration. From 372a4cac0d3ba62eccdf1387823b4e417eef9efe Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Mon, 16 Dec 2024 09:43:25 +0100 Subject: [PATCH 033/213] make task not optional in ActionContext Signed-off-by: Fabio Vincenzi --- .../src/scaffolder/tasks/NunjucksWorkflowRunner.ts | 1 + plugins/scaffolder-node/src/actions/types.ts | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index dcbfcc0a34..ad9d85cb2d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -493,6 +493,7 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { const taskTrack = await this.tracker.taskStart(task); await fs.ensureDir(workspacePath); + const context: TemplateContext = { parameters: task.spec.parameters, steps: {}, diff --git a/plugins/scaffolder-node/src/actions/types.ts b/plugins/scaffolder-node/src/actions/types.ts index 51addda05c..171d3d82db 100644 --- a/plugins/scaffolder-node/src/actions/types.ts +++ b/plugins/scaffolder-node/src/actions/types.ts @@ -58,9 +58,9 @@ export type ActionContext< getInitiatorCredentials(): Promise; /** - * Optional task information + * Task information */ - task?: { + task: { id: string; }; From 6ea0d2f1a5a36b46cf26a41fb640844542400e82 Mon Sep 17 00:00:00 2001 From: Fabio Vincenzi Date: Mon, 16 Dec 2024 11:30:41 +0100 Subject: [PATCH 034/213] create mock task id Signed-off-by: Fabio Vincenzi --- .../src/actions/mockActionContext.ts | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/plugins/scaffolder-node-test-utils/src/actions/mockActionContext.ts b/plugins/scaffolder-node-test-utils/src/actions/mockActionContext.ts index b178a1d51d..1d45051753 100644 --- a/plugins/scaffolder-node-test-utils/src/actions/mockActionContext.ts +++ b/plugins/scaffolder-node-test-utils/src/actions/mockActionContext.ts @@ -45,6 +45,9 @@ export const createMockActionContext = < input: {} as TActionInput, checkpoint: jest.fn(), getInitiatorCredentials: () => Promise.resolve(credentials), + task: { + id: 'mock-task-id', + }, }; const createDefaultWorkspace = () => ({ @@ -58,8 +61,15 @@ export const createMockActionContext = < }; } - const { input, logger, logStream, secrets, templateInfo, workspacePath } = - options; + const { + input, + logger, + logStream, + secrets, + templateInfo, + workspacePath, + task, + } = options; return { ...defaultContext, @@ -71,6 +81,7 @@ export const createMockActionContext = < ...(logStream && { logStream }), ...(input && { input }), ...(secrets && { secrets }), + ...(task && { task }), templateInfo, }; }; From 4dc54873e29a455784f601a16c200d32b13c395a Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Fri, 25 Oct 2024 15:41:59 +0100 Subject: [PATCH 035/213] Add new core component Autocomplete and use for entity pickers Signed-off-by: Jonathan Roebuck --- packages/core-components/report.api.md | 14 ++ .../Autocomplete/Autocomplete.stories.tsx | 33 ++++ .../Autocomplete/Autocomplete.test.tsx | 117 ++++++++++++ .../components/Autocomplete/Autocomplete.tsx | 171 +++++++++++++++++ .../src/components/Autocomplete/index.tsx | 16 ++ .../core-components/src/components/index.ts | 1 + plugins/catalog-react/report.api.md | 2 +- .../EntityAutocompletePicker.tsx | 60 +++--- .../EntityAutocompletePickerInput.tsx | 43 ----- .../EntityOwnerPicker/EntityOwnerPicker.tsx | 172 ++++++++---------- .../EntityProcessingStatusPicker.tsx | 90 ++++----- 11 files changed, 479 insertions(+), 240 deletions(-) create mode 100644 packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx create mode 100644 packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx create mode 100644 packages/core-components/src/components/Autocomplete/Autocomplete.tsx create mode 100644 packages/core-components/src/components/Autocomplete/index.tsx delete mode 100644 plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePickerInput.tsx diff --git a/packages/core-components/report.api.md b/packages/core-components/report.api.md index c3f7cf9a6a..5298ac9816 100644 --- a/packages/core-components/report.api.md +++ b/packages/core-components/report.api.md @@ -6,6 +6,7 @@ /// import { ApiRef } from '@backstage/core-plugin-api'; +import { AutocompleteProps } from '@material-ui/lab/Autocomplete'; import { BackstageIdentityApi } from '@backstage/core-plugin-api'; import { BackstagePalette } from '@backstage/theme'; import { BackstageUserIdentity } from '@backstage/core-plugin-api'; @@ -33,6 +34,7 @@ import { MaterialTableProps } from '@material-table/core'; import { NavLinkProps } from 'react-router-dom'; import { Options } from 'react-markdown'; import { Options as Options_2 } from '@material-table/core'; +import { OutlinedTextFieldProps } from '@material-ui/core/TextField'; import { Overrides } from '@material-ui/core/styles/overrides'; import { ProfileInfo } from '@backstage/core-plugin-api'; import { ProfileInfoApi } from '@backstage/core-plugin-api'; @@ -76,6 +78,18 @@ export type AppIconProps = IconComponentProps & { Fallback?: IconComponent; }; +// Warning: (ae-forgotten-export) The symbol "AutocompleteComponentProps" needs to be exported by the entry point index.d.ts +// +// @public (undocumented) +export function Autocomplete< + T, + Multiple extends boolean | undefined = undefined, + DisableClearable extends boolean | undefined = undefined, + FreeSolo extends boolean | undefined = undefined, +>( + props: AutocompleteComponentProps, +): React_2.JSX.Element; + // @public export const AutoLogout: (props: AutoLogoutProps) => JSX.Element | null; diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx new file mode 100644 index 0000000000..7aed709125 --- /dev/null +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx @@ -0,0 +1,33 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React from 'react'; +import { AutocompleteComponent as Autocomplete } from './Autocomplete'; + +export default { + title: 'Inputs/Autocomplete', + component: Autocomplete, +}; + +export const Default = (args: any) => { + return ; +}; + +Default.args = { + multiple: true, + label: 'Default', + name: 'default', + options: ['test 1', 'test 2', 'test 3'], +}; diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx new file mode 100644 index 0000000000..fff83eb26d --- /dev/null +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx @@ -0,0 +1,117 @@ +/* + * Copyright 2024 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { render, screen } from '@testing-library/react'; +import userEvent from '@testing-library/user-event'; +import { AutocompleteComponent as Autocomplete } from './Autocomplete'; + +describe('Autocomplete', () => { + const user = userEvent.setup(); + const mockOptions = ['Option 1', 'Option 2', 'Option 3']; + + it('renders without exploding', () => { + render( + , + ); + expect(screen.getByRole('textbox')).toBeInTheDocument(); + }); + + it('renders the expand icon', () => { + render( + , + ); + const expandIcon = screen.getByTestId('test-autocomplete-expand'); + expect(expandIcon).toBeInTheDocument(); + }); + + it('displays options when clicked', () => { + render( + , + ); + + const input = screen.getByRole('textbox'); + user.click(input); + + mockOptions.forEach(option => { + expect(screen.getByText(option)).toBeInTheDocument(); + }); + }); + + it('supports required input', () => { + render( + , + ); + + const input = screen.getByRole('textbox'); + expect(input).toBeRequired(); + }); + + it('displays helper text when provided', () => { + render( + , + ); + + expect(screen.getByText('Helper text')).toBeInTheDocument(); + }); + + it('renders without label', () => { + render(); + + const input = screen.getByRole('textbox'); + expect(input).toBeInTheDocument(); + }); + + it('displays correct option on selection', () => { + render( + , + ); + + const input = screen.getByRole('textbox'); + user.click(input); + + const optionToSelect = screen.getByText('Option 1'); + user.click(optionToSelect); + + expect(input).toHaveValue('Option 1'); + }); +}); diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx new file mode 100644 index 0000000000..dd0c936c14 --- /dev/null +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx @@ -0,0 +1,171 @@ +/* + * Copyright 2024 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 Box from '@material-ui/core/Box'; +import Typography from '@material-ui/core/Typography'; +import Paper, { PaperProps } from '@material-ui/core/Paper'; +import Popper, { PopperProps } from '@material-ui/core/Popper'; +import TextField, { OutlinedTextFieldProps } from '@material-ui/core/TextField'; +import Grow from '@material-ui/core/Grow'; +import { + createStyles, + makeStyles, + Theme, + withStyles, +} from '@material-ui/core/styles'; +import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; +import Autocomplete, { AutocompleteProps } from '@material-ui/lab/Autocomplete'; +import React, { ReactNode } from 'react'; + +const useStyles = makeStyles( + theme => ({ + root: {}, + label: { + position: 'relative', + fontWeight: 'bold', + fontSize: theme.typography.body2.fontSize, + fontFamily: theme.typography.fontFamily, + color: theme.palette.text.primary, + '& > span': { + top: 0, + left: 0, + position: 'absolute', + }, + }, + input: {}, + }), + { name: 'BackstageAutocomplete' }, +); + +const BootstrapAutocomplete = withStyles( + (theme: Theme) => + createStyles({ + root: {}, + paper: { + margin: 0, + }, + hasClearIcon: {}, + hasPopupIcon: {}, + focused: {}, + inputRoot: { + marginTop: 24, + backgroundColor: theme.palette.background.paper, + '$root$hasClearIcon$hasPopupIcon &': { + padding: `${theme.spacing(0.75, 7, 0.75, 1.5)}`, + }, + '$root$focused &': { + outline: 'none', + }, + '$root &:hover > fieldset': { + borderColor: '#ced4da', + }, + '$root$focused & > fieldset': { + borderWidth: 1, + borderColor: theme.palette.primary.main, + }, + }, + popupIndicator: { + padding: 0, + margin: 0, + color: theme.palette.text.primary, + '& [class*="MuiTouchRipple-root"]': { + display: 'none', + }, + }, + endAdornment: { + '$root$hasClearIcon$hasPopupIcon &': { + right: 4, + }, + }, + input: { + '$root$hasClearIcon$hasPopupIcon &': { + height: 32, + fontSize: theme.typography.body1.fontSize, + padding: 0, + }, + }, + }), + { name: 'BackstageAutocompleteBase' }, +)(Autocomplete) as typeof Autocomplete; + +const PopperComponent = (props: PopperProps) => ( + + {({ TransitionProps }) => ( + + {props.children as ReactNode} + + )} + +); + +const PaperComponent = (props: PaperProps) => ( + +); + +export type AutocompleteComponentProps< + T, + Multiple extends boolean | undefined = undefined, + DisableClearable extends boolean | undefined = undefined, + FreeSolo extends boolean | undefined = undefined, +> = { + name: string; + label?: string; + inputProps?: Omit; +} & Omit< + AutocompleteProps, + 'PopperComponent' | 'PaperComponent' | 'renderInput' | 'size' | 'popupIcon' +>; + +/** @public */ +export function AutocompleteComponent< + T, + Multiple extends boolean | undefined = undefined, + DisableClearable extends boolean | undefined = undefined, + FreeSolo extends boolean | undefined = undefined, +>(props: AutocompleteComponentProps) { + const { label, name, inputProps, ...rest } = props; + const classes = useStyles(); + const autocomplete = ( + } + PaperComponent={PaperComponent} + PopperComponent={PopperComponent} + renderInput={params => ( + + )} + /> + ); + + return ( + + {label ? ( + + {label} + {autocomplete} + + ) : ( + autocomplete + )} + + ); +} diff --git a/packages/core-components/src/components/Autocomplete/index.tsx b/packages/core-components/src/components/Autocomplete/index.tsx new file mode 100644 index 0000000000..bf4681db8e --- /dev/null +++ b/packages/core-components/src/components/Autocomplete/index.tsx @@ -0,0 +1,16 @@ +/* + * Copyright 2024 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 { AutocompleteComponent as Autocomplete } from './Autocomplete'; diff --git a/packages/core-components/src/components/index.ts b/packages/core-components/src/components/index.ts index 828df3ec03..6fcbe2e9a9 100644 --- a/packages/core-components/src/components/index.ts +++ b/packages/core-components/src/components/index.ts @@ -16,6 +16,7 @@ export * from './AlertDisplay'; export * from './AutoLogout'; +export * from './Autocomplete'; export * from './Avatar'; export * from './LinkButton'; export * from './CodeSnippet'; diff --git a/plugins/catalog-react/report.api.md b/plugins/catalog-react/report.api.md index af5102176d..107fbeb0c0 100644 --- a/plugins/catalog-react/report.api.md +++ b/plugins/catalog-react/report.api.md @@ -205,7 +205,7 @@ export type EntityAutocompletePickerProps< Filter: { new (values: string[]): NonNullable; }; - InputProps?: TextFieldProps; + InputProps?: TextFieldProps['InputProps']; initialSelectedOptions?: string[]; filtersForAvailableValues?: Array; }; diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx index fd88a7a31e..d4f978fce5 100644 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx +++ b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx @@ -16,21 +16,18 @@ import Box from '@material-ui/core/Box'; import { TextFieldProps } from '@material-ui/core/TextField'; -import Typography from '@material-ui/core/Typography'; import { makeStyles } from '@material-ui/core/styles'; -import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; -import Autocomplete from '@material-ui/lab/Autocomplete'; -import React, { useEffect, useMemo, useState, ReactNode } from 'react'; +import React, { useEffect, useMemo, useState } from 'react'; import { useApi } from '@backstage/core-plugin-api'; import useAsync from 'react-use/esm/useAsync'; import { catalogApiRef } from '../../api'; import { EntityAutocompletePickerOption } from './EntityAutocompletePickerOption'; -import { EntityAutocompletePickerInput } from './EntityAutocompletePickerInput'; import { DefaultEntityFilters, useEntityList, } from '../../hooks/useEntityListProvider'; import { EntityFilter } from '../../types'; +import { Autocomplete } from '@backstage/core-components'; import { reduceBackendCatalogFilters } from '../../utils/filters'; /** @public */ @@ -52,7 +49,7 @@ export type EntityAutocompletePickerProps< path: string; showCounts?: boolean; Filter: { new (values: string[]): NonNullable }; - InputProps?: TextFieldProps; + InputProps?: TextFieldProps['InputProps']; initialSelectedOptions?: string[]; filtersForAvailableValues?: Array; }; @@ -82,11 +79,9 @@ export function EntityAutocompletePicker< path, showCounts, Filter, - InputProps, initialSelectedOptions = [], filtersForAvailableValues = ['kind'], } = props; - const classes = useStyles(); const { @@ -152,36 +147,25 @@ export function EntityAutocompletePicker< return ( - - {label} - - PopperComponent={popperProps => ( -
{popperProps.children as ReactNode}
- )} - multiple - disableCloseOnSelect - options={availableOptions} - value={selectedOptions} - onChange={(_event: object, options: string[]) => - setSelectedOptions(options) - } - renderOption={(option, { selected }) => ( - - )} - size="small" - popupIcon={ - - } - renderInput={params => ( - - )} - /> -
+ + multiple + disableCloseOnSelect + label={label} + name={`${String(name)}-picker`} + options={availableOptions} + value={selectedOptions} + onChange={(_event: object, options: string[]) => + setSelectedOptions(options) + } + renderOption={(option, { selected }) => ( + + )} + />
); } diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePickerInput.tsx b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePickerInput.tsx deleted file mode 100644 index 133024330c..0000000000 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePickerInput.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import TextField, { TextFieldProps } from '@material-ui/core/TextField'; -import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; -import React from 'react'; -import classnames from 'classnames'; - -const useStyles = makeStyles( - (theme: Theme) => - createStyles({ - input: { - backgroundColor: theme.palette.background.paper, - }, - }), - { - name: 'CatalogReactEntityAutocompletePickerInput', - }, -); - -export function EntityAutocompletePickerInput(params: TextFieldProps) { - const classes = useStyles(); - - return ( - - ); -} diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx index ecbdae1d63..bf8db5f627 100644 --- a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx +++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx @@ -22,15 +22,13 @@ import { import Box from '@material-ui/core/Box'; import Checkbox from '@material-ui/core/Checkbox'; import FormControlLabel from '@material-ui/core/FormControlLabel'; -import TextField from '@material-ui/core/TextField'; import Typography from '@material-ui/core/Typography'; import Tooltip from '@material-ui/core/Tooltip'; -import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; +import { makeStyles } from '@material-ui/core/styles'; import CheckBoxIcon from '@material-ui/icons/CheckBox'; import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; -import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; -import Autocomplete from '@material-ui/lab/Autocomplete'; -import React, { useEffect, useMemo, useState, ReactNode } from 'react'; +import { Autocomplete } from '@backstage/core-components'; +import React, { useEffect, useMemo, useState } from 'react'; import { useEntityList } from '../../hooks/useEntityListProvider'; import { EntityOwnerFilter } from '../../filters'; import { useDebouncedEffect } from '@react-hookz/web'; @@ -42,29 +40,20 @@ import { withStyles } from '@material-ui/core/styles'; import { useEntityPresentation } from '../../apis'; import { catalogReactTranslationRef } from '../../translation'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; -import { PopperProps } from '@material-ui/core/Popper'; /** @public */ export type CatalogReactEntityOwnerPickerClassKey = 'input'; const useStyles = makeStyles( - (theme: Theme) => - createStyles({ - root: {}, - label: { - textTransform: 'none', - fontWeight: 'bold', - }, - input: { - backgroundColor: theme.palette.background.paper, - }, - fullWidth: { width: '100%' }, - boxLabel: { - width: '100%', - textOverflow: 'ellipsis', - overflow: 'hidden', - }, - }), + { + root: {}, + fullWidth: { width: '100%' }, + boxLabel: { + width: '100%', + textOverflow: 'ellipsis', + overflow: 'hidden', + }, + }, { name: 'CatalogReactEntityOwnerPicker' }, ); @@ -147,7 +136,7 @@ export const EntityOwnerPicker = (props?: EntityOwnerPickerProps) => { [ownersParameter], ); - const [selectedOwners, setSelectedOwners] = useState( + const [selectedOwners, setSelectedOwners] = useState( queryParamOwners.length ? queryParamOwners : filters.owners?.values ?? [], ); @@ -186,84 +175,67 @@ export const EntityOwnerPicker = (props?: EntityOwnerPickerProps) => { return ( - - {t('entityOwnerPicker.title')} - { - if (typeof v === 'string') { - return stringifyEntityRef(o) === v; - } - return o === v; - }} - getOptionLabel={o => { - const entity = - typeof o === 'string' - ? cache.getEntity(o) || - parseEntityRef(o, { - defaultKind: 'group', - defaultNamespace: 'default', - }) - : o; - return humanizeEntity(entity, humanizeEntityRef(entity)); - }} - onChange={(_: object, owners) => { - setText(''); - setSelectedOwners( - owners.map(e => { - const entityRef = - typeof e === 'string' ? e : stringifyEntityRef(e); + + label={t('entityOwnerPicker.title')} + multiple + disableCloseOnSelect + loading={loading} + options={availableOwners} + value={selectedOwners as unknown as Entity[]} + getOptionSelected={(o, v) => { + if (typeof v === 'string') { + return stringifyEntityRef(o) === v; + } + return o === v; + }} + getOptionLabel={o => { + const entity = + typeof o === 'string' + ? cache.getEntity(o) || + parseEntityRef(o, { + defaultKind: 'group', + defaultNamespace: 'default', + }) + : o; + return humanizeEntity(entity, humanizeEntityRef(entity)); + }} + onChange={(_: object, owners) => { + setText(''); + setSelectedOwners( + owners.map(e => { + const entityRef = + typeof e === 'string' ? e : stringifyEntityRef(e); - if (typeof e !== 'string') { - cache.setEntity(e); - } - return entityRef; - }), - ); - }} - filterOptions={x => x} - renderOption={(entity, { selected }) => { - return ; - }} - size="small" - popupIcon={} - renderInput={params => ( - { - setText(e.currentTarget.value); - }} - variant="outlined" - /> - )} - ListboxProps={{ - onScroll: (e: React.MouseEvent) => { - const element = e.currentTarget; - const hasReachedEnd = - Math.abs( - element.scrollHeight - - element.clientHeight - - element.scrollTop, - ) < 1; - - if (hasReachedEnd && value?.cursor) { - handleFetch({ items: value.items, cursor: value.cursor }); + if (typeof e !== 'string') { + cache.setEntity(e); } - }, - 'data-testid': 'owner-picker-listbox', - }} - /> - + return entityRef; + }), + ); + }} + filterOptions={x => x} + renderOption={(entity, { selected }) => { + return ; + }} + name="owner-picker" + onInputChange={(_e, inputValue) => { + setText(inputValue); + }} + ListboxProps={{ + onScroll: (e: React.MouseEvent) => { + const element = e.currentTarget; + const hasReachedEnd = + Math.abs( + element.scrollHeight - element.clientHeight - element.scrollTop, + ) < 1; + + if (hasReachedEnd && value?.cursor) { + handleFetch({ items: value.items, cursor: value.cursor }); + } + }, + 'data-testid': 'owner-picker-listbox', + }} + /> ); }; - -function Popper({ children }: PopperProps) { - return
{children as ReactNode}
; -} diff --git a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx index a2f0c8f729..02d1ddc238 100644 --- a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx +++ b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx @@ -18,15 +18,12 @@ import { EntityErrorFilter, EntityOrphanFilter } from '../../filters'; import Box from '@material-ui/core/Box'; import Checkbox from '@material-ui/core/Checkbox'; import FormControlLabel from '@material-ui/core/FormControlLabel'; -import TextField from '@material-ui/core/TextField'; -import Typography from '@material-ui/core/Typography'; -import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; +import { makeStyles } from '@material-ui/core/styles'; import CheckBoxIcon from '@material-ui/icons/CheckBox'; import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; -import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; -import React, { useState, ReactNode } from 'react'; +import React, { useState } from 'react'; import { useEntityList } from '../../hooks'; -import Autocomplete from '@material-ui/lab/Autocomplete'; +import { Autocomplete } from '@backstage/core-components'; import { catalogReactTranslationRef } from '../../translation'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; @@ -34,17 +31,9 @@ import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; export type CatalogReactEntityProcessingStatusPickerClassKey = 'input'; const useStyles = makeStyles( - (theme: Theme) => - createStyles({ - root: {}, - input: { - backgroundColor: theme.palette.background.paper, - }, - label: { - textTransform: 'none', - fontWeight: 'bold', - }, - }), + { + root: {}, + }, { name: 'CatalogReactEntityProcessingStatusPickerPicker' }, ); @@ -77,47 +66,32 @@ export const EntityProcessingStatusPicker = () => { return ( - - {t('entityProcessingStatusPicker.title')} - - PopperComponent={popperProps => ( -
{popperProps.children as ReactNode}
- )} - multiple - disableCloseOnSelect - options={availableAdvancedItems} - value={selectedAdvancedItems} - onChange={(_: object, value: string[]) => { - setSelectedAdvancedItems(value); - orphanChange(value.includes('Is Orphan')); - errorChange(value.includes('Has Error')); - }} - renderOption={(option, { selected }) => ( - - } - onClick={event => event.preventDefault()} - label={option} - /> - )} - size="small" - popupIcon={ - - } - renderInput={params => ( - - )} - /> -
+ + label={t('entityProcessingStatusPicker.title')} + multiple + disableCloseOnSelect + options={availableAdvancedItems} + value={selectedAdvancedItems} + onChange={(_: object, value: string[]) => { + setSelectedAdvancedItems(value); + orphanChange(value.includes('Is Orphan')); + errorChange(value.includes('Has Error')); + }} + renderOption={(option, { selected }) => ( + + } + onClick={event => event.preventDefault()} + label={option} + /> + )} + name="processing-status-picker" + />
); }; From b9ad22a0cfffef9d573efa2fa3f652a7909210ce Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Mon, 4 Nov 2024 16:16:17 +0000 Subject: [PATCH 036/213] update styles. make renderInput optional Signed-off-by: Jonathan Roebuck --- .../components/Autocomplete/Autocomplete.tsx | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx index dd0c936c14..f0016be430 100644 --- a/packages/core-components/src/components/Autocomplete/Autocomplete.tsx +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx @@ -27,8 +27,11 @@ import { withStyles, } from '@material-ui/core/styles'; import ExpandMoreIcon from '@material-ui/icons/ExpandMore'; -import Autocomplete, { AutocompleteProps } from '@material-ui/lab/Autocomplete'; -import React, { ReactNode } from 'react'; +import Autocomplete, { + AutocompleteProps, + AutocompleteRenderInputParams, +} from '@material-ui/lab/Autocomplete'; +import React, { ReactNode, useCallback } from 'react'; const useStyles = makeStyles( theme => ({ @@ -64,7 +67,8 @@ const BootstrapAutocomplete = withStyles( marginTop: 24, backgroundColor: theme.palette.background.paper, '$root$hasClearIcon$hasPopupIcon &': { - padding: `${theme.spacing(0.75, 7, 0.75, 1.5)}`, + paddingBlock: theme.spacing(1.5625), + paddingInlineStart: theme.spacing(1.5), }, '$root$focused &': { outline: 'none', @@ -80,7 +84,7 @@ const BootstrapAutocomplete = withStyles( popupIndicator: { padding: 0, margin: 0, - color: theme.palette.text.primary, + color: '#616161', '& [class*="MuiTouchRipple-root"]': { display: 'none', }, @@ -92,7 +96,6 @@ const BootstrapAutocomplete = withStyles( }, input: { '$root$hasClearIcon$hasPopupIcon &': { - height: 32, fontSize: theme.typography.body1.fontSize, padding: 0, }, @@ -124,9 +127,15 @@ export type AutocompleteComponentProps< name: string; label?: string; inputProps?: Omit; + renderInput?: AutocompleteProps< + T, + Multiple, + DisableClearable, + FreeSolo + >['renderInput']; } & Omit< AutocompleteProps, - 'PopperComponent' | 'PaperComponent' | 'renderInput' | 'size' | 'popupIcon' + 'PopperComponent' | 'PaperComponent' | 'popupIcon' >; /** @public */ @@ -138,21 +147,25 @@ export function AutocompleteComponent< >(props: AutocompleteComponentProps) { const { label, name, inputProps, ...rest } = props; const classes = useStyles(); + const renderInput = useCallback( + (params: AutocompleteRenderInputParams) => ( + + ), + [], + ); const autocomplete = ( } PaperComponent={PaperComponent} PopperComponent={PopperComponent} - renderInput={params => ( - - )} /> ); From 71a05f932e32844e0d3b3c5aa30c5e6241c9b43d Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Tue, 5 Nov 2024 09:19:20 +0000 Subject: [PATCH 037/213] prevent input classnames breaking change Signed-off-by: Jonathan Roebuck --- packages/core-components/report.api.md | 23 ++++++++++- .../Autocomplete/Autocomplete.test.tsx | 4 +- .../components/Autocomplete/Autocomplete.tsx | 39 ++++++++++--------- .../src/components/Autocomplete/index.tsx | 5 ++- plugins/catalog-react/report.api.md | 2 +- .../EntityAutocompletePicker.tsx | 4 +- 6 files changed, 51 insertions(+), 26 deletions(-) diff --git a/packages/core-components/report.api.md b/packages/core-components/report.api.md index 5298ac9816..5a9f5440ec 100644 --- a/packages/core-components/report.api.md +++ b/packages/core-components/report.api.md @@ -78,8 +78,6 @@ export type AppIconProps = IconComponentProps & { Fallback?: IconComponent; }; -// Warning: (ae-forgotten-export) The symbol "AutocompleteComponentProps" needs to be exported by the entry point index.d.ts -// // @public (undocumented) export function Autocomplete< T, @@ -90,6 +88,27 @@ export function Autocomplete< props: AutocompleteComponentProps, ): React_2.JSX.Element; +// @public (undocumented) +export type AutocompleteComponentProps< + T, + Multiple extends boolean | undefined = undefined, + DisableClearable extends boolean | undefined = undefined, + FreeSolo extends boolean | undefined = undefined, +> = Omit< + AutocompleteProps, + 'PopperComponent' | 'PaperComponent' | 'popupIcon' | 'renderInput' +> & { + name: string; + label?: string; + TextFieldProps?: Omit; + renderInput?: AutocompleteProps< + T, + Multiple, + DisableClearable, + FreeSolo + >['renderInput']; +}; + // @public export const AutoLogout: (props: AutoLogoutProps) => JSX.Element | null; diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx index fff83eb26d..445267390a 100644 --- a/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx @@ -69,7 +69,7 @@ describe('Autocomplete', () => { name="test-autocomplete" options={mockOptions} label="Test Label" - inputProps={{ required: true }} + TextFieldProps={{ required: true }} />, ); @@ -83,7 +83,7 @@ describe('Autocomplete', () => { name="test-autocomplete" options={mockOptions} label="Test Label" - inputProps={{ helperText: 'Helper text' }} + TextFieldProps={{ helperText: 'Helper text' }} />, ); diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx index f0016be430..a34dd8728a 100644 --- a/packages/core-components/src/components/Autocomplete/Autocomplete.tsx +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx @@ -32,10 +32,13 @@ import Autocomplete, { AutocompleteRenderInputParams, } from '@material-ui/lab/Autocomplete'; import React, { ReactNode, useCallback } from 'react'; +import { merge } from 'lodash'; const useStyles = makeStyles( theme => ({ - root: {}, + root: { + margin: theme.spacing(1, 0), + }, label: { position: 'relative', fontWeight: 'bold', @@ -48,7 +51,6 @@ const useStyles = makeStyles( position: 'absolute', }, }, - input: {}, }), { name: 'BackstageAutocomplete' }, ); @@ -67,8 +69,8 @@ const BootstrapAutocomplete = withStyles( marginTop: 24, backgroundColor: theme.palette.background.paper, '$root$hasClearIcon$hasPopupIcon &': { - paddingBlock: theme.spacing(1.5625), - paddingInlineStart: theme.spacing(1.5), + paddingBlock: theme.spacing(0.75), + paddingInlineStart: theme.spacing(0.75), }, '$root$focused &': { outline: 'none', @@ -85,6 +87,9 @@ const BootstrapAutocomplete = withStyles( padding: 0, margin: 0, color: '#616161', + '&:hover': { + backgroundColor: 'unset', + }, '& [class*="MuiTouchRipple-root"]': { display: 'none', }, @@ -97,7 +102,7 @@ const BootstrapAutocomplete = withStyles( input: { '$root$hasClearIcon$hasPopupIcon &': { fontSize: theme.typography.body1.fontSize, - padding: 0, + paddingBlock: theme.spacing(0.8125), }, }, }), @@ -118,25 +123,26 @@ const PaperComponent = (props: PaperProps) => ( ); +/** @public */ export type AutocompleteComponentProps< T, Multiple extends boolean | undefined = undefined, DisableClearable extends boolean | undefined = undefined, FreeSolo extends boolean | undefined = undefined, -> = { +> = Omit< + AutocompleteProps, + 'PopperComponent' | 'PaperComponent' | 'popupIcon' | 'renderInput' +> & { name: string; label?: string; - inputProps?: Omit; + TextFieldProps?: Omit; renderInput?: AutocompleteProps< T, Multiple, DisableClearable, FreeSolo >['renderInput']; -} & Omit< - AutocompleteProps, - 'PopperComponent' | 'PaperComponent' | 'popupIcon' ->; +}; /** @public */ export function AutocompleteComponent< @@ -145,18 +151,13 @@ export function AutocompleteComponent< DisableClearable extends boolean | undefined = undefined, FreeSolo extends boolean | undefined = undefined, >(props: AutocompleteComponentProps) { - const { label, name, inputProps, ...rest } = props; + const { label, name, TextFieldProps, ...rest } = props; const classes = useStyles(); const renderInput = useCallback( (params: AutocompleteRenderInputParams) => ( - + ), - [], + [TextFieldProps], ); const autocomplete = ( ; }; - InputProps?: TextFieldProps['InputProps']; + InputProps?: TextFieldProps; initialSelectedOptions?: string[]; filtersForAvailableValues?: Array; }; diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx index d4f978fce5..3f4ec707c6 100644 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx +++ b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx @@ -49,7 +49,7 @@ export type EntityAutocompletePickerProps< path: string; showCounts?: boolean; Filter: { new (values: string[]): NonNullable }; - InputProps?: TextFieldProps['InputProps']; + InputProps?: TextFieldProps; initialSelectedOptions?: string[]; filtersForAvailableValues?: Array; }; @@ -79,6 +79,7 @@ export function EntityAutocompletePicker< path, showCounts, Filter, + InputProps, initialSelectedOptions = [], filtersForAvailableValues = ['kind'], } = props; @@ -154,6 +155,7 @@ export function EntityAutocompletePicker< name={`${String(name)}-picker`} options={availableOptions} value={selectedOptions} + TextFieldProps={InputProps} onChange={(_event: object, options: string[]) => setSelectedOptions(options) } From 30021e8dfe1eba27ee29d8a936ad6176af0ca61f Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Tue, 5 Nov 2024 09:47:54 +0000 Subject: [PATCH 038/213] prevent label classnames breaking change Signed-off-by: Jonathan Roebuck --- packages/core-components/report.api.md | 2 ++ .../src/components/Autocomplete/Autocomplete.tsx | 12 +++++++++--- .../EntityOwnerPicker/EntityOwnerPicker.tsx | 4 ++++ .../EntityProcessingStatusPicker.tsx | 4 ++++ 4 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/core-components/report.api.md b/packages/core-components/report.api.md index 5a9f5440ec..b2872a086b 100644 --- a/packages/core-components/report.api.md +++ b/packages/core-components/report.api.md @@ -53,6 +53,7 @@ import { StyleRules as StyleRules_2 } from '@material-ui/core/styles/withStyles' import { TabProps } from '@material-ui/core/Tab'; import { Theme } from '@material-ui/core/styles'; import { TooltipProps } from '@material-ui/core/Tooltip'; +import { TypographyProps } from '@material-ui/core/Typography'; import { WithStyles } from '@material-ui/core/styles'; // @public @@ -100,6 +101,7 @@ export type AutocompleteComponentProps< > & { name: string; label?: string; + LabelProps?: TypographyProps<'label'>; TextFieldProps?: Omit; renderInput?: AutocompleteProps< T, diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx index a34dd8728a..e01497c5a1 100644 --- a/packages/core-components/src/components/Autocomplete/Autocomplete.tsx +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.tsx @@ -15,7 +15,7 @@ */ import Box from '@material-ui/core/Box'; -import Typography from '@material-ui/core/Typography'; +import Typography, { TypographyProps } from '@material-ui/core/Typography'; import Paper, { PaperProps } from '@material-ui/core/Paper'; import Popper, { PopperProps } from '@material-ui/core/Popper'; import TextField, { OutlinedTextFieldProps } from '@material-ui/core/TextField'; @@ -33,6 +33,7 @@ import Autocomplete, { } from '@material-ui/lab/Autocomplete'; import React, { ReactNode, useCallback } from 'react'; import { merge } from 'lodash'; +import classNames from 'classnames'; const useStyles = makeStyles( theme => ({ @@ -135,6 +136,7 @@ export type AutocompleteComponentProps< > & { name: string; label?: string; + LabelProps?: TypographyProps<'label'>; TextFieldProps?: Omit; renderInput?: AutocompleteProps< T, @@ -151,7 +153,7 @@ export function AutocompleteComponent< DisableClearable extends boolean | undefined = undefined, FreeSolo extends boolean | undefined = undefined, >(props: AutocompleteComponentProps) { - const { label, name, TextFieldProps, ...rest } = props; + const { label, name, LabelProps, TextFieldProps, ...rest } = props; const classes = useStyles(); const renderInput = useCallback( (params: AutocompleteRenderInputParams) => ( @@ -173,7 +175,11 @@ export function AutocompleteComponent< return ( {label ? ( - + {label} {autocomplete} diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx index bf8db5f627..e26f231ff4 100644 --- a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx +++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx @@ -47,6 +47,8 @@ export type CatalogReactEntityOwnerPickerClassKey = 'input'; const useStyles = makeStyles( { root: {}, + label: {}, + input: {}, fullWidth: { width: '100%' }, boxLabel: { width: '100%', @@ -235,6 +237,8 @@ export const EntityOwnerPicker = (props?: EntityOwnerPickerProps) => { }, 'data-testid': 'owner-picker-listbox', }} + LabelProps={{ className: classes.label }} + TextFieldProps={{ className: classes.input }} /> ); diff --git a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx index 02d1ddc238..891f6acc9e 100644 --- a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx +++ b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx @@ -33,6 +33,8 @@ export type CatalogReactEntityProcessingStatusPickerClassKey = 'input'; const useStyles = makeStyles( { root: {}, + input: {}, + label: {}, }, { name: 'CatalogReactEntityProcessingStatusPickerPicker' }, ); @@ -91,6 +93,8 @@ export const EntityProcessingStatusPicker = () => { /> )} name="processing-status-picker" + LabelProps={{ className: classes.label }} + TextFieldProps={{ className: classes.input }} /> ); From aaf650854bda5c60e6516a54773cd2706e2f4668 Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Tue, 5 Nov 2024 10:39:23 +0000 Subject: [PATCH 039/213] add changeset Signed-off-by: Jonathan Roebuck --- .changeset/fluffy-jars-protect.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changeset/fluffy-jars-protect.md diff --git a/.changeset/fluffy-jars-protect.md b/.changeset/fluffy-jars-protect.md new file mode 100644 index 0000000000..c4967aded2 --- /dev/null +++ b/.changeset/fluffy-jars-protect.md @@ -0,0 +1,6 @@ +--- +'@backstage/core-components': minor +'@backstage/plugin-catalog-react': patch +--- + +Uses new Autocomplete component from core-components that aligns with Select component UI for consistent a dropdown UI for all catalog filters From 9e4eb5fc554750ccac8e2f6bd5b07972c777b4c3 Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Tue, 5 Nov 2024 17:48:37 +0000 Subject: [PATCH 040/213] fix tests Signed-off-by: Jonathan Roebuck --- .../src/components/Autocomplete/Autocomplete.test.tsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx index 445267390a..12269109a4 100644 --- a/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx +++ b/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx @@ -46,7 +46,7 @@ describe('Autocomplete', () => { expect(expandIcon).toBeInTheDocument(); }); - it('displays options when clicked', () => { + it('displays options when clicked', async () => { render( { ); const input = screen.getByRole('textbox'); - user.click(input); + await user.click(input); mockOptions.forEach(option => { expect(screen.getByText(option)).toBeInTheDocument(); @@ -97,7 +97,7 @@ describe('Autocomplete', () => { expect(input).toBeInTheDocument(); }); - it('displays correct option on selection', () => { + it('displays correct option on selection', async () => { render( { ); const input = screen.getByRole('textbox'); - user.click(input); + await user.click(input); const optionToSelect = screen.getByText('Option 1'); - user.click(optionToSelect); + await user.click(optionToSelect); expect(input).toHaveValue('Option 1'); }); From 50ec481ebe219e8e70440be9235a8e0b3e3c1c53 Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Mon, 18 Nov 2024 11:30:21 +0000 Subject: [PATCH 041/213] split out core component changeset Signed-off-by: Jonathan Roebuck --- .changeset/eleven-monkeys-cross.md | 5 +++++ .changeset/fluffy-jars-protect.md | 3 +-- 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .changeset/eleven-monkeys-cross.md diff --git a/.changeset/eleven-monkeys-cross.md b/.changeset/eleven-monkeys-cross.md new file mode 100644 index 0000000000..7a6ae45619 --- /dev/null +++ b/.changeset/eleven-monkeys-cross.md @@ -0,0 +1,5 @@ +--- +'@backstage/core-components': minor +--- + +Introduces a new core component, Autocomplete, which enhances the MUI Autocomplete component with custom input styling, improved popper animation, and better label positioning. This addition will standardize Autocomplete implementations across Backstage and ensure seamless integration with other core components such as Select. diff --git a/.changeset/fluffy-jars-protect.md b/.changeset/fluffy-jars-protect.md index c4967aded2..4fd6b3d194 100644 --- a/.changeset/fluffy-jars-protect.md +++ b/.changeset/fluffy-jars-protect.md @@ -1,6 +1,5 @@ --- -'@backstage/core-components': minor '@backstage/plugin-catalog-react': patch --- -Uses new Autocomplete component from core-components that aligns with Select component UI for consistent a dropdown UI for all catalog filters +Uses new Autocomplete component from core-components that aligns with Select component UI for consistent a dropdown UI for all catalog filters. From b18fe46435971f3ff412405b66a4e8589314978e Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Thu, 12 Dec 2024 15:59:50 +0000 Subject: [PATCH 042/213] colocate Autocomplete component in catalog-react Signed-off-by: Jonathan Roebuck --- .../Autocomplete/Autocomplete.stories.tsx | 33 ------------------- .../core-components/src/components/index.ts | 1 - .../CatalogAutocomplete.test.tsx | 18 +++++----- .../CatalogAutocomplete.tsx | 6 ++-- .../components/CatalogAutocomplete}/index.tsx | 6 ++-- .../EntityAutocompletePicker.tsx | 4 +-- .../EntityOwnerPicker/EntityOwnerPicker.tsx | 4 +-- .../EntityProcessingStatusPicker.tsx | 4 +-- 8 files changed, 22 insertions(+), 54 deletions(-) delete mode 100644 packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx rename packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx => plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx (89%) rename packages/core-components/src/components/Autocomplete/Autocomplete.tsx => plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.tsx (97%) rename {packages/core-components/src/components/Autocomplete => plugins/catalog-react/src/components/CatalogAutocomplete}/index.tsx (85%) diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx b/packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx deleted file mode 100644 index 7aed709125..0000000000 --- a/packages/core-components/src/components/Autocomplete/Autocomplete.stories.tsx +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2024 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import React from 'react'; -import { AutocompleteComponent as Autocomplete } from './Autocomplete'; - -export default { - title: 'Inputs/Autocomplete', - component: Autocomplete, -}; - -export const Default = (args: any) => { - return ; -}; - -Default.args = { - multiple: true, - label: 'Default', - name: 'default', - options: ['test 1', 'test 2', 'test 3'], -}; diff --git a/packages/core-components/src/components/index.ts b/packages/core-components/src/components/index.ts index 6fcbe2e9a9..828df3ec03 100644 --- a/packages/core-components/src/components/index.ts +++ b/packages/core-components/src/components/index.ts @@ -16,7 +16,6 @@ export * from './AlertDisplay'; export * from './AutoLogout'; -export * from './Autocomplete'; export * from './Avatar'; export * from './LinkButton'; export * from './CodeSnippet'; diff --git a/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx b/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx similarity index 89% rename from packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx rename to plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx index 12269109a4..51d272f4f1 100644 --- a/packages/core-components/src/components/Autocomplete/Autocomplete.test.tsx +++ b/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { AutocompleteComponent as Autocomplete } from './Autocomplete'; +import { CatalogAutocomplete } from './CatalogAutocomplete'; describe('Autocomplete', () => { const user = userEvent.setup(); @@ -25,7 +25,7 @@ describe('Autocomplete', () => { it('renders without exploding', () => { render( - { it('renders the expand icon', () => { render( - { it('displays options when clicked', async () => { render( - { it('supports required input', () => { render( - { it('displays helper text when provided', () => { render( - { }); it('renders without label', () => { - render(); + render( + , + ); const input = screen.getByRole('textbox'); expect(input).toBeInTheDocument(); @@ -99,7 +101,7 @@ describe('Autocomplete', () => { it('displays correct option on selection', async () => { render( - ( ); /** @public */ -export type AutocompleteComponentProps< +export type CatalogAutocompleteProps< T, Multiple extends boolean | undefined = undefined, DisableClearable extends boolean | undefined = undefined, @@ -147,12 +147,12 @@ export type AutocompleteComponentProps< }; /** @public */ -export function AutocompleteComponent< +export function CatalogAutocomplete< T, Multiple extends boolean | undefined = undefined, DisableClearable extends boolean | undefined = undefined, FreeSolo extends boolean | undefined = undefined, ->(props: AutocompleteComponentProps) { +>(props: CatalogAutocompleteProps) { const { label, name, LabelProps, TextFieldProps, ...rest } = props; const classes = useStyles(); const renderInput = useCallback( diff --git a/packages/core-components/src/components/Autocomplete/index.tsx b/plugins/catalog-react/src/components/CatalogAutocomplete/index.tsx similarity index 85% rename from packages/core-components/src/components/Autocomplete/index.tsx rename to plugins/catalog-react/src/components/CatalogAutocomplete/index.tsx index 404546de1a..7f1552c5bb 100644 --- a/packages/core-components/src/components/Autocomplete/index.tsx +++ b/plugins/catalog-react/src/components/CatalogAutocomplete/index.tsx @@ -14,6 +14,6 @@ * limitations under the License. */ export { - AutocompleteComponent as Autocomplete, - type AutocompleteComponentProps, -} from './Autocomplete'; + CatalogAutocomplete, + type CatalogAutocompleteProps, +} from './CatalogAutocomplete'; diff --git a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx index 3f4ec707c6..09b5c1e908 100644 --- a/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx +++ b/plugins/catalog-react/src/components/EntityAutocompletePicker/EntityAutocompletePicker.tsx @@ -27,8 +27,8 @@ import { useEntityList, } from '../../hooks/useEntityListProvider'; import { EntityFilter } from '../../types'; -import { Autocomplete } from '@backstage/core-components'; import { reduceBackendCatalogFilters } from '../../utils/filters'; +import { CatalogAutocomplete } from '../CatalogAutocomplete'; /** @public */ export type AllowedEntityFilters = { @@ -148,7 +148,7 @@ export function EntityAutocompletePicker< return ( - + multiple disableCloseOnSelect label={label} diff --git a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx index e26f231ff4..b70ec0bcb5 100644 --- a/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx +++ b/plugins/catalog-react/src/components/EntityOwnerPicker/EntityOwnerPicker.tsx @@ -27,7 +27,6 @@ import Tooltip from '@material-ui/core/Tooltip'; import { makeStyles } from '@material-ui/core/styles'; import CheckBoxIcon from '@material-ui/icons/CheckBox'; import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; -import { Autocomplete } from '@backstage/core-components'; import React, { useEffect, useMemo, useState } from 'react'; import { useEntityList } from '../../hooks/useEntityListProvider'; import { EntityOwnerFilter } from '../../filters'; @@ -40,6 +39,7 @@ import { withStyles } from '@material-ui/core/styles'; import { useEntityPresentation } from '../../apis'; import { catalogReactTranslationRef } from '../../translation'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; +import { CatalogAutocomplete } from '../CatalogAutocomplete'; /** @public */ export type CatalogReactEntityOwnerPickerClassKey = 'input'; @@ -177,7 +177,7 @@ export const EntityOwnerPicker = (props?: EntityOwnerPickerProps) => { return ( - + label={t('entityOwnerPicker.title')} multiple disableCloseOnSelect diff --git a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx index 891f6acc9e..a1b6e5b562 100644 --- a/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx +++ b/plugins/catalog-react/src/components/EntityProcessingStatusPicker/EntityProcessingStatusPicker.tsx @@ -23,9 +23,9 @@ import CheckBoxIcon from '@material-ui/icons/CheckBox'; import CheckBoxOutlineBlankIcon from '@material-ui/icons/CheckBoxOutlineBlank'; import React, { useState } from 'react'; import { useEntityList } from '../../hooks'; -import { Autocomplete } from '@backstage/core-components'; import { catalogReactTranslationRef } from '../../translation'; import { useTranslationRef } from '@backstage/core-plugin-api/alpha'; +import { CatalogAutocomplete } from '../CatalogAutocomplete'; /** @public */ export type CatalogReactEntityProcessingStatusPickerClassKey = 'input'; @@ -68,7 +68,7 @@ export const EntityProcessingStatusPicker = () => { return ( - + label={t('entityProcessingStatusPicker.title')} multiple disableCloseOnSelect From 4b264730f49071144129623fd5f62213d4fcd3ab Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Thu, 12 Dec 2024 16:09:43 +0000 Subject: [PATCH 043/213] update changesets Signed-off-by: Jonathan Roebuck --- .changeset/eleven-monkeys-cross.md | 5 ----- .changeset/fluffy-jars-protect.md | 2 +- 2 files changed, 1 insertion(+), 6 deletions(-) delete mode 100644 .changeset/eleven-monkeys-cross.md diff --git a/.changeset/eleven-monkeys-cross.md b/.changeset/eleven-monkeys-cross.md deleted file mode 100644 index 7a6ae45619..0000000000 --- a/.changeset/eleven-monkeys-cross.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@backstage/core-components': minor ---- - -Introduces a new core component, Autocomplete, which enhances the MUI Autocomplete component with custom input styling, improved popper animation, and better label positioning. This addition will standardize Autocomplete implementations across Backstage and ensure seamless integration with other core components such as Select. diff --git a/.changeset/fluffy-jars-protect.md b/.changeset/fluffy-jars-protect.md index 4fd6b3d194..89ff39d9af 100644 --- a/.changeset/fluffy-jars-protect.md +++ b/.changeset/fluffy-jars-protect.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-react': patch --- -Uses new Autocomplete component from core-components that aligns with Select component UI for consistent a dropdown UI for all catalog filters. +Creates new CatalogAutocomplete component in catalog-react that aligns with Select component UI for consistent a dropdown UI for all catalog filters. From e8778469ebe7adf04b81bd0138cfbdf90d67d645 Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Thu, 12 Dec 2024 16:14:04 +0000 Subject: [PATCH 044/213] remove public comments Signed-off-by: Jonathan Roebuck --- .../components/CatalogAutocomplete/CatalogAutocomplete.test.tsx | 2 +- .../src/components/CatalogAutocomplete/CatalogAutocomplete.tsx | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx b/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx index 51d272f4f1..e574919611 100644 --- a/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx +++ b/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.test.tsx @@ -19,7 +19,7 @@ import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { CatalogAutocomplete } from './CatalogAutocomplete'; -describe('Autocomplete', () => { +describe('CatalogAutocomplete', () => { const user = userEvent.setup(); const mockOptions = ['Option 1', 'Option 2', 'Option 3']; diff --git a/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.tsx b/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.tsx index 99df8dcad4..af41db8626 100644 --- a/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.tsx +++ b/plugins/catalog-react/src/components/CatalogAutocomplete/CatalogAutocomplete.tsx @@ -124,7 +124,6 @@ const PaperComponent = (props: PaperProps) => ( ); -/** @public */ export type CatalogAutocompleteProps< T, Multiple extends boolean | undefined = undefined, @@ -146,7 +145,6 @@ export type CatalogAutocompleteProps< >['renderInput']; }; -/** @public */ export function CatalogAutocomplete< T, Multiple extends boolean | undefined = undefined, From 893e92f0b8f1a9810c1f1ba2a8cc4de6b793da01 Mon Sep 17 00:00:00 2001 From: Jonathan Roebuck Date: Thu, 12 Dec 2024 16:17:24 +0000 Subject: [PATCH 045/213] rebuild api docs Signed-off-by: Jonathan Roebuck --- packages/core-components/report.api.md | 35 -------------------------- 1 file changed, 35 deletions(-) diff --git a/packages/core-components/report.api.md b/packages/core-components/report.api.md index b2872a086b..c3f7cf9a6a 100644 --- a/packages/core-components/report.api.md +++ b/packages/core-components/report.api.md @@ -6,7 +6,6 @@ /// import { ApiRef } from '@backstage/core-plugin-api'; -import { AutocompleteProps } from '@material-ui/lab/Autocomplete'; import { BackstageIdentityApi } from '@backstage/core-plugin-api'; import { BackstagePalette } from '@backstage/theme'; import { BackstageUserIdentity } from '@backstage/core-plugin-api'; @@ -34,7 +33,6 @@ import { MaterialTableProps } from '@material-table/core'; import { NavLinkProps } from 'react-router-dom'; import { Options } from 'react-markdown'; import { Options as Options_2 } from '@material-table/core'; -import { OutlinedTextFieldProps } from '@material-ui/core/TextField'; import { Overrides } from '@material-ui/core/styles/overrides'; import { ProfileInfo } from '@backstage/core-plugin-api'; import { ProfileInfoApi } from '@backstage/core-plugin-api'; @@ -53,7 +51,6 @@ import { StyleRules as StyleRules_2 } from '@material-ui/core/styles/withStyles' import { TabProps } from '@material-ui/core/Tab'; import { Theme } from '@material-ui/core/styles'; import { TooltipProps } from '@material-ui/core/Tooltip'; -import { TypographyProps } from '@material-ui/core/Typography'; import { WithStyles } from '@material-ui/core/styles'; // @public @@ -79,38 +76,6 @@ export type AppIconProps = IconComponentProps & { Fallback?: IconComponent; }; -// @public (undocumented) -export function Autocomplete< - T, - Multiple extends boolean | undefined = undefined, - DisableClearable extends boolean | undefined = undefined, - FreeSolo extends boolean | undefined = undefined, ->( - props: AutocompleteComponentProps, -): React_2.JSX.Element; - -// @public (undocumented) -export type AutocompleteComponentProps< - T, - Multiple extends boolean | undefined = undefined, - DisableClearable extends boolean | undefined = undefined, - FreeSolo extends boolean | undefined = undefined, -> = Omit< - AutocompleteProps, - 'PopperComponent' | 'PaperComponent' | 'popupIcon' | 'renderInput' -> & { - name: string; - label?: string; - LabelProps?: TypographyProps<'label'>; - TextFieldProps?: Omit; - renderInput?: AutocompleteProps< - T, - Multiple, - DisableClearable, - FreeSolo - >['renderInput']; -}; - // @public export const AutoLogout: (props: AutoLogoutProps) => JSX.Element | null; From 3e165dc19b2498c408950350cb41e7b6d79cd9e0 Mon Sep 17 00:00:00 2001 From: Ali Ok Date: Tue, 17 Dec 2024 08:30:54 +0300 Subject: [PATCH 046/213] Add Knative event mesh plugin to the plugin listing Signed-off-by: Ali Ok --- microsite/data/plugins/knative-event-mesh.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 microsite/data/plugins/knative-event-mesh.yaml diff --git a/microsite/data/plugins/knative-event-mesh.yaml b/microsite/data/plugins/knative-event-mesh.yaml new file mode 100644 index 0000000000..107114cc78 --- /dev/null +++ b/microsite/data/plugins/knative-event-mesh.yaml @@ -0,0 +1,9 @@ +--- +title: Knative Event Mesh +author: Knative Community +authorUrl: https://github.com/knative-extensions/backstage-plugins +category: Monitoring +description: A plugin that provides a way to view and manage Knative Event Mesh resources. +documentation: https://knative.dev/docs/install/installing-backstage-plugins/ +npmPackageName: '@knative-extensions/plugin-knative-event-mesh-backend' +addedDate: '2024-12-16' From 288611a3dcc22e690b0d02635f1ced235795965c Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Wed, 11 Dec 2024 08:19:51 +0100 Subject: [PATCH 047/213] Update plugin-scaffolder-node version to patch Signed-off-by: blam --- .changeset/strong-students-beg.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/strong-students-beg.md b/.changeset/strong-students-beg.md index 01fc24b996..5b3653d389 100644 --- a/.changeset/strong-students-beg.md +++ b/.changeset/strong-students-beg.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-scaffolder-node': minor +'@backstage/plugin-scaffolder-node': patch --- Deprecate the `logStream` option in `executeShellCommand`, replacing it with a logger instance. From edaf9258417224bd43cebb815001f9340aac40bc Mon Sep 17 00:00:00 2001 From: Jonathan Sundquist Date: Mon, 16 Dec 2024 13:41:38 -0600 Subject: [PATCH 048/213] Upates to allow users to subscribe to the newly created GitHub repo Signed-off-by: Jonathan Sundquist --- .changeset/breezy-coats-sort.md | 5 ++++ .../report.api.md | 2 ++ .../src/actions/github.test.ts | 25 +++++++++++++++++++ .../src/actions/github.ts | 4 +++ .../src/actions/githubRepoCreate.test.ts | 25 +++++++++++++++++++ .../src/actions/githubRepoCreate.ts | 4 +++ .../src/actions/helpers.ts | 10 ++++++++ .../src/actions/inputProperties.ts | 7 ++++++ 8 files changed, 82 insertions(+) create mode 100644 .changeset/breezy-coats-sort.md diff --git a/.changeset/breezy-coats-sort.md b/.changeset/breezy-coats-sort.md new file mode 100644 index 0000000000..862d60e4fc --- /dev/null +++ b/.changeset/breezy-coats-sort.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend-module-github': patch +--- + +Updates to allow users to subscribe to the newly created repository within GitHub to mimic similar functionality found within the GitHub UI. diff --git a/plugins/scaffolder-backend-module-github/report.api.md b/plugins/scaffolder-backend-module-github/report.api.md index 60ed9db5ef..935886bf14 100644 --- a/plugins/scaffolder-backend-module-github/report.api.md +++ b/plugins/scaffolder-backend-module-github/report.api.md @@ -279,6 +279,7 @@ export function createGithubRepoCreateAction(options: { [key: string]: string; } | undefined; + subscribe?: boolean | undefined; }, JsonObject >; @@ -441,6 +442,7 @@ export function createPublishGithubAction(options: { [key: string]: string; } | undefined; + subscribe?: boolean | undefined; }, JsonObject >; diff --git a/plugins/scaffolder-backend-module-github/src/actions/github.test.ts b/plugins/scaffolder-backend-module-github/src/actions/github.test.ts index f2f36e263a..2f629622d0 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/github.test.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/github.test.ts @@ -74,6 +74,9 @@ const mockOctokit = { createOrUpdateRepoSecret: jest.fn(), getRepoPublicKey: jest.fn(), }, + activity: { + setRepoSubscription: jest.fn(), + }, }, request: jest.fn(), }; @@ -1796,4 +1799,26 @@ describe('publish:github', () => { }); }, ); + + it('should add user subscription', async () => { + mockOctokit.rest.users.getByUsername.mockResolvedValue({ + data: { type: 'Organization' }, + }); + mockOctokit.rest.repos.createInOrg.mockResolvedValue({ data: {} }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + subscribe: true, + }, + }); + + expect(mockOctokit.rest.activity.setRepoSubscription).toHaveBeenCalledWith({ + owner: 'owner', + repo: 'repo', + subscribed: true, + ignored: false, + }); + }); }); diff --git a/plugins/scaffolder-backend-module-github/src/actions/github.ts b/plugins/scaffolder-backend-module-github/src/actions/github.ts index 6d8e0046c2..e3a9ff3352 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/github.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/github.ts @@ -117,6 +117,7 @@ export function createPublishGithubAction(options: { requiredCommitSigning?: boolean; requiredLinearHistory?: boolean; customProperties?: { [key: string]: string }; + subscribe?: boolean; }>({ id: 'publish:github', description: @@ -168,6 +169,7 @@ export function createPublishGithubAction(options: { requiredCommitSigning: inputProps.requiredCommitSigning, requiredLinearHistory: inputProps.requiredLinearHistory, customProperties: inputProps.customProperties, + subscribe: inputProps.subscribe, }, }, output: { @@ -218,6 +220,7 @@ export function createPublishGithubAction(options: { oidcCustomization, token: providedToken, customProperties, + subscribe = false, requiredCommitSigning = false, requiredLinearHistory = false, } = ctx.input; @@ -260,6 +263,7 @@ export function createPublishGithubAction(options: { secrets, oidcCustomization, customProperties, + subscribe, ctx.logger, ); diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts index 66d54366c5..864c5b729f 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.test.ts @@ -55,6 +55,9 @@ const mockOctokit = { createOrUpdateRepoSecret: jest.fn(), getRepoPublicKey: jest.fn(), }, + activity: { + setRepoSubscription: jest.fn(), + }, }, request: jest.fn(), }; @@ -754,4 +757,26 @@ describe('github:repo:create', () => { 'https://github.com/clone/url.git', ); }); + + it('should subscribe user to repository', async () => { + mockOctokit.rest.users.getByUsername.mockResolvedValue({ + data: { type: 'Organization' }, + }); + mockOctokit.rest.repos.createInOrg.mockResolvedValue({ data: {} }); + + await action.handler({ + ...mockContext, + input: { + ...mockContext.input, + subscribe: true, + }, + }); + + expect(mockOctokit.rest.activity.setRepoSubscription).toHaveBeenCalledWith({ + owner: 'owner', + repo: 'repo', + subscribed: true, + ignored: false, + }); + }); }); diff --git a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts index 61dea32c35..b4608e57de 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/githubRepoCreate.ts @@ -102,6 +102,7 @@ export function createGithubRepoCreateAction(options: { requireCommitSigning?: boolean; requiredLinearHistory?: boolean; customProperties?: { [key: string]: string }; + subscribe?: boolean; }>({ id: 'github:repo:create', description: 'Creates a GitHub repository.', @@ -143,6 +144,7 @@ export function createGithubRepoCreateAction(options: { requiredCommitSigning: inputProps.requiredCommitSigning, requiredLinearHistory: inputProps.requiredLinearHistory, customProperties: inputProps.customProperties, + subscribe: inputProps.subscribe, }, }, output: { @@ -176,6 +178,7 @@ export function createGithubRepoCreateAction(options: { secrets, oidcCustomization, customProperties, + subscribe, token: providedToken, } = ctx.input; @@ -217,6 +220,7 @@ export function createGithubRepoCreateAction(options: { secrets, oidcCustomization, customProperties, + subscribe, ctx.logger, ); diff --git a/plugins/scaffolder-backend-module-github/src/actions/helpers.ts b/plugins/scaffolder-backend-module-github/src/actions/helpers.ts index 9bba0ca359..242f95ce34 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/helpers.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/helpers.ts @@ -149,6 +149,7 @@ export async function createGithubRepoWithCollaboratorsAndTopics( } | undefined, customProperties: { [key: string]: string } | undefined, + subscribe: boolean | undefined, logger: LoggerService, ) { // eslint-disable-next-line testing-library/no-await-sync-queries @@ -330,6 +331,15 @@ export async function createGithubRepoWithCollaboratorsAndTopics( ); } + if (subscribe) { + await client.rest.activity.setRepoSubscription({ + subscribed: true, + ignored: false, + owner, + repo, + }); + } + return newRepo; } diff --git a/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts b/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts index 2c86cf492e..8b30168225 100644 --- a/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts +++ b/plugins/scaffolder-backend-module-github/src/actions/inputProperties.ts @@ -317,6 +317,12 @@ const customProperties = { type: 'object', }; +const subscribe = { + title: 'Subscribe to repository', + description: `Subscribe to the repository. The default value is 'false'`, + type: 'boolean', +}; + export { access }; export { allowMergeCommit }; export { allowRebaseMerge }; @@ -357,3 +363,4 @@ export { repoVariables }; export { secrets }; export { oidcCustomization }; export { customProperties }; +export { subscribe }; From 303fc5d8fb86e2f404605f8079b7eec87d72083d Mon Sep 17 00:00:00 2001 From: Aditya Kumar Date: Wed, 18 Dec 2024 15:21:51 +0530 Subject: [PATCH 049/213] minor updates in provider doc file Signed-off-by: Aditya Kumar --- docs/auth/atlassian/provider.md | 16 ++++++++-------- docs/auth/auth0/provider.md | 22 +++++++++++----------- docs/auth/aws-alb/provider.md | 14 +++++++------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/docs/auth/atlassian/provider.md b/docs/auth/atlassian/provider.md index f4793d4f51..0292930c27 100644 --- a/docs/auth/atlassian/provider.md +++ b/docs/auth/atlassian/provider.md @@ -22,7 +22,7 @@ To add Atlassian authentication, you must create an OAuth 2.0 (3LO) app. Go to `https://developer.atlassian.com/console/myapps/`. -Click on the drop down `Create`, and choose `OAuth 2.0 integration`. +Click on the drop-down `Create` and choose `OAuth 2.0 integration`. Name your integration and click on the `Create` button. @@ -59,27 +59,27 @@ The Atlassian provider is a structure with three configuration keys: - `clientSecret`: The Secret tied to the generated Key. - `scope`: List of scopes the app has permissions for, separated by spaces. -**NOTE:** the scopes `offline_access`, `read:jira-work`, and `read:jira-user` are provided by default. +**NOTE:** The scopes `offline_access`, `read:jira-work`, and `read:jira-user` are provided by default. ### Resolvers This provider includes several resolvers out of the box that you can use: -- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. -- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. -- `usernameMatchingUserEntityName`: Matches the username from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found, it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. +- `usernameMatchingUserEntityName`: Matches the username from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. :::note Note -The resolvers will be tried in order, but will only be skipped if they throw a `NotFoundError`. +The resolvers will be tried in order but will only be skipped if they throw a `NotFoundError`. ::: -If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. +If these resolvers do not fit your needs, you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. ## Backend Installation -To add the provider to the backend we will first need to install the package by running this command: +To add the provider to the backend, we will first need to install the package by running this command: ```bash title="from your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-atlassian-provider diff --git a/docs/auth/auth0/provider.md b/docs/auth/auth0/provider.md index bc2a02fe1f..2873a2cace 100644 --- a/docs/auth/auth0/provider.md +++ b/docs/auth/auth0/provider.md @@ -22,10 +22,10 @@ provider that can authenticate users using OAuth. 3. Create an Application - Name: Backstage (or your custom app name) - Application type: Single Page Web Application -4. Click on the Settings tab +4. Click on the Settings tab. 5. Add under `Application URIs` > `Allowed Callback URLs`: `http://localhost:7007/api/auth/auth0/handler/frame` -6. Click `Save Changes` +6. Click `Save Changes`. ## Configuration @@ -50,10 +50,10 @@ auth: The Auth0 provider is a structure with these configuration keys: -- `clientId`: The Application client ID, found on the Auth0 Application page +- `clientId`: The Application client ID, found on the Auth0 Application page. - `clientSecret`: The Application client secret, found on the Auth0 Application - page -- `domain`: The Application domain, found on the Auth0 Application page + page. +- `domain`: The Application domain, found on the Auth0 Application page. It additionally relies on the following configuration to function: @@ -63,16 +63,16 @@ Auth0 requires a session, so you need to give the session a secret key. ### Optional -- `audience`: The intended recipients of the token +- `audience`: The intended recipients of the token. - `connection`: Social identity provider name. To check the available social connections, please visit [Auth0 Social Connections](https://marketplace.auth0.com/features/social-connections). -- `connectionScope`: Additional scopes in the interactive token request. It should always be used in combination with the `connection` parameter +- `connectionScope`: Additional scopes in the interactive token request. It should always be used in combination with the `connection` parameter. ### Resolvers This provider includes several resolvers out of the box that you can use: -- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. -- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found, it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. :::note Note @@ -80,11 +80,11 @@ The resolvers will be tried in order, but will only be skipped if they throw a ` ::: -If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. +If these resolvers do not fit your needs, you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. ## Backend Installation -To add the provider to the backend we will first need to install the package by running this command: +To add the provider to the backend, we will first need to install the package by running this command: ```bash title="from your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-auth0-provider diff --git a/docs/auth/aws-alb/provider.md b/docs/auth/aws-alb/provider.md index 8ce1eba5ab..5380877f86 100644 --- a/docs/auth/aws-alb/provider.md +++ b/docs/auth/aws-alb/provider.md @@ -5,7 +5,7 @@ sidebar_label: AWS ALB description: Adding AWS ALB as an authentication provider in Backstage --- -Backstage can de deployed behind [AWS Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) +Backstage can be deployed behind [AWS Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html) and get the user seamlessly authenticated. ## Configuration @@ -35,20 +35,20 @@ Ensure that you have set the signer correctly. It is also recommended that you r This provider includes several resolvers out of the box that you can use: -- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found it will throw a `NotFoundError`. -- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found it will throw a `NotFoundError`. +- `emailMatchingUserEntityProfileEmail`: Matches the email address from the auth provider with the User entity that has a matching `spec.profile.email`. If no match is found, it will throw a `NotFoundError`. +- `emailLocalPartMatchingUserEntityName`: Matches the [local part](https://en.wikipedia.org/wiki/Email_address#Local-part) of the email address from the auth provider with the User entity that has a matching `name`. If no match is found, it will throw a `NotFoundError`. :::note Note -The resolvers will be tried in order, but will only be skipped if they throw a `NotFoundError`. +The resolvers will be tried in order but will only be skipped if they throw a `NotFoundError`. ::: -If these resolvers do not fit your needs you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. +If these resolvers do not fit your needs, you can build a custom resolver, this is covered in the [Building Custom Resolvers](../identity-resolver.md#building-custom-resolvers) section of the Sign-in Identities and Resolvers documentation. ## Backend Installation -To add the provider to the backend we will first need to install the package by running this command: +To add the provider to the backend, we will first need to install the package by running this command: ```bash title="from your Backstage root directory" yarn --cwd packages/backend add @backstage/plugin-auth-backend-module-aws-alb-provider @@ -65,6 +65,6 @@ backend.add(import('@backstage/plugin-auth-backend-module-aws-alb-provider')); ## Adding the provider to the Backstage frontend -See [Sign-In with Proxy Providers](../index.md#sign-in-with-proxy-providers) for pointers on how to set up the sign-in page, and to also make it work smoothly for local development. You'll use `awsalb` as the provider name. +See [Sign-In with Proxy Providers](../index.md#sign-in-with-proxy-providers) for pointers on how to set up the sign-in page and also make it work smoothly for local development. You'll use `awsalb` as the provider name. If you [provide a custom sign in resolver](https://backstage.io/docs/auth/identity-resolver#building-custom-resolvers), you can skip the `signIn` block entirely. From dd515e3b23913b44fb23aba7f715474ee235e8fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 18 Dec 2024 13:27:27 +0100 Subject: [PATCH 050/213] remove old backend support in the catalog collator MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/quick-poems-cover.md | 7 ++ .changeset/spicy-tomatoes-hammer.md | 5 ++ packages/backend-legacy/src/plugins/search.ts | 11 --- plugins/catalog-backend/report.api.md | 9 --- plugins/catalog-backend/src/deprecated.ts | 15 ---- .../package.json | 20 +---- .../report-alpha.api.md | 13 --- .../report.api.md | 47 +---------- .../src/alpha.ts | 21 ----- .../DefaultCatalogCollatorFactory.test.ts | 67 +++++++++------ .../DefaultCatalogCollatorFactory.ts | 81 +++++-------------- .../src/collators/index.ts | 3 - .../src/index.ts | 8 +- .../src/module.test.ts | 6 +- .../src/module.ts | 26 ++---- 15 files changed, 98 insertions(+), 241 deletions(-) create mode 100644 .changeset/quick-poems-cover.md create mode 100644 .changeset/spicy-tomatoes-hammer.md delete mode 100644 plugins/search-backend-module-catalog/report-alpha.api.md delete mode 100644 plugins/search-backend-module-catalog/src/alpha.ts diff --git a/.changeset/quick-poems-cover.md b/.changeset/quick-poems-cover.md new file mode 100644 index 0000000000..099bb550fb --- /dev/null +++ b/.changeset/quick-poems-cover.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-search-backend-module-catalog': minor +--- + +**BREAKING**: Removed support for the old backend system. Please [migrate to the new backend system](https://backstage.io/docs/backend-system/) and enable [the catalog collator](https://backstage.io/docs/features/search/collators#catalog) there. + +As part of this, the `/alpha` export path is gone too. Just import the module from the root of the package as usual instead. diff --git a/.changeset/spicy-tomatoes-hammer.md b/.changeset/spicy-tomatoes-hammer.md new file mode 100644 index 0000000000..20564b9a05 --- /dev/null +++ b/.changeset/spicy-tomatoes-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': minor +--- + +Removed the long-deprecated `DefaultCatalogCollatorFactory` and `DefaultCatalogCollatorFactoryOptions` exports, which now no longer exist in the search plugin's offerings. If you were using these, you want to migrate to [the new backend system](https://backstage.io/docs/backend-system/) and use the [catalog collator](https://backstage.io/docs/features/search/collators#catalog) directly. diff --git a/packages/backend-legacy/src/plugins/search.ts b/packages/backend-legacy/src/plugins/search.ts index dcdcfa9b79..1991b282e1 100644 --- a/packages/backend-legacy/src/plugins/search.ts +++ b/packages/backend-legacy/src/plugins/search.ts @@ -15,7 +15,6 @@ */ import { useHotCleanup } from '@backstage/backend-common'; -import { DefaultCatalogCollatorFactory } from '@backstage/plugin-search-backend-module-catalog'; import { ToolDocumentCollatorFactory } from '@backstage/plugin-search-backend-module-explore'; import { createRouter } from '@backstage/plugin-search-backend'; import { ElasticSearchSearchEngine } from '@backstage/plugin-search-backend-module-elasticsearch'; @@ -67,16 +66,6 @@ export default async function createPlugin( initialDelay: { seconds: 3 }, }); - // Collators are responsible for gathering documents known to plugins. This - // particular collator gathers entities from the software catalog. - indexBuilder.addCollator({ - schedule, - factory: DefaultCatalogCollatorFactory.fromConfig(env.config, { - discovery: env.discovery, - tokenManager: env.tokenManager, - }), - }); - indexBuilder.addCollator({ schedule, factory: DefaultTechDocsCollatorFactory.fromConfig(env.config, { diff --git a/plugins/catalog-backend/report.api.md b/plugins/catalog-backend/report.api.md index a200057a3a..dc277026f4 100644 --- a/plugins/catalog-backend/report.api.md +++ b/plugins/catalog-backend/report.api.md @@ -28,8 +28,6 @@ import { CatalogProcessorRelationResult as CatalogProcessorRelationResult_2 } fr import { CatalogProcessorResult as CatalogProcessorResult_2 } from '@backstage/plugin-catalog-node'; import { Config } from '@backstage/config'; import { DatabaseService } from '@backstage/backend-plugin-api'; -import { DefaultCatalogCollatorFactory as DefaultCatalogCollatorFactory_2 } from '@backstage/plugin-search-backend-module-catalog'; -import { DefaultCatalogCollatorFactoryOptions as DefaultCatalogCollatorFactoryOptions_2 } from '@backstage/plugin-search-backend-module-catalog'; import { DeferredEntity as DeferredEntity_2 } from '@backstage/plugin-catalog-node'; import { DiscoveryService } from '@backstage/backend-plugin-api'; import { EntitiesSearchFilter as EntitiesSearchFilter_2 } from '@backstage/plugin-catalog-node'; @@ -326,13 +324,6 @@ export class DefaultCatalogCollator { // @public @deprecated (undocumented) export const defaultCatalogCollatorEntityTransformer: CatalogCollatorEntityTransformer_2; -// @public @deprecated (undocumented) -export const DefaultCatalogCollatorFactory: typeof DefaultCatalogCollatorFactory_2; - -// @public @deprecated (undocumented) -export type DefaultCatalogCollatorFactoryOptions = - DefaultCatalogCollatorFactoryOptions_2; - // @public @deprecated (undocumented) export type DeferredEntity = DeferredEntity_2; diff --git a/plugins/catalog-backend/src/deprecated.ts b/plugins/catalog-backend/src/deprecated.ts index 2d08d2ce0c..3865852214 100644 --- a/plugins/catalog-backend/src/deprecated.ts +++ b/plugins/catalog-backend/src/deprecated.ts @@ -53,9 +53,7 @@ import { } from '@backstage/plugin-catalog-node'; import { defaultCatalogCollatorEntityTransformer as _defaultCatalogCollatorEntityTransformer, - DefaultCatalogCollatorFactory as _DefaultCatalogCollatorFactory, type CatalogCollatorEntityTransformer as _CatalogCollatorEntityTransformer, - type DefaultCatalogCollatorFactoryOptions as _DefaultCatalogCollatorFactoryOptions, } from '@backstage/plugin-search-backend-module-catalog'; /** @@ -254,12 +252,6 @@ export type AnalyzeLocationGenerateEntity = _AnalyzeLocationGenerateEntity; */ export type AnalyzeLocationEntityField = _AnalyzeLocationEntityField; -/** - * @public - * @deprecated import from `@backstage/plugin-search-backend-module-catalog` instead - */ -export const DefaultCatalogCollatorFactory = _DefaultCatalogCollatorFactory; - /** * @public * @deprecated import from `@backstage/plugin-search-backend-module-catalog` instead @@ -267,13 +259,6 @@ export const DefaultCatalogCollatorFactory = _DefaultCatalogCollatorFactory; export const defaultCatalogCollatorEntityTransformer = _defaultCatalogCollatorEntityTransformer; -/** - * @public - * @deprecated import from `@backstage/plugin-search-backend-module-catalog` instead - */ -export type DefaultCatalogCollatorFactoryOptions = - _DefaultCatalogCollatorFactoryOptions; - /** * @public * @deprecated import from `@backstage/plugin-search-backend-module-catalog` instead diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json index 9a6cc9f2bc..6b4307c6c0 100644 --- a/plugins/search-backend-module-catalog/package.json +++ b/plugins/search-backend-module-catalog/package.json @@ -8,7 +8,9 @@ "pluginPackage": "@backstage/plugin-search-backend" }, "publishConfig": { - "access": "public" + "access": "public", + "main": "dist/index.cjs.js", + "types": "dist/index.d.ts" }, "homepage": "https://backstage.io", "repository": { @@ -17,23 +19,8 @@ "directory": "plugins/search-backend-module-catalog" }, "license": "Apache-2.0", - "exports": { - ".": "./src/index.ts", - "./alpha": "./src/alpha.ts", - "./package.json": "./package.json" - }, "main": "src/index.ts", "types": "src/index.ts", - "typesVersions": { - "*": { - "alpha": [ - "src/alpha.ts" - ], - "package.json": [ - "package.json" - ] - } - }, "files": [ "dist", "config.d.ts" @@ -48,7 +35,6 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-client": "workspace:^", "@backstage/catalog-model": "workspace:^", diff --git a/plugins/search-backend-module-catalog/report-alpha.api.md b/plugins/search-backend-module-catalog/report-alpha.api.md deleted file mode 100644 index a622e05a3e..0000000000 --- a/plugins/search-backend-module-catalog/report-alpha.api.md +++ /dev/null @@ -1,13 +0,0 @@ -## API Report File for "@backstage/plugin-search-backend-module-catalog" - -> 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 (undocumented) -const _feature: BackendFeature; -export default _feature; - -// (No @packageDocumentation comment for this package) -``` diff --git a/plugins/search-backend-module-catalog/report.api.md b/plugins/search-backend-module-catalog/report.api.md index 76314dcdf5..17460d28c8 100644 --- a/plugins/search-backend-module-catalog/report.api.md +++ b/plugins/search-backend-module-catalog/report.api.md @@ -3,22 +3,10 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -/// - -import { AuthService } from '@backstage/backend-plugin-api'; import { BackendFeature } from '@backstage/backend-plugin-api'; -import { CatalogApi } from '@backstage/catalog-client'; -import { CatalogCollatorEntityTransformer as CatalogCollatorEntityTransformer_2 } from '@backstage/plugin-search-backend-module-catalog'; import { CatalogEntityDocument } from '@backstage/plugin-catalog-common'; -import { Config } from '@backstage/config'; -import { DiscoveryService } from '@backstage/backend-plugin-api'; -import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; import { Entity } from '@backstage/catalog-model'; import { ExtensionPoint } from '@backstage/backend-plugin-api'; -import { GetEntitiesRequest } from '@backstage/catalog-client'; -import { Permission } from '@backstage/plugin-permission-common'; -import { Readable } from 'stream'; -import { TokenManager } from '@backstage/backend-common'; // @public (undocumented) export type CatalogCollatorEntityTransformer = ( @@ -27,43 +15,16 @@ export type CatalogCollatorEntityTransformer = ( // @public export type CatalogCollatorExtensionPoint = { - setEntityTransformer(transformer: CatalogCollatorEntityTransformer_2): void; + setEntityTransformer(transformer: CatalogCollatorEntityTransformer): void; }; // @public export const catalogCollatorExtensionPoint: ExtensionPoint; -// @public -const _default: BackendFeature; -export default _default; - // @public (undocumented) export const defaultCatalogCollatorEntityTransformer: CatalogCollatorEntityTransformer; -// @public @deprecated -export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { - // (undocumented) - static fromConfig( - configRoot: Config, - options: DefaultCatalogCollatorFactoryOptions, - ): DefaultCatalogCollatorFactory; - // (undocumented) - getCollator(): Promise; - // (undocumented) - readonly type = 'software-catalog'; - // (undocumented) - readonly visibilityPermission: Permission; -} - -// @public @deprecated (undocumented) -export type DefaultCatalogCollatorFactoryOptions = { - auth?: AuthService; - discovery: DiscoveryService; - tokenManager?: TokenManager; - locationTemplate?: string; - filter?: GetEntitiesRequest['filter']; - batchSize?: number; - catalogClient?: CatalogApi; - entityTransformer?: CatalogCollatorEntityTransformer; -}; +// @public +const searchBackendModule: BackendFeature; +export default searchBackendModule; ``` diff --git a/plugins/search-backend-module-catalog/src/alpha.ts b/plugins/search-backend-module-catalog/src/alpha.ts deleted file mode 100644 index e5554e85bd..0000000000 --- a/plugins/search-backend-module-catalog/src/alpha.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2024 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 { default as feature } from './module'; - -/** @alpha */ -const _feature = feature; -export default _feature; diff --git a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts index d4c77c617d..68aedbdef8 100644 --- a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts +++ b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.test.ts @@ -16,7 +16,6 @@ import { mockServices } from '@backstage/backend-test-utils'; import { Entity } from '@backstage/catalog-model'; -import { ConfigReader } from '@backstage/config'; import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils'; import { TestPipeline } from '@backstage/plugin-search-backend-node'; import { Readable } from 'stream'; @@ -54,9 +53,7 @@ const expectedEntities: Entity[] = [ describe('DefaultCatalogCollatorFactory', () => { const config = mockServices.rootConfig(); - const discovery = mockServices.discovery.mock({ - getBaseUrl: async () => 'http://localhost:7007', - }); + const auth = mockServices.auth(); const catalog = catalogServiceMock({ entities: expectedEntities }); describe('getCollator', () => { @@ -65,8 +62,8 @@ describe('DefaultCatalogCollatorFactory', () => { beforeEach(async () => { factory = DefaultCatalogCollatorFactory.fromConfig(config, { - discovery, - catalogClient: catalog, + auth, + catalog, }); collator = await factory.getCollator(); }); @@ -117,8 +114,8 @@ describe('DefaultCatalogCollatorFactory', () => { it('maps a returned entity to an expected CatalogEntityDocument with custom transformer', async () => { const customFactory = DefaultCatalogCollatorFactory.fromConfig(config, { - discovery, - catalogClient: catalog, + auth, + catalog, entityTransformer: entity => ({ title: `custom-title-${ entity.metadata.title ?? entity.metadata.name @@ -173,11 +170,19 @@ describe('DefaultCatalogCollatorFactory', () => { it('maps a returned entity with a custom locationTemplate', async () => { // Provide an alternate location template. - factory = DefaultCatalogCollatorFactory.fromConfig(new ConfigReader({}), { - discovery: discovery, - catalogClient: catalog, - locationTemplate: '/software/:name', - }); + factory = DefaultCatalogCollatorFactory.fromConfig( + mockServices.rootConfig({ + data: { + search: { + collators: { catalog: { locationTemplate: '/software/:name' } }, + }, + }, + }), + { + auth, + catalog, + }, + ); collator = await factory.getCollator(); const pipeline = TestPipeline.fromCollator(collator); @@ -189,13 +194,19 @@ describe('DefaultCatalogCollatorFactory', () => { it('allows filtering of the retrieved catalog entities', async () => { // Provide a custom filter. - factory = DefaultCatalogCollatorFactory.fromConfig(new ConfigReader({}), { - discovery: discovery, - catalogClient: catalog, - filter: { - kind: ['Foo', 'Bar'], + factory = DefaultCatalogCollatorFactory.fromConfig( + mockServices.rootConfig({ + data: { + search: { + collators: { catalog: { filter: { kind: ['Foo', 'Bar'] } } }, + }, + }, + }), + { + auth, + catalog, }, - }); + ); collator = await factory.getCollator(); const pipeline = TestPipeline.fromCollator(collator); @@ -206,11 +217,19 @@ describe('DefaultCatalogCollatorFactory', () => { }); it('paginates through catalog entities using batchSize', async () => { - factory = DefaultCatalogCollatorFactory.fromConfig(config, { - discovery, - catalogClient: catalog, - batchSize: 1, - }); + factory = DefaultCatalogCollatorFactory.fromConfig( + mockServices.rootConfig({ + data: { + search: { + collators: { catalog: { batchSize: 1 } }, + }, + }, + }), + { + auth, + catalog, + }, + ); collator = await factory.getCollator(); const pipeline = TestPipeline.fromCollator(collator); diff --git a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts index ff3e81843b..1cef2e21df 100644 --- a/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts +++ b/plugins/search-backend-module-catalog/src/collators/DefaultCatalogCollatorFactory.ts @@ -14,20 +14,13 @@ * limitations under the License. */ -import { - TokenManager, - createLegacyAuthAdapters, -} from '@backstage/backend-common'; -import { AuthService, DiscoveryService } from '@backstage/backend-plugin-api'; -import { - CatalogApi, - CatalogClient, - GetEntitiesRequest, -} from '@backstage/catalog-client'; +import { AuthService } from '@backstage/backend-plugin-api'; +import { QueryEntitiesInitialRequest } from '@backstage/catalog-client'; import { stringifyEntityRef } from '@backstage/catalog-model'; import { Config } from '@backstage/config'; import { CatalogEntityDocument } from '@backstage/plugin-catalog-common'; import { catalogEntityReadPermission } from '@backstage/plugin-catalog-common/alpha'; +import { CatalogService } from '@backstage/plugin-catalog-node'; import { Permission } from '@backstage/plugin-permission-common'; import { DocumentCollatorFactory } from '@backstage/plugin-search-common'; import { Readable } from 'stream'; @@ -35,29 +28,10 @@ import { CatalogCollatorEntityTransformer } from './CatalogCollatorEntityTransfo import { readCollatorConfigOptions } from './config'; import { defaultCatalogCollatorEntityTransformer } from './defaultCatalogCollatorEntityTransformer'; -/** - * @public - * @deprecated This type is deprecated along with the {@link DefaultCatalogCollatorFactory}. - */ export type DefaultCatalogCollatorFactoryOptions = { - auth?: AuthService; - discovery: DiscoveryService; - tokenManager?: TokenManager; - /** - * @deprecated Use the config key `search.collators.catalog.locationTemplate` instead. - */ - locationTemplate?: string; - /** - * @deprecated Use the config key `search.collators.catalog.filter` instead. - */ - filter?: GetEntitiesRequest['filter']; - /** - * @deprecated Use the config key `search.collators.catalog.batchSize` instead. - */ - batchSize?: number; - // TODO(freben): Change to required CatalogService instead when fully migrated to the new backend system. - catalogClient?: CatalogApi; - /** + auth: AuthService; + catalog: CatalogService; + /* * Allows you to customize how entities are shaped into documents. */ entityTransformer?: CatalogCollatorEntityTransformer; @@ -65,9 +39,6 @@ export type DefaultCatalogCollatorFactoryOptions = { /** * Collates entities from the Catalog into documents for the search backend. - * - * @public - * @deprecated Migrate to the {@link https://backstage.io/docs/backend-system/building-backends/migrating | new backend system} and install this collator via module instead (see {@link https://github.com/backstage/backstage/blob/nbs10/search-deprecate-create-router/plugins/search-backend-module-catalog/README.md#installation | here} for more installation details). */ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { public readonly type = 'software-catalog'; @@ -75,9 +46,9 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { catalogEntityReadPermission; private locationTemplate: string; - private filter?: GetEntitiesRequest['filter']; + private filter?: QueryEntitiesInitialRequest['filter']; private batchSize: number; - private readonly catalogClient: CatalogApi; + private readonly catalog: CatalogService; private entityTransformer: CatalogCollatorEntityTransformer; private auth: AuthService; @@ -86,47 +57,37 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { options: DefaultCatalogCollatorFactoryOptions, ) { const configOptions = readCollatorConfigOptions(configRoot); - const { auth: adaptedAuth } = createLegacyAuthAdapters({ - auth: options.auth, - discovery: options.discovery, - tokenManager: options.tokenManager, - }); return new DefaultCatalogCollatorFactory({ - locationTemplate: - options.locationTemplate ?? configOptions.locationTemplate, - filter: options.filter ?? configOptions.filter, - batchSize: options.batchSize ?? configOptions.batchSize, + locationTemplate: configOptions.locationTemplate, + filter: configOptions.filter, + batchSize: configOptions.batchSize, entityTransformer: options.entityTransformer, - auth: adaptedAuth, - discovery: options.discovery, - catalogClient: options.catalogClient, + auth: options.auth, + catalog: options.catalog, }); } private constructor(options: { locationTemplate: string; - filter: GetEntitiesRequest['filter']; + filter: QueryEntitiesInitialRequest['filter']; batchSize: number; entityTransformer?: CatalogCollatorEntityTransformer; auth: AuthService; - discovery: DiscoveryService; - catalogClient?: CatalogApi; + catalog: CatalogService; }) { const { auth, batchSize, - discovery, locationTemplate, filter, - catalogClient, + catalog, entityTransformer, } = options; this.locationTemplate = locationTemplate; this.filter = filter; this.batchSize = batchSize; - this.catalogClient = - catalogClient || new CatalogClient({ discoveryApi: discovery }); + this.catalog = catalog; this.entityTransformer = entityTransformer ?? defaultCatalogCollatorEntityTransformer; this.auth = auth; @@ -141,17 +102,13 @@ export class DefaultCatalogCollatorFactory implements DocumentCollatorFactory { let cursor: string | undefined = undefined; do { - const { token } = await this.auth.getPluginRequestToken({ - onBehalfOf: await this.auth.getOwnServiceCredentials(), - targetPluginId: 'catalog', - }); - const response = await this.catalogClient.queryEntities( + const response = await this.catalog.queryEntities( { filter: this.filter, limit: this.batchSize, ...(cursor ? { cursor } : {}), }, - { token }, + { credentials: await this.auth.getOwnServiceCredentials() }, ); cursor = response.pageInfo.nextCursor; entitiesRetrieved += response.items.length; diff --git a/plugins/search-backend-module-catalog/src/collators/index.ts b/plugins/search-backend-module-catalog/src/collators/index.ts index 5876e71a02..d4fbbab760 100644 --- a/plugins/search-backend-module-catalog/src/collators/index.ts +++ b/plugins/search-backend-module-catalog/src/collators/index.ts @@ -14,8 +14,5 @@ * limitations under the License. */ -export { DefaultCatalogCollatorFactory } from './DefaultCatalogCollatorFactory'; -export type { DefaultCatalogCollatorFactoryOptions } from './DefaultCatalogCollatorFactory'; - export { defaultCatalogCollatorEntityTransformer } from './defaultCatalogCollatorEntityTransformer'; export type { CatalogCollatorEntityTransformer } from './CatalogCollatorEntityTransformer'; diff --git a/plugins/search-backend-module-catalog/src/index.ts b/plugins/search-backend-module-catalog/src/index.ts index 3e0ec59cc0..60e8db394a 100644 --- a/plugins/search-backend-module-catalog/src/index.ts +++ b/plugins/search-backend-module-catalog/src/index.ts @@ -16,9 +16,13 @@ /** * @packageDocumentation + * * A module for the search backend that exports Catalog modules. */ -export * from './module'; -export { default } from './module'; +export { + type CatalogCollatorExtensionPoint, + catalogCollatorExtensionPoint, + searchBackendModule as default, +} from './module'; export * from './collators'; diff --git a/plugins/search-backend-module-catalog/src/module.test.ts b/plugins/search-backend-module-catalog/src/module.test.ts index d05c96c8ec..a24694ca29 100644 --- a/plugins/search-backend-module-catalog/src/module.test.ts +++ b/plugins/search-backend-module-catalog/src/module.test.ts @@ -16,7 +16,7 @@ import { mockServices, startTestBackend } from '@backstage/backend-test-utils'; import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha'; -import searchModuleCatalogCollator from './module'; +import { searchBackendModule } from './module'; describe('searchModuleCatalogCollator', () => { it('should register the catalog collator to the search index registry extension point with factory and schedule', async () => { @@ -28,7 +28,7 @@ describe('searchModuleCatalogCollator', () => { extensionPoints: [ [searchIndexRegistryExtensionPoint, extensionPointMock], ], - features: [searchModuleCatalogCollator], + features: [searchBackendModule], }); expect(extensionPointMock.addCollator).toHaveBeenCalledTimes(1); @@ -50,7 +50,7 @@ describe('searchModuleCatalogCollator', () => { ], ], features: [ - searchModuleCatalogCollator, + searchBackendModule, mockServices.rootConfig.factory({ data: { search: { diff --git a/plugins/search-backend-module-catalog/src/module.ts b/plugins/search-backend-module-catalog/src/module.ts index 3256a2b32f..01b2d37e7c 100644 --- a/plugins/search-backend-module-catalog/src/module.ts +++ b/plugins/search-backend-module-catalog/src/module.ts @@ -16,7 +16,8 @@ /** * @packageDocumentation - * A module for the search backend that exports Catalog modules. + * + * A collator module for the search backend that indexes your software catalog. */ import { @@ -24,13 +25,11 @@ import { createBackendModule, createExtensionPoint, } from '@backstage/backend-plugin-api'; -import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; -import { - CatalogCollatorEntityTransformer, - DefaultCatalogCollatorFactory, -} from '@backstage/plugin-search-backend-module-catalog'; +import { catalogServiceRef } from '@backstage/plugin-catalog-node'; import { searchIndexRegistryExtensionPoint } from '@backstage/plugin-search-backend-node/alpha'; import { readScheduleConfigOptions } from './collators/config'; +import { CatalogCollatorEntityTransformer } from './collators'; +import { DefaultCatalogCollatorFactory } from './collators/DefaultCatalogCollatorFactory'; /** * Options for {@link catalogCollatorExtensionPoint}. @@ -60,7 +59,7 @@ export const catalogCollatorExtensionPoint = * * @public */ -export default createBackendModule({ +export const searchBackendModule = createBackendModule({ pluginId: 'search', moduleId: 'catalog-collator', register(env) { @@ -79,28 +78,19 @@ export default createBackendModule({ deps: { auth: coreServices.auth, config: coreServices.rootConfig, - discovery: coreServices.discovery, scheduler: coreServices.scheduler, indexRegistry: searchIndexRegistryExtensionPoint, catalog: catalogServiceRef, }, - async init({ - auth, - config, - discovery, - scheduler, - indexRegistry, - catalog, - }) { + async init({ auth, config, scheduler, indexRegistry, catalog }) { indexRegistry.addCollator({ schedule: scheduler.createScheduledTaskRunner( readScheduleConfigOptions(config), ), factory: DefaultCatalogCollatorFactory.fromConfig(config, { auth, + catalog, entityTransformer, - discovery, - catalogClient: catalog, }), }); }, From cb16f4cfa85ecfd536242e290fad5ac8be22e9e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Wed, 18 Dec 2024 14:17:24 +0100 Subject: [PATCH 051/213] rename module variable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- plugins/search-backend-module-catalog/report.api.md | 4 ++-- plugins/search-backend-module-catalog/src/index.ts | 2 +- plugins/search-backend-module-catalog/src/module.test.ts | 6 +++--- plugins/search-backend-module-catalog/src/module.ts | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/search-backend-module-catalog/report.api.md b/plugins/search-backend-module-catalog/report.api.md index 17460d28c8..ab20ea29d3 100644 --- a/plugins/search-backend-module-catalog/report.api.md +++ b/plugins/search-backend-module-catalog/report.api.md @@ -25,6 +25,6 @@ export const catalogCollatorExtensionPoint: ExtensionPoint { it('should register the catalog collator to the search index registry extension point with factory and schedule', async () => { @@ -28,7 +28,7 @@ describe('searchModuleCatalogCollator', () => { extensionPoints: [ [searchIndexRegistryExtensionPoint, extensionPointMock], ], - features: [searchBackendModule], + features: [searchModuleCatalogCollator], }); expect(extensionPointMock.addCollator).toHaveBeenCalledTimes(1); @@ -50,7 +50,7 @@ describe('searchModuleCatalogCollator', () => { ], ], features: [ - searchBackendModule, + searchModuleCatalogCollator, mockServices.rootConfig.factory({ data: { search: { diff --git a/plugins/search-backend-module-catalog/src/module.ts b/plugins/search-backend-module-catalog/src/module.ts index 01b2d37e7c..32fe4e4728 100644 --- a/plugins/search-backend-module-catalog/src/module.ts +++ b/plugins/search-backend-module-catalog/src/module.ts @@ -59,7 +59,7 @@ export const catalogCollatorExtensionPoint = * * @public */ -export const searchBackendModule = createBackendModule({ +export const searchModuleCatalogCollator = createBackendModule({ pluginId: 'search', moduleId: 'catalog-collator', register(env) { From ddf8d7cbcbacdb3b1c277f7a3a1495034b386cf3 Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Wed, 18 Dec 2024 21:24:37 +0700 Subject: [PATCH 052/213] Update environment variable name in kubernetes deployment docs Signed-off-by: Josh Santos --- docs/deployment/k8s.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/deployment/k8s.md b/docs/deployment/k8s.md index 46ba273e14..a2939dcae7 100644 --- a/docs/deployment/k8s.md +++ b/docs/deployment/k8s.md @@ -387,8 +387,8 @@ $ yarn build-image --tag backstage:1.0.0 ``` There is no special wiring needed to access the PostgreSQL service. Since it's -running on the same cluster, Kubernetes will inject `POSTGRES_SERVICE_HOST` and -`POSTGRES_SERVICE_PORT` environment variables into our Backstage container. +running on the same cluster, Kubernetes will inject `POSTGRES_HOST` and +`POSTGRES_PORT` environment variables into our Backstage container. These can be used in the Backstage `app-config.yaml` along with the secrets. Apply this to `app-config.production.yaml` as well if you have one: ```yaml @@ -396,8 +396,8 @@ backend: database: client: pg connection: - host: ${POSTGRES_SERVICE_HOST} - port: ${POSTGRES_SERVICE_PORT} + host: ${POSTGRES_HOST} + port: ${POSTGRES_PORT} user: ${POSTGRES_USER} password: ${POSTGRES_PASSWORD} ``` From 45962b004f7ef4621a9f0fecc238503ee834fe77 Mon Sep 17 00:00:00 2001 From: Josh Santos Date: Wed, 18 Dec 2024 21:30:37 +0700 Subject: [PATCH 053/213] Update deployment env vars Signed-off-by: Josh Santos Run prettier for docs Signed-off-by: Josh Santos --- docs/deployment/k8s.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/deployment/k8s.md b/docs/deployment/k8s.md index a2939dcae7..1a225d6d12 100644 --- a/docs/deployment/k8s.md +++ b/docs/deployment/k8s.md @@ -210,6 +210,11 @@ spec: envFrom: - secretRef: name: postgres-secrets + env: + - name: POSTGRES_HOST + value: postgres.backstage + - name: POSTGRES_PORT + value: '5432' volumeMounts: - mountPath: /var/lib/postgresql/data name: postgresdb From d8f9079fafde47cb3822893858c016b95ee7d03f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 21:12:08 +0000 Subject: [PATCH 054/213] fix(deps): update rjsf monorepo to v5.23.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .changeset/renovate-dcf1169.md | 11 +++++ plugins/home-react/package.json | 2 +- plugins/home/package.json | 8 ++-- plugins/scaffolder-react/package.json | 8 ++-- plugins/scaffolder/package.json | 8 ++-- yarn.lock | 58 +++++++++++++-------------- 6 files changed, 53 insertions(+), 42 deletions(-) create mode 100644 .changeset/renovate-dcf1169.md diff --git a/.changeset/renovate-dcf1169.md b/.changeset/renovate-dcf1169.md new file mode 100644 index 0000000000..b23fd46c77 --- /dev/null +++ b/.changeset/renovate-dcf1169.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-home-react': patch +'@backstage/plugin-home': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +--- + +Updated dependency `@rjsf/utils` to `5.23.2`. +Updated dependency `@rjsf/core` to `5.23.2`. +Updated dependency `@rjsf/material-ui` to `5.23.2`. +Updated dependency `@rjsf/validator-ajv8` to `5.23.2`. diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index 5d17c8626b..2630c05a2a 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -46,7 +46,7 @@ "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@rjsf/utils": "5.23.1" + "@rjsf/utils": "5.23.2" }, "devDependencies": { "@backstage/cli": "workspace:^", diff --git a/plugins/home/package.json b/plugins/home/package.json index efadf8aaeb..59331214b6 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -70,10 +70,10 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@rjsf/core": "5.23.1", - "@rjsf/material-ui": "5.23.1", - "@rjsf/utils": "5.23.1", - "@rjsf/validator-ajv8": "5.23.1", + "@rjsf/core": "5.23.2", + "@rjsf/material-ui": "5.23.2", + "@rjsf/utils": "5.23.2", + "@rjsf/validator-ajv8": "5.23.2", "lodash": "^4.17.21", "luxon": "^3.4.3", "react-grid-layout": "1.3.4", diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 6ea25a5e65..ec9477d3e8 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -73,10 +73,10 @@ "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", "@react-hookz/web": "^24.0.0", - "@rjsf/core": "5.23.1", - "@rjsf/material-ui": "5.23.1", - "@rjsf/utils": "5.23.1", - "@rjsf/validator-ajv8": "5.23.1", + "@rjsf/core": "5.23.2", + "@rjsf/material-ui": "5.23.2", + "@rjsf/utils": "5.23.2", + "@rjsf/validator-ajv8": "5.23.2", "@types/json-schema": "^7.0.9", "ajv-errors": "^3.0.0", "classnames": "^2.2.6", diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 549c47da7b..89f1545efc 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -81,10 +81,10 @@ "@material-ui/lab": "4.0.0-alpha.61", "@microsoft/fetch-event-source": "^2.0.1", "@react-hookz/web": "^24.0.0", - "@rjsf/core": "5.23.1", - "@rjsf/material-ui": "5.23.1", - "@rjsf/utils": "5.23.1", - "@rjsf/validator-ajv8": "5.23.1", + "@rjsf/core": "5.23.2", + "@rjsf/material-ui": "5.23.2", + "@rjsf/utils": "5.23.2", + "@rjsf/validator-ajv8": "5.23.2", "@uiw/react-codemirror": "^4.9.3", "classnames": "^2.2.6", "git-url-parse": "^15.0.0", diff --git a/yarn.lock b/yarn.lock index 58d08823e1..c0dfad935e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6395,7 +6395,7 @@ __metadata: "@backstage/core-plugin-api": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 - "@rjsf/utils": 5.23.1 + "@rjsf/utils": 5.23.2 "@types/react": ^18.0.0 "@types/react-grid-layout": ^1.3.2 react: ^18.0.2 @@ -6433,10 +6433,10 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@rjsf/core": 5.23.1 - "@rjsf/material-ui": 5.23.1 - "@rjsf/utils": 5.23.1 - "@rjsf/validator-ajv8": 5.23.1 + "@rjsf/core": 5.23.2 + "@rjsf/material-ui": 5.23.2 + "@rjsf/utils": 5.23.2 + "@rjsf/validator-ajv8": 5.23.2 "@testing-library/dom": ^10.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^16.0.0 @@ -7483,10 +7483,10 @@ __metadata: "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 "@react-hookz/web": ^24.0.0 - "@rjsf/core": 5.23.1 - "@rjsf/material-ui": 5.23.1 - "@rjsf/utils": 5.23.1 - "@rjsf/validator-ajv8": 5.23.1 + "@rjsf/core": 5.23.2 + "@rjsf/material-ui": 5.23.2 + "@rjsf/utils": 5.23.2 + "@rjsf/validator-ajv8": 5.23.2 "@testing-library/dom": ^10.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^16.0.0 @@ -7557,10 +7557,10 @@ __metadata: "@material-ui/lab": 4.0.0-alpha.61 "@microsoft/fetch-event-source": ^2.0.1 "@react-hookz/web": ^24.0.0 - "@rjsf/core": 5.23.1 - "@rjsf/material-ui": 5.23.1 - "@rjsf/utils": 5.23.1 - "@rjsf/validator-ajv8": 5.23.1 + "@rjsf/core": 5.23.2 + "@rjsf/material-ui": 5.23.2 + "@rjsf/utils": 5.23.2 + "@rjsf/validator-ajv8": 5.23.2 "@testing-library/dom": ^10.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^16.0.0 @@ -15348,9 +15348,9 @@ __metadata: languageName: node linkType: hard -"@rjsf/core@npm:5.23.1": - version: 5.23.1 - resolution: "@rjsf/core@npm:5.23.1" +"@rjsf/core@npm:5.23.2": + version: 5.23.2 + resolution: "@rjsf/core@npm:5.23.2" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 @@ -15360,26 +15360,26 @@ __metadata: peerDependencies: "@rjsf/utils": ^5.23.x react: ^16.14.0 || >=17 - checksum: acb5b1541b7e6f9911dce33455c297402fc1b2278b0c688073decdea977efae7d4227962eaadeb48fd14c2a8e4bba73a80df975b1c49aa2e2b933c2646ab4904 + checksum: 36b2505afd5402368a31a06a4b9d2264f63cab9766f2060cd3c3ecf8b4c08fc7fc8b1b82dd00788f357a2ca649d76c5b6e324152572dbf333bd2b93a0bcc99fd languageName: node linkType: hard -"@rjsf/material-ui@npm:5.23.1": - version: 5.23.1 - resolution: "@rjsf/material-ui@npm:5.23.1" +"@rjsf/material-ui@npm:5.23.2": + version: 5.23.2 + resolution: "@rjsf/material-ui@npm:5.23.2" peerDependencies: "@material-ui/core": ^4.12.3 "@material-ui/icons": ^4.11.2 "@rjsf/core": ^5.23.x "@rjsf/utils": ^5.23.x react: ^16.14.0 || >=17 - checksum: ae0d401edd407c534406cce60fda2725fc246286cbedd8a8e4031097d4d318761fd8a4f35339d0f3f857a3dc863b88a75002d6900176052913bb629d0ebde4f9 + checksum: 3c41a4d3133bfb1ddf2a9f96fdf6b44de7d16688133a5a69833b8a99044b499f1466d361e6e92e04b88d281ca9b1819905bafd01fee6f4e0329d111de0eb5c0a languageName: node linkType: hard -"@rjsf/utils@npm:5.23.1": - version: 5.23.1 - resolution: "@rjsf/utils@npm:5.23.1" +"@rjsf/utils@npm:5.23.2": + version: 5.23.2 + resolution: "@rjsf/utils@npm:5.23.2" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -15388,13 +15388,13 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 7580419cf07416fe1e608ed171c30b25b3a78cfebba7d97e3120fe2e40f702fd0e61494e6c823281091522b053a39a83ab31ceb97c078cfb39ac636dc2d997c1 + checksum: 16980013258bab7accaff961c533e4bb8e3326c37a84670a7667b2a10c1ca395451eb51a6cf819ccbafb1aa8838df325ff1f314b410bb186fef98856135e1a06 languageName: node linkType: hard -"@rjsf/validator-ajv8@npm:5.23.1": - version: 5.23.1 - resolution: "@rjsf/validator-ajv8@npm:5.23.1" +"@rjsf/validator-ajv8@npm:5.23.2": + version: 5.23.2 + resolution: "@rjsf/validator-ajv8@npm:5.23.2" dependencies: ajv: ^8.12.0 ajv-formats: ^2.1.1 @@ -15402,7 +15402,7 @@ __metadata: lodash-es: ^4.17.21 peerDependencies: "@rjsf/utils": ^5.23.x - checksum: 3eca428bd682ea8226558e0c719f263912ad8d6fde2c3ee817c5c106070fd3142f614dc35e15819000f8f00f9c00aa654c2dab5fd3a7318164ad6420d53068f5 + checksum: da6328ac6ddc448141dd183fa6447a0ff5b0bcc7c77c8fa4d9d0a35b59727095da72fb15b16ded6c1d3769ca19cadb781da6ebc23c7cb79f87c83bca5d58a0fb languageName: node linkType: hard From ddefc815c60f8930494efef05d96aa4aa4df3336 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 22:37:15 +0000 Subject: [PATCH 055/213] chore(deps): update actions/upload-artifact action to v4.5.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/pr-review-comment-trigger.yaml | 2 +- .github/workflows/scorecard.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-review-comment-trigger.yaml b/.github/workflows/pr-review-comment-trigger.yaml index b5027d78be..344425ca52 100644 --- a/.github/workflows/pr-review-comment-trigger.yaml +++ b/.github/workflows/pr-review-comment-trigger.yaml @@ -30,7 +30,7 @@ jobs: run: | mkdir -p ./pr echo $PR_NUMBER > ./pr/pr_number - - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + - uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: pr_number-${{ github.event.pull_request.number }} path: pr/ diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index db060a70d4..fc5323af63 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -58,7 +58,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: 'Upload artifact' - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 + uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0 with: name: SARIF file path: results.sarif From 1cce2d59f62a064fed6edef87a1cbcf5fc88c761 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 00:47:23 +0000 Subject: [PATCH 056/213] chore(deps): update docker/setup-buildx-action action to v3.8.0 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/deploy_docker-image.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy_docker-image.yml b/.github/workflows/deploy_docker-image.yml index a1764b976a..2285f61f48 100644 --- a/.github/workflows/deploy_docker-image.yml +++ b/.github/workflows/deploy_docker-image.yml @@ -59,7 +59,7 @@ jobs: password: ${{ secrets.GITHUB_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@c47758b77c9736f4b2ef4073d4d51994fabfe349 # v3.7.1 + uses: docker/setup-buildx-action@6524bf65af31da8d45b59e8c27de4bd072b392f5 # v3.8.0 - name: Build and push uses: docker/build-push-action@48aba3b46d1b1fec4febb7c5d0c644b249a11355 # v6.10.0 From 4ab00e4bb7496143d26aca7b06471703d86413e0 Mon Sep 17 00:00:00 2001 From: Teijo Mursu Date: Thu, 19 Dec 2024 12:21:07 +0200 Subject: [PATCH 057/213] fix(catalog-backend-module-github): update parent to not send a object with empty string Signed-off-by: Teijo Mursu --- .changeset/weak-frogs-nail.md | 5 + .../GithubMultiOrgEntityProvider.test.ts | 220 ++++++++++++++++++ .../providers/GithubMultiOrgEntityProvider.ts | 8 +- 3 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 .changeset/weak-frogs-nail.md diff --git a/.changeset/weak-frogs-nail.md b/.changeset/weak-frogs-nail.md new file mode 100644 index 0000000000..cf6c5d3048 --- /dev/null +++ b/.changeset/weak-frogs-nail.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-github': patch +--- + +Fixes an issue in `GithubMultiOrgEntityProvider` that caused an error when processing teams without a parent. diff --git a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts index df49ac9803..2186b11f50 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.test.ts @@ -1596,6 +1596,62 @@ describe('GithubMultiOrgEntityProvider', () => { }); }); + it('should create a new group from a new team without parent', async () => { + await events.publish({ + topic: 'github.team', + eventPayload: { + action: 'created', + organization: { + login: 'orgB', + }, + team: { + name: 'New Team', + slug: 'new-team', + description: 'description from the new team', + html_url: 'https://github.com/orgs/orgB/teams/new-team', + parent: null, + }, + }, + }); + + expect(entityProviderConnection.applyMutation).toHaveBeenCalledTimes(1); + expect(entityProviderConnection.applyMutation).toHaveBeenCalledWith({ + type: 'delta', + added: [ + { + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { + name: 'new-team', + namespace: 'orgb', + description: 'description from the new team', + annotations: { + 'backstage.io/edit-url': + 'https://github.com/orgs/orgB/teams/new-team/edit', + 'backstage.io/managed-by-location': + 'url:https://github.com/orgs/orgB/teams/new-team', + 'backstage.io/managed-by-origin-location': + 'url:https://github.com/orgs/orgB/teams/new-team', + 'github.com/team-slug': 'orgB/new-team', + }, + }, + spec: { + type: 'team', + children: [], + members: [], + profile: { + displayName: 'New Team', + }, + }, + }, + locationKey: 'github-multi-org-provider:my-id', + }, + ], + removed: [], + }); + }); + it('should remove a group from a deleted team', async () => { await events.publish({ topic: 'github.team', @@ -1869,6 +1925,170 @@ describe('GithubMultiOrgEntityProvider', () => { ], }); }); + + it('should update group without parent', async () => { + const mockClient = jest.fn(); + + mockClient + .mockResolvedValueOnce({ + organization: { + team: { + slug: 'team', + combinedSlug: 'orgA/team', + name: 'TeamA', + description: 'The one and only team', + avatarUrl: 'http://example.com/team.jpeg', + editTeamUrl: 'https://example.com', + parentTeam: null, + members: { + pageInfo: { hasNextPage: false }, + nodes: [], + }, + }, + }, + }) + .mockResolvedValueOnce({ + organization: { + membersWithRole: { + pageInfo: { hasNextPage: false }, + nodes: [], + }, + }, + }) + .mockResolvedValueOnce({ + organization: { + teams: { + pageInfo: { hasNextPage: false }, + nodes: [ + { + slug: 'team', + combinedSlug: 'orgA/team', + name: 'TeamA', + description: 'The one and only team', + avatarUrl: 'http://example.com/team.jpeg', + editTeamUrl: 'https://example.com', + parentTeam: null, + members: { + pageInfo: { hasNextPage: false }, + nodes: [], + }, + }, + ], + }, + }, + }) + .mockResolvedValueOnce({ + organization: { + teams: { + pageInfo: { hasNextPage: false }, + nodes: [ + { + slug: 'team', + combinedSlug: 'orgB/team', + name: 'TeamB', + description: 'The one and only team', + avatarUrl: 'http://example.com/team.jpeg', + editTeamUrl: 'https://example.com', + parentTeam: null, + members: { + pageInfo: { hasNextPage: false }, + nodes: [], + }, + }, + ], + }, + }, + }); + + (graphql.defaults as jest.Mock).mockReturnValue(mockClient); + + await events.publish({ + topic: 'github.team', + eventPayload: { + action: 'edited', + changes: { + name: { + from: 'oldName', + }, + description: { + from: 'oldDescription', + }, + }, + team: { + slug: 'team', + parent: null, + }, + organization: { + login: 'orgA', + }, + }, + }); + + expect(entityProviderConnection.applyMutation).toHaveBeenCalledTimes(1); + expect(entityProviderConnection.applyMutation).toHaveBeenCalledWith({ + type: 'delta', + added: [ + { + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { + annotations: { + 'backstage.io/edit-url': 'https://example.com', + 'backstage.io/managed-by-location': + 'url:https://github.com/orgs/orgA/teams/team', + 'backstage.io/managed-by-origin-location': + 'url:https://github.com/orgs/orgA/teams/team', + 'github.com/team-slug': 'orgA/team', + }, + namespace: 'orga', + name: 'team', + description: 'The one and only team', + }, + spec: { + children: [], + profile: { + displayName: 'TeamA', + picture: 'http://example.com/team.jpeg', + }, + type: 'team', + members: [], + }, + }, + locationKey: 'github-multi-org-provider:my-id', + }, + ], + removed: [ + { + entity: { + apiVersion: 'backstage.io/v1alpha1', + kind: 'Group', + metadata: { + annotations: { + 'backstage.io/managed-by-location': + 'url:https://github.com/orgs/orgA/teams/oldname', + 'backstage.io/managed-by-origin-location': + 'url:https://github.com/orgs/orgA/teams/oldname', + 'github.com/team-slug': 'orgA/oldname', + }, + namespace: 'orga', + name: 'oldname', + description: 'oldDescription', + }, + spec: { + children: [], + profile: { + displayName: 'oldName', + }, + type: 'team', + members: [], + }, + }, + locationKey: 'github-multi-org-provider:my-id', + }, + ], + }); + }); }); describe('membership', () => { diff --git a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts index 4367383cd2..fbfdc8a20d 100644 --- a/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts +++ b/plugins/catalog-backend-module-github/src/providers/GithubMultiOrgEntityProvider.ts @@ -602,7 +602,9 @@ export class GithubMultiOrgEntityProvider implements EntityProvider { editTeamUrl: `${url}/edit`, combinedSlug: `${org}/${slug}`, description: description ?? undefined, - parentTeam: { slug: event.team?.parent?.slug || '' } as GithubTeam, + parentTeam: event.team?.parent?.slug + ? ({ slug: event.team.parent.slug } as GithubTeam) + : undefined, // entity will be removed or is new members: [], }, @@ -705,7 +707,9 @@ export class GithubMultiOrgEntityProvider implements EntityProvider { slug: oldSlug, combinedSlug: `${org}/${oldSlug}`, description: event.changes.description?.from, - parentTeam: { slug: event.team?.parent?.slug || '' } as GithubTeam, + parentTeam: event.team?.parent?.slug + ? ({ slug: event.team.parent.slug } as GithubTeam) + : undefined, // entity will be removed members: [], }, From 0fba7bd7fd0c18cffe49bf9fc4c60f83fa4d1f65 Mon Sep 17 00:00:00 2001 From: jolies93 <64967243+jolies93@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:47:54 -0600 Subject: [PATCH 058/213] Formatting to address feedback from prettier single quotes not double Signed-off-by: jolies93 <64967243+jolies93@users.noreply.github.com> --- docs/auth/atlassian/provider.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/auth/atlassian/provider.md b/docs/auth/atlassian/provider.md index 53b2ade626..955024a033 100644 --- a/docs/auth/atlassian/provider.md +++ b/docs/auth/atlassian/provider.md @@ -46,11 +46,11 @@ auth: development: clientId: ${AUTH_ATLASSIAN_CLIENT_ID} clientSecret: ${AUTH_ATLASSIAN_CLIENT_SECRET} - audience: "https://api.atlassian.com" - callbackUrl: "https://backstage.example.com/api/auth/atlassian/handler/frame" + audience: 'https://api.atlassian.com' + callbackUrl: 'https://backstage.example.com/api/auth/atlassian/handler/frame' additionalScopes: - - "read:jira-user" - - "read:jira-work" + - 'read:jira-user' + - 'read:jira-work' signIn: resolvers: # See https://backstage.io/docs/auth/atlassian/provider#resolvers for more resolvers From 7d635e1e86b26222bed10bd8b9f579d0315358ec Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Thu, 19 Dec 2024 13:16:10 -0600 Subject: [PATCH 059/213] Removed new Signed-off-by: Andre Wanlin --- docs/features/software-templates/writing-custom-actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/features/software-templates/writing-custom-actions.md b/docs/features/software-templates/writing-custom-actions.md index 11e67af07f..8cfc5464f2 100644 --- a/docs/features/software-templates/writing-custom-actions.md +++ b/docs/features/software-templates/writing-custom-actions.md @@ -220,7 +220,7 @@ const scaffolderModuleCustomExtensions = createBackendModule({ async init({ scaffolder /* ..., other dependencies */ }) { // Here you have the opportunity to interact with the extension // point before the plugin itself gets instantiated - scaffolder.addActions(new createNewFileAction()); // just an example + scaffolder.addActions(createNewFileAction()); // just an example }, }); }, From b664b2ae09381b952868b841923e996f741e7a29 Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Thu, 19 Dec 2024 22:01:33 +0100 Subject: [PATCH 060/213] internal type fixes Signed-off-by: Patrik Oldsberg --- .changeset/two-wasps-mix.md | 5 +++++ packages/backend-app-api/src/wiring/ServiceRegistry.ts | 4 ++-- .../src/entrypoints/auth/JwksClient.ts | 2 +- .../auth/plugin/keys/StaticConfigPluginKeySource.ts | 2 +- .../rootHttpRouter/http/readHelmetOptions.ts | 10 +++++++--- .../backend-test-utils/src/next/wiring/TestBackend.ts | 4 ++-- plugins/auth-backend/src/identity/StaticKeyStore.ts | 2 +- .../auth-node/src/identity/DefaultIdentityClient.ts | 2 +- .../src/LigthBox/LightBox.tsx | 6 +++--- 9 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 .changeset/two-wasps-mix.md diff --git a/.changeset/two-wasps-mix.md b/.changeset/two-wasps-mix.md new file mode 100644 index 0000000000..47d8a8a89b --- /dev/null +++ b/.changeset/two-wasps-mix.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Internal refactor for safer handling of possible null value. diff --git a/packages/backend-app-api/src/wiring/ServiceRegistry.ts b/packages/backend-app-api/src/wiring/ServiceRegistry.ts index 90b108206e..c4b9dcb2a3 100644 --- a/packages/backend-app-api/src/wiring/ServiceRegistry.ts +++ b/packages/backend-app-api/src/wiring/ServiceRegistry.ts @@ -22,8 +22,8 @@ import { } from '@backstage/backend-plugin-api'; import { ConflictError, stringifyError } from '@backstage/errors'; // Direct internal import to avoid duplication -// eslint-disable-next-line @backstage/no-forbidden-package-imports -import { InternalServiceFactory } from '@backstage/backend-plugin-api/src/services/system/types'; +// eslint-disable-next-line @backstage/no-relative-monorepo-imports +import { InternalServiceFactory } from '../../../backend-plugin-api/src/services/system/types'; import { DependencyGraph } from '../lib/DependencyGraph'; /** * Keep in sync with `@backstage/backend-plugin-api/src/services/system/types.ts` diff --git a/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts b/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts index 44f0082424..f956ceb70a 100644 --- a/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts +++ b/packages/backend-defaults/src/entrypoints/auth/JwksClient.ts @@ -22,7 +22,7 @@ import { FlattenedJWSInput, JWSHeaderParameters, } from 'jose'; -import { GetKeyFunction } from 'jose/dist/types/types'; +import { GetKeyFunction } from 'jose'; const CLOCK_MARGIN_S = 10; diff --git a/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts b/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts index 658a88a368..eb863a807a 100644 --- a/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts +++ b/packages/backend-defaults/src/entrypoints/auth/plugin/keys/StaticConfigPluginKeySource.ts @@ -18,7 +18,7 @@ import { Config } from '@backstage/config'; import { HumanDuration, durationToMilliseconds } from '@backstage/types'; import { promises as fs } from 'fs'; import { JWK, exportJWK, importPKCS8, importSPKI } from 'jose'; -import { KeyLike } from 'jose/dist/types/types'; +import { KeyLike } from 'jose'; import { KeyPayload } from './types'; import { PluginKeySource } from './types'; diff --git a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts index 510fdd9586..fc1fc59bcb 100644 --- a/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts +++ b/packages/backend-defaults/src/entrypoints/rootHttpRouter/http/readHelmetOptions.ts @@ -17,7 +17,6 @@ import { Config } from '@backstage/config'; import helmet from 'helmet'; import { HelmetOptions } from 'helmet'; -import { ContentSecurityPolicyOptions } from 'helmet/dist/types/middlewares/content-security-policy'; import kebabCase from 'lodash/kebabCase'; /** @@ -81,10 +80,15 @@ function readCspDirectives(config?: Config): CspDirectives { return result; } +type ContentSecurityPolicyDirectives = Exclude< + HelmetOptions['contentSecurityPolicy'], + boolean | undefined +>['directives']; + export function applyCspDirectives( directives: CspDirectives, -): ContentSecurityPolicyOptions['directives'] { - const result: ContentSecurityPolicyOptions['directives'] = +): ContentSecurityPolicyDirectives { + const result: ContentSecurityPolicyDirectives = helmet.contentSecurityPolicy.getDefaultDirectives(); // TODO(Rugvip): We currently use non-precompiled AJV for validation in the frontend, which uses eval. diff --git a/packages/backend-test-utils/src/next/wiring/TestBackend.ts b/packages/backend-test-utils/src/next/wiring/TestBackend.ts index 42b46f4de7..4471f6ed24 100644 --- a/packages/backend-test-utils/src/next/wiring/TestBackend.ts +++ b/packages/backend-test-utils/src/next/wiring/TestBackend.ts @@ -27,11 +27,11 @@ import { mockServices } from '../services'; import { ConfigReader } from '@backstage/config'; import express from 'express'; // Direct internal import to avoid duplication -// eslint-disable-next-line @backstage/no-forbidden-package-imports +// eslint-disable-next-line @backstage/no-relative-monorepo-imports import { InternalBackendFeature, InternalBackendRegistrations, -} from '@backstage/backend-plugin-api/src/wiring/types'; +} from '../../../../backend-plugin-api/src/wiring/types'; import { DefaultRootHttpRouter, ExtendedHttpServer, diff --git a/plugins/auth-backend/src/identity/StaticKeyStore.ts b/plugins/auth-backend/src/identity/StaticKeyStore.ts index 13b9faf771..f7274d4b83 100644 --- a/plugins/auth-backend/src/identity/StaticKeyStore.ts +++ b/plugins/auth-backend/src/identity/StaticKeyStore.ts @@ -15,7 +15,7 @@ */ import { AnyJWK, KeyStore, StoredKey } from './types'; import { exportJWK, importPKCS8, importSPKI, JWK } from 'jose'; -import { KeyLike } from 'jose/dist/types/types'; +import { KeyLike } from 'jose'; import { promises as fs } from 'fs'; import { Config } from '@backstage/config'; diff --git a/plugins/auth-node/src/identity/DefaultIdentityClient.ts b/plugins/auth-node/src/identity/DefaultIdentityClient.ts index 1095609dec..75b81cb0cd 100644 --- a/plugins/auth-node/src/identity/DefaultIdentityClient.ts +++ b/plugins/auth-node/src/identity/DefaultIdentityClient.ts @@ -24,7 +24,7 @@ import { JWSHeaderParameters, jwtVerify, } from 'jose'; -import { GetKeyFunction } from 'jose/dist/types/types'; +import { GetKeyFunction } from 'jose'; import { getBearerTokenFromAuthorizationHeader } from './getBearerTokenFromAuthorizationHeader'; import { IdentityApi, IdentityApiGetIdentityRequest } from './IdentityApi'; import { BackstageIdentityResponse } from '../types'; diff --git a/plugins/techdocs-module-addons-contrib/src/LigthBox/LightBox.tsx b/plugins/techdocs-module-addons-contrib/src/LigthBox/LightBox.tsx index 38269e6245..47409f47c7 100644 --- a/plugins/techdocs-module-addons-contrib/src/LigthBox/LightBox.tsx +++ b/plugins/techdocs-module-addons-contrib/src/LigthBox/LightBox.tsx @@ -28,7 +28,7 @@ export const LightBoxAddon = () => { useEffect(() => { let dataSourceImages: DataSource | null = null; - let lightbox = new PhotoSwipeLightbox({ + let lightbox: PhotoSwipeLightbox | null = new PhotoSwipeLightbox({ pswpModule: PhotoSwipe, initialZoomLevel: 1, secondaryZoomLevel: (zoomLevelObject: ZoomLevel) => { @@ -71,14 +71,14 @@ export const LightBoxAddon = () => { }; }); } - lightbox.loadAndOpen(index, dataSourceImages); + lightbox?.loadAndOpen(index, dataSourceImages); return false; }; }); lightbox.init(); return () => { - lightbox.destroy(); + lightbox?.destroy(); lightbox = null; }; }, [images]); From 98c63449efcd999c454fba89dc2093806aba2cc1 Mon Sep 17 00:00:00 2001 From: Christoph Jerolimov Date: Thu, 19 Dec 2024 23:45:39 +0100 Subject: [PATCH 061/213] docs(analytics): update matomo module link to community-plugins Signed-off-by: Christoph Jerolimov --- docs/plugins/analytics.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plugins/analytics.md b/docs/plugins/analytics.md index 43636c8a0e..0a6bac81a0 100644 --- a/docs/plugins/analytics.md +++ b/docs/plugins/analytics.md @@ -51,7 +51,7 @@ learn how to contribute the integration yourself! [ga4]: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-ga4/README.md [newrelic-browser]: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-newrelic-browser/README.md [qm]: https://github.com/quantummetric/analytics-module-qm/blob/main/README.md -[matomo]: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/README.md +[matomo]: https://github.com/backstage/community-plugins/blob/main/workspaces/analytics/plugins/analytics-module-matomo/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 e233cb50a345459ef174c75c4a666c386f9cd93e Mon Sep 17 00:00:00 2001 From: nikolar Date: Thu, 19 Dec 2024 17:42:57 -0800 Subject: [PATCH 062/213] add missing exports Signed-off-by: nikolar --- plugins/home/report.api.md | 5 ++++ plugins/home/src/index.ts | 1 + plugins/scaffolder-react/report-alpha.api.md | 8 +++---- plugins/scaffolder-react/report.api.md | 24 +++++++++++++++++++ plugins/scaffolder-react/src/index.ts | 6 +++++ .../src/next/components/Stepper/Stepper.tsx | 2 +- .../TemplateCategoryPicker.tsx | 2 +- .../src/next/overridableComponents.ts | 4 ++-- 8 files changed, 44 insertions(+), 8 deletions(-) diff --git a/plugins/home/report.api.md b/plugins/home/report.api.md index 878d8ef646..1cff56f50c 100644 --- a/plugins/home/report.api.md +++ b/plugins/home/report.api.md @@ -187,6 +187,11 @@ export type LayoutConfiguration = { // @public export type Operators = '<' | '<=' | '==' | '!=' | '>' | '>=' | 'contains'; +// @public +export const QuickStartCard: ( + props: CardExtensionProps_2, +) => JSX_2.Element; + // @public export type QuickStartCardProps = { modalTitle?: string | React_2.JSX.Element; diff --git a/plugins/home/src/index.ts b/plugins/home/src/index.ts index 154186f169..3a6f152d03 100644 --- a/plugins/home/src/index.ts +++ b/plugins/home/src/index.ts @@ -35,6 +35,7 @@ export { HomePageTopVisited, HomePageRecentlyVisited, FeaturedDocsCard, + QuickStartCard, } from './plugin'; export * from './components'; export * from './assets'; diff --git a/plugins/scaffolder-react/report-alpha.api.md b/plugins/scaffolder-react/report-alpha.api.md index 4f9f86d1ac..11c2d11378 100644 --- a/plugins/scaffolder-react/report-alpha.api.md +++ b/plugins/scaffolder-react/report-alpha.api.md @@ -46,14 +46,14 @@ import { UiSchema } from '@rjsf/utils'; import { WidgetProps } from '@rjsf/utils'; import { z } from 'zod'; -// @alpha (undocumented) +// @public (undocumented) export type BackstageOverrides = Overrides & { [Name in keyof ScaffolderReactComponentsNameToClassKey]?: Partial< StyleRules >; }; -// @alpha (undocumented) +// @public (undocumented) export type BackstageTemplateStepperClassKey = | 'backButton' | 'footer' @@ -296,13 +296,13 @@ export type ScaffolderPageContextMenuProps = { onCreateClicked?: () => void; }; -// @alpha (undocumented) +// @public (undocumented) export type ScaffolderReactComponentsNameToClassKey = { ScaffolderReactTemplateCategoryPicker: ScaffolderReactTemplateCategoryPickerClassKey; BackstageTemplateStepper: BackstageTemplateStepperClassKey; }; -// @alpha (undocumented) +// @public (undocumented) export type ScaffolderReactTemplateCategoryPickerClassKey = 'root' | 'label'; // @alpha diff --git a/plugins/scaffolder-react/report.api.md b/plugins/scaffolder-react/report.api.md index 8a6b4739a4..c733b142c0 100644 --- a/plugins/scaffolder-react/report.api.md +++ b/plugins/scaffolder-react/report.api.md @@ -27,6 +27,7 @@ import { JsonObject } from '@backstage/types'; import { JSONSchema7 } from 'json-schema'; import { JsonValue } from '@backstage/types'; import { Observable } from '@backstage/types'; +import { Overrides } from '@material-ui/core/styles/overrides'; import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { ReactNode } from 'react'; @@ -36,6 +37,7 @@ import { RegistryWidgetsType } from '@rjsf/utils'; import { RJSFSchema } from '@rjsf/utils'; import { RJSFValidationError } from '@rjsf/utils'; import { StrictRJSFSchema } from '@rjsf/utils'; +import { StyleRules } from '@material-ui/core/styles/withStyles'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { TaskStep } from '@backstage/plugin-scaffolder-common'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; @@ -63,6 +65,19 @@ export type ActionExample = { example: string; }; +// @public (undocumented) +export type BackstageOverrides = Overrides & { + [Name in keyof ScaffolderReactComponentsNameToClassKey]?: Partial< + StyleRules + >; +}; + +// @public (undocumented) +export type BackstageTemplateStepperClassKey = + | 'backButton' + | 'footer' + | 'formWrapper'; + // @public export function createScaffolderFieldExtension< TReturnValue = unknown, @@ -325,6 +340,15 @@ export type ScaffolderOutputText = { default?: boolean; }; +// @public (undocumented) +export type ScaffolderReactComponentsNameToClassKey = { + ScaffolderReactTemplateCategoryPicker: ScaffolderReactTemplateCategoryPickerClassKey; + BackstageTemplateStepper: BackstageTemplateStepperClassKey; +}; + +// @public (undocumented) +export type ScaffolderReactTemplateCategoryPickerClassKey = 'root' | 'label'; + // @public export type ScaffolderRJSFField< T = any, diff --git a/plugins/scaffolder-react/src/index.ts b/plugins/scaffolder-react/src/index.ts index e73df50fce..69bb70598c 100644 --- a/plugins/scaffolder-react/src/index.ts +++ b/plugins/scaffolder-react/src/index.ts @@ -22,3 +22,9 @@ export * from './api'; export * from './hooks'; export * from './layouts'; export * from './utils'; +export type { + BackstageOverrides, + ScaffolderReactComponentsNameToClassKey, + ScaffolderReactTemplateCategoryPickerClassKey, + BackstageTemplateStepperClassKey, +} from './next'; diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx index 0b4cbbc94a..fd5d394ef6 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx +++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx @@ -56,7 +56,7 @@ import { merge } from 'lodash'; const validator = customizeValidator(); ajvErrors(validator.ajv); -/** @alpha */ +/** @public */ export type BackstageTemplateStepperClassKey = | 'backButton' | 'footer' diff --git a/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx b/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx index f2505ec148..335f51b3e1 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx @@ -33,7 +33,7 @@ import { alertApiRef, useApi } from '@backstage/core-plugin-api'; const icon = ; const checkedIcon = ; -/** @alpha */ +/** @public */ export type ScaffolderReactTemplateCategoryPickerClassKey = 'root' | 'label'; const useStyles = makeStyles( diff --git a/plugins/scaffolder-react/src/next/overridableComponents.ts b/plugins/scaffolder-react/src/next/overridableComponents.ts index 2045496166..d35a70b4bf 100644 --- a/plugins/scaffolder-react/src/next/overridableComponents.ts +++ b/plugins/scaffolder-react/src/next/overridableComponents.ts @@ -19,13 +19,13 @@ import { StyleRules } from '@material-ui/core/styles/withStyles'; import { ScaffolderReactTemplateCategoryPickerClassKey } from './components/TemplateCategoryPicker/TemplateCategoryPicker'; import { BackstageTemplateStepperClassKey } from './components/Stepper/Stepper'; -/** @alpha */ +/** @public */ export type ScaffolderReactComponentsNameToClassKey = { ScaffolderReactTemplateCategoryPicker: ScaffolderReactTemplateCategoryPickerClassKey; BackstageTemplateStepper: BackstageTemplateStepperClassKey; }; -/** @alpha */ +/** @public */ export type BackstageOverrides = Overrides & { [Name in keyof ScaffolderReactComponentsNameToClassKey]?: Partial< StyleRules From 7932f1e03f5b80ddf41693b8507c86169904d284 Mon Sep 17 00:00:00 2001 From: nikolar Date: Thu, 19 Dec 2024 17:54:02 -0800 Subject: [PATCH 063/213] add changeset Signed-off-by: nikolar --- .changeset/big-seals-drum.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .changeset/big-seals-drum.md diff --git a/.changeset/big-seals-drum.md b/.changeset/big-seals-drum.md new file mode 100644 index 0000000000..27af4e6ee9 --- /dev/null +++ b/.changeset/big-seals-drum.md @@ -0,0 +1,13 @@ +--- +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-home': patch +--- + +Added missing exports to surface recently added plugin changes as follows: +`@backstage/plugin-scaffolder-react` + +- add exports needed to override template styles for `BackstageTemplateStepper` and `ScaffolderReactTemplateCategoryPicker` + +`@backstage/plugin-home` + +- add exports needed to have a valid `import { QuickStartCard } from '@backstage/plugin-home';` From a6f7cd86799e4de361999898bb72bf2096c936c5 Mon Sep 17 00:00:00 2001 From: Srushti Rane Date: Fri, 20 Dec 2024 08:17:45 +0530 Subject: [PATCH 064/213] fixed typo in the createInitializationLogger Signed-off-by: Srushti Rane --- .../backend-app-api/src/wiring/createInitializationLogger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/backend-app-api/src/wiring/createInitializationLogger.ts b/packages/backend-app-api/src/wiring/createInitializationLogger.ts index de323f914b..2a472dec5b 100644 --- a/packages/backend-app-api/src/wiring/createInitializationLogger.ts +++ b/packages/backend-app-api/src/wiring/createInitializationLogger.ts @@ -75,7 +75,7 @@ export function createInitializationLogger( ? `, waiting for ${starting.size} other plugins to finish before shutting down the process` : ''; logger?.error( - `Plugin '${pluginId}' thew an error during startup${status}`, + `Plugin '${pluginId}' threw an error during startup${status}`, ); }, onAllStarted() { From 02534c762cf8cc79e3da1cc88f9d04f2783e2685 Mon Sep 17 00:00:00 2001 From: Srushti Rane Date: Fri, 20 Dec 2024 08:58:54 +0530 Subject: [PATCH 065/213] added changesets for the fix Signed-off-by: Srushti Rane --- .changeset/lemon-students-care.md | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .changeset/lemon-students-care.md diff --git a/.changeset/lemon-students-care.md b/.changeset/lemon-students-care.md new file mode 100644 index 0000000000..ee5f40194c --- /dev/null +++ b/.changeset/lemon-students-care.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-app-api': patch +--- + +[Fix] Corrected spelling mistake in createInitializationLogger + +Fixed a typo error in the createInitializationLogger.ts file where “thew” was changed to “threw”. This correction improves clarity in the logging From 4d21e577e1cd38185c1c8e36709a626248aadae9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 03:36:40 +0000 Subject: [PATCH 066/213] fix(deps): update react monorepo 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 2f12f27bde..6255169b2b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19774,12 +19774,12 @@ __metadata: linkType: hard "@types/react@npm:^18": - version: 18.3.17 - resolution: "@types/react@npm:18.3.17" + version: 18.3.18 + resolution: "@types/react@npm:18.3.18" dependencies: "@types/prop-types": "*" csstype: ^3.0.2 - checksum: 8107f6f5cc8706a3814e6c927e135ce0c7b40a6d9ae2b8dfb071fee03c6f714456041ecdf92dece599da0db8be7f56f6dc6353d4701f47a04772c7ec0cbb0b59 + checksum: 5933597bc9f53e282f0438f0bb76d0f0fab60faabe760ea806e05ffe6f5c61b9b4d363e1a03a8fea47c510d493c6cf926cdeeba9f7074fa97b61940c350245e7 languageName: node linkType: hard From 918055f9ba0789c27dcd81c2e2c0c394e861fe62 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 04:22:33 +0000 Subject: [PATCH 067/213] chore(deps): update dependency @chromatic-com/storybook 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 6255169b2b..6c5ae9982d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8785,8 +8785,8 @@ __metadata: linkType: hard "@chromatic-com/storybook@npm:^3.2.2": - version: 3.2.2 - resolution: "@chromatic-com/storybook@npm:3.2.2" + version: 3.2.3 + resolution: "@chromatic-com/storybook@npm:3.2.3" dependencies: chromatic: ^11.15.0 filesize: ^10.0.12 @@ -8795,7 +8795,7 @@ __metadata: strip-ansi: ^7.1.0 peerDependencies: storybook: ^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0 - checksum: 8f1d03b32e131d391d41913b346d3898e5f2661c54dbe057f05fb1bce2d9b94581942bc5f90efe599b819d1f05d92c50a9be1e0cba2962be797f9a9551b568da + checksum: ead039d77231da736eda2077aae84e6cc009976cbd373849ec0dd40ba7c5a81dace0b2916677c78417d66d034f5016ddb1a049a557a0fc2d02cb42316fb6fb32 languageName: node linkType: hard From 45dfe36c6f302ad139081f510400deda0d3203ac Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 05:08:44 +0000 Subject: [PATCH 068/213] fix(deps): update dependency @codemirror/view to v6.36.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 6c5ae9982d..ffc9146ad4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8895,13 +8895,13 @@ __metadata: linkType: hard "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.23.0": - version: 6.36.0 - resolution: "@codemirror/view@npm:6.36.0" + version: 6.36.1 + resolution: "@codemirror/view@npm:6.36.1" dependencies: "@codemirror/state": ^6.5.0 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 646ac34bbb2a29a6018e611de898e17ae8634bb63509463751114699316e561e803ede6ae70a930e5b9d4953f333b52b7853480c8776c77e685a012b00bd06fe + checksum: 77728cbc6f07f16abc4b98c487b6fad522781c928e4b31597b28d54364da6aa5542ed7c9b5c77b90bec5095527c3c062450f156f54fc8ddbcacdf86b4b32c608 languageName: node linkType: hard From c8926530b55cba734c94eaf57abd104b24eb8803 Mon Sep 17 00:00:00 2001 From: Ben Lambert Date: Fri, 20 Dec 2024 08:16:49 +0100 Subject: [PATCH 069/213] Correct spelling mistake in error message Signed-off-by: blam --- .changeset/lemon-students-care.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.changeset/lemon-students-care.md b/.changeset/lemon-students-care.md index ee5f40194c..951430f06a 100644 --- a/.changeset/lemon-students-care.md +++ b/.changeset/lemon-students-care.md @@ -2,6 +2,4 @@ '@backstage/backend-app-api': patch --- -[Fix] Corrected spelling mistake in createInitializationLogger - -Fixed a typo error in the createInitializationLogger.ts file where “thew” was changed to “threw”. This correction improves clarity in the logging +Corrected spelling mistake in error message From 3f09ef4bab1e75b8effe1edaa866f33efba23279 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 09:58:56 +0100 Subject: [PATCH 070/213] fix: scaffolder secret forwarding Signed-off-by: blam --- .changeset/tall-actors-clap.md | 5 ++ .../alpha/hooks/useFormDecorators.test.tsx | 71 +++++++++++++++++++ .../src/alpha/hooks/useFormDecorators.ts | 2 +- 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 .changeset/tall-actors-clap.md diff --git a/.changeset/tall-actors-clap.md b/.changeset/tall-actors-clap.md new file mode 100644 index 0000000000..594918a362 --- /dev/null +++ b/.changeset/tall-actors-clap.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder': patch +--- + +Fix issue with `secrets` not being forwarded properly to the backend when creating a task diff --git a/plugins/scaffolder/src/alpha/hooks/useFormDecorators.test.tsx b/plugins/scaffolder/src/alpha/hooks/useFormDecorators.test.tsx index 92475c3eea..8f486bbba1 100644 --- a/plugins/scaffolder/src/alpha/hooks/useFormDecorators.test.tsx +++ b/plugins/scaffolder/src/alpha/hooks/useFormDecorators.test.tsx @@ -81,4 +81,75 @@ describe('useFormDecorators', () => { expect(mockApiImplementation.test).toHaveBeenCalledWith('hello'); }); }); + + it('should return existing secrets and formstate', async () => { + const renderedHook = renderHook(() => useFormDecorators({ manifest }), { + wrapper: ({ children }) => ( + {} }], + ]} + > + {children} + + ), + }); + await waitFor(async () => { + const result = renderedHook.result.current!; + + const { secrets, formState } = await result.run({ + formState: { test: 'formState' }, + secrets: { test: 'hello' }, + }); + + expect(secrets).toEqual({ test: 'hello' }); + expect(formState).toEqual({ test: 'formState' }); + }); + }); + + it('should allow merging of existing secrets and formstate', async () => { + const secretAndFormDataModifier = createScaffolderFormDecorator({ + id: 'test', + async decorator({ setFormState, setSecrets }) { + setFormState(state => ({ ...state, new: 'formState' })); + setSecrets(state => ({ ...state, new: 'hello' })); + }, + }); + const renderedHook = renderHook(() => useFormDecorators({ manifest }), { + wrapper: ({ children }) => ( + {} }], + ]} + > + {children} + + ), + }); + await waitFor(async () => { + const result = renderedHook.result.current!; + + const { secrets, formState } = await result.run({ + formState: { test: 'formState' }, + secrets: { test: 'hello' }, + }); + + expect(secrets).toEqual({ test: 'hello', new: 'hello' }); + expect(formState).toEqual({ test: 'formState', new: 'formState' }); + }); + }); }); diff --git a/plugins/scaffolder/src/alpha/hooks/useFormDecorators.ts b/plugins/scaffolder/src/alpha/hooks/useFormDecorators.ts index 8469a89bec..d74c4a9823 100644 --- a/plugins/scaffolder/src/alpha/hooks/useFormDecorators.ts +++ b/plugins/scaffolder/src/alpha/hooks/useFormDecorators.ts @@ -75,7 +75,7 @@ export const useFormDecorators = ({ secrets: Record; }) => { let formState: Record = { ...opts.formState }; - let secrets: Record = {}; + let secrets: Record = { ...opts.secrets }; if (manifest?.EXPERIMENTAL_formDecorators) { // for each of the form decorators, go and call the decorator with the context From c8d8a1de053187649cf7c0a61422517e85520bc1 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 12:08:32 +0100 Subject: [PATCH 071/213] fix: omit collecting backend-common package if backend-defaults is included Signed-off-by: blam --- .../config-loader/src/schema/collect.test.ts | 55 +++++++++++++++++ packages/config-loader/src/schema/collect.ts | 61 ++++++++++++------- .../config-loader/src/schema/compile.test.ts | 16 +++++ packages/config-loader/src/schema/types.ts | 4 ++ 4 files changed, 115 insertions(+), 21 deletions(-) diff --git a/packages/config-loader/src/schema/collect.test.ts b/packages/config-loader/src/schema/collect.test.ts index 8c6d1c6b90..1e5c3c2bc5 100644 --- a/packages/config-loader/src/schema/collect.test.ts +++ b/packages/config-loader/src/schema/collect.test.ts @@ -93,6 +93,61 @@ describe('collectConfigSchemas', () => { ]); }); + it('should not include schemas for backend-common if theres a backend-defaults package', async () => { + mockDir.setContent({ + root: { + 'package.json': JSON.stringify({ + name: 'root', + configSchema: mockSchema, + dependencies: {}, + }), + node_modules: { + a: { + 'package.json': JSON.stringify({ + name: 'a', + dependencies: { + b: '0.0.0', + }, + }), + }, + b: { + 'package.json': JSON.stringify({ + name: 'a', + dependencies: { + b: '0.0.0', + }, + }), + }, + '@backstage': { + 'backend-common': { + 'package.json': JSON.stringify({ + name: '@backstage/backend-common', + configSchema: { ...mockSchema, title: 'backend-common' }, + }), + }, + 'backend-defaults': { + 'package.json': JSON.stringify({ + name: '@backstage/backend-defaults', + configSchema: { ...mockSchema, title: 'backend-defaults' }, + }), + }, + }, + }, + }, + }); + + process.chdir(mockDir.path); + + await expect( + collectConfigSchemas([], [path.join('root', 'package.json')]), + ).resolves.toEqual([ + { + path: path.join('root', 'package.json'), + value: mockSchema, + }, + ]); + }); + it('should find schema in transitive dependencies and explicit path', async () => { mockDir.setContent({ root: { diff --git a/packages/config-loader/src/schema/collect.ts b/packages/config-loader/src/schema/collect.ts index 7120c12d90..bf0fb8dd05 100644 --- a/packages/config-loader/src/schema/collect.ts +++ b/packages/config-loader/src/schema/collect.ts @@ -45,7 +45,7 @@ export async function collectConfigSchemas( packagePaths: string[], ): Promise { const schemas = new Array(); - const tsSchemaPaths = new Array(); + const tsSchemaPaths = new Array<{ packageName: string; path: string }>(); const visitedPackageVersions = new Map>(); // pkgName: [versions...] const currentDir = await fs.realpath(process.cwd()); @@ -115,22 +115,25 @@ export async function collectConfigSchemas( ); } if (isDts) { - tsSchemaPaths.push( - relativePath( + tsSchemaPaths.push({ + path: relativePath( currentDir, resolvePath(dirname(pkgPath), pkg.configSchema), ), - ); + packageName: pkg.name, + }); } else { const path = resolvePath(dirname(pkgPath), pkg.configSchema); const value = await fs.readJson(path); schemas.push({ + packageName: pkg.name, value, path: relativePath(currentDir, path), }); } } else { schemas.push({ + packageName: pkg.name, value: pkg.configSchema, path: relativePath(currentDir, pkgPath), }); @@ -151,14 +154,27 @@ export async function collectConfigSchemas( const tsSchemas = await compileTsSchemas(tsSchemaPaths); - return schemas.concat(tsSchemas); + return schemas + .concat(tsSchemas) + .filter( + ({ packageName }, _, original) => + true || + !( + packageName === '@backstage/backend-common' && + original.some( + ({ packageName: p }) => p === '@backstage/backend-defaults', + ) + ), + ); } // This handles the support of TypeScript .d.ts config schema declarations. // We collect all typescript schema definition and compile them all in one go. // This is much faster than compiling them separately. -async function compileTsSchemas(paths: string[]) { - if (paths.length === 0) { +async function compileTsSchemas( + entries: { path: string; packageName: string }[], +) { + if (entries.length === 0) { return []; } @@ -168,20 +184,23 @@ async function compileTsSchemas(paths: string[]) { 'typescript-json-schema' ); - const program = getProgramFromFiles(paths, { - incremental: false, - isolatedModules: true, - lib: ['ES5'], // Skipping most libs speeds processing up a lot, we just need the primitive types anyway - noEmit: true, - noResolve: true, - skipLibCheck: true, // Skipping lib checks speeds things up - skipDefaultLibCheck: true, - strict: true, - typeRoots: [], // Do not include any additional types - types: [], - }); + const program = getProgramFromFiles( + entries.map(({ path }) => path), + { + incremental: false, + isolatedModules: true, + lib: ['ES5'], // Skipping most libs speeds processing up a lot, we just need the primitive types anyway + noEmit: true, + noResolve: true, + skipLibCheck: true, // Skipping lib checks speeds things up + skipDefaultLibCheck: true, + strict: true, + typeRoots: [], // Do not include any additional types + types: [], + }, + ); - const tsSchemas = paths.map(path => { + const tsSchemas = entries.map(({ path, packageName }) => { let value; try { const generator = buildGenerator( @@ -228,7 +247,7 @@ async function compileTsSchemas(paths: string[]) { if (!value) { throw new Error(`Invalid schema in ${path}, missing Config export`); } - return { path, value }; + return { path, value, packageName }; }); return tsSchemas; diff --git a/packages/config-loader/src/schema/compile.test.ts b/packages/config-loader/src/schema/compile.test.ts index ff0a9543aa..b39d2537d1 100644 --- a/packages/config-loader/src/schema/compile.test.ts +++ b/packages/config-loader/src/schema/compile.test.ts @@ -21,10 +21,12 @@ describe('compileConfigSchemas', () => { const validate = compileConfigSchemas([ { path: 'a', + packageName: 'a', value: { type: 'object', properties: { a: { type: 'string' } } }, }, { path: 'b', + packageName: 'b', value: { type: 'object', properties: { b: { type: 'number' } } }, }, ]); @@ -64,6 +66,7 @@ describe('compileConfigSchemas', () => { const validate = compileConfigSchemas([ { path: 'a1', + packageName: 'a1', value: { type: 'object', properties: { @@ -80,6 +83,7 @@ describe('compileConfigSchemas', () => { }, { path: 'a2', + packageName: 'a2', value: { type: 'object', properties: { @@ -126,6 +130,7 @@ describe('compileConfigSchemas', () => { compileConfigSchemas([ { path: 'a1', + packageName: 'a1', value: { type: 'object', properties: { a: { type: 'string', visibility: 'frontend' } }, @@ -133,6 +138,7 @@ describe('compileConfigSchemas', () => { }, { path: 'a2', + packageName: 'a2', value: { type: 'object', properties: { a: { type: 'string', visibility: 'secret' } }, @@ -148,6 +154,7 @@ describe('compileConfigSchemas', () => { const validate = compileConfigSchemas([ { path: 'a1', + packageName: 'a1', value: { type: 'object', properties: { @@ -179,6 +186,7 @@ describe('compileConfigSchemas', () => { const validate = compileConfigSchemas([ { path: 'a1', + packageName: 'a1', value: { type: 'object', properties: { @@ -242,6 +250,7 @@ describe('deepVisibility', () => { const validate = compileConfigSchemas([ { path: 'a1', + packageName: 'a1', value: { type: 'object', properties: { @@ -257,6 +266,7 @@ describe('deepVisibility', () => { }, { path: 'a2', + packageName: 'a2', value: { type: 'object', deepVisibility: 'secret', @@ -305,6 +315,7 @@ describe('deepVisibility', () => { compileConfigSchemas([ { path: 'a1', + packageName: 'a1', value: { type: 'object', properties: { @@ -320,6 +331,7 @@ describe('deepVisibility', () => { }, { path: 'a2', + packageName: 'a2', value: { type: 'object', deepVisibility: 'secret', @@ -346,6 +358,7 @@ describe('deepVisibility', () => { compileConfigSchemas([ { path: 'a2', + packageName: 'a2', value: { type: 'object', deepVisibility: 'secret', @@ -376,6 +389,7 @@ describe('deepVisibility', () => { compileConfigSchemas([ { path: 'a2', + packageName: 'a2', value: { type: 'object', properties: { @@ -398,6 +412,7 @@ describe('deepVisibility', () => { compileConfigSchemas([ { path: 'a1', + packageName: 'a1', value: { type: 'object', properties: { @@ -418,6 +433,7 @@ describe('deepVisibility', () => { }, { path: 'a2', + packageName: 'a2', value: { type: 'object', deepVisibility: 'secret', diff --git a/packages/config-loader/src/schema/types.ts b/packages/config-loader/src/schema/types.ts index 8f679c93fc..4ba65245da 100644 --- a/packages/config-loader/src/schema/types.ts +++ b/packages/config-loader/src/schema/types.ts @@ -29,6 +29,10 @@ export type ConfigSchemaPackageEntry = { * The relative path that the configuration schema was discovered at. */ path: string; + /** + * The package name for the package this belongs to + */ + packageName: string; }; /** From b51173266c160086be31b0675d7144c934d7329b Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 13:04:39 +0100 Subject: [PATCH 072/213] chore: fixing tests Signed-off-by: blam --- .../config-loader/src/schema/collect.test.ts | 72 +++++++++++-------- packages/config-loader/src/schema/collect.ts | 1 - 2 files changed, 43 insertions(+), 30 deletions(-) diff --git a/packages/config-loader/src/schema/collect.test.ts b/packages/config-loader/src/schema/collect.test.ts index 1e5c3c2bc5..131c9253c2 100644 --- a/packages/config-loader/src/schema/collect.test.ts +++ b/packages/config-loader/src/schema/collect.test.ts @@ -17,6 +17,7 @@ import { createMockDirectory } from '@backstage/backend-test-utils'; import { collectConfigSchemas } from './collect'; import path from 'path'; +import { dependencies } from 'webpack'; // cwd must be restored const origDir = process.cwd(); @@ -68,6 +69,7 @@ describe('collectConfigSchemas', () => { { path: path.join('node_modules', 'a', 'package.json'), value: mockSchema, + packageName: 'a', }, ]); }); @@ -89,6 +91,7 @@ describe('collectConfigSchemas', () => { { path: path.join('root', 'package.json'), value: mockSchema, + packageName: 'root', }, ]); }); @@ -98,40 +101,29 @@ describe('collectConfigSchemas', () => { root: { 'package.json': JSON.stringify({ name: 'root', - configSchema: mockSchema, - dependencies: {}, + dependencies: { + '@backstage/backend-common': '1', + '@backstage/backend-defaults': '1', + }, + configSchema: { ...mockSchema, title: 'root' }, }), - node_modules: { - a: { + }, + node_modules: { + '@backstage': { + 'backend-common': { 'package.json': JSON.stringify({ - name: 'a', - dependencies: { - b: '0.0.0', - }, + name: '@backstage/backend-common', + version: '1', + configSchema: { ...mockSchema, title: 'backend-common' }, }), }, - b: { + 'backend-defaults': { 'package.json': JSON.stringify({ - name: 'a', - dependencies: { - b: '0.0.0', - }, + name: '@backstage/backend-defaults', + version: '1', + configSchema: { ...mockSchema, title: 'backend-defaults' }, }), }, - '@backstage': { - 'backend-common': { - 'package.json': JSON.stringify({ - name: '@backstage/backend-common', - configSchema: { ...mockSchema, title: 'backend-common' }, - }), - }, - 'backend-defaults': { - 'package.json': JSON.stringify({ - name: '@backstage/backend-defaults', - configSchema: { ...mockSchema, title: 'backend-defaults' }, - }), - }, - }, }, }, }); @@ -139,11 +131,22 @@ describe('collectConfigSchemas', () => { process.chdir(mockDir.path); await expect( - collectConfigSchemas([], [path.join('root', 'package.json')]), + collectConfigSchemas(['root'], [path.join('root', 'package.json')]), ).resolves.toEqual([ { path: path.join('root', 'package.json'), - value: mockSchema, + value: { ...mockSchema, title: 'root' }, + packageName: 'root', + }, + { + path: path.join( + 'node_modules', + '@backstage', + 'backend-defaults', + 'package.json', + ), + value: { ...mockSchema, title: 'backend-defaults' }, + packageName: '@backstage/backend-defaults', }, ]); }); @@ -214,18 +217,22 @@ describe('collectConfigSchemas', () => { { path: path.join('node_modules', 'b', 'package.json'), value: { ...mockSchema, title: 'b' }, + packageName: 'b', }, { path: path.join('node_modules', 'c1', 'package.json'), value: { ...mockSchema, title: 'c1' }, + packageName: 'c1', }, { path: path.join('node_modules', 'd1', 'package.json'), value: { ...mockSchema, title: 'd1' }, + packageName: 'd1', }, { path: path.join('root', 'package.json'), value: { ...mockSchema, title: 'root' }, + packageName: 'root', }, ]), ); @@ -268,10 +275,12 @@ describe('collectConfigSchemas', () => { { path: path.join('node_modules', 'a', 'package.json'), value: { ...mockSchema, title: 'inline' }, + packageName: 'a', }, { path: path.join('node_modules', 'b', 'schema.json'), value: { ...mockSchema, title: 'external' }, + packageName: 'b', }, { path: path.join('node_modules', 'c', 'schema.d.ts'), @@ -286,6 +295,7 @@ describe('collectConfigSchemas', () => { }, required: ['tsKey'], }, + packageName: 'c', }, ]), ); @@ -339,14 +349,17 @@ describe('collectConfigSchemas', () => { { path: path.join('node_modules', 'a', 'package.json'), value: mockSchema, + packageName: 'a', }, { path: path.join('node_modules', 'b', 'package.json'), value: { ...mockSchema, title: 'b' }, + packageName: 'b', }, { path: path.join('node_modules', 'c', 'package.json'), value: { ...mockSchema, title: 'c1' }, + packageName: 'c', }, { path: path.join( @@ -357,6 +370,7 @@ describe('collectConfigSchemas', () => { 'package.json', ), value: { ...mockSchema, title: 'c2' }, + packageName: 'c', }, ]), ); diff --git a/packages/config-loader/src/schema/collect.ts b/packages/config-loader/src/schema/collect.ts index bf0fb8dd05..eb788d1038 100644 --- a/packages/config-loader/src/schema/collect.ts +++ b/packages/config-loader/src/schema/collect.ts @@ -158,7 +158,6 @@ export async function collectConfigSchemas( .concat(tsSchemas) .filter( ({ packageName }, _, original) => - true || !( packageName === '@backstage/backend-common' && original.some( From 8ecf8cb449148bb98f369ab76d46310a1efaf3e8 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 13:06:43 +0100 Subject: [PATCH 073/213] chore: changeset Signed-off-by: blam --- .changeset/metal-ravens-hammer.md | 5 +++++ packages/config-loader/src/schema/collect.test.ts | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .changeset/metal-ravens-hammer.md diff --git a/.changeset/metal-ravens-hammer.md b/.changeset/metal-ravens-hammer.md new file mode 100644 index 0000000000..9a834b4715 --- /dev/null +++ b/.changeset/metal-ravens-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': patch +--- + +Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present diff --git a/packages/config-loader/src/schema/collect.test.ts b/packages/config-loader/src/schema/collect.test.ts index 131c9253c2..53db5c6da7 100644 --- a/packages/config-loader/src/schema/collect.test.ts +++ b/packages/config-loader/src/schema/collect.test.ts @@ -17,7 +17,6 @@ import { createMockDirectory } from '@backstage/backend-test-utils'; import { collectConfigSchemas } from './collect'; import path from 'path'; -import { dependencies } from 'webpack'; // cwd must be restored const origDir = process.cwd(); From 5c399429d9545ca9e35b6b4b552a55a7abbb3c4d Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 13:50:33 +0100 Subject: [PATCH 074/213] chore: small refactor and some new config.d.ts Signed-off-by: blam --- packages/backend-defaults/config.d.ts | 18 +++++++++++++++++ packages/config-loader/src/schema/collect.ts | 21 ++++++++++---------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/packages/backend-defaults/config.d.ts b/packages/backend-defaults/config.d.ts index e2a748f85d..0cdd4ef244 100644 --- a/packages/backend-defaults/config.d.ts +++ b/packages/backend-defaults/config.d.ts @@ -22,6 +22,24 @@ export interface Config { }; backend?: { + /** + * Backend configuration for when request authentication is enabled + * + * @deprecated this will be removed when the backwards compatibility is no longer needed with backend-common + */ + auth?: { + /** Keys shared by all backends for signing and validating backend tokens. */ + keys?: { + /** + * Secret for generating tokens. Should be a base64 string, recommended + * length is 24 bytes. + * + * @visibility secret + */ + secret: string; + }[]; + }; + /** * The full base URL of the backend, as seen from the browser's point of * view as it makes calls to the backend. diff --git a/packages/config-loader/src/schema/collect.ts b/packages/config-loader/src/schema/collect.ts index eb788d1038..074248b89b 100644 --- a/packages/config-loader/src/schema/collect.ts +++ b/packages/config-loader/src/schema/collect.ts @@ -153,18 +153,17 @@ export async function collectConfigSchemas( ]); const tsSchemas = await compileTsSchemas(tsSchemaPaths); + const allSchemas = schemas.concat(tsSchemas); - return schemas - .concat(tsSchemas) - .filter( - ({ packageName }, _, original) => - !( - packageName === '@backstage/backend-common' && - original.some( - ({ packageName: p }) => p === '@backstage/backend-defaults', - ) - ), - ); + const isMissingBackendDefaults = !allSchemas.some( + ({ packageName }) => packageName === '@backstage/backend-defaults', + ); + + // Filter out the backend-common schema unless the backend-defaults schema is missing + return allSchemas.filter( + ({ packageName }) => + packageName !== '@backstage/backend-common' || isMissingBackendDefaults, + ); } // This handles the support of TypeScript .d.ts config schema declarations. From b6cb774823dd6b7360df81823c314ddf9527a009 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 13:58:17 +0100 Subject: [PATCH 075/213] chore: fixing config schema again Signed-off-by: blam --- packages/backend-defaults/config.d.ts | 31 +++++++++++---------------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/packages/backend-defaults/config.d.ts b/packages/backend-defaults/config.d.ts index 0cdd4ef244..aa97313921 100644 --- a/packages/backend-defaults/config.d.ts +++ b/packages/backend-defaults/config.d.ts @@ -22,24 +22,6 @@ export interface Config { }; backend?: { - /** - * Backend configuration for when request authentication is enabled - * - * @deprecated this will be removed when the backwards compatibility is no longer needed with backend-common - */ - auth?: { - /** Keys shared by all backends for signing and validating backend tokens. */ - keys?: { - /** - * Secret for generating tokens. Should be a base64 string, recommended - * length is 24 bytes. - * - * @visibility secret - */ - secret: string; - }[]; - }; - /** * The full base URL of the backend, as seen from the browser's point of * view as it makes calls to the backend. @@ -104,6 +86,19 @@ export interface Config { * Options used by the default auth, httpAuth and userInfo services. */ auth?: { + /** + * Keys shared by all backends for signing and validating backend tokens. + * @deprecated this will be removed when the backwards compatibility is no longer needed with backend-common + */ + keys?: { + /** + * Secret for generating tokens. Should be a base64 string, recommended + * length is 24 bytes. + * + * @visibility secret + */ + secret: string; + }[]; /** * This disables the otherwise default auth policy, which requires all * requests to be authenticated with either user or service credentials. From ba840639250cd1647dda46b05c361f0593dbcbe3 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 14:09:47 +0100 Subject: [PATCH 076/213] chore: smol comment Signed-off-by: blam --- .changeset/metal-ravens-hammer.md | 1 + packages/config-loader/src/schema/collect.ts | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.changeset/metal-ravens-hammer.md b/.changeset/metal-ravens-hammer.md index 9a834b4715..e8a97f412c 100644 --- a/.changeset/metal-ravens-hammer.md +++ b/.changeset/metal-ravens-hammer.md @@ -1,5 +1,6 @@ --- '@backstage/config-loader': patch +'@backstage/backend-defaults': patch --- Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present diff --git a/packages/config-loader/src/schema/collect.ts b/packages/config-loader/src/schema/collect.ts index 074248b89b..35ca786a7f 100644 --- a/packages/config-loader/src/schema/collect.ts +++ b/packages/config-loader/src/schema/collect.ts @@ -159,7 +159,10 @@ export async function collectConfigSchemas( ({ packageName }) => packageName === '@backstage/backend-defaults', ); - // Filter out the backend-common schema unless the backend-defaults schema is missing + // Filter out the backend-common schema unless the backend-defaults schema is missing. + // This was causing issue with merging of the schemas. + // This should be removed when we have no need for backend-common anymore, and other + // packages are no longer depending on it. return allSchemas.filter( ({ packageName }) => packageName !== '@backstage/backend-common' || isMissingBackendDefaults, From 4e7f18f604a4033ef70991bc837cd61d6a4d5028 Mon Sep 17 00:00:00 2001 From: blam Date: Fri, 20 Dec 2024 14:15:58 +0100 Subject: [PATCH 077/213] chore: simplify Signed-off-by: blam --- packages/config-loader/src/schema/collect.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/packages/config-loader/src/schema/collect.ts b/packages/config-loader/src/schema/collect.ts index 35ca786a7f..c7af64e0f3 100644 --- a/packages/config-loader/src/schema/collect.ts +++ b/packages/config-loader/src/schema/collect.ts @@ -155,18 +155,20 @@ export async function collectConfigSchemas( const tsSchemas = await compileTsSchemas(tsSchemaPaths); const allSchemas = schemas.concat(tsSchemas); - const isMissingBackendDefaults = !allSchemas.some( + const hasBackendDefaults = allSchemas.some( ({ packageName }) => packageName === '@backstage/backend-defaults', ); - // Filter out the backend-common schema unless the backend-defaults schema is missing. - // This was causing issue with merging of the schemas. - // This should be removed when we have no need for backend-common anymore, and other - // packages are no longer depending on it. - return allSchemas.filter( - ({ packageName }) => - packageName !== '@backstage/backend-common' || isMissingBackendDefaults, - ); + if (hasBackendDefaults) { + // We filter out backend-common schemas here to avoid issues with + // schema merging over different versions of the same schema. + // led to issues such as https://github.com/backstage/backstage/issues/28170 + return allSchemas.filter( + ({ packageName }) => packageName !== '@backstage/backend-common', + ); + } + + return allSchemas; } // This handles the support of TypeScript .d.ts config schema declarations. From 37421bce0218d7595d1bcd4a7bb51aff1dc90130 Mon Sep 17 00:00:00 2001 From: Tim Hansen Date: Fri, 20 Dec 2024 08:37:52 -0700 Subject: [PATCH 078/213] Fix formFieldsApi resolution in useCustomFieldExtensions hook Signed-off-by: Tim Hansen --- .changeset/rich-penguins-stare.md | 5 +++++ .../scaffolder-react/src/hooks/useCustomFieldExtensions.ts | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) create mode 100644 .changeset/rich-penguins-stare.md diff --git a/.changeset/rich-penguins-stare.md b/.changeset/rich-penguins-stare.md new file mode 100644 index 0000000000..0993b0fb55 --- /dev/null +++ b/.changeset/rich-penguins-stare.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-react': patch +--- + +Fixed scaffolder form fields not resolving correctly in the `useCustomFieldExtensions` hook. diff --git a/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts b/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts index d1e670330e..d44fc18e07 100644 --- a/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts +++ b/plugins/scaffolder-react/src/hooks/useCustomFieldExtensions.ts @@ -34,11 +34,11 @@ export const useCustomFieldExtensions = < ) => { // Get custom fields created with FormFieldBlueprint const formFieldsApi = useApi(formFieldsApiRef); - const [{ result: blueprintFields }, methods] = useAsync( - formFieldsApi.getFormFields, + const [{ result: blueprintFields }, { execute }] = useAsync( + () => formFieldsApi.getFormFields(), [], ); - useMountEffect(methods.execute); + useMountEffect(execute); // Get custom fields created with ScaffolderFieldExtensions const outletFields = useElementFilter(outlet, elements => From 3d475a0ddb91d5ebd85718a86aa02d340bf23fbb Mon Sep 17 00:00:00 2001 From: Isabel Tomb Date: Fri, 13 Dec 2024 16:23:15 -0600 Subject: [PATCH 079/213] Update condition before calling normalizeCodeOwner Update the condition in the ternary operator in the resolveCodeOwner function to check that match.owners isn't empty before calling normalizeCodeOwner with match.owners[0] Before this change normalizeCodeOwner could potentially throw an error during processing if the `match` object exists but the match.owners array is empty because normalizeCodeOwner will be passed `undefined` instead of the string it expects. Signed-off-by: Isabel Tomb --- .changeset/twenty-laws-tie.md | 5 +++++ plugins/catalog-backend/src/processors/codeowners/resolve.ts | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 .changeset/twenty-laws-tie.md diff --git a/.changeset/twenty-laws-tie.md b/.changeset/twenty-laws-tie.md new file mode 100644 index 0000000000..a1f9e88e57 --- /dev/null +++ b/.changeset/twenty-laws-tie.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend': patch +--- + +Updated condition in resolveCodeOwner to fix a bug where normalizeCodeOwner could potentially be called with an invalid arg causing an error in CodeOwnersProcessor. diff --git a/plugins/catalog-backend/src/processors/codeowners/resolve.ts b/plugins/catalog-backend/src/processors/codeowners/resolve.ts index 675f6542aa..b0c44a8797 100644 --- a/plugins/catalog-backend/src/processors/codeowners/resolve.ts +++ b/plugins/catalog-backend/src/processors/codeowners/resolve.ts @@ -30,7 +30,9 @@ export function resolveCodeOwner( const { filepath } = parseGitUrl(catalogInfoFileUrl); const match = codeowners.matchFile(filepath, codeOwnerEntries); - return match ? normalizeCodeOwner(match.owners[0]) : undefined; + return match?.owners?.length + ? normalizeCodeOwner(match.owners[0]) + : undefined; } export function normalizeCodeOwner(owner: string) { From f59722dcfa706c39bf941a25192ad5671dc8af77 Mon Sep 17 00:00:00 2001 From: Isabel Tomb Date: Fri, 13 Dec 2024 16:30:45 -0600 Subject: [PATCH 080/213] Add test Add a test to test the scenario that the previous commit fixes. If a repo has a malformed CODEOWNERS file that contains just a pattern and no names the match object will have an empty `owners` array, in which case resolveCodeOwner should return undefined. Signed-off-by: Isabel Tomb --- .../src/processors/codeowners/resolve.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plugins/catalog-backend/src/processors/codeowners/resolve.test.ts b/plugins/catalog-backend/src/processors/codeowners/resolve.test.ts index f9cdf79530..722d27fdb9 100644 --- a/plugins/catalog-backend/src/processors/codeowners/resolve.test.ts +++ b/plugins/catalog-backend/src/processors/codeowners/resolve.test.ts @@ -46,6 +46,14 @@ describe('resolveCodeOwner', () => { ), ).toBe('team-foo'); }); + it('should return undefined if the codeowners file contains no names', () => { + expect( + resolveCodeOwner( + `*`, + 'https://github.com/acme/repo/tree/docs/catalog-info.yaml', + ), + ).toBe(undefined); + }); }); describe('normalizeCodeOwner', () => { From 6c878823523adcca35fd8b43e7fecea5abbb4877 Mon Sep 17 00:00:00 2001 From: Isabel Tomb Date: Wed, 18 Dec 2024 15:32:23 -0600 Subject: [PATCH 081/213] Update .changeset/twenty-laws-tie.md Co-authored-by: Ben Lambert Signed-off-by: Isabel Tomb --- .changeset/twenty-laws-tie.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/twenty-laws-tie.md b/.changeset/twenty-laws-tie.md index a1f9e88e57..02e6fca70c 100644 --- a/.changeset/twenty-laws-tie.md +++ b/.changeset/twenty-laws-tie.md @@ -2,4 +2,4 @@ '@backstage/plugin-catalog-backend': patch --- -Updated condition in resolveCodeOwner to fix a bug where normalizeCodeOwner could potentially be called with an invalid arg causing an error in CodeOwnersProcessor. +Updated condition in `resolveCodeOwner` to fix a bug where `normalizeCodeOwner` could potentially be called with an invalid argument causing an error in `CodeOwnersProcessor` From 9f268f466c7ea948fbed74460776dc76e61e238e Mon Sep 17 00:00:00 2001 From: nikolar Date: Fri, 20 Dec 2024 10:27:38 -0800 Subject: [PATCH 082/213] remove scaffolder changes Signed-off-by: nikolar --- .changeset/big-seals-drum.md | 8 +------ plugins/scaffolder-react/report-alpha.api.md | 8 +++---- plugins/scaffolder-react/report.api.md | 24 ------------------- plugins/scaffolder-react/src/index.ts | 6 ----- .../src/next/components/Stepper/Stepper.tsx | 2 +- .../TemplateCategoryPicker.tsx | 2 +- .../src/next/overridableComponents.ts | 4 ++-- 7 files changed, 9 insertions(+), 45 deletions(-) diff --git a/.changeset/big-seals-drum.md b/.changeset/big-seals-drum.md index 27af4e6ee9..df13cdf687 100644 --- a/.changeset/big-seals-drum.md +++ b/.changeset/big-seals-drum.md @@ -1,13 +1,7 @@ --- -'@backstage/plugin-scaffolder-react': patch '@backstage/plugin-home': patch --- -Added missing exports to surface recently added plugin changes as follows: -`@backstage/plugin-scaffolder-react` - -- add exports needed to override template styles for `BackstageTemplateStepper` and `ScaffolderReactTemplateCategoryPicker` - -`@backstage/plugin-home` +Added missing exports to surface recently added plugin in `@backstage/plugin-home` - add exports needed to have a valid `import { QuickStartCard } from '@backstage/plugin-home';` diff --git a/plugins/scaffolder-react/report-alpha.api.md b/plugins/scaffolder-react/report-alpha.api.md index 11c2d11378..4f9f86d1ac 100644 --- a/plugins/scaffolder-react/report-alpha.api.md +++ b/plugins/scaffolder-react/report-alpha.api.md @@ -46,14 +46,14 @@ import { UiSchema } from '@rjsf/utils'; import { WidgetProps } from '@rjsf/utils'; import { z } from 'zod'; -// @public (undocumented) +// @alpha (undocumented) export type BackstageOverrides = Overrides & { [Name in keyof ScaffolderReactComponentsNameToClassKey]?: Partial< StyleRules >; }; -// @public (undocumented) +// @alpha (undocumented) export type BackstageTemplateStepperClassKey = | 'backButton' | 'footer' @@ -296,13 +296,13 @@ export type ScaffolderPageContextMenuProps = { onCreateClicked?: () => void; }; -// @public (undocumented) +// @alpha (undocumented) export type ScaffolderReactComponentsNameToClassKey = { ScaffolderReactTemplateCategoryPicker: ScaffolderReactTemplateCategoryPickerClassKey; BackstageTemplateStepper: BackstageTemplateStepperClassKey; }; -// @public (undocumented) +// @alpha (undocumented) export type ScaffolderReactTemplateCategoryPickerClassKey = 'root' | 'label'; // @alpha diff --git a/plugins/scaffolder-react/report.api.md b/plugins/scaffolder-react/report.api.md index c733b142c0..8a6b4739a4 100644 --- a/plugins/scaffolder-react/report.api.md +++ b/plugins/scaffolder-react/report.api.md @@ -27,7 +27,6 @@ import { JsonObject } from '@backstage/types'; import { JSONSchema7 } from 'json-schema'; import { JsonValue } from '@backstage/types'; import { Observable } from '@backstage/types'; -import { Overrides } from '@material-ui/core/styles/overrides'; import { PropsWithChildren } from 'react'; import { default as React_2 } from 'react'; import { ReactNode } from 'react'; @@ -37,7 +36,6 @@ import { RegistryWidgetsType } from '@rjsf/utils'; import { RJSFSchema } from '@rjsf/utils'; import { RJSFValidationError } from '@rjsf/utils'; import { StrictRJSFSchema } from '@rjsf/utils'; -import { StyleRules } from '@material-ui/core/styles/withStyles'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { TaskStep } from '@backstage/plugin-scaffolder-common'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; @@ -65,19 +63,6 @@ export type ActionExample = { example: string; }; -// @public (undocumented) -export type BackstageOverrides = Overrides & { - [Name in keyof ScaffolderReactComponentsNameToClassKey]?: Partial< - StyleRules - >; -}; - -// @public (undocumented) -export type BackstageTemplateStepperClassKey = - | 'backButton' - | 'footer' - | 'formWrapper'; - // @public export function createScaffolderFieldExtension< TReturnValue = unknown, @@ -340,15 +325,6 @@ export type ScaffolderOutputText = { default?: boolean; }; -// @public (undocumented) -export type ScaffolderReactComponentsNameToClassKey = { - ScaffolderReactTemplateCategoryPicker: ScaffolderReactTemplateCategoryPickerClassKey; - BackstageTemplateStepper: BackstageTemplateStepperClassKey; -}; - -// @public (undocumented) -export type ScaffolderReactTemplateCategoryPickerClassKey = 'root' | 'label'; - // @public export type ScaffolderRJSFField< T = any, diff --git a/plugins/scaffolder-react/src/index.ts b/plugins/scaffolder-react/src/index.ts index 69bb70598c..e73df50fce 100644 --- a/plugins/scaffolder-react/src/index.ts +++ b/plugins/scaffolder-react/src/index.ts @@ -22,9 +22,3 @@ export * from './api'; export * from './hooks'; export * from './layouts'; export * from './utils'; -export type { - BackstageOverrides, - ScaffolderReactComponentsNameToClassKey, - ScaffolderReactTemplateCategoryPickerClassKey, - BackstageTemplateStepperClassKey, -} from './next'; diff --git a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx index fd5d394ef6..0b4cbbc94a 100644 --- a/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx +++ b/plugins/scaffolder-react/src/next/components/Stepper/Stepper.tsx @@ -56,7 +56,7 @@ import { merge } from 'lodash'; const validator = customizeValidator(); ajvErrors(validator.ajv); -/** @public */ +/** @alpha */ export type BackstageTemplateStepperClassKey = | 'backButton' | 'footer' diff --git a/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx b/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx index 335f51b3e1..f2505ec148 100644 --- a/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx +++ b/plugins/scaffolder-react/src/next/components/TemplateCategoryPicker/TemplateCategoryPicker.tsx @@ -33,7 +33,7 @@ import { alertApiRef, useApi } from '@backstage/core-plugin-api'; const icon = ; const checkedIcon = ; -/** @public */ +/** @alpha */ export type ScaffolderReactTemplateCategoryPickerClassKey = 'root' | 'label'; const useStyles = makeStyles( diff --git a/plugins/scaffolder-react/src/next/overridableComponents.ts b/plugins/scaffolder-react/src/next/overridableComponents.ts index d35a70b4bf..2045496166 100644 --- a/plugins/scaffolder-react/src/next/overridableComponents.ts +++ b/plugins/scaffolder-react/src/next/overridableComponents.ts @@ -19,13 +19,13 @@ import { StyleRules } from '@material-ui/core/styles/withStyles'; import { ScaffolderReactTemplateCategoryPickerClassKey } from './components/TemplateCategoryPicker/TemplateCategoryPicker'; import { BackstageTemplateStepperClassKey } from './components/Stepper/Stepper'; -/** @public */ +/** @alpha */ export type ScaffolderReactComponentsNameToClassKey = { ScaffolderReactTemplateCategoryPicker: ScaffolderReactTemplateCategoryPickerClassKey; BackstageTemplateStepper: BackstageTemplateStepperClassKey; }; -/** @public */ +/** @alpha */ export type BackstageOverrides = Overrides & { [Name in keyof ScaffolderReactComponentsNameToClassKey]?: Partial< StyleRules From 37c3a58b681eeef16e21f5a8bf5d14c4338c84c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomas=20Daba=C5=A1inskas?= Date: Fri, 20 Dec 2024 21:54:41 +0200 Subject: [PATCH 083/213] feat(plugins): add scaffolder-backend-datolabs-gcp plugin to marketplace MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added new scaffolder plugin from Datolabs that provides actions for interacting with Google Cloud Platform (GCP). The plugin will be available in the marketplace starting December 2024. Signed-off-by: Tomas Dabašinskas --- .../data/plugins/scaffolder-backend-datolabs-gcp.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 microsite/data/plugins/scaffolder-backend-datolabs-gcp.yaml diff --git a/microsite/data/plugins/scaffolder-backend-datolabs-gcp.yaml b/microsite/data/plugins/scaffolder-backend-datolabs-gcp.yaml new file mode 100644 index 0000000000..528506c02d --- /dev/null +++ b/microsite/data/plugins/scaffolder-backend-datolabs-gcp.yaml @@ -0,0 +1,10 @@ +--- +title: Scaffolder Google Cloud Platform (GCP) actions +author: Datolabs +authorUrl: https://www.datolabs.io +category: Scaffolder +description: A collection of actions for interacting with Google Cloud Platform (GCP). +documentation: https://github.com/datolabs-io/backstage-plugins/blob/main/workspaces/scaffolder-backend-module-gcp/plugins/scaffolder-backend-module-gcp/README.md +iconUrl: https://avatars1.githubusercontent.com/u/2810941?s=280&v=4 +npmPackageName: '@datolabs/plugin-scaffolder-backend-module-gcp' +addedDate: '2024-12-20' From 9a806f050d3d40f4035f38a9732f5c61ea708759 Mon Sep 17 00:00:00 2001 From: nikolar Date: Fri, 20 Dec 2024 21:58:56 -0800 Subject: [PATCH 084/213] update changeset Signed-off-by: nikolar --- .changeset/big-seals-drum.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.changeset/big-seals-drum.md b/.changeset/big-seals-drum.md index df13cdf687..9b4ab16701 100644 --- a/.changeset/big-seals-drum.md +++ b/.changeset/big-seals-drum.md @@ -2,6 +2,4 @@ '@backstage/plugin-home': patch --- -Added missing exports to surface recently added plugin in `@backstage/plugin-home` - -- add exports needed to have a valid `import { QuickStartCard } from '@backstage/plugin-home';` +Exported `QuickStartCard` component. From ec547b803291f3c7a698c3a8282b3a27d2119c9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 21 Dec 2024 15:51:38 +0100 Subject: [PATCH 085/213] add error handler middleware in the plugin router MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/cyan-frogs-count.md | 6 ++++ .changeset/shiny-walls-press.md | 7 +++++ .../httpRouter/httpRouterServiceFactory.ts | 20 +++++++++++-- .../src/module/WrapperProviders.ts | 1 - .../src/router/routes.ts | 11 ------- .../src/service/IncrementalCatalogBuilder.ts | 1 - .../devtools-backend/src/service/router.ts | 6 +--- .../src/routes/resourceRoutes.test.ts | 30 +++++++++---------- plugins/notifications-backend/dev/index.ts | 8 +---- 9 files changed, 48 insertions(+), 42 deletions(-) create mode 100644 .changeset/cyan-frogs-count.md create mode 100644 .changeset/shiny-walls-press.md diff --git a/.changeset/cyan-frogs-count.md b/.changeset/cyan-frogs-count.md new file mode 100644 index 0000000000..b06a07468a --- /dev/null +++ b/.changeset/cyan-frogs-count.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-incremental-ingestion': patch +'@backstage/plugin-devtools-backend': patch +--- + +Remove the error handler middleware, since that is now provided by the framework diff --git a/.changeset/shiny-walls-press.md b/.changeset/shiny-walls-press.md new file mode 100644 index 0000000000..aa93779d85 --- /dev/null +++ b/.changeset/shiny-walls-press.md @@ -0,0 +1,7 @@ +--- +'@backstage/backend-defaults': minor +--- + +**BREAKING**: Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. + +If you were using the standard `MiddlewareFactory` just to put an `error` middleware in you router, you can now remove that at your earliest convenience since it's redundant. If you have custom error handlers in your plugin router, those will continue to function as previously. If you were relying on thrown errors propagating all the way down to the root HTTP router, you will find that they no longer do that, and may want to hoist your error handling up to the plugin level instead. diff --git a/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts b/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts index 6f8792aa3d..1f2b989018 100644 --- a/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts +++ b/packages/backend-defaults/src/entrypoints/httpRouter/httpRouterServiceFactory.ts @@ -27,6 +27,7 @@ import { createCredentialsBarrier, createAuthIntegrationRouter, } from './http'; +import { MiddlewareFactory } from '../rootHttpRouter'; /** * HTTP route registration for plugins. @@ -47,8 +48,17 @@ export const httpRouterServiceFactory = createServiceFactory({ rootHttpRouter: coreServices.rootHttpRouter, auth: coreServices.auth, httpAuth: coreServices.httpAuth, + logger: coreServices.logger, }, - async factory({ auth, httpAuth, config, plugin, rootHttpRouter, lifecycle }) { + async factory({ + auth, + httpAuth, + config, + plugin, + rootHttpRouter, + lifecycle, + logger, + }) { const router = PromiseRouter(); rootHttpRouter.use(`/api/${plugin.getId()}`, router); @@ -63,9 +73,15 @@ export const httpRouterServiceFactory = createServiceFactory({ router.use(credentialsBarrier.middleware); router.use(createCookieAuthRefreshMiddleware({ auth, httpAuth })); + const pluginRoutes = PromiseRouter(); + router.use(pluginRoutes); + + const middleware = MiddlewareFactory.create({ config, logger }); + router.use(middleware.error()); + return { use(handler: Handler): void { - router.use(handler); + pluginRoutes.use(handler); }, addAuthPolicy(policy: HttpRouterServiceAuthPolicy): void { credentialsBarrier.addAuthPolicy(policy); diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts index 2f8a8df3ba..11b9619dc5 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/module/WrapperProviders.ts @@ -79,7 +79,6 @@ export class WrapperProviders { return new IncrementalProviderRouter( new IncrementalIngestionDatabaseManager({ client: this.options.client }), this.options.logger, - this.options.config, ).createRouter(); } diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts b/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts index ad8d6ce103..ca6f600840 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/router/routes.ts @@ -18,22 +18,17 @@ import express from 'express'; import Router from 'express-promise-router'; import { IncrementalIngestionDatabaseManager } from '../database/IncrementalIngestionDatabaseManager'; import { LoggerService } from '@backstage/backend-plugin-api'; -import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; -import { Config } from '@backstage/config'; export class IncrementalProviderRouter { private manager: IncrementalIngestionDatabaseManager; private logger: LoggerService; - private config: Config; constructor( manager: IncrementalIngestionDatabaseManager, logger: LoggerService, - config: Config, ) { this.manager = manager; this.logger = logger; - this.config = config; } createRouter(): express.Router { @@ -253,12 +248,6 @@ export class IncrementalProviderRouter { }, ); - const middleware = MiddlewareFactory.create({ - logger: this.logger, - config: this.config, - }); - router.use(middleware.error()); - return router; } } diff --git a/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts b/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts index ed4414b68b..6ea2f10a64 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts +++ b/plugins/catalog-backend-module-incremental-ingestion/src/service/IncrementalCatalogBuilder.ts @@ -66,7 +66,6 @@ export class IncrementalCatalogBuilder { const incrementalAdminRouter = await new IncrementalProviderRouter( this.manager, routerLogger, - this.env.config, ).createRouter(); return { incrementalAdminRouter }; diff --git a/plugins/devtools-backend/src/service/router.ts b/plugins/devtools-backend/src/service/router.ts index adcb79c4cd..ad77495b36 100644 --- a/plugins/devtools-backend/src/service/router.ts +++ b/plugins/devtools-backend/src/service/router.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { AuthorizeResult } from '@backstage/plugin-permission-common'; import { devToolsConfigReadPermission, @@ -20,7 +21,6 @@ import { devToolsInfoReadPermission, devToolsPermissions, } from '@backstage/plugin-devtools-common'; - import { DevToolsBackendApi } from '../api'; import { NotAllowedError } from '@backstage/errors'; import Router from 'express-promise-router'; @@ -33,7 +33,6 @@ import { PermissionsService, RootConfigService, } from '@backstage/backend-plugin-api'; -import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; /** * @internal @@ -121,8 +120,5 @@ export async function createRouter( response.status(200).json(health); }); - const middleware = MiddlewareFactory.create({ logger, config }); - - router.use(middleware.error()); return router; } diff --git a/plugins/kubernetes-backend/src/routes/resourceRoutes.test.ts b/plugins/kubernetes-backend/src/routes/resourceRoutes.test.ts index 01da602232..7ace17e805 100644 --- a/plugins/kubernetes-backend/src/routes/resourceRoutes.test.ts +++ b/plugins/kubernetes-backend/src/routes/resourceRoutes.test.ts @@ -169,7 +169,7 @@ describe('resourcesRoutes', () => { error: { name: 'InputError', message: 'entity is a required field' }, request: { method: 'POST', - url: '/api/kubernetes/resources/workloads/query', + url: '/resources/workloads/query', }, response: { statusCode: 400 }, }); @@ -193,7 +193,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/workloads/query', + url: '/resources/workloads/query', }, response: { statusCode: 400 }, }); @@ -216,7 +216,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/workloads/query', + url: '/resources/workloads/query', }, response: { statusCode: 400 }, }); @@ -240,7 +240,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/workloads/query', + url: '/resources/workloads/query', }, response: { statusCode: 401 }, }); @@ -264,7 +264,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/workloads/query', + url: '/resources/workloads/query', }, response: { statusCode: 401 }, }); @@ -287,7 +287,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/workloads/query', + url: '/resources/workloads/query', }, response: { statusCode: 500 }, }); @@ -346,7 +346,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 400 }, }); @@ -370,7 +370,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 400 }, }); @@ -394,7 +394,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 400 }, }); @@ -420,7 +420,7 @@ describe('resourcesRoutes', () => { error: { name: 'InputError', message: 'entity is a required field' }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 400 }, }); @@ -451,7 +451,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 400 }, }); @@ -481,7 +481,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 400 }, }); @@ -512,7 +512,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 401 }, }); @@ -543,7 +543,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 401 }, }); @@ -573,7 +573,7 @@ describe('resourcesRoutes', () => { }, request: { method: 'POST', - url: '/api/kubernetes/resources/custom/query', + url: '/resources/custom/query', }, response: { statusCode: 500 }, }); diff --git a/plugins/notifications-backend/dev/index.ts b/plugins/notifications-backend/dev/index.ts index f1fe453457..936c31f211 100644 --- a/plugins/notifications-backend/dev/index.ts +++ b/plugins/notifications-backend/dev/index.ts @@ -26,7 +26,6 @@ import { } from '@backstage/plugin-notifications-common'; import express, { Response } from 'express'; import Router from 'express-promise-router'; -import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; const randomSeverity = (): NotificationSeverity => { return notificationSeverities[ @@ -77,12 +76,8 @@ const notificationsDebug = createBackendPlugin({ deps: { notifications: notificationService, httpRouter: coreServices.httpRouter, - config: coreServices.rootConfig, - logger: coreServices.logger, }, - async init({ notifications, httpRouter, config, logger }) { - const middleware = MiddlewareFactory.create({ config, logger }); - + async init({ notifications, httpRouter }) { const router = Router(); router.use(express.json()); router.post('/', async (_, res: Response) => { @@ -100,7 +95,6 @@ const notificationsDebug = createBackendPlugin({ }); res.status(200).send({ status: 'ok' }); }); - router.use(middleware.error()); httpRouter.use(router); httpRouter.addAuthPolicy({ From 46c2f6eda2bd80497f1e3a3842656fb6c331d299 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 21 Dec 2024 19:08:02 +0100 Subject: [PATCH 086/213] feedback MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/shiny-walls-press.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/shiny-walls-press.md b/.changeset/shiny-walls-press.md index aa93779d85..29fe54afa2 100644 --- a/.changeset/shiny-walls-press.md +++ b/.changeset/shiny-walls-press.md @@ -2,6 +2,6 @@ '@backstage/backend-defaults': minor --- -**BREAKING**: Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. +Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. If you were using the standard `MiddlewareFactory` just to put an `error` middleware in you router, you can now remove that at your earliest convenience since it's redundant. If you have custom error handlers in your plugin router, those will continue to function as previously. If you were relying on thrown errors propagating all the way down to the root HTTP router, you will find that they no longer do that, and may want to hoist your error handling up to the plugin level instead. From d9d62ef90ca27763687783a3dd518a3bc859b098 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 21 Dec 2024 19:54:17 +0100 Subject: [PATCH 087/213] remove usages of some backend-common helpers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/nervous-bottles-occur.md | 11 +++++++++++ plugins/app-backend/src/service/appPlugin.test.ts | 4 ---- plugins/app-backend/src/service/router.ts | 7 ++++--- plugins/auth-node/package.json | 1 + .../src/oauth/createOAuthRouteHandlers.test.ts | 9 +++++++-- .../package.json | 1 - ...talogModuleGitlabOrgDiscoveryEntityProvider.ts | 3 +-- .../src/service/createRouter.test.ts | 8 ++++++++ .../catalog-backend/src/service/createRouter.ts | 2 -- .../http/HttpPostIngressEventPublisher.test.ts | 15 ++++++++++++--- .../service/http/HttpPostIngressEventPublisher.ts | 2 -- .../src/service/router.ts | 2 -- .../src/service/KubernetesProxy.test.ts | 11 ++++++++--- plugins/permission-backend/package.json | 1 + .../permission-backend/src/service/router.test.ts | 8 +++++++- plugins/permission-backend/src/service/router.ts | 7 +------ plugins/permission-node/package.json | 1 + .../createPermissionIntegrationRouter.test.ts | 15 ++++++++++++--- .../createPermissionIntegrationRouter.ts | 4 ---- yarn.lock | 4 +++- 20 files changed, 77 insertions(+), 39 deletions(-) create mode 100644 .changeset/nervous-bottles-occur.md diff --git a/.changeset/nervous-bottles-occur.md b/.changeset/nervous-bottles-occur.md new file mode 100644 index 0000000000..c489661645 --- /dev/null +++ b/.changeset/nervous-bottles-occur.md @@ -0,0 +1,11 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab-org': patch +'@backstage/plugin-permission-backend': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-permission-node': patch +'@backstage/plugin-events-backend': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-node': patch +--- + +Remove some internal usages of the backend-common package diff --git a/plugins/app-backend/src/service/appPlugin.test.ts b/plugins/app-backend/src/service/appPlugin.test.ts index 068405c19c..0c5ac1efb0 100644 --- a/plugins/app-backend/src/service/appPlugin.test.ts +++ b/plugins/app-backend/src/service/appPlugin.test.ts @@ -20,7 +20,6 @@ import { startTestBackend, } from '@backstage/backend-test-utils'; import { appPlugin } from './appPlugin'; -import { createRootLogger } from '@backstage/backend-common'; import { overridePackagePathResolution } from '@backstage/backend-plugin-api/testUtils'; const mockDir = createMockDirectory(); @@ -29,9 +28,6 @@ overridePackagePathResolution({ path: mockDir.path, }); -// Make sure root logger is initialized ahead of FS mock -createRootLogger(); - describe('appPlugin', () => { afterEach(() => { mockDir.clear(); diff --git a/plugins/app-backend/src/service/router.ts b/plugins/app-backend/src/service/router.ts index 24671fe5e9..4926383638 100644 --- a/plugins/app-backend/src/service/router.ts +++ b/plugins/app-backend/src/service/router.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { notFoundHandler } from '@backstage/backend-common'; import { DatabaseService, resolvePackagePath, @@ -22,7 +21,7 @@ import { } from '@backstage/backend-plugin-api'; import { AppConfig } from '@backstage/config'; import helmet from 'helmet'; -import express from 'express'; +import express, { Request, Response } from 'express'; import Router from 'express-promise-router'; import fs from 'fs-extra'; import { resolve as resolvePath } from 'path'; @@ -299,7 +298,9 @@ async function createEntryPointRouter({ if (staticFallbackHandler) { staticRouter.use(staticFallbackHandler); } - staticRouter.use(notFoundHandler()); + staticRouter.use((_req: Request, res: Response) => { + res.status(404).end(); + }); router.use('/static', staticRouter); diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index dc62a76c82..8aeaadd81a 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -56,6 +56,7 @@ "zod-validation-error": "^3.4.0" }, "devDependencies": { + "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "cookie-parser": "^1.4.6", diff --git a/plugins/auth-node/src/oauth/createOAuthRouteHandlers.test.ts b/plugins/auth-node/src/oauth/createOAuthRouteHandlers.test.ts index 4ea8dc17cc..46fa058b47 100644 --- a/plugins/auth-node/src/oauth/createOAuthRouteHandlers.test.ts +++ b/plugins/auth-node/src/oauth/createOAuthRouteHandlers.test.ts @@ -22,10 +22,11 @@ import PromiseRouter from 'express-promise-router'; import { AuthProviderRouteHandlers, AuthResolverContext } from '../types'; import { createOAuthRouteHandlers } from './createOAuthRouteHandlers'; import { OAuthAuthenticator } from './types'; -import { errorHandler } from '@backstage/backend-common'; import { encodeOAuthState, OAuthState } from './state'; import { PassportProfile } from '../passport'; import { parseWebMessageResponse } from '../flow/__testUtils__/parseWebMessageResponse'; +import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; +import { mockServices } from '@backstage/backend-test-utils'; const mockAuthenticator: jest.Mocked> = { initialize: jest.fn(_r => ({ ctx: 'authenticator' })), @@ -63,13 +64,17 @@ const baseConfig = { }; function wrapInApp(handlers: AuthProviderRouteHandlers) { + const middleware = MiddlewareFactory.create({ + logger: mockServices.logger.mock(), + config: mockServices.rootConfig(), + }); const app = express(); const router = PromiseRouter(); router.use(cookieParser()); app.use('/my-provider', router); - app.use(errorHandler()); + app.use(middleware.error()); router.get('/start', handlers.start.bind(handlers)); router.get('/handler/frame', handlers.frameHandler.bind(handlers)); diff --git a/plugins/catalog-backend-module-gitlab-org/package.json b/plugins/catalog-backend-module-gitlab-org/package.json index c6cac3d116..8339298db6 100644 --- a/plugins/catalog-backend-module-gitlab-org/package.json +++ b/plugins/catalog-backend-module-gitlab-org/package.json @@ -33,7 +33,6 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", "@backstage/plugin-catalog-backend-module-gitlab": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", diff --git a/plugins/catalog-backend-module-gitlab-org/src/catalogModuleGitlabOrgDiscoveryEntityProvider.ts b/plugins/catalog-backend-module-gitlab-org/src/catalogModuleGitlabOrgDiscoveryEntityProvider.ts index ffb2cfb629..85c1b65028 100644 --- a/plugins/catalog-backend-module-gitlab-org/src/catalogModuleGitlabOrgDiscoveryEntityProvider.ts +++ b/plugins/catalog-backend-module-gitlab-org/src/catalogModuleGitlabOrgDiscoveryEntityProvider.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { loggerToWinstonLogger } from '@backstage/backend-common'; import { coreServices, createBackendModule, @@ -44,7 +43,7 @@ export const catalogModuleGitlabOrgDiscoveryEntityProvider = async init({ config, catalog, logger, scheduler, events }) { const gitlabOrgDiscoveryEntityProvider = GitlabOrgDiscoveryEntityProvider.fromConfig(config, { - logger: loggerToWinstonLogger(logger), + logger, events, scheduler, }); diff --git a/plugins/catalog-backend/src/service/createRouter.test.ts b/plugins/catalog-backend/src/service/createRouter.test.ts index 234a636a62..aa068a2122 100644 --- a/plugins/catalog-backend/src/service/createRouter.test.ts +++ b/plugins/catalog-backend/src/service/createRouter.test.ts @@ -42,6 +42,12 @@ import { wrapServer } from '@backstage/backend-openapi-utils'; import { Server } from 'http'; import { mockCredentials, mockServices } from '@backstage/backend-test-utils'; import { LocationAnalyzer } from '@backstage/plugin-catalog-node'; +import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; + +const middleware = MiddlewareFactory.create({ + logger: mockServices.logger.mock(), + config: mockServices.rootConfig(), +}); describe('createRouter readonly disabled', () => { let entitiesCatalog: jest.Mocked; @@ -86,6 +92,7 @@ describe('createRouter readonly disabled', () => { locationAnalyzer, permissionsService, }); + router.use(middleware.error()); app = await wrapServer(express().use(router)); }); @@ -965,6 +972,7 @@ describe('createRouter readonly and raw json enabled', () => { httpAuth: mockServices.httpAuth(), permissionsService, }); + router.use(middleware.error()); app = express().use(router); }); diff --git a/plugins/catalog-backend/src/service/createRouter.ts b/plugins/catalog-backend/src/service/createRouter.ts index f0b6793c3f..be5b650e6a 100644 --- a/plugins/catalog-backend/src/service/createRouter.ts +++ b/plugins/catalog-backend/src/service/createRouter.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { errorHandler } from '@backstage/backend-common'; import { ANNOTATION_LOCATION, ANNOTATION_ORIGIN_LOCATION, @@ -446,6 +445,5 @@ export async function createRouter( }); } - router.use(errorHandler()); return router; } diff --git a/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts b/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts index 32a24de169..16f36d6b0a 100644 --- a/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts +++ b/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.test.ts @@ -21,6 +21,12 @@ import Router from 'express-promise-router'; import request from 'supertest'; import { HttpPostIngressEventPublisher } from './HttpPostIngressEventPublisher'; import { mockServices } from '@backstage/backend-test-utils'; +import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; + +const middleware = MiddlewareFactory.create({ + logger: mockServices.logger.mock(), + config: mockServices.rootConfig(), +}); describe('HttpPostIngressEventPublisher', () => { const logger = mockServices.logger.mock(); @@ -110,6 +116,7 @@ describe('HttpPostIngressEventPublisher', () => { logger, }); publisher.bind(router); + router.use(middleware.error()); const response = await request(app) .post('/http/testA') @@ -124,7 +131,7 @@ describe('HttpPostIngressEventPublisher', () => { 'Failed to retrieve raw body from incoming event for topic testA; not a buffer: object', name: 'Error', }, - request: { method: 'POST', url: '/testA' }, + request: { method: 'POST', url: '/http/testA' }, response: { statusCode: 500 }, }), ); @@ -149,6 +156,7 @@ describe('HttpPostIngressEventPublisher', () => { logger, }); publisher.bind(router); + router.use(middleware.error()); const response = await request(app) .post('/http/testA') @@ -163,7 +171,7 @@ describe('HttpPostIngressEventPublisher', () => { name: 'UnsupportedCharsetError', statusCode: 415, }, - request: { method: 'POST', url: '/testA' }, + request: { method: 'POST', url: '/http/testA' }, response: { statusCode: 415 }, }), ); @@ -188,6 +196,7 @@ describe('HttpPostIngressEventPublisher', () => { logger, }); publisher.bind(router); + router.use(middleware.error()); const response = await request(app) .post('/http/testA') @@ -202,7 +211,7 @@ describe('HttpPostIngressEventPublisher', () => { name: 'UnsupportedMediaTypeError', statusCode: 415, }, - request: { method: 'POST', url: '/testA' }, + request: { method: 'POST', url: '/http/testA' }, response: { statusCode: 415 }, }), ); diff --git a/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.ts b/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.ts index fe17186856..806247e870 100644 --- a/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.ts +++ b/plugins/events-backend/src/service/http/HttpPostIngressEventPublisher.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { errorHandler } from '@backstage/backend-common'; import { LoggerService } from '@backstage/backend-plugin-api'; import { Config } from '@backstage/config'; import { CustomErrorBase } from '@backstage/errors'; @@ -97,7 +96,6 @@ export class HttpPostIngressEventPublisher { this.addRouteForTopic(router, topic, ingresses[topic].validator), ); - router.use(errorHandler()); return router; } diff --git a/plugins/example-todo-list-backend/src/service/router.ts b/plugins/example-todo-list-backend/src/service/router.ts index abadbbb4d9..9ff4c6e91b 100644 --- a/plugins/example-todo-list-backend/src/service/router.ts +++ b/plugins/example-todo-list-backend/src/service/router.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { errorHandler } from '@backstage/backend-common'; import express from 'express'; import Router from 'express-promise-router'; import { add, getAll, update } from './todos'; @@ -75,7 +74,6 @@ export async function createRouter( res.json(update(req.body)); }); - router.use(errorHandler()); return router; } diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index 41803dcd9d..3ed8b25c56 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -16,7 +16,6 @@ import 'buffer'; import { resolve as resolvePath } from 'path'; -import { errorHandler } from '@backstage/backend-common'; import { createMockDirectory, mockServices, @@ -53,6 +52,12 @@ import { import type { Request } from 'express'; import { BackstageCredentials } from '@backstage/backend-plugin-api'; +import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; + +const middleware = MiddlewareFactory.create({ + logger: mockServices.logger.mock(), + config: mockServices.rootConfig(), +}); const mockCertDir = createMockDirectory({ content: { @@ -117,7 +122,7 @@ describe('KubernetesProxy', () => { const app = express().use( Router() .use(proxyPath, proxy.createRequestHandler({ permissionApi })) - .use(errorHandler()), + .use(middleware.error()), ); const requestPromise = request(app).get(proxyPath + requestPath); @@ -924,7 +929,7 @@ describe('KubernetesProxy', () => { .use( Router() .use(proxyPath, proxy.createRequestHandler({ permissionApi })) - .use(errorHandler()), + .use(middleware.error()), ) .listen(0, '0.0.0.0', () => { proxyPort = (expressServer.address() as AddressInfo).port; diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 6e513c1950..289f4e59a4 100644 --- a/plugins/permission-backend/package.json +++ b/plugins/permission-backend/package.json @@ -67,6 +67,7 @@ "zod": "^3.22.4" }, "devDependencies": { + "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/lodash": "^4.14.151", diff --git a/plugins/permission-backend/src/service/router.test.ts b/plugins/permission-backend/src/service/router.test.ts index f12bacc61d..e3fb5418cf 100644 --- a/plugins/permission-backend/src/service/router.test.ts +++ b/plugins/permission-backend/src/service/router.test.ts @@ -27,6 +27,7 @@ import { createRouter } from './router'; import { ConfigReader } from '@backstage/config'; import { BackstageCredentials } from '@backstage/backend-plugin-api'; import { mockCredentials, mockServices } from '@backstage/backend-test-utils'; +import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; const mockApplyConditions: jest.MockedFunction< InstanceType['applyConditions'] @@ -60,6 +61,11 @@ const policy = { }), }; +const middleware = MiddlewareFactory.create({ + logger: mockServices.logger.mock(), + config: mockServices.rootConfig(), +}); + describe('createRouter', () => { let app: express.Express; @@ -75,7 +81,7 @@ describe('createRouter', () => { userInfo: mockServices.userInfo(), policy, }); - + router.use(middleware.error()); app = express().use(router); }); diff --git a/plugins/permission-backend/src/service/router.ts b/plugins/permission-backend/src/service/router.ts index db2b72f95c..c624947375 100644 --- a/plugins/permission-backend/src/service/router.ts +++ b/plugins/permission-backend/src/service/router.ts @@ -17,10 +17,7 @@ import { z } from 'zod'; import express, { Request, Response } from 'express'; import Router from 'express-promise-router'; -import { - createLegacyAuthAdapters, - errorHandler, -} from '@backstage/backend-common'; +import { createLegacyAuthAdapters } from '@backstage/backend-common'; import { InputError } from '@backstage/errors'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { @@ -251,7 +248,5 @@ export async function createRouter( }, ); - router.use(errorHandler()); - return router; } diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 341b25e8ec..31e40eb428 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -69,6 +69,7 @@ "zod-to-json-schema": "^3.20.4" }, "devDependencies": { + "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/supertest": "^2.0.8", diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts index a38059e547..0062ef03b6 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.test.ts @@ -29,6 +29,8 @@ import { PermissionIntegrationRouterOptions, } from './createPermissionIntegrationRouter'; import { createPermissionRule } from './createPermissionRule'; +import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; +import { mockServices } from '@backstage/backend-test-utils'; const testPermission: Permission = createPermission({ name: 'test.permission', @@ -109,6 +111,11 @@ const mockedOptionResources: PermissionIntegrationRouterOptions = { ], }; +const middleware = MiddlewareFactory.create({ + logger: mockServices.logger.mock(), + config: mockServices.rootConfig(), +}); + const createApp = ( mockedGetResources: | typeof defaultMockedGetResources1 = defaultMockedGetResources1, @@ -122,7 +129,7 @@ const createApp = ( }) : createPermissionIntegrationRouter({ permissions: [testPermission] }); - return express().use(router); + return express().use(router.use(middleware.error())); }; describe('createPermissionIntegrationRouter', () => { @@ -453,7 +460,9 @@ describe('createPermissionIntegrationRouter', () => { beforeEach(async () => { const app = express().use( - createPermissionIntegrationRouter(mockedOptionResources), + createPermissionIntegrationRouter(mockedOptionResources).use( + middleware.error(), + ), ); response = await request(app) @@ -765,7 +774,7 @@ describe('createPermissionIntegrationRouter', () => { resourceType: 'test-resource', permissions: [testPermission], rules: [testRule1, testRule2], - }), + }).use(middleware.error()), ), ) .post('/.well-known/backstage/permissions/apply-conditions') diff --git a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts index 5210e6fb1c..de1e32169a 100644 --- a/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts +++ b/plugins/permission-node/src/integration/createPermissionIntegrationRouter.ts @@ -19,7 +19,6 @@ import Router from 'express-promise-router'; import { z } from 'zod'; import zodToJsonSchema from 'zod-to-json-schema'; import { InputError } from '@backstage/errors'; -import { errorHandler } from '@backstage/backend-common'; import { AuthorizeResult, DefinitivePolicyDecision, @@ -483,9 +482,6 @@ export function createPermissionIntegrationRouter< }, ); - // TODO(belugas): Remove this when dropping support to the legacy backend system because setting the error handler manually is no logger required in the new system. - router.use(errorHandler()); - return router; } diff --git a/yarn.lock b/yarn.lock index ffc9146ad4..2446999bfd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5350,6 +5350,7 @@ __metadata: resolution: "@backstage/plugin-auth-node@workspace:plugins/auth-node" dependencies: "@backstage/backend-common": ^0.25.0 + "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-client": "workspace:^" @@ -5612,7 +5613,6 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-gitlab-org@workspace:plugins/catalog-backend-module-gitlab-org" dependencies: - "@backstage/backend-common": ^0.25.0 "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" @@ -6914,6 +6914,7 @@ __metadata: resolution: "@backstage/plugin-permission-backend@workspace:plugins/permission-backend" dependencies: "@backstage/backend-common": ^0.25.0 + "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" @@ -6957,6 +6958,7 @@ __metadata: resolution: "@backstage/plugin-permission-node@workspace:plugins/permission-node" dependencies: "@backstage/backend-common": ^0.25.0 + "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" From 8379bf4a8062691e9746055b531b1e3de118e192 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 21 Dec 2024 20:41:08 +0100 Subject: [PATCH 088/213] remove PluginDatabaseManager and PluginEndpointDiscovery MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/rich-vans-hope.md | 12 ++++++++ .../entrypoints/database/DatabaseManager.ts | 10 +++---- .../src/entrypoints/database/types.ts | 2 -- .../entrypoints/discovery/HostDiscovery.ts | 2 +- .../report.api.md | 8 +++--- .../src/manager/types.ts | 13 ++++----- packages/backend-legacy/src/types.ts | 13 ++++----- plugins/app-backend/package.json | 1 - .../src/lib/assets/StaticAssetsStore.ts | 4 +-- .../auth-backend/src/database/AuthDatabase.ts | 14 +++++----- plugins/auth-backend/src/providers/router.ts | 8 ++---- plugins/auth-node/report.api.md | 4 +-- .../identity/DefaultIdentityClient.test.ts | 5 ++-- .../src/identity/DefaultIdentityClient.ts | 6 ++-- .../src/identity/IdentityClient.test.ts | 4 +-- .../report.api.md | 4 +-- .../analyzers/GithubLocationAnalyzer.test.ts | 28 ++++++++----------- .../src/analyzers/GithubLocationAnalyzer.ts | 5 ++-- plugins/catalog-backend/report.api.md | 7 ++--- .../src/search/DefaultCatalogCollator.test.ts | 24 ++++++++-------- .../src/search/DefaultCatalogCollator.ts | 12 ++++---- plugins/scaffolder-backend/report.api.md | 3 +- .../src/scaffolder/tasks/DatabaseTaskStore.ts | 26 +++++++++-------- .../src/service/router.test.ts | 4 +-- yarn.lock | 1 - 25 files changed, 105 insertions(+), 115 deletions(-) create mode 100644 .changeset/rich-vans-hope.md diff --git a/.changeset/rich-vans-hope.md b/.changeset/rich-vans-hope.md new file mode 100644 index 0000000000..3e219a13b6 --- /dev/null +++ b/.changeset/rich-vans-hope.md @@ -0,0 +1,12 @@ +--- +'@backstage/backend-dynamic-feature-service': patch +'@backstage/plugin-catalog-backend-module-github': patch +'@backstage/plugin-scaffolder-backend': patch +'@backstage/backend-defaults': patch +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-auth-backend': patch +'@backstage/plugin-app-backend': patch +'@backstage/plugin-auth-node': patch +--- + +Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types diff --git a/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts b/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts index 75e7d35eee..5ca70cab86 100644 --- a/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts +++ b/packages/backend-defaults/src/entrypoints/database/DatabaseManager.ts @@ -28,7 +28,7 @@ import { Knex } from 'knex'; import { MysqlConnector } from './connectors/mysql'; import { PgConnector } from './connectors/postgres'; import { Sqlite3Connector } from './connectors/sqlite3'; -import { Connector, PluginDatabaseManager } from './types'; +import { Connector } from './types'; /** * Provides a config lookup path for a plugin's config block. @@ -72,7 +72,7 @@ export class DatabaseManagerImpl { } /** - * Generates a PluginDatabaseManager for consumption by plugins. + * Generates a DatabaseService for consumption by plugins. * * @param pluginId - The plugin that the database manager should be created for. Plugin names * should be unique as they are used to look up database config overrides under @@ -84,7 +84,7 @@ export class DatabaseManagerImpl { logger: LoggerService; lifecycle: LifecycleService; }, - ): PluginDatabaseManager { + ): DatabaseService { const client = this.getClientType(pluginId).client; const connector = this.connectors[client]; if (!connector) { @@ -265,7 +265,7 @@ export class DatabaseManager { private constructor(private readonly impl: DatabaseManagerImpl) {} /** - * Generates a PluginDatabaseManager for consumption by plugins. + * Generates a DatabaseService for consumption by plugins. * * @param pluginId - The plugin that the database manager should be created for. Plugin names * should be unique as they are used to look up database config overrides under @@ -277,7 +277,7 @@ export class DatabaseManager { logger: LoggerService; lifecycle: LifecycleService; }, - ): PluginDatabaseManager { + ): DatabaseService { return this.impl.forPlugin(pluginId, deps); } } diff --git a/packages/backend-defaults/src/entrypoints/database/types.ts b/packages/backend-defaults/src/entrypoints/database/types.ts index beded85d65..2a264ed928 100644 --- a/packages/backend-defaults/src/entrypoints/database/types.ts +++ b/packages/backend-defaults/src/entrypoints/database/types.ts @@ -17,8 +17,6 @@ import { LifecycleService, LoggerService } from '@backstage/backend-plugin-api'; import { Knex } from 'knex'; -export type { DatabaseService as PluginDatabaseManager } from '@backstage/backend-plugin-api'; - export interface Connector { getClient( pluginId: string, diff --git a/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts b/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts index 47793c82f7..b6c2c38d8a 100644 --- a/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts +++ b/packages/backend-defaults/src/entrypoints/discovery/HostDiscovery.ts @@ -24,7 +24,7 @@ import { readHttpServerOptions } from '../rootHttpRouter/http/config'; type Target = string | { internal: string; external: string }; /** - * HostDiscovery is a basic PluginEndpointDiscovery implementation + * HostDiscovery is a basic DiscoveryService implementation * that can handle plugins that are hosted in a single or multiple deployments. * * The deployment may be scaled horizontally, as long as the external URL diff --git a/packages/backend-dynamic-feature-service/report.api.md b/packages/backend-dynamic-feature-service/report.api.md index 6e53f3747f..e2ad34c84d 100644 --- a/packages/backend-dynamic-feature-service/report.api.md +++ b/packages/backend-dynamic-feature-service/report.api.md @@ -8,6 +8,8 @@ import { BackstagePackageJson } from '@backstage/cli-node'; import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; import { Config } from '@backstage/config'; import { ConfigSchema } from '@backstage/config-loader'; +import { DatabaseService } from '@backstage/backend-plugin-api'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; import { EventBroker } from '@backstage/plugin-events-node'; import { EventsBackend } from '@backstage/plugin-events-backend'; import { EventsService } from '@backstage/plugin-events-node'; @@ -22,8 +24,6 @@ import { PackageRole } from '@backstage/cli-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { PermissionPolicy } from '@backstage/plugin-permission-node'; import { PluginCacheManager } from '@backstage/backend-common'; -import { PluginDatabaseManager } from '@backstage/backend-common'; -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { RootLoggerService } from '@backstage/backend-plugin-api'; import { Router } from 'express'; import { SchedulerService } from '@backstage/backend-plugin-api'; @@ -274,10 +274,10 @@ export interface LegacyBackendPluginInstaller { export type LegacyPluginEnvironment = { logger: Logger; cache: PluginCacheManager; - database: PluginDatabaseManager; + database: DatabaseService; config: Config; reader: UrlReaderService; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; permissions: PermissionEvaluator; scheduler: SchedulerService; diff --git a/packages/backend-dynamic-feature-service/src/manager/types.ts b/packages/backend-dynamic-feature-service/src/manager/types.ts index 89ac140bc6..d056a9a1b2 100644 --- a/packages/backend-dynamic-feature-service/src/manager/types.ts +++ b/packages/backend-dynamic-feature-service/src/manager/types.ts @@ -16,12 +16,7 @@ import { Logger } from 'winston'; import { Config } from '@backstage/config'; -import { - PluginCacheManager, - PluginDatabaseManager, - PluginEndpointDiscovery, - TokenManager, -} from '@backstage/backend-common'; +import { PluginCacheManager, TokenManager } from '@backstage/backend-common'; import { Router } from 'express'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; @@ -36,6 +31,8 @@ import { UrlReaderService, SchedulerService, SchedulerServiceTaskRunner, + DatabaseService, + DiscoveryService, } from '@backstage/backend-plugin-api'; import { PackagePlatform, PackageRole } from '@backstage/cli-node'; import { CatalogBuilder } from '@backstage/plugin-catalog-backend'; @@ -60,10 +57,10 @@ import { ScannedPluginPackage } from '../scanner'; export type LegacyPluginEnvironment = { logger: Logger; cache: PluginCacheManager; - database: PluginDatabaseManager; + database: DatabaseService; config: Config; reader: UrlReaderService; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; permissions: PermissionEvaluator; scheduler: SchedulerService; diff --git a/packages/backend-legacy/src/types.ts b/packages/backend-legacy/src/types.ts index 3f5d163925..b106f5d85a 100644 --- a/packages/backend-legacy/src/types.ts +++ b/packages/backend-legacy/src/types.ts @@ -16,12 +16,7 @@ import { Logger } from 'winston'; import { Config } from '@backstage/config'; -import { - PluginCacheManager, - PluginDatabaseManager, - PluginEndpointDiscovery, - TokenManager, -} from '@backstage/backend-common'; +import { PluginCacheManager, TokenManager } from '@backstage/backend-common'; import { IdentityApi } from '@backstage/plugin-auth-node'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { EventBroker, EventsService } from '@backstage/plugin-events-node'; @@ -29,15 +24,17 @@ import { SignalsService } from '@backstage/plugin-signals-node'; import { UrlReaderService, SchedulerService, + DatabaseService, + DiscoveryService, } from '@backstage/backend-plugin-api'; export type PluginEnvironment = { logger: Logger; cache: PluginCacheManager; - database: PluginDatabaseManager; + database: DatabaseService; config: Config; reader: UrlReaderService; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; permissions: PermissionEvaluator; scheduler: SchedulerService; diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index 712b06f090..c0afac060f 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -57,7 +57,6 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", "@backstage/config-loader": "workspace:^", diff --git a/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts b/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts index 1179a11ef3..86e8119cb2 100644 --- a/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts +++ b/plugins/app-backend/src/lib/assets/StaticAssetsStore.ts @@ -14,12 +14,12 @@ * limitations under the License. */ -import { PluginDatabaseManager } from '@backstage/backend-common'; import { Knex } from 'knex'; import { DateTime } from 'luxon'; import partition from 'lodash/partition'; import { StaticAsset, StaticAssetInput, StaticAssetProvider } from './types'; import { + DatabaseService, LoggerService, resolvePackagePath, } from '@backstage/backend-plugin-api'; @@ -38,7 +38,7 @@ interface StaticAssetRow { /** @internal */ export interface StaticAssetsStoreOptions { - database: PluginDatabaseManager; + database: DatabaseService; logger: LoggerService; } diff --git a/plugins/auth-backend/src/database/AuthDatabase.ts b/plugins/auth-backend/src/database/AuthDatabase.ts index ec4d2034e7..43b48401e2 100644 --- a/plugins/auth-backend/src/database/AuthDatabase.ts +++ b/plugins/auth-backend/src/database/AuthDatabase.ts @@ -14,11 +14,11 @@ * limitations under the License. */ +import { DatabaseManager } from '@backstage/backend-common'; import { - DatabaseManager, - PluginDatabaseManager, -} from '@backstage/backend-common'; -import { resolvePackagePath } from '@backstage/backend-plugin-api'; + DatabaseService, + resolvePackagePath, +} from '@backstage/backend-plugin-api'; import { ConfigReader } from '@backstage/config'; import { Knex } from 'knex'; @@ -32,10 +32,10 @@ const migrationsDir = resolvePackagePath( * asked for, and runs migrations. */ export class AuthDatabase { - readonly #database: PluginDatabaseManager; + readonly #database: DatabaseService; #promise: Promise | undefined; - static create(database: PluginDatabaseManager): AuthDatabase { + static create(database: DatabaseService): AuthDatabase { return new AuthDatabase(database); } @@ -60,7 +60,7 @@ export class AuthDatabase { }); } - private constructor(database: PluginDatabaseManager) { + private constructor(database: DatabaseService) { this.#database = database; } diff --git a/plugins/auth-backend/src/providers/router.ts b/plugins/auth-backend/src/providers/router.ts index e449372143..2867611075 100644 --- a/plugins/auth-backend/src/providers/router.ts +++ b/plugins/auth-backend/src/providers/router.ts @@ -14,12 +14,10 @@ * limitations under the License. */ -import { - PluginEndpointDiscovery, - TokenManager, -} from '@backstage/backend-common'; +import { TokenManager } from '@backstage/backend-common'; import { AuthService, + DiscoveryService, HttpAuthService, LoggerService, } from '@backstage/backend-plugin-api'; @@ -47,7 +45,7 @@ export function bindProviderRouters( baseUrl: string; config: Config; logger: LoggerService; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; auth: AuthService; httpAuth: HttpAuthService; tokenManager?: TokenManager; diff --git a/plugins/auth-node/report.api.md b/plugins/auth-node/report.api.md index db61257f7a..e5f33b4e7e 100644 --- a/plugins/auth-node/report.api.md +++ b/plugins/auth-node/report.api.md @@ -6,6 +6,7 @@ import { BackstageIdentityResponse as BackstageIdentityResponse_2 } from '@backstage/plugin-auth-node'; import { BackstageSignInResult as BackstageSignInResult_2 } from '@backstage/plugin-auth-node'; import { Config } from '@backstage/config'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { EntityFilterQuery } from '@backstage/catalog-client'; import express from 'express'; @@ -13,7 +14,6 @@ import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { JsonObject } from '@backstage/types'; import { JsonValue } from '@backstage/types'; import { LoggerService } from '@backstage/backend-plugin-api'; -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { Profile } from 'passport'; import { Request as Request_2 } from 'express'; import { Response as Response_2 } from 'express'; @@ -265,7 +265,7 @@ export class IdentityClient { // @public export type IdentityClientOptions = { - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; issuer?: string; algorithms?: string[]; }; diff --git a/plugins/auth-node/src/identity/DefaultIdentityClient.test.ts b/plugins/auth-node/src/identity/DefaultIdentityClient.test.ts index b9bf3cabd2..68765c6bef 100644 --- a/plugins/auth-node/src/identity/DefaultIdentityClient.test.ts +++ b/plugins/auth-node/src/identity/DefaultIdentityClient.test.ts @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { PluginEndpointDiscovery } from '@backstage/backend-common'; + import { decodeProtectedHeader, exportJWK, @@ -27,6 +27,7 @@ import { v4 as uuid } from 'uuid'; import { DefaultIdentityClient } from './DefaultIdentityClient'; import { IdentityApiGetIdentityRequest } from './IdentityApi'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; interface AnyJWK extends Record { use: 'sig'; @@ -87,7 +88,7 @@ function jwtKid(jwt: string): string { const server = setupServer(); const mockBaseUrl = 'http://backstage:9191/i-am-a-mock-base'; -const discovery: PluginEndpointDiscovery = { +const discovery: DiscoveryService = { async getBaseUrl() { return mockBaseUrl; }, diff --git a/plugins/auth-node/src/identity/DefaultIdentityClient.ts b/plugins/auth-node/src/identity/DefaultIdentityClient.ts index 1095609dec..6c417cc5c9 100644 --- a/plugins/auth-node/src/identity/DefaultIdentityClient.ts +++ b/plugins/auth-node/src/identity/DefaultIdentityClient.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { AuthenticationError } from '@backstage/errors'; import { createRemoteJWKSet, @@ -28,6 +27,7 @@ import { GetKeyFunction } from 'jose/dist/types/types'; import { getBearerTokenFromAuthorizationHeader } from './getBearerTokenFromAuthorizationHeader'; import { IdentityApi, IdentityApiGetIdentityRequest } from './IdentityApi'; import { BackstageIdentityResponse } from '../types'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; const CLOCK_MARGIN_S = 10; @@ -38,7 +38,7 @@ const CLOCK_MARGIN_S = 10; * @public */ export type IdentityClientOptions = { - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; issuer?: string; /** JWS "alg" (Algorithm) Header Parameter values. Defaults to an array containing just ES256. @@ -54,7 +54,7 @@ export type IdentityClientOptions = { * @public */ export class DefaultIdentityClient implements IdentityApi { - private readonly discovery: PluginEndpointDiscovery; + private readonly discovery: DiscoveryService; private readonly issuer?: string; private readonly algorithms?: string[]; private keyStore?: GetKeyFunction; diff --git a/plugins/auth-node/src/identity/IdentityClient.test.ts b/plugins/auth-node/src/identity/IdentityClient.test.ts index 418eb544ad..91cd1759aa 100644 --- a/plugins/auth-node/src/identity/IdentityClient.test.ts +++ b/plugins/auth-node/src/identity/IdentityClient.test.ts @@ -14,7 +14,6 @@ * limitations under the License. */ -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { registerMswTestHooks } from '@backstage/backend-test-utils'; import { decodeProtectedHeader, @@ -28,6 +27,7 @@ import { setupServer } from 'msw/node'; import { v4 as uuid } from 'uuid'; import { IdentityClient } from './IdentityClient'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; interface AnyJWK extends Record { use: 'sig'; @@ -88,7 +88,7 @@ function jwtKid(jwt: string): string { const server = setupServer(); const mockBaseUrl = 'http://backstage:9191/i-am-a-mock-base'; -const discovery: PluginEndpointDiscovery = { +const discovery: DiscoveryService = { async getBaseUrl() { return mockBaseUrl; }, diff --git a/plugins/catalog-backend-module-github/report.api.md b/plugins/catalog-backend-module-github/report.api.md index dcc94e47bc..8cd87f646a 100644 --- a/plugins/catalog-backend-module-github/report.api.md +++ b/plugins/catalog-backend-module-github/report.api.md @@ -10,6 +10,7 @@ import { CatalogApi } from '@backstage/catalog-client'; import { CatalogProcessor } from '@backstage/plugin-catalog-node'; import { CatalogProcessorEmit } from '@backstage/plugin-catalog-node'; import { Config } from '@backstage/config'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; import { Entity } from '@backstage/catalog-model'; import { EntityProvider } from '@backstage/plugin-catalog-node'; import { EntityProviderConnection } from '@backstage/plugin-catalog-node'; @@ -21,7 +22,6 @@ import { GithubIntegrationConfig } from '@backstage/integration'; import { graphql } from '@octokit/graphql'; import { LocationSpec } from '@backstage/plugin-catalog-node'; import { LoggerService } from '@backstage/backend-plugin-api'; -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { SchedulerService } from '@backstage/backend-plugin-api'; import { SchedulerServiceTaskRunner } from '@backstage/backend-plugin-api'; import { ScmIntegrationRegistry } from '@backstage/integration'; @@ -127,7 +127,7 @@ export class GithubLocationAnalyzer implements ScmLocationAnalyzer { // @public (undocumented) export type GithubLocationAnalyzerOptions = { config: Config; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager?: TokenManager; auth?: AuthService; githubCredentialsProvider?: GithubCredentialsProvider; diff --git a/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.test.ts b/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.test.ts index d3be18f489..25a19ba1ff 100644 --- a/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.test.ts +++ b/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.test.ts @@ -32,7 +32,6 @@ jest.mock('@octokit/rest', () => { return { Octokit }; }); -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { GithubLocationAnalyzer } from './GithubLocationAnalyzer'; import { registerMswTestHooks, @@ -40,26 +39,21 @@ import { } from '@backstage/backend-test-utils'; import { setupServer } from 'msw/node'; import { http, HttpResponse } from 'msw'; -import { ConfigReader } from '@backstage/config'; const server = setupServer(); describe('GithubLocationAnalyzer', () => { - const mockDiscoveryApi: jest.Mocked = { - getBaseUrl: jest.fn().mockResolvedValue('http://localhost:7007'), - getExternalBaseUrl: jest.fn(), - }; + const mockDiscovery = mockServices.discovery.mock({ + getBaseUrl: async () => 'http://localhost:7007', + }); const mockAuthService = mockServices.auth.mock({ getPluginRequestToken: async () => ({ token: 'abc123' }), }); - const config = new ConfigReader({ - integrations: { - github: [ - { - host: 'h.com', - token: 't', - }, - ], + const config = mockServices.rootConfig({ + data: { + integrations: { + github: [{ host: 'h.com', token: 't' }], + }, }, }); @@ -121,7 +115,7 @@ describe('GithubLocationAnalyzer', () => { }); const analyzer = new GithubLocationAnalyzer({ - discovery: mockDiscoveryApi, + discovery: mockDiscovery, auth: mockAuthService, config, }); @@ -148,7 +142,7 @@ describe('GithubLocationAnalyzer', () => { }); const analyzer = new GithubLocationAnalyzer({ - discovery: mockDiscoveryApi, + discovery: mockDiscovery, auth: mockAuthService, config, }); @@ -174,7 +168,7 @@ describe('GithubLocationAnalyzer', () => { }); const analyzer = new GithubLocationAnalyzer({ - discovery: mockDiscoveryApi, + discovery: mockDiscovery, auth: mockAuthService, config, }); diff --git a/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts b/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts index b635878f92..cbf43287a3 100644 --- a/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts +++ b/plugins/catalog-backend-module-github/src/analyzers/GithubLocationAnalyzer.ts @@ -29,18 +29,17 @@ import { ScmLocationAnalyzer, } from '@backstage/plugin-catalog-node'; import { - PluginEndpointDiscovery, TokenManager, createLegacyAuthAdapters, } from '@backstage/backend-common'; import { Config } from '@backstage/config'; -import { AuthService } from '@backstage/backend-plugin-api'; +import { AuthService, DiscoveryService } from '@backstage/backend-plugin-api'; import { extname } from 'path'; /** @public */ export type GithubLocationAnalyzerOptions = { config: Config; - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager?: TokenManager; auth?: AuthService; githubCredentialsProvider?: GithubCredentialsProvider; diff --git a/plugins/catalog-backend/report.api.md b/plugins/catalog-backend/report.api.md index dc277026f4..ea7e11d0d7 100644 --- a/plugins/catalog-backend/report.api.md +++ b/plugins/catalog-backend/report.api.md @@ -56,7 +56,6 @@ import { PlaceholderResolver as PlaceholderResolver_2 } from '@backstage/plugin- import { PlaceholderResolverParams as PlaceholderResolverParams_2 } from '@backstage/plugin-catalog-node'; import { PlaceholderResolverRead as PlaceholderResolverRead_2 } from '@backstage/plugin-catalog-node'; import { PlaceholderResolverResolveUrl as PlaceholderResolverResolveUrl_2 } from '@backstage/plugin-catalog-node'; -import { PluginEndpointDiscovery } from '@backstage/backend-common'; import { RootConfigService } from '@backstage/backend-plugin-api'; import { Router } from 'express'; import { SchedulerService } from '@backstage/backend-plugin-api'; @@ -283,7 +282,7 @@ export function createRandomProcessingInterval(options: { // @public @deprecated (undocumented) export class DefaultCatalogCollator { constructor(options: { - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; locationTemplate?: string; filter?: GetEntitiesRequest['filter']; @@ -297,7 +296,7 @@ export class DefaultCatalogCollator { // (undocumented) protected readonly catalogClient: CatalogApi; // (undocumented) - protected discovery: PluginEndpointDiscovery; + protected discovery: DiscoveryService; // (undocumented) execute(): Promise; // (undocumented) @@ -306,7 +305,7 @@ export class DefaultCatalogCollator { static fromConfig( _config: Config, options: { - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; filter?: GetEntitiesRequest['filter']; }, diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts index aee65bd2e1..9473d45bb6 100644 --- a/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts +++ b/plugins/catalog-backend/src/search/DefaultCatalogCollator.test.ts @@ -14,11 +14,11 @@ * limitations under the License. */ +import { TokenManager } from '@backstage/backend-common'; import { - PluginEndpointDiscovery, - TokenManager, -} from '@backstage/backend-common'; -import { registerMswTestHooks } from '@backstage/backend-test-utils'; + mockServices, + registerMswTestHooks, +} from '@backstage/backend-test-utils'; import { Entity } from '@backstage/catalog-model'; import { DefaultCatalogCollator } from './DefaultCatalogCollator'; import { setupServer } from 'msw/node'; @@ -58,22 +58,20 @@ const expectedEntities: Entity[] = [ ]; describe('DefaultCatalogCollator', () => { - let mockDiscoveryApi: jest.Mocked; + const mockDiscovery = mockServices.discovery.mock({ + getBaseUrl: async () => 'http://localhost:7007', + }); let mockTokenManager: jest.Mocked; let collator: DefaultCatalogCollator; registerMswTestHooks(server); beforeAll(() => { - mockDiscoveryApi = { - getBaseUrl: jest.fn().mockResolvedValue('http://localhost:7007'), - getExternalBaseUrl: jest.fn(), - }; mockTokenManager = { getToken: jest.fn().mockResolvedValue({ token: '' }), authenticate: jest.fn(), }; collator = new DefaultCatalogCollator({ - discovery: mockDiscoveryApi, + discovery: mockDiscovery, tokenManager: mockTokenManager, }); }); @@ -98,7 +96,7 @@ describe('DefaultCatalogCollator', () => { it('fetches from the configured catalog service', async () => { const documents = await collator.execute(); - expect(mockDiscoveryApi.getBaseUrl).toHaveBeenCalledWith('catalog'); + expect(mockDiscovery.getBaseUrl).toHaveBeenCalledWith('catalog'); expect(documents).toHaveLength(expectedEntities.length); }); @@ -133,7 +131,7 @@ describe('DefaultCatalogCollator', () => { it('maps a returned entity with a custom locationTemplate', async () => { // Provide an alternate location template. collator = new DefaultCatalogCollator({ - discovery: mockDiscoveryApi, + discovery: mockDiscovery, tokenManager: mockTokenManager, locationTemplate: '/software/:name', }); @@ -147,7 +145,7 @@ describe('DefaultCatalogCollator', () => { it('allows filtering of the retrieved catalog entities', async () => { // Provide an alternate location template. collator = DefaultCatalogCollator.fromConfig(new ConfigReader({}), { - discovery: mockDiscoveryApi, + discovery: mockDiscovery, tokenManager: mockTokenManager, filter: { kind: ['Foo', 'Bar'], diff --git a/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts b/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts index 74aab07fc3..11f6030ce6 100644 --- a/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts +++ b/plugins/catalog-backend/src/search/DefaultCatalogCollator.ts @@ -14,10 +14,7 @@ * limitations under the License. */ -import { - PluginEndpointDiscovery, - TokenManager, -} from '@backstage/backend-common'; +import { TokenManager } from '@backstage/backend-common'; import { Entity, isUserEntity, @@ -32,6 +29,7 @@ import { import { catalogEntityReadPermission } from '@backstage/plugin-catalog-common/alpha'; import { CatalogEntityDocument } from '@backstage/plugin-catalog-common'; import { Permission } from '@backstage/plugin-permission-common'; +import { DiscoveryService } from '@backstage/backend-plugin-api'; /** * @public @@ -39,7 +37,7 @@ import { Permission } from '@backstage/plugin-permission-common'; * use `DefaultCatalogCollatorFactory` instead. */ export class DefaultCatalogCollator { - protected discovery: PluginEndpointDiscovery; + protected discovery: DiscoveryService; protected locationTemplate: string; protected filter?: GetEntitiesRequest['filter']; protected readonly catalogClient: CatalogApi; @@ -51,7 +49,7 @@ export class DefaultCatalogCollator { static fromConfig( _config: Config, options: { - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; filter?: GetEntitiesRequest['filter']; }, @@ -62,7 +60,7 @@ export class DefaultCatalogCollator { } constructor(options: { - discovery: PluginEndpointDiscovery; + discovery: DiscoveryService; tokenManager: TokenManager; locationTemplate?: string; filter?: GetEntitiesRequest['filter']; diff --git a/plugins/scaffolder-backend/report.api.md b/plugins/scaffolder-backend/report.api.md index c2e6c18ad8..20273697d3 100644 --- a/plugins/scaffolder-backend/report.api.md +++ b/plugins/scaffolder-backend/report.api.md @@ -39,7 +39,6 @@ import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { PermissionRule } from '@backstage/plugin-permission-node'; import { PermissionRuleParams } from '@backstage/plugin-permission-common'; import { PermissionsService } from '@backstage/backend-plugin-api'; -import { PluginDatabaseManager } from '@backstage/backend-common'; import { RESOURCE_TYPE_SCAFFOLDER_ACTION } from '@backstage/plugin-scaffolder-common/alpha'; import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE } from '@backstage/plugin-scaffolder-common/alpha'; import { ScaffolderEntitiesProcessor as ScaffolderEntitiesProcessor_2 } from '@backstage/plugin-catalog-backend-module-scaffolder-entity-model'; @@ -520,7 +519,7 @@ export class DatabaseTaskStore implements TaskStore { // @public export type DatabaseTaskStoreOptions = { - database: PluginDatabaseManager | Knex; + database: DatabaseService | Knex; events?: EventsService; }; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index 8114532566..4dbe938679 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -15,8 +15,10 @@ */ import { JsonObject } from '@backstage/types'; -import { PluginDatabaseManager } from '@backstage/backend-common'; -import { resolvePackagePath } from '@backstage/backend-plugin-api'; +import { + DatabaseService, + resolvePackagePath, +} from '@backstage/backend-plugin-api'; import { ConflictError, NotFoundError } from '@backstage/errors'; import { Knex } from 'knex'; import { v4 as uuid } from 'uuid'; @@ -78,19 +80,19 @@ export type RawDbTaskEventRow = { * @public */ export type DatabaseTaskStoreOptions = { - database: PluginDatabaseManager | Knex; + database: DatabaseService | Knex; events?: EventsService; }; /** - * Type guard to help DatabaseTaskStore understand when database is PluginDatabaseManager vs. when database is a Knex instance. + * Type guard to help DatabaseTaskStore understand when database is DatabaseService vs. when database is a Knex instance. * * * @public */ -function isPluginDatabaseManager( - opt: PluginDatabaseManager | Knex, -): opt is PluginDatabaseManager { - return (opt as PluginDatabaseManager).getClient !== undefined; +function isDatabaseService( + opt: DatabaseService | Knex, +): opt is DatabaseService { + return (opt as DatabaseService).getClient !== undefined; } const parseSqlDateToIsoString = (input: T): T | string => { @@ -152,9 +154,9 @@ export class DatabaseTaskStore implements TaskStore { } private static async getClient( - database: PluginDatabaseManager | Knex, + database: DatabaseService | Knex, ): Promise { - if (isPluginDatabaseManager(database)) { + if (isDatabaseService(database)) { return database.getClient(); } @@ -162,10 +164,10 @@ export class DatabaseTaskStore implements TaskStore { } private static async runMigrations( - database: PluginDatabaseManager | Knex, + database: DatabaseService | Knex, client: Knex, ): Promise { - if (!isPluginDatabaseManager(database)) { + if (!isDatabaseService(database)) { await client.migrate.latest({ directory: migrationsDir, }); diff --git a/plugins/scaffolder-backend/src/service/router.test.ts b/plugins/scaffolder-backend/src/service/router.test.ts index 55d8b91293..42a89cc7f3 100644 --- a/plugins/scaffolder-backend/src/service/router.test.ts +++ b/plugins/scaffolder-backend/src/service/router.test.ts @@ -17,7 +17,6 @@ import { DatabaseManager, loggerToWinstonLogger, - PluginDatabaseManager, } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { TemplateEntityV1beta3 } from '@backstage/plugin-scaffolder-common'; @@ -52,6 +51,7 @@ import { AutocompleteHandler } from '@backstage/plugin-scaffolder-node/alpha'; import { UrlReaders } from '@backstage/backend-defaults/urlReader'; import { catalogServiceMock } from '@backstage/plugin-catalog-node/testUtils'; import { EventsService } from '@backstage/plugin-events-node'; +import { DatabaseService } from '@backstage/backend-plugin-api'; const mockAccess = jest.fn(); @@ -68,7 +68,7 @@ jest.mock('fs-extra', () => ({ remove: jest.fn(), })); -function createDatabase(): PluginDatabaseManager { +function createDatabase(): DatabaseService { return DatabaseManager.fromConfig( new ConfigReader({ backend: { diff --git a/yarn.lock b/yarn.lock index 2446999bfd..5cd3455dbd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4809,7 +4809,6 @@ __metadata: resolution: "@backstage/plugin-app-backend@workspace:plugins/app-backend" dependencies: "@backstage/backend-app-api": "workspace:^" - "@backstage/backend-common": ^0.25.0 "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" From 57e794a613e3776eb4fd8d6ed985c4f8f617af12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 21 Dec 2024 21:31:30 +0100 Subject: [PATCH 089/213] remove backend-common from catalog-backend-module-openapi MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/cuddly-lions-knock.md | 5 +++++ .../catalog-backend-module-openapi/package.json | 4 ---- .../report.api.md | 12 ++++++------ .../src/OpenApiRefProcessor.test.ts | 16 +++++----------- .../src/OpenApiRefProcessor.ts | 17 ++++++++++------- .../jsonSchemaRefPlaceholderResolver.test.ts | 3 ++- .../src/jsonSchemaRefPlaceholderResolver.ts | 7 +++++-- yarn.lock | 4 ---- 8 files changed, 33 insertions(+), 35 deletions(-) create mode 100644 .changeset/cuddly-lions-knock.md diff --git a/.changeset/cuddly-lions-knock.md b/.changeset/cuddly-lions-knock.md new file mode 100644 index 0000000000..dd5a6b31e7 --- /dev/null +++ b/.changeset/cuddly-lions-knock.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-backend-module-openapi': patch +--- + +Refactor to no longer use backend-common diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 049577bbd2..6bb2dcee7d 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -38,16 +38,12 @@ }, "dependencies": { "@apidevtools/json-schema-ref-parser": "^11.0.0", - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", "@backstage/catalog-model": "workspace:^", - "@backstage/config": "workspace:^", "@backstage/integration": "workspace:^", - "@backstage/plugin-catalog-backend": "workspace:^", "@backstage/plugin-catalog-common": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", "@backstage/types": "workspace:^", - "winston": "^3.2.1", "yaml": "^2.1.1" }, "devDependencies": { diff --git a/plugins/catalog-backend-module-openapi/report.api.md b/plugins/catalog-backend-module-openapi/report.api.md index d79d852387..5884a486cd 100644 --- a/plugins/catalog-backend-module-openapi/report.api.md +++ b/plugins/catalog-backend-module-openapi/report.api.md @@ -5,12 +5,12 @@ ```ts import { BackendFeature } from '@backstage/backend-plugin-api'; import { CatalogProcessor } from '@backstage/plugin-catalog-node'; -import { Config } from '@backstage/config'; import { Entity } from '@backstage/catalog-model'; import { JsonValue } from '@backstage/types'; import { LocationSpec } from '@backstage/plugin-catalog-common'; -import { Logger } from 'winston'; -import { PlaceholderResolverParams } from '@backstage/plugin-catalog-backend'; +import { LoggerService } from '@backstage/backend-plugin-api'; +import { PlaceholderResolverParams } from '@backstage/plugin-catalog-node'; +import { RootConfigService } from '@backstage/backend-plugin-api'; import { ScmIntegrations } from '@backstage/integration'; import { UrlReaderService } from '@backstage/backend-plugin-api'; @@ -30,14 +30,14 @@ export const openApiPlaceholderResolver: typeof jsonSchemaRefPlaceholderResolver export class OpenApiRefProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrations; - logger: Logger; + logger: LoggerService; reader: UrlReaderService; }); // (undocumented) static fromConfig( - config: Config, + config: RootConfigService, options: { - logger: Logger; + logger: LoggerService; reader: UrlReaderService; }, ): OpenApiRefProcessor; diff --git a/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts b/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts index ea165b74a7..6e6e476525 100644 --- a/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts +++ b/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.test.ts @@ -13,12 +13,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { ConfigReader } from '@backstage/config'; -import { LocationSpec } from '@backstage/plugin-catalog-backend'; + +import { LocationSpec } from '@backstage/plugin-catalog-common'; import { OpenApiRefProcessor } from './OpenApiRefProcessor'; import { bundleFileWithRefs } from './lib'; import { mockServices } from '@backstage/backend-test-utils'; -import { loggerToWinstonLogger } from '@backstage/backend-common'; jest.mock('./lib', () => ({ bundleFileWithRefs: jest.fn(), @@ -46,15 +45,10 @@ describe('OpenApiRefProcessor', () => { kind, spec: { definition: '', ...spec }, }; - const config = new ConfigReader({}); - const reader = { - read: jest.fn(), - readUrl: jest.fn(), - readTree: jest.fn(), - search: jest.fn(), - }; + const config = mockServices.rootConfig(); + const reader = mockServices.urlReader.mock(); const processor = OpenApiRefProcessor.fromConfig(config, { - logger: loggerToWinstonLogger(mockServices.logger.mock()), + logger: mockServices.logger.mock(), reader, }); diff --git a/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.ts b/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.ts index 39de58466e..d666e1d374 100644 --- a/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.ts +++ b/plugins/catalog-backend-module-openapi/src/OpenApiRefProcessor.ts @@ -13,14 +13,17 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { UrlReaderService } from '@backstage/backend-plugin-api'; + +import { + LoggerService, + RootConfigService, + UrlReaderService, +} from '@backstage/backend-plugin-api'; import { Entity } from '@backstage/catalog-model'; -import { Config } from '@backstage/config'; import { ScmIntegrations } from '@backstage/integration'; import { CatalogProcessor } from '@backstage/plugin-catalog-node'; import { LocationSpec } from '@backstage/plugin-catalog-common'; import { bundleFileWithRefs } from './lib'; -import { Logger } from 'winston'; /** * @public @@ -28,12 +31,12 @@ import { Logger } from 'winston'; */ export class OpenApiRefProcessor implements CatalogProcessor { private readonly integrations: ScmIntegrations; - private readonly logger: Logger; + private readonly logger: LoggerService; private readonly reader: UrlReaderService; static fromConfig( - config: Config, - options: { logger: Logger; reader: UrlReaderService }, + config: RootConfigService, + options: { logger: LoggerService; reader: UrlReaderService }, ) { const integrations = ScmIntegrations.fromConfig(config); @@ -45,7 +48,7 @@ export class OpenApiRefProcessor implements CatalogProcessor { constructor(options: { integrations: ScmIntegrations; - logger: Logger; + logger: LoggerService; reader: UrlReaderService; }) { this.integrations = options.integrations; diff --git a/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.test.ts b/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.test.ts index afa523ccf0..280d00c4fa 100644 --- a/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.test.ts +++ b/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.test.ts @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { PlaceholderResolverParams } from '@backstage/plugin-catalog-backend'; + +import { PlaceholderResolverParams } from '@backstage/plugin-catalog-node'; import { jsonSchemaRefPlaceholderResolver } from './jsonSchemaRefPlaceholderResolver'; import { bundleFileWithRefs } from './lib'; diff --git a/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.ts b/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.ts index befafbde8a..91a01afec1 100644 --- a/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.ts +++ b/plugins/catalog-backend-module-openapi/src/jsonSchemaRefPlaceholderResolver.ts @@ -13,9 +13,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -import { PlaceholderResolverParams } from '@backstage/plugin-catalog-backend'; + import { JsonValue } from '@backstage/types'; -import { processingResult } from '@backstage/plugin-catalog-node'; +import { + PlaceholderResolverParams, + processingResult, +} from '@backstage/plugin-catalog-node'; import { bundleFileWithRefs } from './lib'; /** @public */ diff --git a/yarn.lock b/yarn.lock index 5cd3455dbd..ec20372ed1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5735,19 +5735,15 @@ __metadata: resolution: "@backstage/plugin-catalog-backend-module-openapi@workspace:plugins/catalog-backend-module-openapi" dependencies: "@apidevtools/json-schema-ref-parser": ^11.0.0 - "@backstage/backend-common": ^0.25.0 "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/catalog-model": "workspace:^" "@backstage/cli": "workspace:^" - "@backstage/config": "workspace:^" "@backstage/integration": "workspace:^" - "@backstage/plugin-catalog-backend": "workspace:^" "@backstage/plugin-catalog-common": "workspace:^" "@backstage/plugin-catalog-node": "workspace:^" "@backstage/types": "workspace:^" openapi-types: ^12.0.0 - winston: ^3.2.1 yaml: ^2.1.1 languageName: unknown linkType: soft From f59ea1d40d3cc65b828d5f51dbc9e5640d0f4018 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Sat, 21 Dec 2024 22:04:10 +0100 Subject: [PATCH 090/213] remove old backend system suport in the signals backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/dry-hounds-study.md | 5 ++ packages/backend-legacy/src/index.ts | 3 - .../backend-legacy/src/plugins/signals.ts | 30 ---------- plugins/signals-backend/package.json | 3 +- plugins/signals-backend/report.api.md | 32 ---------- plugins/signals-backend/src/deprecated.ts | 60 ------------------- plugins/signals-backend/src/index.ts | 1 - plugins/signals-backend/src/plugin.ts | 3 +- .../src/service/SignalManager.test.ts | 10 ++-- .../src/service/SignalManager.ts | 5 +- .../src/service/router.test.ts | 5 +- plugins/signals-backend/src/service/router.ts | 3 +- yarn.lock | 1 - 13 files changed, 20 insertions(+), 141 deletions(-) create mode 100644 .changeset/dry-hounds-study.md delete mode 100644 packages/backend-legacy/src/plugins/signals.ts delete mode 100644 plugins/signals-backend/src/deprecated.ts diff --git a/.changeset/dry-hounds-study.md b/.changeset/dry-hounds-study.md new file mode 100644 index 0000000000..0d58431439 --- /dev/null +++ b/.changeset/dry-hounds-study.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-signals-backend': minor +--- + +Removed support for the old backend system. If you were using the old `createRouter` export, please migrate to [the new backend system](https://backstage.io/docs/backend-system/). diff --git a/packages/backend-legacy/src/index.ts b/packages/backend-legacy/src/index.ts index 8ef969ff2b..c883603efb 100644 --- a/packages/backend-legacy/src/index.ts +++ b/packages/backend-legacy/src/index.ts @@ -47,7 +47,6 @@ import search from './plugins/search'; import techdocs from './plugins/techdocs'; import app from './plugins/app'; import permission from './plugins/permission'; -import signals from './plugins/signals'; import { PluginEnvironment } from './types'; import { ServerPermissionClient } from '@backstage/plugin-permission-node'; import { DefaultIdentityClient } from '@backstage/plugin-auth-node'; @@ -137,7 +136,6 @@ async function main() { const appEnv = useHotMemoize(module, () => createEnv('app')); const permissionEnv = useHotMemoize(module, () => createEnv('permission')); const eventsEnv = useHotMemoize(module, () => createEnv('events')); - const signalsEnv = useHotMemoize(module, () => createEnv('signals')); const apiRouter = Router(); apiRouter.use('/catalog', await catalog(catalogEnv)); @@ -149,7 +147,6 @@ async function main() { apiRouter.use('/kubernetes', await kubernetes(kubernetesEnv)); apiRouter.use('/proxy', await proxy(proxyEnv)); apiRouter.use('/permission', await permission(permissionEnv)); - apiRouter.use('/signals', await signals(signalsEnv)); apiRouter.use(notFoundHandler()); const service = createServiceBuilder(module) diff --git a/packages/backend-legacy/src/plugins/signals.ts b/packages/backend-legacy/src/plugins/signals.ts deleted file mode 100644 index 33b1af5edf..0000000000 --- a/packages/backend-legacy/src/plugins/signals.ts +++ /dev/null @@ -1,30 +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. - */ -import { Router } from 'express'; -import { createRouter } from '@backstage/plugin-signals-backend'; -import { PluginEnvironment } from '../types'; - -export default async function createPlugin( - env: PluginEnvironment, -): Promise { - return await createRouter({ - logger: env.logger, - events: env.events, - identity: env.identity, - discovery: env.discovery, - config: env.config, - }); -} diff --git a/plugins/signals-backend/package.json b/plugins/signals-backend/package.json index 117947e6f5..b890a74ffb 100644 --- a/plugins/signals-backend/package.json +++ b/plugins/signals-backend/package.json @@ -37,14 +37,12 @@ "test": "backstage-cli package test" }, "dependencies": { - "@backstage/backend-common": "^0.25.0", "@backstage/backend-plugin-api": "workspace:^", "@backstage/config": "workspace:^", "@backstage/plugin-auth-node": "workspace:^", "@backstage/plugin-events-node": "workspace:^", "@backstage/plugin-signals-node": "workspace:^", "@backstage/types": "workspace:^", - "@types/express": "^4.17.6", "express": "^4.17.1", "express-promise-router": "^4.1.0", "http-proxy-middleware": "^2.0.0", @@ -60,6 +58,7 @@ "@backstage/plugin-auth-backend": "workspace:^", "@backstage/plugin-auth-backend-module-guest-provider": "workspace:^", "@backstage/plugin-events-backend": "workspace:^", + "@types/express": "^4.17.6", "@types/supertest": "^2.0.8", "@types/ws": "^8.5.10", "msw": "^1.0.0", diff --git a/plugins/signals-backend/report.api.md b/plugins/signals-backend/report.api.md index 10f74ba37e..2b27ef2b3c 100644 --- a/plugins/signals-backend/report.api.md +++ b/plugins/signals-backend/report.api.md @@ -3,39 +3,7 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AuthService } from '@backstage/backend-plugin-api'; import { BackendFeature } from '@backstage/backend-plugin-api'; -import { Config } from '@backstage/config'; -import { DiscoveryService } from '@backstage/backend-plugin-api'; -import { EventsService } from '@backstage/plugin-events-node'; -import express from 'express'; -import { IdentityApi } from '@backstage/plugin-auth-node'; -import { LifecycleService } from '@backstage/backend-plugin-api'; -import { LoggerService } from '@backstage/backend-plugin-api'; -import { UserInfoService } from '@backstage/backend-plugin-api'; - -// @public @deprecated (undocumented) -export function createRouter(options: RouterOptions): Promise; - -// @public @deprecated (undocumented) -export interface RouterOptions { - // (undocumented) - auth?: AuthService; - // (undocumented) - config: Config; - // (undocumented) - discovery: DiscoveryService; - // (undocumented) - events: EventsService; - // (undocumented) - identity?: IdentityApi; - // (undocumented) - lifecycle?: LifecycleService; - // (undocumented) - logger: LoggerService; - // (undocumented) - userInfo?: UserInfoService; -} // @public const signalsPlugin: BackendFeature; diff --git a/plugins/signals-backend/src/deprecated.ts b/plugins/signals-backend/src/deprecated.ts deleted file mode 100644 index d33c9a06b9..0000000000 --- a/plugins/signals-backend/src/deprecated.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright 2024 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 express from 'express'; - -import { Config } from '@backstage/config'; -import { - AuthService, - DiscoveryService, - LifecycleService, - LoggerService, - UserInfoService, -} from '@backstage/backend-plugin-api'; -import { createLegacyAuthAdapters } from '@backstage/backend-common'; - -import { IdentityApi } from '@backstage/plugin-auth-node'; -import { EventsService } from '@backstage/plugin-events-node'; - -import { createRouter as _createRouter } from './service/router'; - -/** - * @public - * @deprecated Please migrate to the new backend system as this will be removed in the future. - */ -export interface RouterOptions { - logger: LoggerService; - events: EventsService; - identity?: IdentityApi; - discovery: DiscoveryService; - config: Config; - lifecycle?: LifecycleService; - auth?: AuthService; - userInfo?: UserInfoService; -} - -/** - * @public - * @deprecated Please migrate to the new backend system as this will be removed in the future. - */ -export async function createRouter( - options: RouterOptions, -): Promise { - return _createRouter({ - ...options, - ...createLegacyAuthAdapters(options), - }); -} diff --git a/plugins/signals-backend/src/index.ts b/plugins/signals-backend/src/index.ts index c852c81518..c5b3fe692a 100644 --- a/plugins/signals-backend/src/index.ts +++ b/plugins/signals-backend/src/index.ts @@ -14,5 +14,4 @@ * limitations under the License. */ -export * from './deprecated'; export { signalsPlugin as default } from './plugin'; diff --git a/plugins/signals-backend/src/plugin.ts b/plugins/signals-backend/src/plugin.ts index 3ca10f46d1..f01777b4fc 100644 --- a/plugins/signals-backend/src/plugin.ts +++ b/plugins/signals-backend/src/plugin.ts @@ -13,12 +13,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { coreServices, createBackendPlugin, } from '@backstage/backend-plugin-api'; -import { createRouter } from './deprecated'; import { eventsServiceRef } from '@backstage/plugin-events-node'; +import { createRouter } from './service/router'; /** * Signals backend plugin diff --git a/plugins/signals-backend/src/service/SignalManager.test.ts b/plugins/signals-backend/src/service/SignalManager.test.ts index eccc715d1b..642c00a7d7 100644 --- a/plugins/signals-backend/src/service/SignalManager.test.ts +++ b/plugins/signals-backend/src/service/SignalManager.test.ts @@ -13,10 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { WebSocket } from 'ws'; import { EventsServiceSubscribeOptions } from '@backstage/plugin-events-node'; import { SignalManager } from './SignalManager'; -import { ConfigReader } from '@backstage/config'; import { mockServices } from '@backstage/backend-test-utils'; class MockWebSocket { @@ -70,15 +70,15 @@ describe('SignalManager', () => { }; const shutdownHooks: Function[] = []; - const mockLifecycle = { + const mockLifecycle = mockServices.lifecycle.mock({ addShutdownHook: (hook: Function) => shutdownHooks.push(hook), - }; + }); const manager = SignalManager.create({ events: mockEvents, logger: mockServices.logger.mock(), - config: new ConfigReader({}), - lifecycle: mockLifecycle as any, + config: mockServices.rootConfig(), + lifecycle: mockLifecycle, }); it('should close all connections when server is closed', () => { diff --git a/plugins/signals-backend/src/service/SignalManager.ts b/plugins/signals-backend/src/service/SignalManager.ts index bf20d6a8c4..ec9cb57900 100644 --- a/plugins/signals-backend/src/service/SignalManager.ts +++ b/plugins/signals-backend/src/service/SignalManager.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import { EventParams, EventsService } from '@backstage/plugin-events-node'; import { SignalPayload } from '@backstage/plugin-signals-node'; import crypto from 'crypto'; @@ -45,7 +46,7 @@ export type SignalManagerOptions = { events: EventsService; config: Config; logger: LoggerService; - lifecycle?: LifecycleService; + lifecycle: LifecycleService; }; /** @internal */ @@ -79,7 +80,7 @@ export class SignalManager { this.onEventBrokerEvent(params.eventPayload as SignalPayload), }); - options.lifecycle?.addShutdownHook(() => this.onShutdown()); + options.lifecycle.addShutdownHook(() => this.onShutdown()); } private ping() { diff --git a/plugins/signals-backend/src/service/router.test.ts b/plugins/signals-backend/src/service/router.test.ts index acc49739b8..0138a1a5d3 100644 --- a/plugins/signals-backend/src/service/router.test.ts +++ b/plugins/signals-backend/src/service/router.test.ts @@ -16,9 +16,7 @@ import express from 'express'; import request from 'supertest'; - import { createRouter } from './router'; -import { ConfigReader } from '@backstage/config'; import { mockErrorHandler, mockServices } from '@backstage/backend-test-utils'; const eventsServiceMock = mockServices.events.mock(); @@ -36,7 +34,8 @@ describe('createRouter', () => { events: eventsServiceMock, discovery, userInfo, - config: new ConfigReader({}), + config: mockServices.rootConfig(), + lifecycle: mockServices.lifecycle.mock(), auth: mockServices.auth(), }); app = express().use(router).use(mockErrorHandler()); diff --git a/plugins/signals-backend/src/service/router.ts b/plugins/signals-backend/src/service/router.ts index 0633e5fb8d..eb1c24f383 100644 --- a/plugins/signals-backend/src/service/router.ts +++ b/plugins/signals-backend/src/service/router.ts @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + import express, { NextFunction, Request, Response } from 'express'; import Router from 'express-promise-router'; import { @@ -36,7 +37,7 @@ export interface RouterOptions { events: EventsService; discovery: DiscoveryService; config: Config; - lifecycle?: LifecycleService; + lifecycle: LifecycleService; userInfo: UserInfoService; auth: AuthService; } diff --git a/yarn.lock b/yarn.lock index ffc9146ad4..b3bd56b287 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7864,7 +7864,6 @@ __metadata: version: 0.0.0-use.local resolution: "@backstage/plugin-signals-backend@workspace:plugins/signals-backend" dependencies: - "@backstage/backend-common": ^0.25.0 "@backstage/backend-defaults": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" From 477cf5db21aa0240adcd37a7db6289555f9a6d2f Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:02:11 +0000 Subject: [PATCH 091/213] fix(deps): update dependency esbuild to v0.24.2 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 208 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 109 insertions(+), 99 deletions(-) diff --git a/yarn.lock b/yarn.lock index ffc9146ad4..7c4bf9997d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9175,9 +9175,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/aix-ppc64@npm:0.24.0" +"@esbuild/aix-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/aix-ppc64@npm:0.24.2" conditions: os=aix & cpu=ppc64 languageName: node linkType: hard @@ -9189,9 +9189,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm64@npm:0.24.0" +"@esbuild/android-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm64@npm:0.24.2" conditions: os=android & cpu=arm64 languageName: node linkType: hard @@ -9203,9 +9203,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-arm@npm:0.24.0" +"@esbuild/android-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-arm@npm:0.24.2" conditions: os=android & cpu=arm languageName: node linkType: hard @@ -9217,9 +9217,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/android-x64@npm:0.24.0" +"@esbuild/android-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/android-x64@npm:0.24.2" conditions: os=android & cpu=x64 languageName: node linkType: hard @@ -9231,9 +9231,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-arm64@npm:0.24.0" +"@esbuild/darwin-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-arm64@npm:0.24.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -9245,9 +9245,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/darwin-x64@npm:0.24.0" +"@esbuild/darwin-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/darwin-x64@npm:0.24.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -9259,9 +9259,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-arm64@npm:0.24.0" +"@esbuild/freebsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-arm64@npm:0.24.2" conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard @@ -9273,9 +9273,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/freebsd-x64@npm:0.24.0" +"@esbuild/freebsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/freebsd-x64@npm:0.24.2" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard @@ -9287,9 +9287,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm64@npm:0.24.0" +"@esbuild/linux-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm64@npm:0.24.2" conditions: os=linux & cpu=arm64 languageName: node linkType: hard @@ -9301,9 +9301,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-arm@npm:0.24.0" +"@esbuild/linux-arm@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-arm@npm:0.24.2" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -9315,9 +9315,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ia32@npm:0.24.0" +"@esbuild/linux-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ia32@npm:0.24.2" conditions: os=linux & cpu=ia32 languageName: node linkType: hard @@ -9329,9 +9329,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-loong64@npm:0.24.0" +"@esbuild/linux-loong64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-loong64@npm:0.24.2" conditions: os=linux & cpu=loong64 languageName: node linkType: hard @@ -9343,9 +9343,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-mips64el@npm:0.24.0" +"@esbuild/linux-mips64el@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-mips64el@npm:0.24.2" conditions: os=linux & cpu=mips64el languageName: node linkType: hard @@ -9357,9 +9357,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-ppc64@npm:0.24.0" +"@esbuild/linux-ppc64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-ppc64@npm:0.24.2" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard @@ -9371,9 +9371,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-riscv64@npm:0.24.0" +"@esbuild/linux-riscv64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-riscv64@npm:0.24.2" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard @@ -9385,9 +9385,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-s390x@npm:0.24.0" +"@esbuild/linux-s390x@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-s390x@npm:0.24.2" conditions: os=linux & cpu=s390x languageName: node linkType: hard @@ -9399,13 +9399,20 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/linux-x64@npm:0.24.0" +"@esbuild/linux-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/linux-x64@npm:0.24.2" conditions: os=linux & cpu=x64 languageName: node linkType: hard +"@esbuild/netbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-arm64@npm:0.24.2" + conditions: os=netbsd & cpu=arm64 + languageName: node + linkType: hard + "@esbuild/netbsd-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/netbsd-x64@npm:0.21.5" @@ -9413,16 +9420,16 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/netbsd-x64@npm:0.24.0" +"@esbuild/netbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/netbsd-x64@npm:0.24.2" conditions: os=netbsd & cpu=x64 languageName: node linkType: hard -"@esbuild/openbsd-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-arm64@npm:0.24.0" +"@esbuild/openbsd-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-arm64@npm:0.24.2" conditions: os=openbsd & cpu=arm64 languageName: node linkType: hard @@ -9434,9 +9441,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/openbsd-x64@npm:0.24.0" +"@esbuild/openbsd-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/openbsd-x64@npm:0.24.2" conditions: os=openbsd & cpu=x64 languageName: node linkType: hard @@ -9448,9 +9455,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/sunos-x64@npm:0.24.0" +"@esbuild/sunos-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/sunos-x64@npm:0.24.2" conditions: os=sunos & cpu=x64 languageName: node linkType: hard @@ -9462,9 +9469,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-arm64@npm:0.24.0" +"@esbuild/win32-arm64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-arm64@npm:0.24.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -9476,9 +9483,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-ia32@npm:0.24.0" +"@esbuild/win32-ia32@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-ia32@npm:0.24.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -9490,9 +9497,9 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.24.0": - version: 0.24.0 - resolution: "@esbuild/win32-x64@npm:0.24.0" +"@esbuild/win32-x64@npm:0.24.2": + version: 0.24.2 + resolution: "@esbuild/win32-x64@npm:0.24.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -27300,33 +27307,34 @@ __metadata: linkType: hard "esbuild@npm:^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0, esbuild@npm:^0.24.0": - version: 0.24.0 - resolution: "esbuild@npm:0.24.0" + version: 0.24.2 + resolution: "esbuild@npm:0.24.2" dependencies: - "@esbuild/aix-ppc64": 0.24.0 - "@esbuild/android-arm": 0.24.0 - "@esbuild/android-arm64": 0.24.0 - "@esbuild/android-x64": 0.24.0 - "@esbuild/darwin-arm64": 0.24.0 - "@esbuild/darwin-x64": 0.24.0 - "@esbuild/freebsd-arm64": 0.24.0 - "@esbuild/freebsd-x64": 0.24.0 - "@esbuild/linux-arm": 0.24.0 - "@esbuild/linux-arm64": 0.24.0 - "@esbuild/linux-ia32": 0.24.0 - "@esbuild/linux-loong64": 0.24.0 - "@esbuild/linux-mips64el": 0.24.0 - "@esbuild/linux-ppc64": 0.24.0 - "@esbuild/linux-riscv64": 0.24.0 - "@esbuild/linux-s390x": 0.24.0 - "@esbuild/linux-x64": 0.24.0 - "@esbuild/netbsd-x64": 0.24.0 - "@esbuild/openbsd-arm64": 0.24.0 - "@esbuild/openbsd-x64": 0.24.0 - "@esbuild/sunos-x64": 0.24.0 - "@esbuild/win32-arm64": 0.24.0 - "@esbuild/win32-ia32": 0.24.0 - "@esbuild/win32-x64": 0.24.0 + "@esbuild/aix-ppc64": 0.24.2 + "@esbuild/android-arm": 0.24.2 + "@esbuild/android-arm64": 0.24.2 + "@esbuild/android-x64": 0.24.2 + "@esbuild/darwin-arm64": 0.24.2 + "@esbuild/darwin-x64": 0.24.2 + "@esbuild/freebsd-arm64": 0.24.2 + "@esbuild/freebsd-x64": 0.24.2 + "@esbuild/linux-arm": 0.24.2 + "@esbuild/linux-arm64": 0.24.2 + "@esbuild/linux-ia32": 0.24.2 + "@esbuild/linux-loong64": 0.24.2 + "@esbuild/linux-mips64el": 0.24.2 + "@esbuild/linux-ppc64": 0.24.2 + "@esbuild/linux-riscv64": 0.24.2 + "@esbuild/linux-s390x": 0.24.2 + "@esbuild/linux-x64": 0.24.2 + "@esbuild/netbsd-arm64": 0.24.2 + "@esbuild/netbsd-x64": 0.24.2 + "@esbuild/openbsd-arm64": 0.24.2 + "@esbuild/openbsd-x64": 0.24.2 + "@esbuild/sunos-x64": 0.24.2 + "@esbuild/win32-arm64": 0.24.2 + "@esbuild/win32-ia32": 0.24.2 + "@esbuild/win32-x64": 0.24.2 dependenciesMeta: "@esbuild/aix-ppc64": optional: true @@ -27362,6 +27370,8 @@ __metadata: optional: true "@esbuild/linux-x64": optional: true + "@esbuild/netbsd-arm64": + optional: true "@esbuild/netbsd-x64": optional: true "@esbuild/openbsd-arm64": @@ -27378,7 +27388,7 @@ __metadata: optional: true bin: esbuild: bin/esbuild - checksum: dd386d92a05c7eb03078480522cdd8b40c434777b5f08487c27971d30933ecaae3f08bd221958dd8f9c66214915cdc85f844283ca9bdbf8ee703d889ae526edd + checksum: e2303f8331887e31330b5a972fb9640ad93dfc5af76cb2156faa9eaa32bac5c403244096cbdafc45622829913e63664dfd88410987e3468df4354492f908a094 languageName: node linkType: hard From 2c10fd50182aeff22f5df32a411ad2771913c7c5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Dec 2024 16:03:29 +0000 Subject: [PATCH 092/213] fix(deps): update dependency keyv to v5.2.3 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 ffc9146ad4..b457cd0fbc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10879,12 +10879,12 @@ __metadata: languageName: node linkType: hard -"@keyv/serialize@npm:*, @keyv/serialize@npm:^1.0.1": - version: 1.0.1 - resolution: "@keyv/serialize@npm:1.0.1" +"@keyv/serialize@npm:*, @keyv/serialize@npm:^1.0.2": + version: 1.0.2 + resolution: "@keyv/serialize@npm:1.0.2" dependencies: buffer: ^6.0.3 - checksum: ff3dd9a6246b17fca3d1b0aba312dea931059fdecc36027f4d8133e59dbb3554a0a516b1f3dfc7fb2b3ca7a3d6fa307804f299566ab214febd3fb9d0502eebed + checksum: c1788186d490521d67f3f6367effe2a2ccf2804960f449d728dc50a65ff2840501865f95ed5181c4b773cdeed61ebedb01c0f781a881034c8f3dafc1b98fef12 languageName: node linkType: hard @@ -33732,11 +33732,11 @@ __metadata: linkType: hard "keyv@npm:*, keyv@npm:^5.2.1": - version: 5.2.2 - resolution: "keyv@npm:5.2.2" + version: 5.2.3 + resolution: "keyv@npm:5.2.3" dependencies: - "@keyv/serialize": ^1.0.1 - checksum: d5476d8dd674c55c1754bcd05da118dc71eb4609f38677d891da799600fdc532f2015b1ffd3d8e03c0891b3ca88e4b50a34e1eac7787844f6af9cfb2f72c946c + "@keyv/serialize": ^1.0.2 + checksum: b317a71550431ba6238bc8c71ce9ab263560df2227ca7933f7a3f18f0fa1a931312b02951cbcce9d316689709f67c5e4a4095e8e6b9aa13d19ce82c5dd7293e2 languageName: node linkType: hard From 6266a6fb27c360f4cc166e45b7ad92acbe9a79a4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Dec 2024 18:29:06 +0000 Subject: [PATCH 093/213] fix(deps): update react-router monorepo to v6.28.1 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 0f1ed49c7e..0525810ca5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -40604,15 +40604,15 @@ __metadata: linkType: hard "react-router-dom@npm:^6.3.0": - version: 6.28.0 - resolution: "react-router-dom@npm:6.28.0" + version: 6.28.1 + resolution: "react-router-dom@npm:6.28.1" dependencies: "@remix-run/router": 1.21.0 - react-router: 6.28.0 + react-router: 6.28.1 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: 0cf4658a92bc66f50ec9d8518c36aa5a402bcadce71fb624ed6f900d73a29ea87ff904a4f2c42279107e75e80cc08c6192563fadcc5d4e642e6d476e38e83b21 + checksum: 85380f5f3448fc8b64463bc7d64a053f724e64c4c50e64a3d57d450d3b365815e902927a8ff927c162d82093976bcbba70157dff1ade1ba0ae464ad3472518cb languageName: node linkType: hard @@ -40627,14 +40627,14 @@ __metadata: languageName: node linkType: hard -"react-router@npm:6.28.0, react-router@npm:^6.3.0": - version: 6.28.0 - resolution: "react-router@npm:6.28.0" +"react-router@npm:6.28.1, react-router@npm:^6.3.0": + version: 6.28.1 + resolution: "react-router@npm:6.28.1" dependencies: "@remix-run/router": 1.21.0 peerDependencies: react: ">=16.8" - checksum: 23246ca957b5c2bc8d6f9a81fee2df2ce4fc3feca3ec27c2fd85999568fc1299a4e8273e4ab70b6f3acd43a1fb45e0c93cb01ef77e68c9f9e1f7e4f42a1419ea + checksum: c1c4fe644a7197437f9ce9b8b621e79f9620b7a7b1192c9d1d44a6971b08af94408f3e63bd2cf122903c27d9a73b2e5632e4ca428e9ac0bf1d61e325968d4994 languageName: node linkType: hard From 9441dbd308d2fb902aab8832fa96a529a8dfd695 Mon Sep 17 00:00:00 2001 From: blam Date: Mon, 23 Dec 2024 09:42:08 +0100 Subject: [PATCH 094/213] chore: enter pre Signed-off-by: blam --- .changeset/pre.json | 199 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 .changeset/pre.json diff --git a/.changeset/pre.json b/.changeset/pre.json new file mode 100644 index 0000000000..f295f66a10 --- /dev/null +++ b/.changeset/pre.json @@ -0,0 +1,199 @@ +{ + "mode": "pre", + "tag": "next", + "initialVersions": { + "example-app": "0.2.104", + "@backstage/app-defaults": "1.5.15", + "example-app-next": "0.0.18", + "app-next-example-plugin": "0.0.18", + "example-backend": "0.0.33", + "@backstage/backend-app-api": "1.1.0", + "@backstage/backend-defaults": "0.6.0", + "@backstage/backend-dev-utils": "0.1.5", + "@backstage/backend-dynamic-feature-service": "0.5.2", + "example-backend-legacy": "0.2.105", + "@backstage/backend-openapi-utils": "0.4.0", + "@backstage/backend-plugin-api": "1.1.0", + "@backstage/backend-test-utils": "1.2.0", + "@backstage/canon": "0.0.0", + "@backstage/catalog-client": "1.9.0", + "@backstage/catalog-model": "1.7.2", + "@backstage/cli": "0.29.4", + "@backstage/cli-common": "0.1.15", + "@backstage/cli-node": "0.2.11", + "@backstage/codemods": "0.1.52", + "@backstage/config": "1.3.1", + "@backstage/config-loader": "1.9.3", + "@backstage/core-app-api": "1.15.3", + "@backstage/core-compat-api": "0.3.4", + "@backstage/core-components": "0.16.2", + "@backstage/core-plugin-api": "1.10.2", + "@backstage/create-app": "0.5.23", + "@backstage/dev-utils": "1.1.5", + "e2e-test": "0.2.23", + "@backstage/e2e-test-utils": "0.1.1", + "@backstage/errors": "1.2.6", + "@backstage/eslint-plugin": "0.1.10", + "@backstage/frontend-app-api": "0.10.3", + "@backstage/frontend-defaults": "0.1.4", + "@internal/frontend": "0.0.4", + "@backstage/frontend-plugin-api": "0.9.3", + "@backstage/frontend-test-utils": "0.2.4", + "@backstage/integration": "1.16.0", + "@backstage/integration-aws-node": "0.1.14", + "@backstage/integration-react": "1.2.2", + "@internal/opaque": "0.0.1", + "@backstage/release-manifests": "0.0.12", + "@backstage/repo-tools": "0.12.0", + "@internal/scaffolder": "0.0.4", + "@techdocs/cli": "1.8.24", + "techdocs-cli-embedded-app": "0.2.103", + "@backstage/test-utils": "1.7.3", + "@backstage/theme": "0.6.3", + "@backstage/types": "1.2.0", + "@backstage/version-bridge": "1.0.10", + "yarn-plugin-backstage": "0.0.4", + "@backstage/plugin-api-docs": "0.12.2", + "@backstage/plugin-api-docs-module-protoc-gen-doc": "0.1.8", + "@backstage/plugin-app": "0.1.4", + "@backstage/plugin-app-backend": "0.4.3", + "@backstage/plugin-app-node": "0.1.28", + "@backstage/plugin-app-visualizer": "0.1.14", + "@backstage/plugin-auth-backend": "0.24.1", + "@backstage/plugin-auth-backend-module-atlassian-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-auth0-provider": "0.1.3", + "@backstage/plugin-auth-backend-module-aws-alb-provider": "0.3.1", + "@backstage/plugin-auth-backend-module-azure-easyauth-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-bitbucket-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-bitbucket-server-provider": "0.1.3", + "@backstage/plugin-auth-backend-module-cloudflare-access-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-gcp-iap-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-github-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-gitlab-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-google-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-guest-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-microsoft-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-oauth2-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-oauth2-proxy-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-oidc-provider": "0.3.3", + "@backstage/plugin-auth-backend-module-okta-provider": "0.1.3", + "@backstage/plugin-auth-backend-module-onelogin-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-pinniped-provider": "0.2.3", + "@backstage/plugin-auth-backend-module-vmware-cloud-provider": "0.4.2", + "@backstage/plugin-auth-node": "0.5.5", + "@backstage/plugin-auth-react": "0.1.10", + "@backstage/plugin-bitbucket-cloud-common": "0.2.26", + "@backstage/plugin-catalog": "1.26.0", + "@backstage/plugin-catalog-backend": "1.29.0", + "@backstage/plugin-catalog-backend-module-aws": "0.4.6", + "@backstage/plugin-catalog-backend-module-azure": "0.3.0", + "@backstage/plugin-catalog-backend-module-backstage-openapi": "0.4.3", + "@backstage/plugin-catalog-backend-module-bitbucket-cloud": "0.4.3", + "@backstage/plugin-catalog-backend-module-bitbucket-server": "0.3.0", + "@backstage/plugin-catalog-backend-module-gcp": "0.3.3", + "@backstage/plugin-catalog-backend-module-gerrit": "0.2.5", + "@backstage/plugin-catalog-backend-module-github": "0.7.8", + "@backstage/plugin-catalog-backend-module-github-org": "0.3.5", + "@backstage/plugin-catalog-backend-module-gitlab": "0.6.0", + "@backstage/plugin-catalog-backend-module-gitlab-org": "0.2.4", + "@backstage/plugin-catalog-backend-module-incremental-ingestion": "0.6.1", + "@backstage/plugin-catalog-backend-module-ldap": "0.11.0", + "@backstage/plugin-catalog-backend-module-logs": "0.1.5", + "@backstage/plugin-catalog-backend-module-msgraph": "0.6.5", + "@backstage/plugin-catalog-backend-module-openapi": "0.2.5", + "@backstage/plugin-catalog-backend-module-puppetdb": "0.2.5", + "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "0.2.3", + "@backstage/plugin-catalog-backend-module-unprocessed": "0.5.3", + "@backstage/plugin-catalog-common": "1.1.2", + "@backstage/plugin-catalog-graph": "0.4.14", + "@backstage/plugin-catalog-import": "0.12.8", + "@backstage/plugin-catalog-node": "1.15.0", + "@backstage/plugin-catalog-react": "1.15.0", + "@backstage/plugin-catalog-unprocessed-entities": "0.2.12", + "@backstage/plugin-catalog-unprocessed-entities-common": "0.0.6", + "@backstage/plugin-config-schema": "0.1.63", + "@backstage/plugin-devtools": "0.1.22", + "@backstage/plugin-devtools-backend": "0.5.0", + "@backstage/plugin-devtools-common": "0.1.14", + "@backstage/plugin-events-backend": "0.4.0", + "@backstage/plugin-events-backend-module-aws-sqs": "0.4.6", + "@backstage/plugin-events-backend-module-azure": "0.2.15", + "@backstage/plugin-events-backend-module-bitbucket-cloud": "0.2.15", + "@backstage/plugin-events-backend-module-gerrit": "0.2.15", + "@backstage/plugin-events-backend-module-github": "0.2.15", + "@backstage/plugin-events-backend-module-gitlab": "0.2.15", + "@backstage/plugin-events-backend-test-utils": "0.1.39", + "@backstage/plugin-events-node": "0.4.6", + "@internal/plugin-todo-list": "1.0.34", + "@internal/plugin-todo-list-backend": "1.0.34", + "@internal/plugin-todo-list-common": "1.0.23", + "@backstage/plugin-home": "0.8.3", + "@backstage/plugin-home-react": "0.1.21", + "@backstage/plugin-kubernetes": "0.12.2", + "@backstage/plugin-kubernetes-backend": "0.19.1", + "@backstage/plugin-kubernetes-cluster": "0.0.20", + "@backstage/plugin-kubernetes-common": "0.9.1", + "@backstage/plugin-kubernetes-node": "0.2.1", + "@backstage/plugin-kubernetes-react": "0.5.2", + "@backstage/plugin-notifications": "0.5.0", + "@backstage/plugin-notifications-backend": "0.5.0", + "@backstage/plugin-notifications-backend-module-email": "0.3.4", + "@backstage/plugin-notifications-common": "0.0.7", + "@backstage/plugin-notifications-node": "0.2.10", + "@backstage/plugin-org": "0.6.34", + "@backstage/plugin-org-react": "0.1.33", + "@backstage/plugin-permission-backend": "0.5.52", + "@backstage/plugin-permission-backend-module-allow-all-policy": "0.2.3", + "@backstage/plugin-permission-common": "0.8.3", + "@backstage/plugin-permission-node": "0.8.6", + "@backstage/plugin-permission-react": "0.4.29", + "@backstage/plugin-proxy-backend": "0.5.9", + "@backstage/plugin-scaffolder": "1.27.2", + "@backstage/plugin-scaffolder-backend": "1.28.0", + "@backstage/plugin-scaffolder-backend-module-azure": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-bitbucket": "0.3.5", + "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown": "0.3.4", + "@backstage/plugin-scaffolder-backend-module-cookiecutter": "0.3.5", + "@backstage/plugin-scaffolder-backend-module-gcp": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-gerrit": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-gitea": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-github": "0.5.4", + "@backstage/plugin-scaffolder-backend-module-gitlab": "0.7.0", + "@backstage/plugin-scaffolder-backend-module-notifications": "0.1.5", + "@backstage/plugin-scaffolder-backend-module-rails": "0.5.4", + "@backstage/plugin-scaffolder-backend-module-sentry": "0.2.4", + "@backstage/plugin-scaffolder-backend-module-yeoman": "0.4.5", + "@backstage/plugin-scaffolder-common": "1.5.8", + "@backstage/plugin-scaffolder-node": "0.6.2", + "@backstage/plugin-scaffolder-node-test-utils": "0.1.17", + "@backstage/plugin-scaffolder-react": "1.14.2", + "@backstage/plugin-search": "1.4.21", + "@backstage/plugin-search-backend": "1.8.0", + "@backstage/plugin-search-backend-module-catalog": "0.2.6", + "@backstage/plugin-search-backend-module-elasticsearch": "1.6.3", + "@backstage/plugin-search-backend-module-explore": "0.2.6", + "@backstage/plugin-search-backend-module-pg": "0.5.39", + "@backstage/plugin-search-backend-module-stack-overflow-collator": "0.3.4", + "@backstage/plugin-search-backend-module-techdocs": "0.3.4", + "@backstage/plugin-search-backend-node": "1.3.6", + "@backstage/plugin-search-common": "1.2.16", + "@backstage/plugin-search-react": "1.8.4", + "@backstage/plugin-signals": "0.0.14", + "@backstage/plugin-signals-backend": "0.2.4", + "@backstage/plugin-signals-node": "0.1.15", + "@backstage/plugin-signals-react": "0.0.8", + "@backstage/plugin-techdocs": "1.12.0", + "@backstage/plugin-techdocs-addons-test-utils": "1.0.43", + "@backstage/plugin-techdocs-backend": "1.11.4", + "@backstage/plugin-techdocs-common": "0.1.0", + "@backstage/plugin-techdocs-module-addons-contrib": "1.1.19", + "@backstage/plugin-techdocs-node": "1.12.15", + "@backstage/plugin-techdocs-react": "1.2.12", + "@backstage/plugin-user-settings": "0.8.17", + "@backstage/plugin-user-settings-backend": "0.2.28", + "@backstage/plugin-user-settings-common": "0.0.1" + }, + "changesets": [] +} From 575613f5608c2def7472f333c90d63efc7b69c31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Mon, 23 Dec 2024 12:50:36 +0100 Subject: [PATCH 095/213] Go back to using node-fetch for gitlab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/famous-balloons-punch.md | 6 ++++++ .../entrypoints/urlReader/lib/GitlabUrlReader.ts | 14 ++++++++++++-- plugins/catalog-backend-module-gitlab/package.json | 1 + .../src/lib/client.ts | 3 +++ yarn.lock | 1 + 5 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 .changeset/famous-balloons-punch.md diff --git a/.changeset/famous-balloons-punch.md b/.changeset/famous-balloons-punch.md new file mode 100644 index 0000000000..a6e7072974 --- /dev/null +++ b/.changeset/famous-balloons-punch.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-gitlab': patch +'@backstage/backend-defaults': patch +--- + +Go back to using `node-fetch` for gitlab diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts index c1d8c02a53..77a8d31623 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GitlabUrlReader.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +// NOTE(freben): Intentionally uses node-fetch because of https://github.com/backstage/backstage/issues/28190 +import fetch, { Response } from 'node-fetch'; + import { UrlReaderService, UrlReaderServiceReadTreeOptions, @@ -34,8 +37,10 @@ import { import parseGitUrl from 'git-url-parse'; import { trimEnd, trimStart } from 'lodash'; import { Minimatch } from 'minimatch'; +import { Readable } from 'stream'; import { ReadUrlResponseFactory } from './ReadUrlResponseFactory'; import { ReadTreeResponseFactory, ReaderFactory } from './types'; +import { parseLastModified } from './util'; /** * Implements a {@link @backstage/backend-plugin-api#UrlReaderService} for files on GitLab. @@ -98,7 +103,12 @@ export class GitlabUrlReader implements UrlReaderService { } if (response.ok) { - return ReadUrlResponseFactory.fromResponse(response); + return ReadUrlResponseFactory.fromNodeJSReadable(response.body, { + etag: response.headers.get('ETag') ?? undefined, + lastModifiedAt: parseLastModified( + response.headers.get('Last-Modified'), + ), + }); } const message = `${url} could not be read as ${builtUrl}, ${response.status} ${response.statusText}`; @@ -220,7 +230,7 @@ export class GitlabUrlReader implements UrlReaderService { } return await this.deps.treeResponseFactory.fromTarArchive({ - response: archiveGitLabResponse, + stream: Readable.from(archiveGitLabResponse.body), subpath: filepath, etag: commitSha, filter: options?.filter, diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index 8705fa467a..d4064d3c6f 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -61,6 +61,7 @@ "@backstage/plugin-events-node": "workspace:^", "@gitbeaker/rest": "^40.0.3", "lodash": "^4.17.21", + "node-fetch": "^2.7.0", "uuid": "^11.0.0" }, "devDependencies": { diff --git a/plugins/catalog-backend-module-gitlab/src/lib/client.ts b/plugins/catalog-backend-module-gitlab/src/lib/client.ts index 81ba58db5d..561f38634b 100644 --- a/plugins/catalog-backend-module-gitlab/src/lib/client.ts +++ b/plugins/catalog-backend-module-gitlab/src/lib/client.ts @@ -14,6 +14,9 @@ * limitations under the License. */ +// NOTE(freben): Intentionally uses node-fetch because of https://github.com/backstage/backstage/issues/28190 +import fetch from 'node-fetch'; + import { getGitLabRequestOptions, GitLabIntegrationConfig, diff --git a/yarn.lock b/yarn.lock index 4deff47df3..7706d01114 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5643,6 +5643,7 @@ __metadata: lodash: ^4.17.21 luxon: ^3.0.0 msw: ^1.0.0 + node-fetch: ^2.7.0 uuid: ^11.0.0 languageName: unknown linkType: soft From 65f3e807e5d74a6c363cde9037eb2f678fb37e7f Mon Sep 17 00:00:00 2001 From: Peter Macdonald Date: Mon, 23 Dec 2024 13:09:49 +0100 Subject: [PATCH 096/213] add missing config to docs Signed-off-by: Peter Macdonald --- docs/backend-system/core-services/http-router.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/backend-system/core-services/http-router.md b/docs/backend-system/core-services/http-router.md index c354f4fceb..d7658d9a67 100644 --- a/docs/backend-system/core-services/http-router.md +++ b/docs/backend-system/core-services/http-router.md @@ -113,7 +113,7 @@ backend.add( }); router.use(createAuthIntegrationRouter({ auth })); - router.use(createLifecycleMiddleware({ lifecycle })); + router.use(createLifecycleMiddleware({ config, lifecycle })); router.use(credentialsBarrier.middleware); router.use(createCookieAuthRefreshMiddleware({ auth, httpAuth })); From 2e3fbc11c2c6a001bb46178b6801502a5c63dde4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Tue, 24 Dec 2024 10:07:58 +0000 Subject: [PATCH 097/213] Version Packages (next) --- .changeset/create-app-1735034814.md | 5 + .changeset/pre.json | 26 +- docs/releases/v1.35.0-next.0-changelog.md | 1592 +++++++++++++++++ package.json | 2 +- packages/app-next/CHANGELOG.md | 45 + packages/app-next/package.json | 2 +- packages/app/CHANGELOG.md | 41 + packages/app/package.json | 2 +- packages/backend-app-api/CHANGELOG.md | 15 + packages/backend-app-api/package.json | 2 +- packages/backend-defaults/CHANGELOG.md | 29 + packages/backend-defaults/package.json | 2 +- .../CHANGELOG.md | 26 + .../package.json | 2 +- packages/backend-legacy/CHANGELOG.md | 40 + packages/backend-legacy/package.json | 2 +- packages/backend-openapi-utils/CHANGELOG.md | 9 + packages/backend-openapi-utils/package.json | 2 +- packages/backend-plugin-api/CHANGELOG.md | 12 + packages/backend-plugin-api/package.json | 2 +- packages/backend-test-utils/CHANGELOG.md | 14 + packages/backend-test-utils/package.json | 2 +- packages/backend/CHANGELOG.md | 38 + packages/backend/package.json | 2 +- packages/cli/CHANGELOG.md | 17 + packages/cli/package.json | 2 +- packages/config-loader/CHANGELOG.md | 11 + packages/config-loader/package.json | 2 +- packages/create-app/CHANGELOG.md | 8 + packages/create-app/package.json | 2 +- packages/e2e-test/CHANGELOG.md | 9 + packages/e2e-test/package.json | 2 +- packages/repo-tools/CHANGELOG.md | 12 + packages/repo-tools/package.json | 2 +- packages/scaffolder-internal/CHANGELOG.md | 8 + packages/scaffolder-internal/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 +- plugins/app-backend/CHANGELOG.md | 15 + plugins/app-backend/package.json | 2 +- plugins/app-node/CHANGELOG.md | 8 + plugins/app-node/package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 8 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- .../CHANGELOG.md | 9 + .../package.json | 2 +- plugins/auth-backend/CHANGELOG.md | 32 + plugins/auth-backend/package.json | 2 +- plugins/auth-node/CHANGELOG.md | 14 + plugins/auth-node/package.json | 2 +- .../catalog-backend-module-aws/CHANGELOG.md | 16 + .../catalog-backend-module-aws/package.json | 2 +- .../catalog-backend-module-azure/CHANGELOG.md | 11 + .../catalog-backend-module-azure/package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../catalog-backend-module-gcp/CHANGELOG.md | 11 + .../catalog-backend-module-gcp/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 15 + .../package.json | 2 +- .../CHANGELOG.md | 17 + .../package.json | 2 +- .../catalog-backend-module-ldap/CHANGELOG.md | 13 + .../catalog-backend-module-ldap/package.json | 2 +- .../catalog-backend-module-logs/CHANGELOG.md | 9 + .../catalog-backend-module-logs/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- plugins/catalog-backend/CHANGELOG.md | 28 + plugins/catalog-backend/package.json | 2 +- plugins/catalog-node/CHANGELOG.md | 14 + plugins/catalog-node/package.json | 2 +- plugins/devtools-backend/CHANGELOG.md | 17 + plugins/devtools-backend/package.json | 2 +- .../CHANGELOG.md | 10 + .../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 | 13 + plugins/events-backend/package.json | 2 +- plugins/events-node/CHANGELOG.md | 9 + plugins/events-node/package.json | 2 +- .../example-todo-list-backend/CHANGELOG.md | 9 + .../example-todo-list-backend/package.json | 2 +- plugins/home/CHANGELOG.md | 18 + plugins/home/package.json | 2 +- plugins/kubernetes-backend/CHANGELOG.md | 19 + plugins/kubernetes-backend/package.json | 2 +- plugins/kubernetes-node/CHANGELOG.md | 10 + plugins/kubernetes-node/package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- plugins/notifications-backend/CHANGELOG.md | 18 + plugins/notifications-backend/package.json | 2 +- plugins/notifications-node/CHANGELOG.md | 11 + plugins/notifications-node/package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- plugins/permission-backend/CHANGELOG.md | 13 + plugins/permission-backend/package.json | 2 +- plugins/permission-node/CHANGELOG.md | 12 + plugins/permission-node/package.json | 2 +- plugins/proxy-backend/CHANGELOG.md | 9 + plugins/proxy-backend/package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 13 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 12 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- plugins/scaffolder-backend/CHANGELOG.md | 36 + plugins/scaffolder-backend/package.json | 2 +- .../scaffolder-node-test-utils/CHANGELOG.md | 9 + .../scaffolder-node-test-utils/package.json | 2 +- plugins/scaffolder-node/CHANGELOG.md | 14 + plugins/scaffolder-node/package.json | 2 +- plugins/scaffolder-react/CHANGELOG.md | 18 + plugins/scaffolder-react/package.json | 2 +- plugins/scaffolder/CHANGELOG.md | 22 + plugins/scaffolder/package.json | 2 +- .../CHANGELOG.md | 23 + .../package.json | 2 +- .../CHANGELOG.md | 11 + .../package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- plugins/search-backend-module-pg/CHANGELOG.md | 10 + plugins/search-backend-module-pg/package.json | 2 +- .../CHANGELOG.md | 10 + .../package.json | 2 +- .../CHANGELOG.md | 16 + .../package.json | 2 +- plugins/search-backend-node/CHANGELOG.md | 11 + plugins/search-backend-node/package.json | 2 +- plugins/search-backend/CHANGELOG.md | 16 + plugins/search-backend/package.json | 2 +- plugins/signals-backend/CHANGELOG.md | 12 + plugins/signals-backend/package.json | 2 +- plugins/signals-node/CHANGELOG.md | 11 + plugins/signals-node/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 | 14 + plugins/techdocs-node/package.json | 2 +- plugins/user-settings-backend/CHANGELOG.md | 14 + plugins/user-settings-backend/package.json | 2 +- yarn.lock | 86 +- 241 files changed, 3406 insertions(+), 130 deletions(-) create mode 100644 .changeset/create-app-1735034814.md create mode 100644 docs/releases/v1.35.0-next.0-changelog.md diff --git a/.changeset/create-app-1735034814.md b/.changeset/create-app-1735034814.md new file mode 100644 index 0000000000..b50d431d4b --- /dev/null +++ b/.changeset/create-app-1735034814.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Bumped create-app version. diff --git a/.changeset/pre.json b/.changeset/pre.json index f295f66a10..8b34ae5dae 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -195,5 +195,29 @@ "@backstage/plugin-user-settings-backend": "0.2.28", "@backstage/plugin-user-settings-common": "0.0.1" }, - "changesets": [] + "changesets": [ + "big-seals-drum", + "calm-tigers-boil", + "create-app-1735034814", + "cuddly-lions-knock", + "cyan-frogs-count", + "famous-balloons-punch", + "famous-dryers-protect", + "gorgeous-zebras-tan", + "khaki-fireants-begin", + "lemon-students-care", + "metal-ravens-hammer", + "nervous-bottles-occur", + "nice-waves-count", + "quick-poems-cover", + "rich-penguins-stare", + "rich-vans-hope", + "shiny-walls-press", + "silly-bottles-raise", + "spicy-tomatoes-hammer", + "strong-students-beg", + "tall-actors-clap", + "twenty-laws-tie", + "two-wasps-mix" + ] } diff --git a/docs/releases/v1.35.0-next.0-changelog.md b/docs/releases/v1.35.0-next.0-changelog.md new file mode 100644 index 0000000000..5c912ebce1 --- /dev/null +++ b/docs/releases/v1.35.0-next.0-changelog.md @@ -0,0 +1,1592 @@ +# Release v1.35.0-next.0 + +Upgrade Helper: [https://backstage.github.io/upgrade-helper/?to=1.35.0-next.0](https://backstage.github.io/upgrade-helper/?to=1.35.0-next.0) + +## @backstage/backend-defaults@0.7.0-next.0 + +### Minor Changes + +- ec547b8: Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. + + If you were using the standard `MiddlewareFactory` just to put an `error` middleware in you router, you can now remove that at your earliest convenience since it's redundant. If you have custom error handlers in your plugin router, those will continue to function as previously. If you were relying on thrown errors propagating all the way down to the root HTTP router, you will find that they no longer do that, and may want to hoist your error handling up to the plugin level instead. + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- 8ecf8cb: Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend@1.30.0-next.0 + +### Minor Changes + +- dd515e3: Removed the long-deprecated `DefaultCatalogCollatorFactory` and `DefaultCatalogCollatorFactoryOptions` exports, which now no longer exist in the search plugin's offerings. If you were using these, you want to migrate to [the new backend system](https://backstage.io/docs/backend-system/) and use the [catalog collator](https://backstage.io/docs/features/search/collators#catalog) directly. + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- be0aae7: Improved concurrency of the `entities` endpoint when using the streamed query mode behind the `catalog.disableRelationsCompatibility` flag. +- 3d475a0: Updated condition in `resolveCodeOwner` to fix a bug where `normalizeCodeOwner` could potentially be called with an invalid argument causing an error in `CodeOwnersProcessor` +- Updated dependencies + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-scaffolder-backend@1.29.0-next.0 + +### Minor Changes + +- 5d9e5c8: Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.6-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + +### Minor Changes + +- dd515e3: **BREAKING**: Removed support for the old backend system. Please [migrate to the new backend system](https://backstage.io/docs/backend-system/) and enable [the catalog collator](https://backstage.io/docs/features/search/collators#catalog) there. + + As part of this, the `/alpha` export path is gone too. Just import the module from the root of the package as usual instead. + +### Patch Changes + +- 1e09b06: Internal refactor to use cursor based pagination +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/backend-app-api@1.1.1-next.0 + +### Patch Changes + +- 02534c7: Corrected spelling mistake in error message +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/backend-dynamic-feature-service@0.5.3-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-app-node@0.1.29-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/backend-openapi-utils@0.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/backend-plugin-api@1.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/backend-test-utils@1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/cli@0.29.5-next.0 + +### Patch Changes + +- e937ce0: Fixed incompatible `@typescript-eslint` versions with current `eslint@8.x.x` +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/eslint-plugin@0.1.10 + - @backstage/integration@1.16.0 + - @backstage/release-manifests@0.0.12 + - @backstage/types@1.2.0 + +## @backstage/config-loader@1.9.5-next.0 + +### Patch Changes + +- 8ecf8cb: Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present +- Updated dependencies + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/create-app@0.5.24-next.0 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.15 + +## @backstage/repo-tools@0.12.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/errors@1.2.6 + +## @techdocs/cli@1.8.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + +## @backstage/plugin-app-backend@0.4.4-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-app-node@0.1.29-next.0 + +## @backstage/plugin-app-node@0.1.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend@0.24.2-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-auth0-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.3.2-next.0 + - @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-google-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-oidc-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-okta-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-onelogin-provider@0.2.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-auth-backend-module-atlassian-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-auth0-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-aws-alb-provider@0.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-gitlab-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-google-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-microsoft-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-oauth2-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + +## @backstage/plugin-auth-backend-module-oidc-provider@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-okta-provider@0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-onelogin-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + +## @backstage/plugin-auth-backend-module-pinniped-provider@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + +## @backstage/plugin-auth-backend-module-vmware-cloud-provider@0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + +## @backstage/plugin-auth-node@0.5.6-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/plugin-catalog-backend-module-aws@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + +## @backstage/plugin-catalog-backend-module-azure@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-cloud@0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-bitbucket-server@0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-gcp@0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + +## @backstage/plugin-catalog-backend-module-gerrit@0.2.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-github@0.7.9-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-github-org@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.7.9-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab@0.6.1-next.0 + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-gitlab-org@0.2.5-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-catalog-backend-module-gitlab@0.6.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-incremental-ingestion@0.6.2-next.0 + +### Patch Changes + +- ec547b8: Remove the error handler middleware, since that is now provided by the framework +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-catalog-backend-module-ldap@0.11.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-logs@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-catalog-backend-module-msgraph@0.6.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.0 + +### Patch Changes + +- 57e794a: Refactor to no longer use backend-common +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-puppetdb@0.2.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + +## @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-catalog-unprocessed-entities-common@0.0.6 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-catalog-node@1.15.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-devtools-backend@0.5.1-next.0 + +### Patch Changes + +- ec547b8: Remove the error handler middleware, since that is now provided by the framework +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-devtools-common@0.1.14 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-events-backend@0.4.1-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-aws-sqs@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-azure@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-bitbucket-cloud@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-gerrit@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-github@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-module-gitlab@0.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-backend-test-utils@0.1.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-events-node@0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + +## @backstage/plugin-home@0.8.4-next.0 + +### Patch Changes + +- 7932f1e: Exported `QuickStartCard` component. +- Updated dependencies + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/theme@0.6.3 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-home-react@0.1.21 + +## @backstage/plugin-kubernetes-backend@0.19.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + - @backstage/plugin-kubernetes-node@0.2.2-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-kubernetes-node@0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/types@1.2.0 + - @backstage/plugin-kubernetes-common@0.9.1 + +## @backstage/plugin-notifications-backend@0.5.1-next.0 + +### Patch Changes + +- cbc0e63: Remove `@backstage/backend-common` dependency +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + +## @backstage/plugin-notifications-backend-module-email@0.3.5-next.0 + +### Patch Changes + +- bed5f35: Added more examples of the plugin configuration +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + +## @backstage/plugin-notifications-node@0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-signals-node@0.1.16-next.0 + +## @backstage/plugin-permission-backend@0.5.53-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-permission-node@0.8.7-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + +## @backstage/plugin-proxy-backend@0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder@1.27.4-next.0 + +### Patch Changes + +- 3f09ef4: Fix issue with `secrets` not being forwarded properly to the backend when creating a task +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/errors@1.2.6 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/integration@1.16.0 + - @backstage/integration-react@1.2.2 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-scaffolder-backend-module-azure@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + +## @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-cookiecutter@0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder-backend-module-gcp@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-gerrit@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-gitea@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + +## @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + +## @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder-backend-module-sentry@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + +## @backstage/plugin-scaffolder-backend-module-yeoman@0.4.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/types@1.2.0 + - @backstage/plugin-scaffolder-node-test-utils@0.1.18-next.0 + +## @backstage/plugin-scaffolder-node@0.6.3-next.0 + +### Patch Changes + +- 5d9e5c8: Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. +- 7dd0013: Deprecate the `logStream` option in `executeShellCommand`, replacing it with a logger instance. +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-scaffolder-node-test-utils@0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-test-utils@1.2.1-next.0 + - @backstage/types@1.2.0 + +## @backstage/plugin-scaffolder-react@1.14.3-next.0 + +### Patch Changes + +- 37421bc: Fixed scaffolder form fields not resolving correctly in the `useCustomFieldExtensions` hook. +- Updated dependencies + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/theme@0.6.3 + - @backstage/types@1.2.0 + - @backstage/version-bridge@1.0.10 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-scaffolder-common@1.5.8 + +## @backstage/plugin-search-backend@1.8.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-pg@0.5.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-stack-overflow-collator@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + +## @backstage/plugin-search-backend-node@1.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-common@1.2.16 + +## @backstage/plugin-signals-backend@0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + +## @backstage/plugin-signals-node@0.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + +## @backstage/plugin-techdocs-backend@1.11.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-techdocs-common@0.1.0 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + +## @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + +### Patch Changes + +- b664b2a: Internal refactor for safer handling of possible null value. +- Updated dependencies + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/integration@1.16.0 + - @backstage/integration-react@1.2.2 + - @backstage/plugin-techdocs-react@1.2.12 + +## @backstage/plugin-techdocs-node@1.12.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-techdocs-common@0.1.0 + +## @backstage/plugin-user-settings-backend@0.2.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + - @backstage/plugin-user-settings-common@0.0.1 + +## example-app@0.2.105-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-devtools@0.1.22 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + +## example-app-next@0.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/frontend-defaults@0.1.4 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-app@0.1.4 + - @backstage/plugin-app-visualizer@0.1.14 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + +## example-backend@0.0.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.0 + - @backstage/plugin-devtools-backend@0.5.1-next.0 + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-notifications-backend@0.5.1-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + +## example-backend-legacy@0.2.106-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.40-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + +## e2e-test@0.2.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.24-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/errors@1.2.6 + +## @internal/scaffolder@0.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/frontend-plugin-api@0.9.3 + +## techdocs-cli-embedded-app@0.2.104-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.29.5-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/integration-react@1.2.2 + - @backstage/test-utils@1.7.3 + - @backstage/theme@0.6.3 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + +## @internal/plugin-todo-list-backend@1.0.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 diff --git a/package.json b/package.json index b364b2986b..b090ec9edb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "root", - "version": "1.34.0", + "version": "1.35.0-next.0", "private": true, "repository": { "type": "git", diff --git a/packages/app-next/CHANGELOG.md b/packages/app-next/CHANGELOG.md index 42643c9422..a13a77c313 100644 --- a/packages/app-next/CHANGELOG.md +++ b/packages/app-next/CHANGELOG.md @@ -1,5 +1,50 @@ # example-app-next +## 0.0.19-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/frontend-defaults@0.1.4 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-app@0.1.4 + - @backstage/plugin-app-visualizer@0.1.14 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + ## 0.0.18 ### Patch Changes diff --git a/packages/app-next/package.json b/packages/app-next/package.json index 32d7c64c1c..69ef444f77 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -1,6 +1,6 @@ { "name": "example-app-next", - "version": "0.0.18", + "version": "0.0.19-next.0", "backstage": { "role": "frontend" }, diff --git a/packages/app/CHANGELOG.md b/packages/app/CHANGELOG.md index e843425c8a..e81455bdb1 100644 --- a/packages/app/CHANGELOG.md +++ b/packages/app/CHANGELOG.md @@ -1,5 +1,46 @@ # example-app +## 0.2.105-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-home@0.8.4-next.0 + - @backstage/cli@0.29.5-next.0 + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/plugin-scaffolder@1.27.4-next.0 + - @backstage/plugin-techdocs-module-addons-contrib@1.1.20-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-app-api@0.10.3 + - @backstage/integration-react@1.2.2 + - @backstage/theme@0.6.3 + - @backstage/plugin-api-docs@0.12.2 + - @backstage/plugin-auth-react@0.1.10 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-graph@0.4.14 + - @backstage/plugin-catalog-import@0.12.8 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-catalog-unprocessed-entities@0.2.12 + - @backstage/plugin-devtools@0.1.22 + - @backstage/plugin-kubernetes@0.12.2 + - @backstage/plugin-kubernetes-cluster@0.0.20 + - @backstage/plugin-notifications@0.5.0 + - @backstage/plugin-org@0.6.34 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-search@1.4.21 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-search-react@1.8.4 + - @backstage/plugin-signals@0.0.14 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + - @backstage/plugin-user-settings@0.8.17 + ## 0.2.104 ### Patch Changes diff --git a/packages/app/package.json b/packages/app/package.json index 1b919f00b7..7953584527 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "example-app", - "version": "0.2.104", + "version": "0.2.105-next.0", "backstage": { "role": "frontend" }, diff --git a/packages/backend-app-api/CHANGELOG.md b/packages/backend-app-api/CHANGELOG.md index 53deec8525..332ec8de62 100644 --- a/packages/backend-app-api/CHANGELOG.md +++ b/packages/backend-app-api/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/backend-app-api +## 1.1.1-next.0 + +### Patch Changes + +- 02534c7: Corrected spelling mistake in error message +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 1.1.0 ### Minor Changes diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index e16bbb48ee..0adc549ca1 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-app-api", - "version": "1.1.0", + "version": "1.1.1-next.0", "description": "Core API used by Backstage backend apps", "backstage": { "role": "node-library" diff --git a/packages/backend-defaults/CHANGELOG.md b/packages/backend-defaults/CHANGELOG.md index b648e98da6..45da7f089e 100644 --- a/packages/backend-defaults/CHANGELOG.md +++ b/packages/backend-defaults/CHANGELOG.md @@ -1,5 +1,34 @@ # @backstage/backend-defaults +## 0.7.0-next.0 + +### Minor Changes + +- ec547b8: Ensure that an error handler middleware exists at the end of each plugin `httpRouter` handler chain. This makes it so that exceptions thrown by plugin routes are caught and encoded in the standard error format. + + If you were using the standard `MiddlewareFactory` just to put an `error` middleware in you router, you can now remove that at your earliest convenience since it's redundant. If you have custom error handlers in your plugin router, those will continue to function as previously. If you were relying on thrown errors propagating all the way down to the root HTTP router, you will find that they no longer do that, and may want to hoist your error handling up to the plugin level instead. + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- 8ecf8cb: Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-dev-utils@0.1.5 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.6.0 ### Minor Changes diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 7c37e5dede..fac386d302 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-defaults", - "version": "0.6.0", + "version": "0.7.0-next.0", "description": "Backend defaults used by Backstage backend apps", "backstage": { "role": "node-library" diff --git a/packages/backend-dynamic-feature-service/CHANGELOG.md b/packages/backend-dynamic-feature-service/CHANGELOG.md index 6d6a001839..7f41948476 100644 --- a/packages/backend-dynamic-feature-service/CHANGELOG.md +++ b/packages/backend-dynamic-feature-service/CHANGELOG.md @@ -1,5 +1,31 @@ # @backstage/backend-dynamic-feature-service +## 0.5.3-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-app-node@0.1.29-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 0.5.2 ### Patch Changes diff --git a/packages/backend-dynamic-feature-service/package.json b/packages/backend-dynamic-feature-service/package.json index c0696feba2..204c0112c2 100644 --- a/packages/backend-dynamic-feature-service/package.json +++ b/packages/backend-dynamic-feature-service/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-dynamic-feature-service", - "version": "0.5.2", + "version": "0.5.3-next.0", "description": "Backstage dynamic feature service", "backstage": { "role": "node-library" diff --git a/packages/backend-legacy/CHANGELOG.md b/packages/backend-legacy/CHANGELOG.md index f731c09905..07d9377770 100644 --- a/packages/backend-legacy/CHANGELOG.md +++ b/packages/backend-legacy/CHANGELOG.md @@ -1,5 +1,45 @@ # example-backend-legacy +## 0.2.106-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-confluence-to-markdown@0.3.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + - @backstage/plugin-scaffolder-backend-module-rails@0.5.5-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-elasticsearch@1.6.4-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-pg@0.5.40-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + ## 0.2.105 ### Patch Changes diff --git a/packages/backend-legacy/package.json b/packages/backend-legacy/package.json index 2fa8e3e9bf..a7d8559196 100644 --- a/packages/backend-legacy/package.json +++ b/packages/backend-legacy/package.json @@ -1,6 +1,6 @@ { "name": "example-backend-legacy", - "version": "0.2.105", + "version": "0.2.106-next.0", "backstage": { "role": "backend" }, diff --git a/packages/backend-openapi-utils/CHANGELOG.md b/packages/backend-openapi-utils/CHANGELOG.md index 77f6729fc6..74066b2bcd 100644 --- a/packages/backend-openapi-utils/CHANGELOG.md +++ b/packages/backend-openapi-utils/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/backend-openapi-utils +## 0.4.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 0.4.0 ### Minor Changes diff --git a/packages/backend-openapi-utils/package.json b/packages/backend-openapi-utils/package.json index c7c0be76b7..9746345e68 100644 --- a/packages/backend-openapi-utils/package.json +++ b/packages/backend-openapi-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-openapi-utils", - "version": "0.4.0", + "version": "0.4.1-next.0", "description": "OpenAPI typescript support.", "backstage": { "role": "node-library" diff --git a/packages/backend-plugin-api/CHANGELOG.md b/packages/backend-plugin-api/CHANGELOG.md index cf21a1ef92..06c8531a4e 100644 --- a/packages/backend-plugin-api/CHANGELOG.md +++ b/packages/backend-plugin-api/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/backend-plugin-api +## 1.1.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-permission-common@0.8.3 + ## 1.1.0 ### Minor Changes diff --git a/packages/backend-plugin-api/package.json b/packages/backend-plugin-api/package.json index ddffa570a4..c8577fbea8 100644 --- a/packages/backend-plugin-api/package.json +++ b/packages/backend-plugin-api/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-plugin-api", - "version": "1.1.0", + "version": "1.1.1-next.0", "description": "Core API used by Backstage backend plugins", "backstage": { "role": "node-library" diff --git a/packages/backend-test-utils/CHANGELOG.md b/packages/backend-test-utils/CHANGELOG.md index addc59d3b7..da9418451f 100644 --- a/packages/backend-test-utils/CHANGELOG.md +++ b/packages/backend-test-utils/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/backend-test-utils +## 1.2.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-app-api@1.1.1-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 1.2.0 ### Minor Changes diff --git a/packages/backend-test-utils/package.json b/packages/backend-test-utils/package.json index 4daad2cb3c..c70a36e1f4 100644 --- a/packages/backend-test-utils/package.json +++ b/packages/backend-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-test-utils", - "version": "1.2.0", + "version": "1.2.1-next.0", "description": "Test helpers library for Backstage backends", "backstage": { "role": "node-library" diff --git a/packages/backend/CHANGELOG.md b/packages/backend/CHANGELOG.md index 3e65959335..81759b2fa1 100644 --- a/packages/backend/CHANGELOG.md +++ b/packages/backend/CHANGELOG.md @@ -1,5 +1,43 @@ # example-backend +## 0.0.34-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-openapi@0.2.6-next.0 + - @backstage/plugin-devtools-backend@0.5.1-next.0 + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-backend@1.29.0-next.0 + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-backend@0.5.53-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-events-backend@0.4.1-next.0 + - @backstage/plugin-app-backend@0.4.4-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-notifications-backend@0.5.1-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-guest-provider@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-backstage-openapi@0.4.4-next.0 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-backend-module-unprocessed@0.5.4-next.0 + - @backstage/plugin-kubernetes-backend@0.19.2-next.0 + - @backstage/plugin-permission-backend-module-allow-all-policy@0.2.4-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-proxy-backend@0.5.10-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + - @backstage/plugin-scaffolder-backend-module-notifications@0.1.6-next.0 + - @backstage/plugin-search-backend@1.8.1-next.0 + - @backstage/plugin-search-backend-module-explore@0.2.7-next.0 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-signals-backend@0.2.5-next.0 + - @backstage/plugin-techdocs-backend@1.11.5-next.0 + ## 0.0.33 ### Patch Changes diff --git a/packages/backend/package.json b/packages/backend/package.json index e4aef833ca..efcc7ab4b0 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "example-backend", - "version": "0.0.33", + "version": "0.0.34-next.0", "backstage": { "role": "backend" }, diff --git a/packages/cli/CHANGELOG.md b/packages/cli/CHANGELOG.md index 90cc10ce79..2e19e1ea3f 100644 --- a/packages/cli/CHANGELOG.md +++ b/packages/cli/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/cli +## 0.29.5-next.0 + +### Patch Changes + +- e937ce0: Fixed incompatible `@typescript-eslint` versions with current `eslint@8.x.x` +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/eslint-plugin@0.1.10 + - @backstage/integration@1.16.0 + - @backstage/release-manifests@0.0.12 + - @backstage/types@1.2.0 + ## 0.29.4 ### Patch Changes diff --git a/packages/cli/package.json b/packages/cli/package.json index ed0f63c14b..41ef6c10fd 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/cli", - "version": "0.29.4", + "version": "0.29.5-next.0", "description": "CLI for developing Backstage plugins and apps", "backstage": { "role": "cli" diff --git a/packages/config-loader/CHANGELOG.md b/packages/config-loader/CHANGELOG.md index 9cba2ee17a..ab80a33cb6 100644 --- a/packages/config-loader/CHANGELOG.md +++ b/packages/config-loader/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/config-loader +## 1.9.5-next.0 + +### Patch Changes + +- 8ecf8cb: Exclude `@backstage/backend-common` from schema collection if `@backstage/backend-defaults` is present +- Updated dependencies + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 1.9.3 ### Patch Changes diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index ae67a5b492..7c934ff476 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/config-loader", - "version": "1.9.3", + "version": "1.9.5-next.0", "description": "Config loading functionality used by Backstage backend, and CLI", "backstage": { "role": "node-library" diff --git a/packages/create-app/CHANGELOG.md b/packages/create-app/CHANGELOG.md index 06e61c380f..67a8bbf89f 100644 --- a/packages/create-app/CHANGELOG.md +++ b/packages/create-app/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/create-app +## 0.5.24-next.0 + +### Patch Changes + +- Bumped create-app version. +- Updated dependencies + - @backstage/cli-common@0.1.15 + ## 0.5.23 ### Patch Changes diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 1e9c89c5c3..ed8b4eda3c 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/create-app", - "version": "0.5.23", + "version": "0.5.24-next.0", "description": "A CLI that helps you create your own Backstage app", "backstage": { "role": "cli" diff --git a/packages/e2e-test/CHANGELOG.md b/packages/e2e-test/CHANGELOG.md index da466666cc..a58e11186a 100644 --- a/packages/e2e-test/CHANGELOG.md +++ b/packages/e2e-test/CHANGELOG.md @@ -1,5 +1,14 @@ # e2e-test +## 0.2.24-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/create-app@0.5.24-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/errors@1.2.6 + ## 0.2.23 ### Patch Changes diff --git a/packages/e2e-test/package.json b/packages/e2e-test/package.json index b45c9dbafd..32eb8fbc7f 100644 --- a/packages/e2e-test/package.json +++ b/packages/e2e-test/package.json @@ -1,6 +1,6 @@ { "name": "e2e-test", - "version": "0.2.23", + "version": "0.2.24-next.0", "description": "E2E test for verifying Backstage packages", "backstage": { "role": "cli" diff --git a/packages/repo-tools/CHANGELOG.md b/packages/repo-tools/CHANGELOG.md index d0dcba5094..e46ac3b594 100644 --- a/packages/repo-tools/CHANGELOG.md +++ b/packages/repo-tools/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/repo-tools +## 0.12.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/cli-node@0.2.11 + - @backstage/errors@1.2.6 + ## 0.12.0 ### Minor Changes diff --git a/packages/repo-tools/package.json b/packages/repo-tools/package.json index 26da54fd5a..8dc2eb5b00 100644 --- a/packages/repo-tools/package.json +++ b/packages/repo-tools/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/repo-tools", - "version": "0.12.0", + "version": "0.12.1-next.0", "description": "CLI for Backstage repo tooling ", "backstage": { "role": "cli" diff --git a/packages/scaffolder-internal/CHANGELOG.md b/packages/scaffolder-internal/CHANGELOG.md index 2a14cf3411..f1a410ef04 100644 --- a/packages/scaffolder-internal/CHANGELOG.md +++ b/packages/scaffolder-internal/CHANGELOG.md @@ -1,5 +1,13 @@ # @internal/scaffolder +## 0.0.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/frontend-plugin-api@0.9.3 + ## 0.0.4 ### Patch Changes diff --git a/packages/scaffolder-internal/package.json b/packages/scaffolder-internal/package.json index 906d2526b7..c038714597 100644 --- a/packages/scaffolder-internal/package.json +++ b/packages/scaffolder-internal/package.json @@ -1,6 +1,6 @@ { "name": "@internal/scaffolder", - "version": "0.0.4", + "version": "0.0.5-next.0", "backstage": { "role": "web-library", "inline": true diff --git a/packages/techdocs-cli-embedded-app/CHANGELOG.md b/packages/techdocs-cli-embedded-app/CHANGELOG.md index 8ba656aca5..4c9fcdf75f 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.104-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/cli@0.29.5-next.0 + - @backstage/app-defaults@1.5.15 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/integration-react@1.2.2 + - @backstage/test-utils@1.7.3 + - @backstage/theme@0.6.3 + - @backstage/plugin-catalog@1.26.0 + - @backstage/plugin-techdocs@1.12.0 + - @backstage/plugin-techdocs-react@1.2.12 + ## 0.2.103 ### Patch Changes diff --git a/packages/techdocs-cli-embedded-app/package.json b/packages/techdocs-cli-embedded-app/package.json index cb8e9d828a..7aa2a8d98d 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.103", + "version": "0.2.104-next.0", "backstage": { "role": "frontend" }, diff --git a/packages/techdocs-cli/CHANGELOG.md b/packages/techdocs-cli/CHANGELOG.md index f047a778e4..b848f45bfe 100644 --- a/packages/techdocs-cli/CHANGELOG.md +++ b/packages/techdocs-cli/CHANGELOG.md @@ -1,5 +1,16 @@ # @techdocs/cli +## 1.8.25-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + ## 1.8.24 ### Patch Changes diff --git a/packages/techdocs-cli/package.json b/packages/techdocs-cli/package.json index 685f4ddb0c..6c4d20a383 100644 --- a/packages/techdocs-cli/package.json +++ b/packages/techdocs-cli/package.json @@ -1,6 +1,6 @@ { "name": "@techdocs/cli", - "version": "1.8.24", + "version": "1.8.25-next.0", "description": "Utility CLI for managing TechDocs sites in Backstage.", "backstage": { "role": "cli" diff --git a/plugins/app-backend/CHANGELOG.md b/plugins/app-backend/CHANGELOG.md index 339788be48..c8036cefc6 100644 --- a/plugins/app-backend/CHANGELOG.md +++ b/plugins/app-backend/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-app-backend +## 0.4.4-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-app-node@0.1.29-next.0 + ## 0.4.3 ### Patch Changes diff --git a/plugins/app-backend/package.json b/plugins/app-backend/package.json index c0afac060f..ffb092be95 100644 --- a/plugins/app-backend/package.json +++ b/plugins/app-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-app-backend", - "version": "0.4.3", + "version": "0.4.4-next.0", "description": "A Backstage backend plugin that serves the Backstage frontend app", "backstage": { "role": "backend-plugin", diff --git a/plugins/app-node/CHANGELOG.md b/plugins/app-node/CHANGELOG.md index db095fe49e..ae4db7e60e 100644 --- a/plugins/app-node/CHANGELOG.md +++ b/plugins/app-node/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-app-node +## 0.1.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/config-loader@1.9.5-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.1.28 ### Patch Changes diff --git a/plugins/app-node/package.json b/plugins/app-node/package.json index 2e98515be3..486c8c04ca 100644 --- a/plugins/app-node/package.json +++ b/plugins/app-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-app-node", - "version": "0.1.28", + "version": "0.1.29-next.0", "description": "Node.js library for the app plugin", "backstage": { "role": "node-library", diff --git a/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md b/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md index 2530f64321..ad047e80fa 100644 --- a/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-atlassian-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-atlassian-provider +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/auth-backend-module-atlassian-provider/package.json b/plugins/auth-backend-module-atlassian-provider/package.json index 197ac59604..ee17153053 100644 --- a/plugins/auth-backend-module-atlassian-provider/package.json +++ b/plugins/auth-backend-module-atlassian-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-atlassian-provider", - "version": "0.3.3", + "version": "0.3.4-next.0", "description": "The atlassian-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-auth0-provider/CHANGELOG.md b/plugins/auth-backend-module-auth0-provider/CHANGELOG.md index 4e0b10cf35..b800b95e8c 100644 --- a/plugins/auth-backend-module-auth0-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-auth0-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-auth0-provider +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth-backend-module-auth0-provider/package.json b/plugins/auth-backend-module-auth0-provider/package.json index 6d56288d22..787cce9072 100644 --- a/plugins/auth-backend-module-auth0-provider/package.json +++ b/plugins/auth-backend-module-auth0-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-auth0-provider", - "version": "0.1.3", + "version": "0.1.4-next.0", "description": "The auth0-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md b/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md index db3cef3177..1f23208f2b 100644 --- a/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-aws-alb-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend-module-aws-alb-provider +## 0.3.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + ## 0.3.1 ### Patch Changes diff --git a/plugins/auth-backend-module-aws-alb-provider/package.json b/plugins/auth-backend-module-aws-alb-provider/package.json index 6d08da142d..0e804631dc 100644 --- a/plugins/auth-backend-module-aws-alb-provider/package.json +++ b/plugins/auth-backend-module-aws-alb-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-aws-alb-provider", - "version": "0.3.1", + "version": "0.3.2-next.0", "description": "The aws-alb provider module for the Backstage auth backend.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-azure-easyauth-provider/CHANGELOG.md b/plugins/auth-backend-module-azure-easyauth-provider/CHANGELOG.md index bff971d63b..0676ce2521 100644 --- a/plugins/auth-backend-module-azure-easyauth-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-azure-easyauth-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend-module-azure-easyauth-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-azure-easyauth-provider/package.json b/plugins/auth-backend-module-azure-easyauth-provider/package.json index 50444de2c6..8ed119f625 100644 --- a/plugins/auth-backend-module-azure-easyauth-provider/package.json +++ b/plugins/auth-backend-module-azure-easyauth-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-azure-easyauth-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The azure-easyauth-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-bitbucket-provider/CHANGELOG.md b/plugins/auth-backend-module-bitbucket-provider/CHANGELOG.md index 4ed1cd4123..043d8b265c 100644 --- a/plugins/auth-backend-module-bitbucket-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-bitbucket-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-bitbucket-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-bitbucket-provider/package.json b/plugins/auth-backend-module-bitbucket-provider/package.json index efdfcd1ae2..9a4f801efa 100644 --- a/plugins/auth-backend-module-bitbucket-provider/package.json +++ b/plugins/auth-backend-module-bitbucket-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-bitbucket-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The bitbucket-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-bitbucket-server-provider/CHANGELOG.md b/plugins/auth-backend-module-bitbucket-server-provider/CHANGELOG.md index 39f6e90409..c1e653cc2f 100644 --- a/plugins/auth-backend-module-bitbucket-server-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-bitbucket-server-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-bitbucket-server-provider +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth-backend-module-bitbucket-server-provider/package.json b/plugins/auth-backend-module-bitbucket-server-provider/package.json index 82c64e5f8c..6b3a1f95f0 100644 --- a/plugins/auth-backend-module-bitbucket-server-provider/package.json +++ b/plugins/auth-backend-module-bitbucket-server-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-bitbucket-server-provider", - "version": "0.1.3", + "version": "0.1.4-next.0", "description": "The bitbucket-server-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-cloudflare-access-provider/CHANGELOG.md b/plugins/auth-backend-module-cloudflare-access-provider/CHANGELOG.md index 9a8999281f..0db7dabf5b 100644 --- a/plugins/auth-backend-module-cloudflare-access-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-cloudflare-access-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend-module-cloudflare-access-provider +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + ## 0.3.3 ### Patch Changes diff --git a/plugins/auth-backend-module-cloudflare-access-provider/package.json b/plugins/auth-backend-module-cloudflare-access-provider/package.json index 73cf65e7f3..e67eb05a06 100644 --- a/plugins/auth-backend-module-cloudflare-access-provider/package.json +++ b/plugins/auth-backend-module-cloudflare-access-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-cloudflare-access-provider", - "version": "0.3.3", + "version": "0.3.4-next.0", "description": "The cloudflare-access-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md b/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md index 99fbadd386..cf20272d47 100644 --- a/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-gcp-iap-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend-module-gcp-iap-provider +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/auth-backend-module-gcp-iap-provider/package.json b/plugins/auth-backend-module-gcp-iap-provider/package.json index 26df2b4ddb..a763c8c63d 100644 --- a/plugins/auth-backend-module-gcp-iap-provider/package.json +++ b/plugins/auth-backend-module-gcp-iap-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-gcp-iap-provider", - "version": "0.3.3", + "version": "0.3.4-next.0", "description": "A GCP IAP auth provider module for the Backstage auth backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-github-provider/CHANGELOG.md b/plugins/auth-backend-module-github-provider/CHANGELOG.md index 299cd5a5af..6d24b0cac9 100644 --- a/plugins/auth-backend-module-github-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-github-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-github-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-github-provider/package.json b/plugins/auth-backend-module-github-provider/package.json index 27451be643..5a78c46541 100644 --- a/plugins/auth-backend-module-github-provider/package.json +++ b/plugins/auth-backend-module-github-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-github-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The github-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md index 3d7d3a5646..c25884dd58 100644 --- a/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-gitlab-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-gitlab-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-gitlab-provider/package.json b/plugins/auth-backend-module-gitlab-provider/package.json index debe042336..ec0a967264 100644 --- a/plugins/auth-backend-module-gitlab-provider/package.json +++ b/plugins/auth-backend-module-gitlab-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-gitlab-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The gitlab-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-google-provider/CHANGELOG.md b/plugins/auth-backend-module-google-provider/CHANGELOG.md index 29c35fb6cb..89e6d00283 100644 --- a/plugins/auth-backend-module-google-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-google-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-google-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-google-provider/package.json b/plugins/auth-backend-module-google-provider/package.json index 5e7ef946d0..4c0313ba62 100644 --- a/plugins/auth-backend-module-google-provider/package.json +++ b/plugins/auth-backend-module-google-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-google-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "A Google auth provider module for the Backstage auth backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-guest-provider/CHANGELOG.md b/plugins/auth-backend-module-guest-provider/CHANGELOG.md index 903d5ad4cb..6774182b07 100644 --- a/plugins/auth-backend-module-guest-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-guest-provider/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-auth-backend-module-guest-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-guest-provider/package.json b/plugins/auth-backend-module-guest-provider/package.json index 34f3c34b6d..82d333b16f 100644 --- a/plugins/auth-backend-module-guest-provider/package.json +++ b/plugins/auth-backend-module-guest-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-guest-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The guest-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md b/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md index f2edbd655a..f2f0ef79f0 100644 --- a/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-microsoft-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-microsoft-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-microsoft-provider/package.json b/plugins/auth-backend-module-microsoft-provider/package.json index 3460520459..a2d45c1ddd 100644 --- a/plugins/auth-backend-module-microsoft-provider/package.json +++ b/plugins/auth-backend-module-microsoft-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-microsoft-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The microsoft-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md index 50751934ee..05917fad19 100644 --- a/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oauth2-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-oauth2-provider +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/auth-backend-module-oauth2-provider/package.json b/plugins/auth-backend-module-oauth2-provider/package.json index f56a3aebf3..e9c236ee5d 100644 --- a/plugins/auth-backend-module-oauth2-provider/package.json +++ b/plugins/auth-backend-module-oauth2-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-oauth2-provider", - "version": "0.3.3", + "version": "0.3.4-next.0", "description": "The oauth2-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md b/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md index 9cd4c3608d..95d2a5b43b 100644 --- a/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oauth2-proxy-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-oauth2-proxy-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/package.json b/plugins/auth-backend-module-oauth2-proxy-provider/package.json index 825155fb59..011c969f7f 100644 --- a/plugins/auth-backend-module-oauth2-proxy-provider/package.json +++ b/plugins/auth-backend-module-oauth2-proxy-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-oauth2-proxy-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The oauth2-proxy-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md index 964b09c9a8..43843254a6 100644 --- a/plugins/auth-backend-module-oidc-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-oidc-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-oidc-provider +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/plugin-auth-backend@0.24.2-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.3.3 ### Patch Changes diff --git a/plugins/auth-backend-module-oidc-provider/package.json b/plugins/auth-backend-module-oidc-provider/package.json index efda06f3e1..f52eddcdcd 100644 --- a/plugins/auth-backend-module-oidc-provider/package.json +++ b/plugins/auth-backend-module-oidc-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-oidc-provider", - "version": "0.3.3", + "version": "0.3.4-next.0", "description": "The oidc-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-okta-provider/CHANGELOG.md b/plugins/auth-backend-module-okta-provider/CHANGELOG.md index b1d7ee39d9..e883c0177d 100644 --- a/plugins/auth-backend-module-okta-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-okta-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-okta-provider +## 0.1.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.1.3 ### Patch Changes diff --git a/plugins/auth-backend-module-okta-provider/package.json b/plugins/auth-backend-module-okta-provider/package.json index f65cdd3962..fe1dd2e32e 100644 --- a/plugins/auth-backend-module-okta-provider/package.json +++ b/plugins/auth-backend-module-okta-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-okta-provider", - "version": "0.1.3", + "version": "0.1.4-next.0", "description": "The okta-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-onelogin-provider/CHANGELOG.md b/plugins/auth-backend-module-onelogin-provider/CHANGELOG.md index f452e81918..1729d55837 100644 --- a/plugins/auth-backend-module-onelogin-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-onelogin-provider/CHANGELOG.md @@ -1,5 +1,13 @@ # @backstage/plugin-auth-backend-module-onelogin-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-onelogin-provider/package.json b/plugins/auth-backend-module-onelogin-provider/package.json index 7e3a6e65e5..90e0a745a4 100644 --- a/plugins/auth-backend-module-onelogin-provider/package.json +++ b/plugins/auth-backend-module-onelogin-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-onelogin-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The onelogin-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md index 398106c29d..3dd4551893 100644 --- a/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-pinniped-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-pinniped-provider +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + ## 0.2.3 ### Patch Changes diff --git a/plugins/auth-backend-module-pinniped-provider/package.json b/plugins/auth-backend-module-pinniped-provider/package.json index cff74e2fd9..c20faccc48 100644 --- a/plugins/auth-backend-module-pinniped-provider/package.json +++ b/plugins/auth-backend-module-pinniped-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-pinniped-provider", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "The pinniped-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md b/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md index d2081f231c..d8c328964a 100644 --- a/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md +++ b/plugins/auth-backend-module-vmware-cloud-provider/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-auth-backend-module-vmware-cloud-provider +## 0.4.3-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + ## 0.4.2 ### Patch Changes diff --git a/plugins/auth-backend-module-vmware-cloud-provider/package.json b/plugins/auth-backend-module-vmware-cloud-provider/package.json index a7a0e0654e..e081c896ac 100644 --- a/plugins/auth-backend-module-vmware-cloud-provider/package.json +++ b/plugins/auth-backend-module-vmware-cloud-provider/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend-module-vmware-cloud-provider", - "version": "0.4.2", + "version": "0.4.3-next.0", "description": "The vmware-cloud-provider backend module for the auth plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/auth-backend/CHANGELOG.md b/plugins/auth-backend/CHANGELOG.md index 63d22e1094..477e506b05 100644 --- a/plugins/auth-backend/CHANGELOG.md +++ b/plugins/auth-backend/CHANGELOG.md @@ -1,5 +1,37 @@ # @backstage/plugin-auth-backend +## 0.24.2-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-auth-backend-module-atlassian-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-auth0-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-aws-alb-provider@0.3.2-next.0 + - @backstage/plugin-auth-backend-module-azure-easyauth-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-bitbucket-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-bitbucket-server-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-cloudflare-access-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-gcp-iap-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-github-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-gitlab-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-google-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-microsoft-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-oauth2-proxy-provider@0.2.4-next.0 + - @backstage/plugin-auth-backend-module-oidc-provider@0.3.4-next.0 + - @backstage/plugin-auth-backend-module-okta-provider@0.1.4-next.0 + - @backstage/plugin-auth-backend-module-onelogin-provider@0.2.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.24.1 ### Patch Changes diff --git a/plugins/auth-backend/package.json b/plugins/auth-backend/package.json index d1d16908cf..4920f6aaeb 100644 --- a/plugins/auth-backend/package.json +++ b/plugins/auth-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-backend", - "version": "0.24.1", + "version": "0.24.2-next.0", "description": "A Backstage backend plugin that handles authentication", "backstage": { "role": "backend-plugin", diff --git a/plugins/auth-node/CHANGELOG.md b/plugins/auth-node/CHANGELOG.md index c53246c4ee..0e2e1f6aba 100644 --- a/plugins/auth-node/CHANGELOG.md +++ b/plugins/auth-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-auth-node +## 0.5.6-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 0.5.5 ### Patch Changes diff --git a/plugins/auth-node/package.json b/plugins/auth-node/package.json index 8aeaadd81a..385dc170d1 100644 --- a/plugins/auth-node/package.json +++ b/plugins/auth-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-auth-node", - "version": "0.5.5", + "version": "0.5.6-next.0", "backstage": { "role": "node-library", "pluginId": "auth", diff --git a/plugins/catalog-backend-module-aws/CHANGELOG.md b/plugins/catalog-backend-module-aws/CHANGELOG.md index 6b08b086af..733d475a4e 100644 --- a/plugins/catalog-backend-module-aws/CHANGELOG.md +++ b/plugins/catalog-backend-module-aws/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-aws +## 0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + ## 0.4.6 ### Patch Changes diff --git a/plugins/catalog-backend-module-aws/package.json b/plugins/catalog-backend-module-aws/package.json index e9b4abdf9c..d3643540d8 100644 --- a/plugins/catalog-backend-module-aws/package.json +++ b/plugins/catalog-backend-module-aws/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-aws", - "version": "0.4.6", + "version": "0.4.7-next.0", "description": "A Backstage catalog backend module that helps integrate towards AWS", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-azure/CHANGELOG.md b/plugins/catalog-backend-module-azure/CHANGELOG.md index 8c0a36bac7..e41f57509d 100644 --- a/plugins/catalog-backend-module-azure/CHANGELOG.md +++ b/plugins/catalog-backend-module-azure/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-azure +## 0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.3.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-azure/package.json b/plugins/catalog-backend-module-azure/package.json index b28189998f..e0f62b3c44 100644 --- a/plugins/catalog-backend-module-azure/package.json +++ b/plugins/catalog-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-azure", - "version": "0.3.0", + "version": "0.3.1-next.0", "description": "A Backstage catalog backend module that helps integrate towards Azure", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md index a641dabe2d..45b25044b3 100644 --- a/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-backstage-openapi/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-backstage-openapi +## 0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.4.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index 091c3f95d9..76bf61b902 100644 --- a/plugins/catalog-backend-module-backstage-openapi/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-backstage-openapi", - "version": "0.4.3", + "version": "0.4.4-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "catalog", diff --git a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md index 924ec6b587..9a8f2f2ecb 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,20 @@ # @backstage/plugin-catalog-backend-module-bitbucket-cloud +## 0.4.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.4.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-bitbucket-cloud/package.json b/plugins/catalog-backend-module-bitbucket-cloud/package.json index 34e265fba9..10cffdd29f 100644 --- a/plugins/catalog-backend-module-bitbucket-cloud/package.json +++ b/plugins/catalog-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-bitbucket-cloud", - "version": "0.4.3", + "version": "0.4.4-next.0", "description": "A Backstage catalog backend module that helps integrate towards Bitbucket Cloud", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md index 188bfe6366..77d54f5d87 100644 --- a/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/catalog-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-bitbucket-server +## 0.3.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.3.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index ca74c8d65e..a0ab3ac173 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.3.0", + "version": "0.3.1-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "catalog", diff --git a/plugins/catalog-backend-module-gcp/CHANGELOG.md b/plugins/catalog-backend-module-gcp/CHANGELOG.md index 0b1b529b1b..3748709971 100644 --- a/plugins/catalog-backend-module-gcp/CHANGELOG.md +++ b/plugins/catalog-backend-module-gcp/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-gcp +## 0.3.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + ## 0.3.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-gcp/package.json b/plugins/catalog-backend-module-gcp/package.json index 8e8c35222a..abd7861a4f 100644 --- a/plugins/catalog-backend-module-gcp/package.json +++ b/plugins/catalog-backend-module-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gcp", - "version": "0.3.3", + "version": "0.3.4-next.0", "description": "A Backstage catalog backend module that helps integrate towards GCP", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-gerrit/CHANGELOG.md b/plugins/catalog-backend-module-gerrit/CHANGELOG.md index 88edcc3e51..3bb83661da 100644 --- a/plugins/catalog-backend-module-gerrit/CHANGELOG.md +++ b/plugins/catalog-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-gerrit +## 0.2.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.2.5 ### Patch Changes diff --git a/plugins/catalog-backend-module-gerrit/package.json b/plugins/catalog-backend-module-gerrit/package.json index f69c9a1ffc..8367272936 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.2.5", + "version": "0.2.6-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "catalog", diff --git a/plugins/catalog-backend-module-github-org/CHANGELOG.md b/plugins/catalog-backend-module-github-org/CHANGELOG.md index 86cdf4904e..19cf9bdad9 100644 --- a/plugins/catalog-backend-module-github-org/CHANGELOG.md +++ b/plugins/catalog-backend-module-github-org/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-github-org +## 0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend-module-github@0.7.9-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.3.5 ### Patch Changes diff --git a/plugins/catalog-backend-module-github-org/package.json b/plugins/catalog-backend-module-github-org/package.json index 47dd09f53f..5e91b83a8c 100644 --- a/plugins/catalog-backend-module-github-org/package.json +++ b/plugins/catalog-backend-module-github-org/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-github-org", - "version": "0.3.5", + "version": "0.3.6-next.0", "description": "The github-org backend module for the catalog plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-github/CHANGELOG.md b/plugins/catalog-backend-module-github/CHANGELOG.md index e2680d5663..c0aac5bfd0 100644 --- a/plugins/catalog-backend-module-github/CHANGELOG.md +++ b/plugins/catalog-backend-module-github/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-catalog-backend-module-github +## 0.7.9-next.0 + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.7.8 ### Patch Changes diff --git a/plugins/catalog-backend-module-github/package.json b/plugins/catalog-backend-module-github/package.json index 3a85c1548d..f9fba5934e 100644 --- a/plugins/catalog-backend-module-github/package.json +++ b/plugins/catalog-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-github", - "version": "0.7.8", + "version": "0.7.9-next.0", "description": "A Backstage catalog backend module that helps integrate towards GitHub", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md b/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md index 9c012d1894..83e3616bd4 100644 --- a/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md +++ b/plugins/catalog-backend-module-gitlab-org/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-gitlab-org +## 0.2.5-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-catalog-backend-module-gitlab@0.6.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/catalog-backend-module-gitlab-org/package.json b/plugins/catalog-backend-module-gitlab-org/package.json index 8339298db6..fb6a54202e 100644 --- a/plugins/catalog-backend-module-gitlab-org/package.json +++ b/plugins/catalog-backend-module-gitlab-org/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab-org", - "version": "0.2.4", + "version": "0.2.5-next.0", "description": "The gitlab-org backend module for the catalog plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-gitlab/CHANGELOG.md b/plugins/catalog-backend-module-gitlab/CHANGELOG.md index 4634958a20..1f3f7cf8cb 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.6.1-next.0 + +### Patch Changes + +- 575613f: Go back to using `node-fetch` for gitlab +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.6.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-gitlab/package.json b/plugins/catalog-backend-module-gitlab/package.json index d4064d3c6f..cda9297688 100644 --- a/plugins/catalog-backend-module-gitlab/package.json +++ b/plugins/catalog-backend-module-gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-gitlab", - "version": "0.6.0", + "version": "0.6.1-next.0", "description": "A Backstage catalog backend module that helps integrate towards GitLab", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md index fb693a2af5..5fef83b06b 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md +++ b/plugins/catalog-backend-module-incremental-ingestion/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-catalog-backend-module-incremental-ingestion +## 0.6.2-next.0 + +### Patch Changes + +- ec547b8: Remove the error handler middleware, since that is now provided by the framework +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + ## 0.6.1 ### Patch Changes diff --git a/plugins/catalog-backend-module-incremental-ingestion/package.json b/plugins/catalog-backend-module-incremental-ingestion/package.json index fa3b3d021c..fe4dc0c2ab 100644 --- a/plugins/catalog-backend-module-incremental-ingestion/package.json +++ b/plugins/catalog-backend-module-incremental-ingestion/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-incremental-ingestion", - "version": "0.6.1", + "version": "0.6.2-next.0", "description": "An entity provider for streaming large asset sources into the catalog", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-ldap/CHANGELOG.md b/plugins/catalog-backend-module-ldap/CHANGELOG.md index 121933f3a8..28992a6c5e 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.11.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.11.0 ### Minor Changes diff --git a/plugins/catalog-backend-module-ldap/package.json b/plugins/catalog-backend-module-ldap/package.json index b19ab69e6d..374819df91 100644 --- a/plugins/catalog-backend-module-ldap/package.json +++ b/plugins/catalog-backend-module-ldap/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-ldap", - "version": "0.11.0", + "version": "0.11.1-next.0", "description": "A Backstage catalog backend module that helps integrate towards LDAP", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-logs/CHANGELOG.md b/plugins/catalog-backend-module-logs/CHANGELOG.md index 3e7f67b9ae..c1c5e03844 100644 --- a/plugins/catalog-backend-module-logs/CHANGELOG.md +++ b/plugins/catalog-backend-module-logs/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-catalog-backend-module-logs +## 0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-catalog-backend@1.30.0-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.1.5 ### Patch Changes diff --git a/plugins/catalog-backend-module-logs/package.json b/plugins/catalog-backend-module-logs/package.json index 09f7adaef6..9956a83e1e 100644 --- a/plugins/catalog-backend-module-logs/package.json +++ b/plugins/catalog-backend-module-logs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-logs", - "version": "0.1.5", + "version": "0.1.6-next.0", "description": "A module that subscribes to catalog releated events and logs them.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-msgraph/CHANGELOG.md b/plugins/catalog-backend-module-msgraph/CHANGELOG.md index 6364dcdce6..7b325b0609 100644 --- a/plugins/catalog-backend-module-msgraph/CHANGELOG.md +++ b/plugins/catalog-backend-module-msgraph/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-msgraph +## 0.6.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.6.5 ### Patch Changes diff --git a/plugins/catalog-backend-module-msgraph/package.json b/plugins/catalog-backend-module-msgraph/package.json index a787131723..aea6cb0d1f 100644 --- a/plugins/catalog-backend-module-msgraph/package.json +++ b/plugins/catalog-backend-module-msgraph/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-msgraph", - "version": "0.6.5", + "version": "0.6.6-next.0", "description": "A Backstage catalog backend module that helps integrate towards Microsoft Graph", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-openapi/CHANGELOG.md b/plugins/catalog-backend-module-openapi/CHANGELOG.md index a78aa27725..06412ff586 100644 --- a/plugins/catalog-backend-module-openapi/CHANGELOG.md +++ b/plugins/catalog-backend-module-openapi/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-openapi +## 0.2.6-next.0 + +### Patch Changes + +- 57e794a: Refactor to no longer use backend-common +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.2.5 ### Patch Changes diff --git a/plugins/catalog-backend-module-openapi/package.json b/plugins/catalog-backend-module-openapi/package.json index 6bb2dcee7d..34ca07894f 100644 --- a/plugins/catalog-backend-module-openapi/package.json +++ b/plugins/catalog-backend-module-openapi/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-openapi", - "version": "0.2.5", + "version": "0.2.6-next.0", "description": "A Backstage catalog backend module that helps with OpenAPI specifications", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md index 38ef9c3c4f..e812e2c945 100644 --- a/plugins/catalog-backend-module-puppetdb/CHANGELOG.md +++ b/plugins/catalog-backend-module-puppetdb/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-catalog-backend-module-puppetdb +## 0.2.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + ## 0.2.5 ### Patch Changes diff --git a/plugins/catalog-backend-module-puppetdb/package.json b/plugins/catalog-backend-module-puppetdb/package.json index 5adb3b6cf2..6c5c6ea3a7 100644 --- a/plugins/catalog-backend-module-puppetdb/package.json +++ b/plugins/catalog-backend-module-puppetdb/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-puppetdb", - "version": "0.2.5", + "version": "0.2.6-next.0", "description": "A Backstage catalog backend module that helps integrate towards PuppetDB", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md index a8e66005ed..7b7f9699a4 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md +++ b/plugins/catalog-backend-module-scaffolder-entity-model/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-catalog-backend-module-scaffolder-entity-model +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-scaffolder-common@1.5.8 + ## 0.2.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/package.json b/plugins/catalog-backend-module-scaffolder-entity-model/package.json index becc73cd68..c6b16e62f2 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/package.json +++ b/plugins/catalog-backend-module-scaffolder-entity-model/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-scaffolder-entity-model", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "Adds support for the scaffolder specific entity model (e.g. the Template kind) to the catalog backend plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md index 594bca9666..0d9175f026 100644 --- a/plugins/catalog-backend-module-unprocessed/CHANGELOG.md +++ b/plugins/catalog-backend-module-unprocessed/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-catalog-backend-module-unprocessed +## 0.5.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-catalog-unprocessed-entities-common@0.0.6 + - @backstage/plugin-permission-common@0.8.3 + ## 0.5.3 ### Patch Changes diff --git a/plugins/catalog-backend-module-unprocessed/package.json b/plugins/catalog-backend-module-unprocessed/package.json index bc6caf4f7f..bb81c9eb7b 100644 --- a/plugins/catalog-backend-module-unprocessed/package.json +++ b/plugins/catalog-backend-module-unprocessed/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend-module-unprocessed", - "version": "0.5.3", + "version": "0.5.4-next.0", "description": "Backstage Catalog module to view unprocessed entities", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/catalog-backend/CHANGELOG.md b/plugins/catalog-backend/CHANGELOG.md index cae2aba3da..5565a3a21a 100644 --- a/plugins/catalog-backend/CHANGELOG.md +++ b/plugins/catalog-backend/CHANGELOG.md @@ -1,5 +1,33 @@ # @backstage/plugin-catalog-backend +## 1.30.0-next.0 + +### Minor Changes + +- dd515e3: Removed the long-deprecated `DefaultCatalogCollatorFactory` and `DefaultCatalogCollatorFactoryOptions` exports, which now no longer exist in the search plugin's offerings. If you were using these, you want to migrate to [the new backend system](https://backstage.io/docs/backend-system/) and use the [catalog collator](https://backstage.io/docs/features/search/collators#catalog) directly. + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- be0aae7: Improved concurrency of the `entities` endpoint when using the streamed query mode behind the `catalog.disableRelationsCompatibility` flag. +- 3d475a0: Updated condition in `resolveCodeOwner` to fix a bug where `normalizeCodeOwner` could potentially be called with an invalid argument causing an error in `CodeOwnersProcessor` +- Updated dependencies + - @backstage/plugin-search-backend-module-catalog@0.3.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + ## 1.29.0 ### Minor Changes diff --git a/plugins/catalog-backend/package.json b/plugins/catalog-backend/package.json index 1192931fa1..6fb2ced5e6 100644 --- a/plugins/catalog-backend/package.json +++ b/plugins/catalog-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-backend", - "version": "1.29.0", + "version": "1.30.0-next.0", "description": "The Backstage backend plugin that provides the Backstage catalog", "backstage": { "role": "backend-plugin", diff --git a/plugins/catalog-node/CHANGELOG.md b/plugins/catalog-node/CHANGELOG.md index e66fc38c6e..c77918f1b7 100644 --- a/plugins/catalog-node/CHANGELOG.md +++ b/plugins/catalog-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-catalog-node +## 1.15.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-permission-common@0.8.3 + ## 1.15.0 ### Minor Changes diff --git a/plugins/catalog-node/package.json b/plugins/catalog-node/package.json index 62604a7f42..4913f56975 100644 --- a/plugins/catalog-node/package.json +++ b/plugins/catalog-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-catalog-node", - "version": "1.15.0", + "version": "1.15.1-next.0", "description": "The plugin-catalog-node module for @backstage/plugin-catalog-backend", "backstage": { "role": "node-library", diff --git a/plugins/devtools-backend/CHANGELOG.md b/plugins/devtools-backend/CHANGELOG.md index fe70fcb8e5..85a6b38c58 100644 --- a/plugins/devtools-backend/CHANGELOG.md +++ b/plugins/devtools-backend/CHANGELOG.md @@ -1,5 +1,22 @@ # @backstage/plugin-devtools-backend +## 0.5.1-next.0 + +### Patch Changes + +- ec547b8: Remove the error handler middleware, since that is now provided by the framework +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/config-loader@1.9.5-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/cli-common@0.1.15 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-devtools-common@0.1.14 + - @backstage/plugin-permission-common@0.8.3 + ## 0.5.0 ### Minor Changes diff --git a/plugins/devtools-backend/package.json b/plugins/devtools-backend/package.json index 45d17bdeaf..c52b7dc069 100644 --- a/plugins/devtools-backend/package.json +++ b/plugins/devtools-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-devtools-backend", - "version": "0.5.0", + "version": "0.5.1-next.0", "backstage": { "role": "backend-plugin", "pluginId": "devtools", diff --git a/plugins/events-backend-module-aws-sqs/CHANGELOG.md b/plugins/events-backend-module-aws-sqs/CHANGELOG.md index 12cac86542..edad9c973a 100644 --- a/plugins/events-backend-module-aws-sqs/CHANGELOG.md +++ b/plugins/events-backend-module-aws-sqs/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-events-backend-module-aws-sqs +## 0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.4.6 ### Patch Changes diff --git a/plugins/events-backend-module-aws-sqs/package.json b/plugins/events-backend-module-aws-sqs/package.json index ebe9afa141..15fffb0c10 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.4.6", + "version": "0.4.7-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "events", diff --git a/plugins/events-backend-module-azure/CHANGELOG.md b/plugins/events-backend-module-azure/CHANGELOG.md index 53ec57fc6a..8b72354b4f 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.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/events-backend-module-azure/package.json b/plugins/events-backend-module-azure/package.json index cc2fedfc5a..d169eaf3d9 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.2.15", + "version": "0.2.16-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "events", diff --git a/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/events-backend-module-bitbucket-cloud/CHANGELOG.md index ab94e89e59..f6ece23ec5 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.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/events-backend-module-bitbucket-cloud/package.json b/plugins/events-backend-module-bitbucket-cloud/package.json index 8e2fc8fffe..9c75851fc8 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.2.15", + "version": "0.2.16-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "events", diff --git a/plugins/events-backend-module-gerrit/CHANGELOG.md b/plugins/events-backend-module-gerrit/CHANGELOG.md index 5bdeecff0b..7823a43ff3 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.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/events-backend-module-gerrit/package.json b/plugins/events-backend-module-gerrit/package.json index 9a5ece50fe..e74b668653 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.2.15", + "version": "0.2.16-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "events", diff --git a/plugins/events-backend-module-github/CHANGELOG.md b/plugins/events-backend-module-github/CHANGELOG.md index be616b132c..a8ce6323e6 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.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/events-backend-module-github/package.json b/plugins/events-backend-module-github/package.json index 1620e3dcbe..031ee7e517 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.2.15", + "version": "0.2.16-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "events", diff --git a/plugins/events-backend-module-gitlab/CHANGELOG.md b/plugins/events-backend-module-gitlab/CHANGELOG.md index 9063fa0942..5f26285e71 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.2.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.2.15 ### Patch Changes diff --git a/plugins/events-backend-module-gitlab/package.json b/plugins/events-backend-module-gitlab/package.json index 64b96ecf73..0258d56c50 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.2.15", + "version": "0.2.16-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "events", diff --git a/plugins/events-backend-test-utils/CHANGELOG.md b/plugins/events-backend-test-utils/CHANGELOG.md index a18cfaf65f..2f8320c2d4 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.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.1.39 ### Patch Changes diff --git a/plugins/events-backend-test-utils/package.json b/plugins/events-backend-test-utils/package.json index dd4e087668..daeeb7f12e 100644 --- a/plugins/events-backend-test-utils/package.json +++ b/plugins/events-backend-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend-test-utils", - "version": "0.1.39", + "version": "0.1.40-next.0", "description": "The plugin-events-backend-test-utils for @backstage/plugin-events-node", "backstage": { "role": "node-library", diff --git a/plugins/events-backend/CHANGELOG.md b/plugins/events-backend/CHANGELOG.md index 94b699e30a..63a266ea13 100644 --- a/plugins/events-backend/CHANGELOG.md +++ b/plugins/events-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-events-backend +## 0.4.1-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.4.0 ### Minor Changes diff --git a/plugins/events-backend/package.json b/plugins/events-backend/package.json index 2ea87c5b23..31b43a9a3b 100644 --- a/plugins/events-backend/package.json +++ b/plugins/events-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-backend", - "version": "0.4.0", + "version": "0.4.1-next.0", "backstage": { "role": "backend-plugin", "pluginId": "events", diff --git a/plugins/events-node/CHANGELOG.md b/plugins/events-node/CHANGELOG.md index d0b1159a49..0f0a03c291 100644 --- a/plugins/events-node/CHANGELOG.md +++ b/plugins/events-node/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-events-node +## 0.4.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + ## 0.4.6 ### Patch Changes diff --git a/plugins/events-node/package.json b/plugins/events-node/package.json index 0e5349581b..eb2d62324c 100644 --- a/plugins/events-node/package.json +++ b/plugins/events-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-events-node", - "version": "0.4.6", + "version": "0.4.7-next.0", "description": "The plugin-events-node module for @backstage/plugin-events-backend", "backstage": { "role": "node-library", diff --git a/plugins/example-todo-list-backend/CHANGELOG.md b/plugins/example-todo-list-backend/CHANGELOG.md index d9cd27df72..164021fb61 100644 --- a/plugins/example-todo-list-backend/CHANGELOG.md +++ b/plugins/example-todo-list-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @internal/plugin-todo-list-backend +## 1.0.35-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/errors@1.2.6 + ## 1.0.34 ### Patch Changes diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index 37d897ba21..709fc868b0 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.34", + "version": "1.0.35-next.0", "backstage": { "role": "backend-plugin", "pluginId": "todo-list", diff --git a/plugins/home/CHANGELOG.md b/plugins/home/CHANGELOG.md index 7946fdbb7b..dc708e7c7f 100644 --- a/plugins/home/CHANGELOG.md +++ b/plugins/home/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-home +## 0.8.4-next.0 + +### Patch Changes + +- 7932f1e: Exported `QuickStartCard` component. +- Updated dependencies + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/core-app-api@1.15.3 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/theme@0.6.3 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-home-react@0.1.21 + ## 0.8.3 ### Patch Changes diff --git a/plugins/home/package.json b/plugins/home/package.json index efadf8aaeb..3edfce8fda 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-home", - "version": "0.8.3", + "version": "0.8.4-next.0", "description": "A Backstage plugin that helps you build a home page", "backstage": { "role": "frontend-plugin", diff --git a/plugins/kubernetes-backend/CHANGELOG.md b/plugins/kubernetes-backend/CHANGELOG.md index 84fc7b644e..803defe772 100644 --- a/plugins/kubernetes-backend/CHANGELOG.md +++ b/plugins/kubernetes-backend/CHANGELOG.md @@ -1,5 +1,24 @@ # @backstage/plugin-kubernetes-backend +## 0.19.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-kubernetes-common@0.9.1 + - @backstage/plugin-kubernetes-node@0.2.2-next.0 + - @backstage/plugin-permission-common@0.8.3 + ## 0.19.1 ### Patch Changes diff --git a/plugins/kubernetes-backend/package.json b/plugins/kubernetes-backend/package.json index fd2bebecd7..35dd7e03fc 100644 --- a/plugins/kubernetes-backend/package.json +++ b/plugins/kubernetes-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-kubernetes-backend", - "version": "0.19.1", + "version": "0.19.2-next.0", "description": "A Backstage backend plugin that integrates towards Kubernetes", "backstage": { "role": "backend-plugin", diff --git a/plugins/kubernetes-node/CHANGELOG.md b/plugins/kubernetes-node/CHANGELOG.md index af8f85edf5..36dd6e6b58 100644 --- a/plugins/kubernetes-node/CHANGELOG.md +++ b/plugins/kubernetes-node/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-kubernetes-node +## 0.2.2-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/types@1.2.0 + - @backstage/plugin-kubernetes-common@0.9.1 + ## 0.2.1 ### Patch Changes diff --git a/plugins/kubernetes-node/package.json b/plugins/kubernetes-node/package.json index a83fd2513d..80a9d80617 100644 --- a/plugins/kubernetes-node/package.json +++ b/plugins/kubernetes-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-kubernetes-node", - "version": "0.2.1", + "version": "0.2.2-next.0", "description": "Node.js library for the kubernetes plugin", "backstage": { "role": "node-library", diff --git a/plugins/notifications-backend-module-email/CHANGELOG.md b/plugins/notifications-backend-module-email/CHANGELOG.md index 3477594163..1061c1a1cc 100644 --- a/plugins/notifications-backend-module-email/CHANGELOG.md +++ b/plugins/notifications-backend-module-email/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-notifications-backend-module-email +## 0.3.5-next.0 + +### Patch Changes + +- bed5f35: Added more examples of the plugin configuration +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/integration-aws-node@0.1.14 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + ## 0.3.4 ### Patch Changes diff --git a/plugins/notifications-backend-module-email/package.json b/plugins/notifications-backend-module-email/package.json index f1b532c690..ffd179fb09 100644 --- a/plugins/notifications-backend-module-email/package.json +++ b/plugins/notifications-backend-module-email/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-notifications-backend-module-email", - "version": "0.3.4", + "version": "0.3.5-next.0", "description": "The email backend module for the notifications plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/notifications-backend/CHANGELOG.md b/plugins/notifications-backend/CHANGELOG.md index 224c8b3328..cfbb8cbffa 100644 --- a/plugins/notifications-backend/CHANGELOG.md +++ b/plugins/notifications-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-notifications-backend +## 0.5.1-next.0 + +### Patch Changes + +- cbc0e63: Remove `@backstage/backend-common` dependency +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + ## 0.5.0 ### Minor Changes diff --git a/plugins/notifications-backend/package.json b/plugins/notifications-backend/package.json index 4330d4c903..dbdceb7f3b 100644 --- a/plugins/notifications-backend/package.json +++ b/plugins/notifications-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-notifications-backend", - "version": "0.5.0", + "version": "0.5.1-next.0", "backstage": { "role": "backend-plugin", "pluginId": "notifications", diff --git a/plugins/notifications-node/CHANGELOG.md b/plugins/notifications-node/CHANGELOG.md index d42c49981b..6f5fe36bf7 100644 --- a/plugins/notifications-node/CHANGELOG.md +++ b/plugins/notifications-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-notifications-node +## 0.2.11-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-signals-node@0.1.16-next.0 + ## 0.2.10 ### Patch Changes diff --git a/plugins/notifications-node/package.json b/plugins/notifications-node/package.json index ef4c533676..d143fc2135 100644 --- a/plugins/notifications-node/package.json +++ b/plugins/notifications-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-notifications-node", - "version": "0.2.10", + "version": "0.2.11-next.0", "description": "Node.js library for the notifications plugin", "backstage": { "role": "node-library", diff --git a/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md b/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md index e72281d74d..e58a2aac61 100644 --- a/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md +++ b/plugins/permission-backend-module-policy-allow-all/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-permission-backend-module-allow-all-policy +## 0.2.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + ## 0.2.3 ### Patch Changes diff --git a/plugins/permission-backend-module-policy-allow-all/package.json b/plugins/permission-backend-module-policy-allow-all/package.json index 17305b7fe1..5a940be688 100644 --- a/plugins/permission-backend-module-policy-allow-all/package.json +++ b/plugins/permission-backend-module-policy-allow-all/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-backend-module-allow-all-policy", - "version": "0.2.3", + "version": "0.2.4-next.0", "description": "Allow all policy backend module for the permission plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/permission-backend/CHANGELOG.md b/plugins/permission-backend/CHANGELOG.md index 9d2b9249f8..ca2e64a807 100644 --- a/plugins/permission-backend/CHANGELOG.md +++ b/plugins/permission-backend/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-permission-backend +## 0.5.53-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + ## 0.5.52 ### Patch Changes diff --git a/plugins/permission-backend/package.json b/plugins/permission-backend/package.json index 289f4e59a4..dd40831b5b 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.52", + "version": "0.5.53-next.0", "backstage": { "role": "backend-plugin", "pluginId": "permission", diff --git a/plugins/permission-node/CHANGELOG.md b/plugins/permission-node/CHANGELOG.md index ccac778536..62c5303ffc 100644 --- a/plugins/permission-node/CHANGELOG.md +++ b/plugins/permission-node/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-permission-node +## 0.8.7-next.0 + +### Patch Changes + +- d9d62ef: Remove some internal usages of the backend-common package +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + ## 0.8.6 ### Patch Changes diff --git a/plugins/permission-node/package.json b/plugins/permission-node/package.json index 31e40eb428..247045c7e2 100644 --- a/plugins/permission-node/package.json +++ b/plugins/permission-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-permission-node", - "version": "0.8.6", + "version": "0.8.7-next.0", "description": "Common permission and authorization utilities for backend plugins", "backstage": { "role": "node-library", diff --git a/plugins/proxy-backend/CHANGELOG.md b/plugins/proxy-backend/CHANGELOG.md index ac10603876..395223da25 100644 --- a/plugins/proxy-backend/CHANGELOG.md +++ b/plugins/proxy-backend/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-proxy-backend +## 0.5.10-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + ## 0.5.9 ### Patch Changes diff --git a/plugins/proxy-backend/package.json b/plugins/proxy-backend/package.json index 4045a179bd..97c14a271e 100644 --- a/plugins/proxy-backend/package.json +++ b/plugins/proxy-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-proxy-backend", - "version": "0.5.9", + "version": "0.5.10-next.0", "description": "A Backstage backend plugin that helps you set up proxy endpoints in the backend", "backstage": { "role": "backend-plugin", diff --git a/plugins/scaffolder-backend-module-azure/CHANGELOG.md b/plugins/scaffolder-backend-module-azure/CHANGELOG.md index f245e1ab3c..b0284f91cb 100644 --- a/plugins/scaffolder-backend-module-azure/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-azure/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-azure +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-azure/package.json b/plugins/scaffolder-backend-module-azure/package.json index f4f8754210..fac76c39a9 100644 --- a/plugins/scaffolder-backend-module-azure/package.json +++ b/plugins/scaffolder-backend-module-azure/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-azure", - "version": "0.2.4", + "version": "0.2.5-next.0", "description": "The azure module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/CHANGELOG.md b/plugins/scaffolder-backend-module-bitbucket-cloud/CHANGELOG.md index 461c84106e..8208ea1bdf 100644 --- a/plugins/scaffolder-backend-module-bitbucket-cloud/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-scaffolder-backend-module-bitbucket-cloud +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + ## 0.2.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/package.json b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json index 425b0e5035..820e4278b5 100644 --- a/plugins/scaffolder-backend-module-bitbucket-cloud/package.json +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud", - "version": "0.2.4", + "version": "0.2.5-next.0", "description": "The Bitbucket Cloud module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-bitbucket-server/CHANGELOG.md b/plugins/scaffolder-backend-module-bitbucket-server/CHANGELOG.md index ff62b65dd1..db09f21c11 100644 --- a/plugins/scaffolder-backend-module-bitbucket-server/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-bitbucket-server/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-bitbucket-server +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-bitbucket-server/package.json b/plugins/scaffolder-backend-module-bitbucket-server/package.json index 24749ee14c..3ec0ae6e78 100644 --- a/plugins/scaffolder-backend-module-bitbucket-server/package.json +++ b/plugins/scaffolder-backend-module-bitbucket-server/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-bitbucket-server", - "version": "0.2.4", + "version": "0.2.5-next.0", "description": "The Bitbucket Server module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md b/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md index c93d4c175b..bd45ae284c 100644 --- a/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-bitbucket/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-bitbucket +## 0.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + ## 0.3.5 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-bitbucket/package.json b/plugins/scaffolder-backend-module-bitbucket/package.json index b50baf4871..10381302a0 100644 --- a/plugins/scaffolder-backend-module-bitbucket/package.json +++ b/plugins/scaffolder-backend-module-bitbucket/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-bitbucket", - "version": "0.3.5", + "version": "0.3.6-next.0", "description": "The bitbucket module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md index 787e6ca7e9..8571a23fe0 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-confluence-to-markdown +## 0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.3.4 ### 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 e2ab02557b..5ade9abb54 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/package.json +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-confluence-to-markdown", - "version": "0.3.4", + "version": "0.3.5-next.0", "description": "The confluence-to-markdown module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md b/plugins/scaffolder-backend-module-cookiecutter/CHANGELOG.md index da4b40f042..d63a237f01 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.3.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + ## 0.3.5 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-cookiecutter/package.json b/plugins/scaffolder-backend-module-cookiecutter/package.json index ebf99dfcc8..d6e729d634 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/package.json +++ b/plugins/scaffolder-backend-module-cookiecutter/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-cookiecutter", - "version": "0.3.5", + "version": "0.3.6-next.0", "description": "A module for the scaffolder backend that lets you template projects using cookiecutter", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-gcp/CHANGELOG.md b/plugins/scaffolder-backend-module-gcp/CHANGELOG.md index ae7f63e3a7..f043fc0e19 100644 --- a/plugins/scaffolder-backend-module-gcp/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gcp/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-gcp +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-gcp/package.json b/plugins/scaffolder-backend-module-gcp/package.json index 4ac560e6e2..17d725e56f 100644 --- a/plugins/scaffolder-backend-module-gcp/package.json +++ b/plugins/scaffolder-backend-module-gcp/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gcp", - "version": "0.2.4", + "version": "0.2.5-next.0", "description": "The GCP Bucket module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md b/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md index 4aafbe27ce..eb744c1076 100644 --- a/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gerrit/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-gerrit +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-gerrit/package.json b/plugins/scaffolder-backend-module-gerrit/package.json index 601fa93941..06c783d96f 100644 --- a/plugins/scaffolder-backend-module-gerrit/package.json +++ b/plugins/scaffolder-backend-module-gerrit/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gerrit", - "version": "0.2.4", + "version": "0.2.5-next.0", "description": "The gerrit module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-gitea/CHANGELOG.md b/plugins/scaffolder-backend-module-gitea/CHANGELOG.md index d1b71f1260..763023848a 100644 --- a/plugins/scaffolder-backend-module-gitea/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gitea/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-gitea +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-gitea/package.json b/plugins/scaffolder-backend-module-gitea/package.json index f55e8103c2..2f70dec03d 100644 --- a/plugins/scaffolder-backend-module-gitea/package.json +++ b/plugins/scaffolder-backend-module-gitea/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-gitea", - "version": "0.2.4", + "version": "0.2.5-next.0", "description": "The gitea module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-github/CHANGELOG.md b/plugins/scaffolder-backend-module-github/CHANGELOG.md index 6f875f7cb8..4d93124597 100644 --- a/plugins/scaffolder-backend-module-github/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-github/CHANGELOG.md @@ -1,5 +1,18 @@ # @backstage/plugin-scaffolder-backend-module-github +## 0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.5.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-github/package.json b/plugins/scaffolder-backend-module-github/package.json index 6ca3806b7a..4974aed1ff 100644 --- a/plugins/scaffolder-backend-module-github/package.json +++ b/plugins/scaffolder-backend-module-github/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-github", - "version": "0.5.4", + "version": "0.5.5-next.0", "description": "The github module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md index 89e36fe253..2f132e7ef8 100644 --- a/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-gitlab/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-scaffolder-backend-module-gitlab +## 0.7.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + ## 0.7.0 ### Minor Changes diff --git a/plugins/scaffolder-backend-module-gitlab/package.json b/plugins/scaffolder-backend-module-gitlab/package.json index 54a00202a6..69ca27e04c 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.7.0", + "version": "0.7.1-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "scaffolder", diff --git a/plugins/scaffolder-backend-module-notifications/CHANGELOG.md b/plugins/scaffolder-backend-module-notifications/CHANGELOG.md index d72829bb8b..9108de52a8 100644 --- a/plugins/scaffolder-backend-module-notifications/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-notifications/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-backend-module-notifications +## 0.1.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/plugin-notifications-common@0.0.7 + - @backstage/plugin-notifications-node@0.2.11-next.0 + ## 0.1.5 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-notifications/package.json b/plugins/scaffolder-backend-module-notifications/package.json index 85ca672999..99a0274515 100644 --- a/plugins/scaffolder-backend-module-notifications/package.json +++ b/plugins/scaffolder-backend-module-notifications/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-notifications", - "version": "0.1.5", + "version": "0.1.6-next.0", "description": "The notifications backend module for the scaffolder plugin.", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-rails/CHANGELOG.md b/plugins/scaffolder-backend-module-rails/CHANGELOG.md index 367ba3e7ed..8758531f8b 100644 --- a/plugins/scaffolder-backend-module-rails/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-rails/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-scaffolder-backend-module-rails +## 0.5.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + ## 0.5.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-rails/package.json b/plugins/scaffolder-backend-module-rails/package.json index 71c4db82bb..a93974b6b1 100644 --- a/plugins/scaffolder-backend-module-rails/package.json +++ b/plugins/scaffolder-backend-module-rails/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend-module-rails", - "version": "0.5.4", + "version": "0.5.5-next.0", "description": "A module for the scaffolder backend that lets you template projects using Rails", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md index cefda32ecb..3786a3a9c6 100644 --- a/plugins/scaffolder-backend-module-sentry/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-sentry/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-backend-module-sentry +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + ## 0.2.4 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-sentry/package.json b/plugins/scaffolder-backend-module-sentry/package.json index 2ef71a168f..0e677be7a7 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.2.4", + "version": "0.2.5-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "scaffolder", diff --git a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md index a51193110b..7b508030b7 100644 --- a/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md +++ b/plugins/scaffolder-backend-module-yeoman/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-scaffolder-backend-module-yeoman +## 0.4.6-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/types@1.2.0 + - @backstage/plugin-scaffolder-node-test-utils@0.1.18-next.0 + ## 0.4.5 ### Patch Changes diff --git a/plugins/scaffolder-backend-module-yeoman/package.json b/plugins/scaffolder-backend-module-yeoman/package.json index a6e78a04a8..25846202f9 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.4.5", + "version": "0.4.6-next.0", "backstage": { "role": "backend-plugin-module", "pluginId": "scaffolder", diff --git a/plugins/scaffolder-backend/CHANGELOG.md b/plugins/scaffolder-backend/CHANGELOG.md index c3ff979c57..f732d9c345 100644 --- a/plugins/scaffolder-backend/CHANGELOG.md +++ b/plugins/scaffolder-backend/CHANGELOG.md @@ -1,5 +1,41 @@ # @backstage/plugin-scaffolder-backend +## 1.29.0-next.0 + +### Minor Changes + +- 5d9e5c8: Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. + +### Patch Changes + +- 8379bf4: Remove usages of `PluginDatabaseManager` and `PluginEndpointDiscovery` and replace with their equivalent service types +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-bitbucket-cloud-common@0.2.26 + - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.2.4-next.0 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-scaffolder-backend-module-azure@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket@0.3.6-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gerrit@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitea@0.2.5-next.0 + - @backstage/plugin-scaffolder-backend-module-github@0.5.5-next.0 + - @backstage/plugin-scaffolder-backend-module-gitlab@0.7.1-next.0 + - @backstage/plugin-scaffolder-common@1.5.8 + ## 1.28.0 ### Minor Changes diff --git a/plugins/scaffolder-backend/package.json b/plugins/scaffolder-backend/package.json index 7e245e12f2..268f8eb169 100644 --- a/plugins/scaffolder-backend/package.json +++ b/plugins/scaffolder-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-backend", - "version": "1.28.0", + "version": "1.29.0-next.0", "description": "The Backstage backend plugin that helps you create new things", "backstage": { "role": "backend-plugin", diff --git a/plugins/scaffolder-node-test-utils/CHANGELOG.md b/plugins/scaffolder-node-test-utils/CHANGELOG.md index 2d7ba2f637..334d88d79d 100644 --- a/plugins/scaffolder-node-test-utils/CHANGELOG.md +++ b/plugins/scaffolder-node-test-utils/CHANGELOG.md @@ -1,5 +1,14 @@ # @backstage/plugin-scaffolder-node-test-utils +## 0.1.18-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-scaffolder-node@0.6.3-next.0 + - @backstage/backend-test-utils@1.2.1-next.0 + - @backstage/types@1.2.0 + ## 0.1.17 ### Patch Changes diff --git a/plugins/scaffolder-node-test-utils/package.json b/plugins/scaffolder-node-test-utils/package.json index 044a7ced2e..52e4320c3b 100644 --- a/plugins/scaffolder-node-test-utils/package.json +++ b/plugins/scaffolder-node-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-node-test-utils", - "version": "0.1.17", + "version": "0.1.18-next.0", "backstage": { "role": "node-library", "pluginId": "scaffolder", diff --git a/plugins/scaffolder-node/CHANGELOG.md b/plugins/scaffolder-node/CHANGELOG.md index 6d8285f959..3555888fd7 100644 --- a/plugins/scaffolder-node/CHANGELOG.md +++ b/plugins/scaffolder-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-scaffolder-node +## 0.6.3-next.0 + +### Patch Changes + +- 5d9e5c8: Added the ability to use `${{ context.task.id }}` in nunjucks templating, as well as `ctx.task.id` in actions to get the current task ID. +- 7dd0013: Deprecate the `logStream` option in `executeShellCommand`, replacing it with a logger instance. +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/types@1.2.0 + - @backstage/plugin-scaffolder-common@1.5.8 + ## 0.6.2 ### Patch Changes diff --git a/plugins/scaffolder-node/package.json b/plugins/scaffolder-node/package.json index 546bb91e02..badd47a032 100644 --- a/plugins/scaffolder-node/package.json +++ b/plugins/scaffolder-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-node", - "version": "0.6.2", + "version": "0.6.3-next.0", "description": "The plugin-scaffolder-node module for @backstage/plugin-scaffolder-backend", "backstage": { "role": "node-library", diff --git a/plugins/scaffolder-react/CHANGELOG.md b/plugins/scaffolder-react/CHANGELOG.md index 9518c28cda..2391cd22c1 100644 --- a/plugins/scaffolder-react/CHANGELOG.md +++ b/plugins/scaffolder-react/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-scaffolder-react +## 1.14.3-next.0 + +### Patch Changes + +- 37421bc: Fixed scaffolder form fields not resolving correctly in the `useCustomFieldExtensions` hook. +- Updated dependencies + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/theme@0.6.3 + - @backstage/types@1.2.0 + - @backstage/version-bridge@1.0.10 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-scaffolder-common@1.5.8 + ## 1.14.2 ### Patch Changes diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index 6ea25a5e65..c58ec2766b 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder-react", - "version": "1.14.2", + "version": "1.14.3-next.0", "description": "A frontend library that helps other Backstage plugins interact with the Scaffolder", "backstage": { "role": "web-library", diff --git a/plugins/scaffolder/CHANGELOG.md b/plugins/scaffolder/CHANGELOG.md index 847b714c4e..1b021ba4ea 100644 --- a/plugins/scaffolder/CHANGELOG.md +++ b/plugins/scaffolder/CHANGELOG.md @@ -1,5 +1,27 @@ # @backstage/plugin-scaffolder +## 1.27.4-next.0 + +### Patch Changes + +- 3f09ef4: Fix issue with `secrets` not being forwarded properly to the backend when creating a task +- Updated dependencies + - @backstage/plugin-scaffolder-react@1.14.3-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/core-compat-api@0.3.4 + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/errors@1.2.6 + - @backstage/frontend-plugin-api@0.9.3 + - @backstage/integration@1.16.0 + - @backstage/integration-react@1.2.2 + - @backstage/types@1.2.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-react@1.15.0 + - @backstage/plugin-permission-react@0.4.29 + - @backstage/plugin-scaffolder-common@1.5.8 + ## 1.27.2 ### Patch Changes diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index 549c47da7b..435a77ac00 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-scaffolder", - "version": "1.27.2", + "version": "1.27.4-next.0", "description": "The Backstage plugin that helps you create new things", "backstage": { "role": "frontend-plugin", diff --git a/plugins/search-backend-module-catalog/CHANGELOG.md b/plugins/search-backend-module-catalog/CHANGELOG.md index c74de3d7ae..abf021fb62 100644 --- a/plugins/search-backend-module-catalog/CHANGELOG.md +++ b/plugins/search-backend-module-catalog/CHANGELOG.md @@ -1,5 +1,28 @@ # @backstage/plugin-search-backend-module-catalog +## 0.3.0-next.0 + +### Minor Changes + +- dd515e3: **BREAKING**: Removed support for the old backend system. Please [migrate to the new backend system](https://backstage.io/docs/backend-system/) and enable [the catalog collator](https://backstage.io/docs/features/search/collators#catalog) there. + + As part of this, the `/alpha` export path is gone too. Just import the module from the root of the package as usual instead. + +### Patch Changes + +- 1e09b06: Internal refactor to use cursor based pagination +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 0.2.6 ### Patch Changes diff --git a/plugins/search-backend-module-catalog/package.json b/plugins/search-backend-module-catalog/package.json index 6b4307c6c0..e5f44ad534 100644 --- a/plugins/search-backend-module-catalog/package.json +++ b/plugins/search-backend-module-catalog/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend-module-catalog", - "version": "0.2.6", + "version": "0.3.0-next.0", "description": "A module for the search backend that exports catalog modules", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/search-backend-module-elasticsearch/CHANGELOG.md b/plugins/search-backend-module-elasticsearch/CHANGELOG.md index 57feaf7559..f6e6e3f0a4 100644 --- a/plugins/search-backend-module-elasticsearch/CHANGELOG.md +++ b/plugins/search-backend-module-elasticsearch/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-backend-module-elasticsearch +## 1.6.4-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 1.6.3 ### Patch Changes diff --git a/plugins/search-backend-module-elasticsearch/package.json b/plugins/search-backend-module-elasticsearch/package.json index cff47913a7..c3bd768dbf 100644 --- a/plugins/search-backend-module-elasticsearch/package.json +++ b/plugins/search-backend-module-elasticsearch/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend-module-elasticsearch", - "version": "1.6.3", + "version": "1.6.4-next.0", "description": "A module for the search backend that implements search using ElasticSearch", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/search-backend-module-explore/CHANGELOG.md b/plugins/search-backend-module-explore/CHANGELOG.md index 8cdc5aa65d..909aa29752 100644 --- a/plugins/search-backend-module-explore/CHANGELOG.md +++ b/plugins/search-backend-module-explore/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-search-backend-module-explore +## 0.2.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 0.2.6 ### Patch Changes diff --git a/plugins/search-backend-module-explore/package.json b/plugins/search-backend-module-explore/package.json index 32e16a876a..44ee6329ee 100644 --- a/plugins/search-backend-module-explore/package.json +++ b/plugins/search-backend-module-explore/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend-module-explore", - "version": "0.2.6", + "version": "0.2.7-next.0", "description": "A module for the search backend that exports explore modules", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/search-backend-module-pg/CHANGELOG.md b/plugins/search-backend-module-pg/CHANGELOG.md index 5a5a90eb11..11b68a52dc 100644 --- a/plugins/search-backend-module-pg/CHANGELOG.md +++ b/plugins/search-backend-module-pg/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-search-backend-module-pg +## 0.5.40-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 0.5.39 ### Patch Changes diff --git a/plugins/search-backend-module-pg/package.json b/plugins/search-backend-module-pg/package.json index eaa3c64f49..d07b8ed992 100644 --- a/plugins/search-backend-module-pg/package.json +++ b/plugins/search-backend-module-pg/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend-module-pg", - "version": "0.5.39", + "version": "0.5.40-next.0", "description": "A module for the search backend that implements search using PostgreSQL", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md b/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md index 6db9454536..0ba3856a6d 100644 --- a/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md +++ b/plugins/search-backend-module-stack-overflow-collator/CHANGELOG.md @@ -1,5 +1,15 @@ # @backstage/plugin-search-backend-module-stack-overflow-collator +## 0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 0.3.4 ### Patch Changes diff --git a/plugins/search-backend-module-stack-overflow-collator/package.json b/plugins/search-backend-module-stack-overflow-collator/package.json index 98f662ed33..8bd2c4947f 100644 --- a/plugins/search-backend-module-stack-overflow-collator/package.json +++ b/plugins/search-backend-module-stack-overflow-collator/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend-module-stack-overflow-collator", - "version": "0.3.4", + "version": "0.3.5-next.0", "description": "A module for the search backend that exports stack overflow modules", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/search-backend-module-techdocs/CHANGELOG.md b/plugins/search-backend-module-techdocs/CHANGELOG.md index f27e5b812b..4c9e81c703 100644 --- a/plugins/search-backend-module-techdocs/CHANGELOG.md +++ b/plugins/search-backend-module-techdocs/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend-module-techdocs +## 0.3.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + ## 0.3.4 ### Patch Changes diff --git a/plugins/search-backend-module-techdocs/package.json b/plugins/search-backend-module-techdocs/package.json index 52afe24cf0..822565a180 100644 --- a/plugins/search-backend-module-techdocs/package.json +++ b/plugins/search-backend-module-techdocs/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend-module-techdocs", - "version": "0.3.4", + "version": "0.3.5-next.0", "description": "A module for the search backend that exports techdocs modules", "backstage": { "role": "backend-plugin-module", diff --git a/plugins/search-backend-node/CHANGELOG.md b/plugins/search-backend-node/CHANGELOG.md index e10364cbcf..bc798adbf1 100644 --- a/plugins/search-backend-node/CHANGELOG.md +++ b/plugins/search-backend-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-search-backend-node +## 1.3.7-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-common@1.2.16 + ## 1.3.6 ### Patch Changes diff --git a/plugins/search-backend-node/package.json b/plugins/search-backend-node/package.json index 4a5b8100ac..1939573f9c 100644 --- a/plugins/search-backend-node/package.json +++ b/plugins/search-backend-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend-node", - "version": "1.3.6", + "version": "1.3.7-next.0", "description": "A library for Backstage backend plugins that want to interact with the search backend plugin", "backstage": { "role": "node-library", diff --git a/plugins/search-backend/CHANGELOG.md b/plugins/search-backend/CHANGELOG.md index 66e9bdb559..da7086ce0c 100644 --- a/plugins/search-backend/CHANGELOG.md +++ b/plugins/search-backend/CHANGELOG.md @@ -1,5 +1,21 @@ # @backstage/plugin-search-backend +## 1.8.1-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-permission-node@0.8.7-next.0 + - @backstage/backend-openapi-utils@0.4.1-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-node@1.3.7-next.0 + - @backstage/plugin-search-common@1.2.16 + ## 1.8.0 ### Minor Changes diff --git a/plugins/search-backend/package.json b/plugins/search-backend/package.json index d64bceefff..324c683d57 100644 --- a/plugins/search-backend/package.json +++ b/plugins/search-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-search-backend", - "version": "1.8.0", + "version": "1.8.1-next.0", "description": "The Backstage backend plugin that provides your backstage app with search", "backstage": { "role": "backend-plugin", diff --git a/plugins/signals-backend/CHANGELOG.md b/plugins/signals-backend/CHANGELOG.md index df874b54ec..fd6c9dc8d3 100644 --- a/plugins/signals-backend/CHANGELOG.md +++ b/plugins/signals-backend/CHANGELOG.md @@ -1,5 +1,17 @@ # @backstage/plugin-signals-backend +## 0.2.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + ## 0.2.4 ### Patch Changes diff --git a/plugins/signals-backend/package.json b/plugins/signals-backend/package.json index 117947e6f5..9a10b0e43b 100644 --- a/plugins/signals-backend/package.json +++ b/plugins/signals-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-signals-backend", - "version": "0.2.4", + "version": "0.2.5-next.0", "backstage": { "role": "backend-plugin", "pluginId": "signals", diff --git a/plugins/signals-node/CHANGELOG.md b/plugins/signals-node/CHANGELOG.md index 50039d0ccf..2fcfe1e672 100644 --- a/plugins/signals-node/CHANGELOG.md +++ b/plugins/signals-node/CHANGELOG.md @@ -1,5 +1,16 @@ # @backstage/plugin-signals-node +## 0.1.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/types@1.2.0 + - @backstage/plugin-events-node@0.4.7-next.0 + ## 0.1.15 ### Patch Changes diff --git a/plugins/signals-node/package.json b/plugins/signals-node/package.json index e91acf7da0..e070a6651a 100644 --- a/plugins/signals-node/package.json +++ b/plugins/signals-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-signals-node", - "version": "0.1.15", + "version": "0.1.16-next.0", "description": "Node.js library for the signals plugin", "backstage": { "role": "node-library", diff --git a/plugins/techdocs-backend/CHANGELOG.md b/plugins/techdocs-backend/CHANGELOG.md index 1150c86d34..bc3e073033 100644 --- a/plugins/techdocs-backend/CHANGELOG.md +++ b/plugins/techdocs-backend/CHANGELOG.md @@ -1,5 +1,23 @@ # @backstage/plugin-techdocs-backend +## 1.11.5-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-client@1.9.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/plugin-catalog-common@1.1.2 + - @backstage/plugin-catalog-node@1.15.1-next.0 + - @backstage/plugin-permission-common@0.8.3 + - @backstage/plugin-search-backend-module-techdocs@0.3.5-next.0 + - @backstage/plugin-techdocs-common@0.1.0 + - @backstage/plugin-techdocs-node@1.12.16-next.0 + ## 1.11.4 ### Patch Changes diff --git a/plugins/techdocs-backend/package.json b/plugins/techdocs-backend/package.json index 6c1eca55ee..a59452c019 100644 --- a/plugins/techdocs-backend/package.json +++ b/plugins/techdocs-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-backend", - "version": "1.11.4", + "version": "1.11.5-next.0", "description": "The Backstage backend plugin that renders technical documentation for your components", "backstage": { "role": "backend-plugin", diff --git a/plugins/techdocs-module-addons-contrib/CHANGELOG.md b/plugins/techdocs-module-addons-contrib/CHANGELOG.md index 3b4dd38135..8d46380b07 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.1.20-next.0 + +### Patch Changes + +- b664b2a: Internal refactor for safer handling of possible null value. +- Updated dependencies + - @backstage/core-components@0.16.2 + - @backstage/core-plugin-api@1.10.2 + - @backstage/integration@1.16.0 + - @backstage/integration-react@1.2.2 + - @backstage/plugin-techdocs-react@1.2.12 + ## 1.1.19 ### Patch Changes diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index ca918b7b7c..05484f676e 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-module-addons-contrib", - "version": "1.1.19", + "version": "1.1.20-next.0", "description": "Plugin module for contributed TechDocs Addons", "backstage": { "role": "frontend-plugin-module", diff --git a/plugins/techdocs-node/CHANGELOG.md b/plugins/techdocs-node/CHANGELOG.md index 8c129bb544..f5cd9dc11f 100644 --- a/plugins/techdocs-node/CHANGELOG.md +++ b/plugins/techdocs-node/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-techdocs-node +## 1.12.16-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/catalog-model@1.7.2 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/integration@1.16.0 + - @backstage/integration-aws-node@0.1.14 + - @backstage/plugin-search-common@1.2.16 + - @backstage/plugin-techdocs-common@0.1.0 + ## 1.12.15 ### Patch Changes diff --git a/plugins/techdocs-node/package.json b/plugins/techdocs-node/package.json index 48739ef070..c3477c57e0 100644 --- a/plugins/techdocs-node/package.json +++ b/plugins/techdocs-node/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-techdocs-node", - "version": "1.12.15", + "version": "1.12.16-next.0", "description": "Common node.js functionalities for TechDocs, to be shared between techdocs-backend plugin and techdocs-cli", "backstage": { "role": "node-library", diff --git a/plugins/user-settings-backend/CHANGELOG.md b/plugins/user-settings-backend/CHANGELOG.md index b5cd26ca4d..9f320b16f1 100644 --- a/plugins/user-settings-backend/CHANGELOG.md +++ b/plugins/user-settings-backend/CHANGELOG.md @@ -1,5 +1,19 @@ # @backstage/plugin-user-settings-backend +## 0.2.29-next.0 + +### Patch Changes + +- Updated dependencies + - @backstage/backend-defaults@0.7.0-next.0 + - @backstage/plugin-auth-node@0.5.6-next.0 + - @backstage/backend-plugin-api@1.1.1-next.0 + - @backstage/config@1.3.1 + - @backstage/errors@1.2.6 + - @backstage/types@1.2.0 + - @backstage/plugin-signals-node@0.1.16-next.0 + - @backstage/plugin-user-settings-common@0.0.1 + ## 0.2.28 ### Patch Changes diff --git a/plugins/user-settings-backend/package.json b/plugins/user-settings-backend/package.json index bfc27959d8..01100a5d88 100644 --- a/plugins/user-settings-backend/package.json +++ b/plugins/user-settings-backend/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/plugin-user-settings-backend", - "version": "0.2.28", + "version": "0.2.29-next.0", "description": "The Backstage backend plugin to manage user settings", "backstage": { "role": "backend-plugin", diff --git a/yarn.lock b/yarn.lock index 36988cb55d..ce734f10b1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3745,7 +3745,25 @@ __metadata: languageName: unknown linkType: soft -"@backstage/backend-plugin-api@^1.0.0, @backstage/backend-plugin-api@workspace:^, @backstage/backend-plugin-api@workspace:packages/backend-plugin-api": +"@backstage/backend-plugin-api@npm:^1.0.0, @backstage/backend-plugin-api@npm:^1.1.0": + version: 1.1.0 + resolution: "@backstage/backend-plugin-api@npm:1.1.0" + dependencies: + "@backstage/cli-common": ^0.1.15 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/plugin-auth-node": ^0.5.5 + "@backstage/plugin-permission-common": ^0.8.3 + "@backstage/types": ^1.2.0 + "@types/express": ^4.17.6 + "@types/luxon": ^3.0.0 + knex: ^3.0.0 + luxon: ^3.0.0 + checksum: 0a58762708c714511f7be16dcc6f5ceb80fb572f14f812887de2c93d83da4c70a62288fe0becb86b85f1319dcea1c632891bf2869bdca14b94d16d8066dba9ae + languageName: node + linkType: hard + +"@backstage/backend-plugin-api@workspace:^, @backstage/backend-plugin-api@workspace:packages/backend-plugin-api": version: 0.0.0-use.local resolution: "@backstage/backend-plugin-api@workspace:packages/backend-plugin-api" dependencies: @@ -3841,7 +3859,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-client@workspace:^, @backstage/catalog-client@workspace:packages/catalog-client": +"@backstage/catalog-client@^1.9.0, @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" dependencies: @@ -3854,7 +3872,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/catalog-model@^1.4.3, @backstage/catalog-model@^1.7.0, @backstage/catalog-model@workspace:^, @backstage/catalog-model@workspace:packages/catalog-model": +"@backstage/catalog-model@^1.4.3, @backstage/catalog-model@^1.7.0, @backstage/catalog-model@^1.7.2, @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: @@ -3869,7 +3887,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/cli-common@^0.1.14, @backstage/cli-common@workspace:^, @backstage/cli-common@workspace:packages/cli-common": +"@backstage/cli-common@^0.1.14, @backstage/cli-common@^0.1.15, @backstage/cli-common@workspace:^, @backstage/cli-common@workspace:packages/cli-common": version: 0.0.0-use.local resolution: "@backstage/cli-common@workspace:packages/cli-common" dependencies: @@ -4101,7 +4119,30 @@ __metadata: languageName: unknown linkType: soft -"@backstage/config-loader@^1.9.1, @backstage/config-loader@workspace:^, @backstage/config-loader@workspace:packages/config-loader": +"@backstage/config-loader@npm:^1.9.1": + version: 1.9.4 + resolution: "@backstage/config-loader@npm:1.9.4" + dependencies: + "@backstage/cli-common": ^0.1.15 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + "@types/json-schema": ^7.0.6 + ajv: ^8.10.0 + chokidar: ^3.5.2 + fs-extra: ^11.2.0 + json-schema: ^0.4.0 + json-schema-merge-allof: ^0.8.1 + json-schema-traverse: ^1.0.0 + lodash: ^4.17.21 + minimist: ^1.2.5 + typescript-json-schema: ^0.65.0 + yaml: ^2.0.0 + checksum: 2cd930531e4433252a0354b875eacbe9b889e592ef1b0d3c78be62a1ed0b9b397bb24b980125b5d5a0526c55e718312bebfb34f12df87e42b20d8bfca3e61c72 + languageName: node + linkType: hard + +"@backstage/config-loader@workspace:^, @backstage/config-loader@workspace:packages/config-loader": version: 0.0.0-use.local resolution: "@backstage/config-loader@workspace:packages/config-loader" dependencies: @@ -4128,7 +4169,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/config@^1.1.1, @backstage/config@^1.2.0, @backstage/config@workspace:^, @backstage/config@workspace:packages/config": +"@backstage/config@^1.1.1, @backstage/config@^1.2.0, @backstage/config@^1.3.1, @backstage/config@workspace:^, @backstage/config@workspace:packages/config": version: 0.0.0-use.local resolution: "@backstage/config@workspace:packages/config" dependencies: @@ -4512,7 +4553,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/errors@^1.2.3, @backstage/errors@^1.2.4, @backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors": +"@backstage/errors@^1.2.3, @backstage/errors@^1.2.4, @backstage/errors@^1.2.6, @backstage/errors@workspace:^, @backstage/errors@workspace:packages/errors": version: 0.0.0-use.local resolution: "@backstage/errors@workspace:packages/errors" dependencies: @@ -5344,7 +5385,32 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-auth-node@^0.5.2, @backstage/plugin-auth-node@workspace:^, @backstage/plugin-auth-node@workspace:plugins/auth-node": +"@backstage/plugin-auth-node@npm:^0.5.2, @backstage/plugin-auth-node@npm:^0.5.5": + version: 0.5.5 + resolution: "@backstage/plugin-auth-node@npm:0.5.5" + dependencies: + "@backstage/backend-common": ^0.25.0 + "@backstage/backend-plugin-api": ^1.1.0 + "@backstage/catalog-client": ^1.9.0 + "@backstage/catalog-model": ^1.7.2 + "@backstage/config": ^1.3.1 + "@backstage/errors": ^1.2.6 + "@backstage/types": ^1.2.0 + "@types/express": ^4.17.6 + "@types/passport": ^1.0.3 + express: ^4.17.1 + jose: ^5.0.0 + lodash: ^4.17.21 + passport: ^0.7.0 + winston: ^3.2.1 + zod: ^3.22.4 + zod-to-json-schema: ^3.21.4 + zod-validation-error: ^3.4.0 + checksum: a9c3e4ed16ce4bde26797719636045a3bf01bf07813952ef7b970b96a0b518e858ad77ee4f35bfbe5cb905f2bfe47540688f1239f108bea69920a360357339d9 + languageName: node + linkType: hard + +"@backstage/plugin-auth-node@workspace:^, @backstage/plugin-auth-node@workspace:plugins/auth-node": version: 0.0.0-use.local resolution: "@backstage/plugin-auth-node@workspace:plugins/auth-node" dependencies: @@ -6933,7 +6999,7 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-permission-common@workspace:^, @backstage/plugin-permission-common@workspace:plugins/permission-common": +"@backstage/plugin-permission-common@^0.8.3, @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" dependencies: @@ -8446,7 +8512,7 @@ __metadata: languageName: node linkType: hard -"@backstage/types@^1.1.1, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": +"@backstage/types@^1.1.1, @backstage/types@^1.2.0, @backstage/types@workspace:^, @backstage/types@workspace:packages/types": version: 0.0.0-use.local resolution: "@backstage/types@workspace:packages/types" dependencies: From 138326128d53c74c4574016a6ba2be72e574aa79 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 24 Dec 2024 10:28:40 +0000 Subject: [PATCH 098/213] fix(deps): update react monorepo 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 36988cb55d..7c01998291 100644 --- a/yarn.lock +++ b/yarn.lock @@ -27707,11 +27707,11 @@ __metadata: linkType: hard "eslint-plugin-react-hooks@npm:^5.0.0": - version: 5.0.0 - resolution: "eslint-plugin-react-hooks@npm:5.0.0" + version: 5.1.0 + resolution: "eslint-plugin-react-hooks@npm:5.1.0" peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 - checksum: eddd514a8796e8f805aa0c712d5fe6120fa6db778e3ad2949459b208f8a4bed6a48c152edfa9613f137c7527b00b42d489b5f94363d01d3a509e1f31630674dd + checksum: 14d2692214ea15b19ef330a9abf51cb8c1586339d9e758ebd61b182be68dd772af56462b04e4b9d2be923d72f46db61e8d32fcf37c248b04949c0b02f5bfb3c0 languageName: node linkType: hard From 29a4aa8956938d5d13f5912b71f4ebbe0983c986 Mon Sep 17 00:00:00 2001 From: Gabriel Dugny Date: Tue, 24 Dec 2024 12:58:42 +0100 Subject: [PATCH 099/213] fix(config): add missing parameters to configuration schema Signed-off-by: Gabriel Dugny --- .changeset/light-wasps-unite.md | 6 ++++ .../config.d.ts | 34 +++++++++++++++++++ plugins/techdocs-backend/config.d.ts | 5 +++ 3 files changed, 45 insertions(+) create mode 100644 .changeset/light-wasps-unite.md diff --git a/.changeset/light-wasps-unite.md b/.changeset/light-wasps-unite.md new file mode 100644 index 0000000000..1075633f04 --- /dev/null +++ b/.changeset/light-wasps-unite.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-msgraph': patch +'@backstage/plugin-techdocs-backend': patch +--- + +fix(config): add missing parameters in config schema diff --git a/plugins/catalog-backend-module-msgraph/config.d.ts b/plugins/catalog-backend-module-msgraph/config.d.ts index b93026e1bb..b04c1cd303 100644 --- a/plugins/catalog-backend-module-msgraph/config.d.ts +++ b/plugins/catalog-backend-module-msgraph/config.d.ts @@ -165,6 +165,12 @@ export interface Config { * This can be useful for huge organizations. */ loadPhotos?: boolean; + /** + * The fields to be fetched on query. + * + * E.g. ["id", "displayName", "description"] + */ + select?: string[]; }; group?: { @@ -257,15 +263,38 @@ export interface Config { */ queryMode?: string; user?: { + /** + * The "expand" argument to apply to users. + * + * E.g. "manager". + */ + expand?: string; /** * The filter to apply to extract users. * * E.g. "accountEnabled eq true and userType eq 'member'" */ filter?: string; + /** + * Set to false to not load user photos. + * This can be useful for huge organizations. + */ + loadPhotos?: boolean; + /** + * The fields to be fetched on query. + * + * E.g. ["id", "displayName", "description"] + */ + select?: string[]; }; group?: { + /** + * The "expand" argument to apply to groups. + * + * E.g. "member". + */ + expand?: string; /** * The filter to apply to extract groups. * @@ -284,6 +313,11 @@ export interface Config { * E.g. ["id", "displayName", "description"] */ select?: string[]; + /** + * Whether to ingest groups that are members of the found/filtered/searched groups. + * Default value is `false`. + */ + includeSubGroups?: boolean; }; userGroupMember?: { diff --git a/plugins/techdocs-backend/config.d.ts b/plugins/techdocs-backend/config.d.ts index 4910d8d76e..c220717ddb 100644 --- a/plugins/techdocs-backend/config.d.ts +++ b/plugins/techdocs-backend/config.d.ts @@ -263,6 +263,11 @@ export interface Config { * the credentials belongs to a different project to the bucket. */ projectId?: string; + /** + * (Optional) Location in storage bucket to save files + * If not set, the default location will be the root of the storage bucket + */ + bucketRootPath?: string; }; }; From b9c7cef9ab887430b31db3e6a6f78095253eab34 Mon Sep 17 00:00:00 2001 From: irma12 Date: Tue, 24 Dec 2024 12:04:00 +0100 Subject: [PATCH 100/213] Add Wiz plugin to marketplace Signed-off-by: irma12 --- microsite/data/plugins/wiz.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 microsite/data/plugins/wiz.yaml diff --git a/microsite/data/plugins/wiz.yaml b/microsite/data/plugins/wiz.yaml new file mode 100644 index 0000000000..756f52ee1f --- /dev/null +++ b/microsite/data/plugins/wiz.yaml @@ -0,0 +1,10 @@ +--- +title: Wiz +author: roadie.io +authorUrl: https://github.com/RoadieHQ +category: Monitoring +description: View Wiz issues status in Backstage. +documentation: https://roadie.io/backstage/plugins/wiz/ +iconUrl: https://roadie.io/images/logos/wiz-logo.png +npmPackageName: '@roadiehq/backstage-plugin-wiz' +addedDate: '2024-10-14' From e9b137f7d77f1acd7d746f7a5f17803e21c6afa1 Mon Sep 17 00:00:00 2001 From: irma12 Date: Tue, 24 Dec 2024 13:43:11 +0100 Subject: [PATCH 101/213] Fix the logo url Signed-off-by: irma12 --- microsite/data/plugins/wiz.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/microsite/data/plugins/wiz.yaml b/microsite/data/plugins/wiz.yaml index 756f52ee1f..1496231dfa 100644 --- a/microsite/data/plugins/wiz.yaml +++ b/microsite/data/plugins/wiz.yaml @@ -5,6 +5,6 @@ authorUrl: https://github.com/RoadieHQ category: Monitoring description: View Wiz issues status in Backstage. documentation: https://roadie.io/backstage/plugins/wiz/ -iconUrl: https://roadie.io/images/logos/wiz-logo.png +iconUrl: https://roadie.io/images/wiz-logo.png npmPackageName: '@roadiehq/backstage-plugin-wiz' addedDate: '2024-10-14' From 0be20ed46a91ce3110302b5dccf0a145e875ef5e Mon Sep 17 00:00:00 2001 From: Cory Steers Date: Fri, 20 Dec 2024 11:53:10 -0600 Subject: [PATCH 102/213] Provide additional information regarding proxy settings for the backstage yarn plugin. Addresses issue #28139 Signed-off-by: Cory Steers --- docs/getting-started/keeping-backstage-updated.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/getting-started/keeping-backstage-updated.md b/docs/getting-started/keeping-backstage-updated.md index a811a33383..bf0b569c29 100644 --- a/docs/getting-started/keeping-backstage-updated.md +++ b/docs/getting-started/keeping-backstage-updated.md @@ -30,6 +30,7 @@ yarn backstage-cli versions:bump The reason for bumping all `@backstage` packages at once is to maintain the dependencies that they have between each other. + :::tip To make the version bump process even easier and more streamlined we highly recommend using the [Backstage yarn plugin](#managing-package-versions-with-the-backstage-yarn-plugin) @@ -142,10 +143,17 @@ down the number of duplicate packages. The Backstage CLI uses [global-agent](https://www.npmjs.com/package/global-agent) to configure HTTP/HTTPS proxy settings using environment variables. This allows you to route the CLI’s network traffic through a proxy server, which can be useful in environments with restricted internet access. +Additionally, yarn needs a proxy too (sometimes), when in environments with restricted internet access. It uses different settings than the global-agent module. If you decide to use the backstage yarn plugin [mentioned above](#plugin), you will need to set additional proxy values. +If you will always need proxy settings in all environments and situations, you can add `httpProxy` and `httpsProxy` values to [the yarnrc.yml file](https://yarnpkg.com/configuration/yarnrc). If some environments need it (say a developer workstation) but other environments do not (perhaps a CI build server running on AWS), then you may not want to update the yarnrc.yml file but just set environment variables `YARN_HTTP_PROXY` and `YARN_HTTPS_PROXY` in the environments/situations where you need to proxy. + +**If you plan to use the backstage yarn plugin, you will need these extra yarn proxy settings to both install the plugin and run the `versions:bump` command**. If you do not plan to use the backstage yarn plugin, it seems like the global agent proxy settings alone are sufficient. + ### Example Configuration ```bash export GLOBAL_AGENT_HTTP_PROXY=http://proxy.company.com:8080 export GLOBAL_AGENT_HTTPS_PROXY=https://secure-proxy.company.com:8080 export GLOBAL_AGENT_NO_PROXY=localhost,internal.company.com +export YARN_HTTP_PROXY=http://proxy.company.com:8080 # optional +export YARN_HTTPS_PROXY=https://secure-proxy.company.com:8080 # optional ``` From 828c99374d2c0d75acf1a6a9235ee0f308a033fa Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Tue, 24 Dec 2024 13:19:39 -0600 Subject: [PATCH 103/213] create-app - Added `-j 2` to `dev` script Signed-off-by: Andre Wanlin --- .changeset/orange-icons-sell.md | 5 +++++ packages/create-app/templates/default-app/package.json.hbs | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/orange-icons-sell.md diff --git a/.changeset/orange-icons-sell.md b/.changeset/orange-icons-sell.md new file mode 100644 index 0000000000..e1f663a9ae --- /dev/null +++ b/.changeset/orange-icons-sell.md @@ -0,0 +1,5 @@ +--- +'@backstage/create-app': patch +--- + +Added `-j 2` to `dev` script to help cases where the backend does not start up during local development diff --git a/packages/create-app/templates/default-app/package.json.hbs b/packages/create-app/templates/default-app/package.json.hbs index 21bdd41bdf..ea2a438429 100644 --- a/packages/create-app/templates/default-app/package.json.hbs +++ b/packages/create-app/templates/default-app/package.json.hbs @@ -6,7 +6,7 @@ "node": "20 || 22" }, "scripts": { - "dev": "yarn workspaces foreach -A --include backend --include app --parallel -v -i run start", + "dev": "yarn workspaces foreach -A --include backend --include app --parallel -j 2 -v -i run start", "start": "yarn workspace app start", "start-backend": "yarn workspace backend start", "build:backend": "yarn workspace backend build", From 4462f3b6441cb8729738b4170b3a1360e7e451f6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2024 00:46:40 +0000 Subject: [PATCH 104/213] fix(deps): update dependency @codemirror/language to v6.10.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 bf63175cfe..2eeaa550d5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8893,8 +8893,8 @@ __metadata: linkType: hard "@codemirror/language@npm:^6.0.0": - version: 6.10.7 - resolution: "@codemirror/language@npm:6.10.7" + version: 6.10.8 + resolution: "@codemirror/language@npm:6.10.8" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.23.0 @@ -8902,7 +8902,7 @@ __metadata: "@lezer/highlight": ^1.0.0 "@lezer/lr": ^1.0.0 style-mod: ^4.0.0 - checksum: c9b71e2df8559bc677edae293a825a0dd196c98d49a6e20a98cc6bea51a01c67d268b07b5a761d7ac15b1d65415e17af1f644d5629ab4207268804e71cd48d7c + checksum: 679b69d69faa94f028f996a7005d0c6c2a2e4cd7a7a2614f615c23d7b642c31fc1837915248e864cb1ad59a2f032d1a7a8ef486b5f9904e5f6fbe6f7d2882c38 languageName: node linkType: hard From cbbcf0e71875f16071cfc92402487145000d7415 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2024 01:47:04 +0000 Subject: [PATCH 105/213] fix(deps): update dependency @smithy/node-http-handler to v3.3.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 2eeaa550d5..ac7425a3cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -16291,15 +16291,15 @@ __metadata: linkType: hard "@smithy/node-http-handler@npm:^3.0.0, @smithy/node-http-handler@npm:^3.2.0": - version: 3.3.2 - resolution: "@smithy/node-http-handler@npm:3.3.2" + version: 3.3.3 + resolution: "@smithy/node-http-handler@npm:3.3.3" dependencies: "@smithy/abort-controller": ^3.1.9 "@smithy/protocol-http": ^4.1.8 "@smithy/querystring-builder": ^3.0.11 "@smithy/types": ^3.7.2 tslib: ^2.6.2 - checksum: f4d70ca9ba6d62ae9c3257c069a42ff9c0d3bce28625e7ebab34bc3196eb5a2a1cb2c20d3409b8d1a9c24f0a5d0b3d0809904ceea8d87c4fb991474fd0d9fd31 + checksum: a1d13594d622a2cf7bbecabbc02f5ad2cb824a2363a02b08b89f1815f25b0516c408897def26834c9b85190eb2eb8ac6de8a20e4d19cca7e7a0eef1d29b568ee languageName: node linkType: hard From 976c51a8472bd87418d8b6b52d5d6404eb46c589 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2024 02:44:09 +0000 Subject: [PATCH 106/213] fix(deps): update dependency eslint-plugin-react to v7.37.3 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 914 ++++++++++++++++++++++++++++++------------------------ 1 file changed, 506 insertions(+), 408 deletions(-) diff --git a/yarn.lock b/yarn.lock index ac7425a3cb..e7583ddd90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22414,13 +22414,13 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" dependencies: - call-bind: ^1.0.5 - is-array-buffer: ^3.0.4 - checksum: 53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e + call-bound: ^1.0.3 + is-array-buffer: ^3.0.5 + checksum: 0ae3786195c3211b423e5be8dd93357870e6fb66357d81da968c2c39ef43583ef6eece1f9cb1caccdae4806739c65dea832b44b8593414313cd76a89795fca63 languageName: node linkType: hard @@ -22506,15 +22506,15 @@ __metadata: languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-shim-unscopables: ^1.0.0 - checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3 + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-abstract: ^1.23.5 + es-shim-unscopables: ^1.0.2 + checksum: 11b4de09b1cf008be6031bb507d997ad6f1892e57dc9153583de6ebca0f74ea403fffe0f203461d359de05048d609f3f480d9b46fed4099652d8b62cc972f284 languageName: node linkType: hard @@ -22531,19 +22531,18 @@ __metadata: languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" dependencies: array-buffer-byte-length: ^1.0.1 - call-bind: ^1.0.5 + call-bind: ^1.0.8 define-properties: ^1.2.1 - es-abstract: ^1.22.3 - es-errors: ^1.2.1 - get-intrinsic: ^1.2.3 + es-abstract: ^1.23.5 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 is-array-buffer: ^3.0.4 - is-shared-array-buffer: ^1.0.2 - checksum: 352259cba534dcdd969c92ab002efd2ba5025b2e3b9bead3973150edbdf0696c629d7f4b3f061c5931511e8207bdc2306da614703c820b45dabce39e3daf7e3e + checksum: b1d1fd20be4e972a3779b1569226f6740170dca10f07aa4421d42cefeec61391e79c557cda8e771f5baefe47d878178cd4438f60916ce831813c08132bced765 languageName: node linkType: hard @@ -23916,16 +23915,35 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1": + version: 1.0.1 + resolution: "call-bind-apply-helpers@npm:1.0.1" dependencies: - es-define-property: ^1.0.0 es-errors: ^1.3.0 function-bind: ^1.1.2 + checksum: 3c55343261bb387c58a4762d15ad9d42053659a62681ec5eb50690c6b52a4a666302a01d557133ce6533e8bd04530ee3b209f23dd06c9577a1925556f8fcccdf + languageName: node + linkType: hard + +"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5, call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" + dependencies: + call-bind-apply-helpers: ^1.0.0 + es-define-property: ^1.0.0 get-intrinsic: ^1.2.4 - set-function-length: ^1.2.1 - checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 + set-function-length: ^1.2.2 + checksum: aa2899bce917a5392fd73bd32e71799c37c0b7ab454e0ed13af7f6727549091182aade8bbb7b55f304a5bc436d543241c14090fb8a3137e9875e23f444f4f5a9 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3": + version: 1.0.3 + resolution: "call-bound@npm:1.0.3" + dependencies: + call-bind-apply-helpers: ^1.0.1 + get-intrinsic: ^1.2.6 + checksum: a93bbe0f2d0a2d6c144a4349ccd0593d5d0d5d9309b69101710644af8964286420062f2cc3114dca120b9bc8cc07507952d4b1b3ea7672e0d7f6f1675efedb32 languageName: node linkType: hard @@ -25934,36 +25952,36 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" dependencies: - call-bind: ^1.0.6 + call-bound: ^1.0.3 es-errors: ^1.3.0 - is-data-view: ^1.0.1 - checksum: ce24348f3c6231223b216da92e7e6a57a12b4af81a23f27eff8feabdf06acfb16c00639c8b705ca4d167f761cfc756e27e5f065d0a1f840c10b907fdaf8b988c + is-data-view: ^1.0.2 + checksum: 1e1cd509c3037ac0f8ba320da3d1f8bf1a9f09b0be09394b5e40781b8cc15ff9834967ba7c9f843a425b34f9fe14ce44cf055af6662c44263424c1eb8d65659b languageName: node linkType: hard -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" dependencies: - call-bind: ^1.0.7 + call-bound: ^1.0.3 es-errors: ^1.3.0 - is-data-view: ^1.0.1 - checksum: dbb3200edcb7c1ef0d68979834f81d64fd8cab2f7691b3a4c6b97e67f22182f3ec2c8602efd7b76997b55af6ff8bce485829c1feda4fa2165a6b71fb7baa4269 + is-data-view: ^1.0.2 + checksum: 3600c91ced1cfa935f19ef2abae11029e01738de8d229354d3b2a172bf0d7e4ed08ff8f53294b715569fdf72dfeaa96aa7652f479c0f60570878d88e7e8bddf6 languageName: node linkType: hard -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" dependencies: - call-bind: ^1.0.6 + call-bound: ^1.0.2 es-errors: ^1.3.0 is-data-view: ^1.0.1 - checksum: 7f0bf8720b7414ca719eedf1846aeec392f2054d7af707c5dc9a753cc77eb8625f067fa901e0b5127e831f9da9056138d894b9c2be79c27a21f6db5824f009c2 + checksum: 8dd492cd51d19970876626b5b5169fbb67ca31ec1d1d3238ee6a71820ca8b80cafb141c485999db1ee1ef02f2cc3b99424c5eda8d59e852d9ebb79ab290eb5ee languageName: node linkType: hard @@ -26774,6 +26792,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: ^1.0.1 + es-errors: ^1.3.0 + gopd: ^1.2.0 + checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90 + languageName: node + linkType: hard + "duplexer3@npm:^0.1.4": version: 0.1.5 resolution: "duplexer3@npm:0.1.5" @@ -27134,57 +27163,58 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.20.4, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.20.4, es-abstract@npm:^1.22.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6": + version: 1.23.7 + resolution: "es-abstract@npm:1.23.7" dependencies: - array-buffer-byte-length: ^1.0.1 - arraybuffer.prototype.slice: ^1.0.3 + array-buffer-byte-length: ^1.0.2 + arraybuffer.prototype.slice: ^1.0.4 available-typed-arrays: ^1.0.7 - call-bind: ^1.0.7 - data-view-buffer: ^1.0.1 - data-view-byte-length: ^1.0.1 - data-view-byte-offset: ^1.0.0 - es-define-property: ^1.0.0 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + data-view-buffer: ^1.0.2 + data-view-byte-length: ^1.0.2 + data-view-byte-offset: ^1.0.1 + es-define-property: ^1.0.1 es-errors: ^1.3.0 es-object-atoms: ^1.0.0 es-set-tostringtag: ^2.0.3 - es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.6 - get-intrinsic: ^1.2.4 - get-symbol-description: ^1.0.2 - globalthis: ^1.0.3 - gopd: ^1.0.1 + es-to-primitive: ^1.3.0 + function.prototype.name: ^1.1.8 + get-intrinsic: ^1.2.6 + get-symbol-description: ^1.1.0 + globalthis: ^1.0.4 + gopd: ^1.2.0 has-property-descriptors: ^1.0.2 - has-proto: ^1.0.3 - has-symbols: ^1.0.3 + has-proto: ^1.2.0 + has-symbols: ^1.1.0 hasown: ^2.0.2 - internal-slot: ^1.0.7 - is-array-buffer: ^3.0.4 + internal-slot: ^1.1.0 + is-array-buffer: ^3.0.5 is-callable: ^1.2.7 - is-data-view: ^1.0.1 - is-negative-zero: ^2.0.3 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.3 - is-string: ^1.0.7 - is-typed-array: ^1.1.13 - is-weakref: ^1.0.2 - object-inspect: ^1.13.1 + is-data-view: ^1.0.2 + is-regex: ^1.2.1 + is-shared-array-buffer: ^1.0.4 + is-string: ^1.1.1 + is-typed-array: ^1.1.15 + is-weakref: ^1.1.0 + math-intrinsics: ^1.1.0 + object-inspect: ^1.13.3 object-keys: ^1.1.1 - object.assign: ^4.1.5 - regexp.prototype.flags: ^1.5.2 - safe-array-concat: ^1.1.2 - safe-regex-test: ^1.0.3 - string.prototype.trim: ^1.2.9 - string.prototype.trimend: ^1.0.8 + object.assign: ^4.1.7 + regexp.prototype.flags: ^1.5.3 + safe-array-concat: ^1.1.3 + safe-regex-test: ^1.1.0 + string.prototype.trim: ^1.2.10 + string.prototype.trimend: ^1.0.9 string.prototype.trimstart: ^1.0.8 - typed-array-buffer: ^1.0.2 - typed-array-byte-length: ^1.0.1 - typed-array-byte-offset: ^1.0.2 - typed-array-length: ^1.0.6 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.15 - checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae + typed-array-buffer: ^1.0.3 + typed-array-byte-length: ^1.0.3 + typed-array-byte-offset: ^1.0.4 + typed-array-length: ^1.0.7 + unbox-primitive: ^1.1.0 + which-typed-array: ^1.1.18 + checksum: 030f09ff2d7db69cd6c6da5b1ccb88aee986e23cf82149135f78b5b9675f1cd79a0e64de2d7e393ae40b98de76369292d87bf31db69b5b9151370f7948ee7c59 languageName: node linkType: hard @@ -27203,41 +27233,41 @@ __metadata: languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: ^1.2.4 - checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a languageName: node linkType: hard -"es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": +"es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 languageName: node linkType: hard -"es-iterator-helpers@npm:^1.1.0": - version: 1.1.0 - resolution: "es-iterator-helpers@npm:1.1.0" +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 - es-abstract: ^1.23.3 + es-abstract: ^1.23.6 es-errors: ^1.3.0 es-set-tostringtag: ^2.0.3 function-bind: ^1.1.2 - get-intrinsic: ^1.2.4 + get-intrinsic: ^1.2.6 globalthis: ^1.0.4 + gopd: ^1.2.0 has-property-descriptors: ^1.0.2 - has-proto: ^1.0.3 - has-symbols: ^1.0.3 - internal-slot: ^1.0.7 - iterator.prototype: ^1.1.3 - safe-array-concat: ^1.1.2 - checksum: 4ba3a32ab7ba05b85f0ae30604feeb8ffd801fe762e9df9577bd220a96b9eaa2e90af8e6bdc498e523051f293955e2f7d2bddd34de71e1428a1b8ff3fd961016 + has-proto: ^1.2.0 + has-symbols: ^1.1.0 + internal-slot: ^1.1.0 + iterator.prototype: ^1.1.4 + safe-array-concat: ^1.1.3 + checksum: 952808dd1df3643d67ec7adf20c30b36e5eecadfbf36354e6f39ed3266c8e0acf3446ce9bc465e38723d613cb1d915c1c07c140df65bdce85da012a6e7bda62b languageName: node linkType: hard @@ -27277,14 +27307,14 @@ __metadata: languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + is-callable: ^1.2.7 + is-date-object: ^1.0.5 + is-symbol: ^1.0.4 + checksum: 966965880356486cd4d1fe9a523deda2084c81b3702d951212c098f5f2ee93605d1b7c1840062efb48a07d892641c7ed1bc194db563645c0dd2b919cb6d65b93 languageName: node linkType: hard @@ -27782,30 +27812,30 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.28.0, eslint-plugin-react@npm:^7.37.2": - version: 7.37.2 - resolution: "eslint-plugin-react@npm:7.37.2" + version: 7.37.3 + resolution: "eslint-plugin-react@npm:7.37.3" dependencies: array-includes: ^3.1.8 array.prototype.findlast: ^1.2.5 - array.prototype.flatmap: ^1.3.2 + array.prototype.flatmap: ^1.3.3 array.prototype.tosorted: ^1.1.4 doctrine: ^2.1.0 - es-iterator-helpers: ^1.1.0 + es-iterator-helpers: ^1.2.1 estraverse: ^5.3.0 hasown: ^2.0.2 jsx-ast-utils: ^2.4.1 || ^3.0.0 minimatch: ^3.1.2 object.entries: ^1.1.8 object.fromentries: ^2.0.8 - object.values: ^1.2.0 + object.values: ^1.2.1 prop-types: ^15.8.1 resolve: ^2.0.0-next.5 semver: ^6.3.1 - string.prototype.matchall: ^4.0.11 + string.prototype.matchall: ^4.0.12 string.prototype.repeat: ^1.0.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 7f5203afee7fbe3702b27fdd2b9a3c0ccbbb47d0672f58311b9d8a08dea819c9da4a87c15e8bd508f2562f327a9d29ee8bd9cd189bf758d8dc903de5648b0bfa + checksum: 670dcee215f560a394b8b9966aecfc3c5ee5c15603a690f5333b0e16863275958f9c1853b12355eb0e36ef74dfac8bf645e4f440cb9b985a3bae2ac09d5ed55a languageName: node linkType: hard @@ -29576,15 +29606,17 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + define-properties: ^1.2.1 functions-have-names: ^1.2.3 - checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479 + hasown: ^2.0.2 + is-callable: ^1.2.7 + checksum: 3a366535dc08b25f40a322efefa83b2da3cd0f6da41db7775f2339679120ef63b6c7e967266182609e655b8f0a8f65596ed21c7fd72ad8bd5621c2340edd4010 languageName: node linkType: hard @@ -29705,16 +29737,21 @@ __metadata: languageName: node linkType: hard -"get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" +"get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6": + version: 1.2.6 + resolution: "get-intrinsic@npm:1.2.6" dependencies: + call-bind-apply-helpers: ^1.0.1 + dunder-proto: ^1.0.0 + es-define-property: ^1.0.1 es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 function-bind: ^1.1.2 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - hasown: ^2.0.0 - checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + math-intrinsics: ^1.0.0 + checksum: a7592a0b7f023a2e83c0121fa9449ca83780e370a5feeebe8452119474d148016e43b455049134ae7a683b9b11b93d3f65eac199a0ad452ab740d5f0c299de47 languageName: node linkType: hard @@ -29788,14 +29825,14 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" dependencies: - call-bind: ^1.0.5 + call-bound: ^1.0.3 es-errors: ^1.3.0 - get-intrinsic: ^1.2.4 - checksum: e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 + get-intrinsic: ^1.2.6 + checksum: 655ed04db48ee65ef2ddbe096540d4405e79ba0a7f54225775fef43a7e2afcb93a77d141c5f05fdef0afce2eb93bcbfb3597142189d562ac167ff183582683cd languageName: node linkType: hard @@ -30173,12 +30210,10 @@ __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 +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3 languageName: node linkType: hard @@ -30459,7 +30494,7 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": +"has-bigints@npm:^1.0.2": version: 1.0.2 resolution: "has-bigints@npm:1.0.2" checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b @@ -30489,17 +30524,19 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: ^1.0.0 + checksum: f55010cb94caa56308041d77967c72a02ffd71386b23f9afa8447e58bc92d49d15c19bf75173713468e92fe3fb1680b03b115da39c21c32c74886d1d50d3e7ff 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 +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b languageName: node linkType: hard @@ -31428,14 +31465,14 @@ __metadata: languageName: node linkType: hard -"internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" dependencies: es-errors: ^1.3.0 - hasown: ^2.0.0 - side-channel: ^1.0.4 - checksum: cadc5eea5d7d9bc2342e93aae9f31f04c196afebb11bde97448327049f492cd7081e18623ae71388aac9cd237b692ca3a105be9c68ac39c1dec679d7409e33eb + hasown: ^2.0.2 + side-channel: ^1.1.0 + checksum: 8e0991c2d048cc08dab0a91f573c99f6a4215075887517ea4fa32203ce8aea60fa03f95b177977fa27eb502e5168366d0f3e02c762b799691411d49900611861 languageName: node linkType: hard @@ -31580,13 +31617,14 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.2.1 - checksum: e4e3e6ef0ff2239e75371d221f74bc3c26a03564a22efb39f6bb02609b598917ddeecef4e8c877df2a25888f247a98198959842a5e73236bc7f22cabdf6351a7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + get-intrinsic: ^1.2.6 + checksum: f137a2a6e77af682cdbffef1e633c140cf596f72321baf8bba0f4ef22685eb4339dde23dfe9e9ca430b5f961dee4d46577dcf12b792b68518c8449b134fb9156 languageName: node linkType: hard @@ -31613,12 +31651,12 @@ __metadata: languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + has-bigints: ^1.0.2 + checksum: ee1544f0e664f253306786ed1dce494b8cf242ef415d6375d8545b4d8816b0f054bd9f948a8988ae2c6325d1c28260dd02978236b2f7b8fb70dfc4838a6c9fa7 languageName: node linkType: hard @@ -31631,13 +31669,13 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" +"is-boolean-object@npm:^1.2.1": + version: 1.2.1 + resolution: "is-boolean-object@npm:1.2.1" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + call-bound: ^1.0.2 + has-tostringtag: ^1.0.2 + checksum: 2672609f0f2536172873810a38ec006a415e43ddc6a240f7638a1659cb20dfa91cc75c8a1bed36247bb046aa8f0eab945f20d1203bc69606418bd129c745f861 languageName: node linkType: hard @@ -31648,7 +31686,7 @@ __metadata: languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.1.3, is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac @@ -31684,21 +31722,24 @@ __metadata: languageName: node linkType: hard -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" dependencies: + call-bound: ^1.0.2 + get-intrinsic: ^1.2.6 is-typed-array: ^1.1.13 - checksum: 4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 + checksum: 31600dd19932eae7fd304567e465709ffbfa17fa236427c9c864148e1b54eb2146357fcf3aed9b686dee13c217e1bb5a649cb3b9c479e1004c0648e9febde1b2 languageName: node linkType: hard -"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" +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc + call-bound: ^1.0.2 + has-tostringtag: ^1.0.2 + checksum: d6c36ab9d20971d65f3fc64cef940d57a4900a2ac85fb488a46d164c2072a33da1cb51eefcc039e3e5c208acbce343d3480b84ab5ff0983f617512da2742562a languageName: node linkType: hard @@ -31751,12 +31792,12 @@ __metadata: languageName: node linkType: hard -"is-finalizationregistry@npm:^1.0.2": - version: 1.0.2 - resolution: "is-finalizationregistry@npm:1.0.2" +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" dependencies: - call-bind: ^1.0.2 - checksum: 4f243a8e06228cd45bdab8608d2cb7abfc20f6f0189c8ac21ea8d603f1f196eabd531ce0bb8e08cbab047e9845ef2c191a3761c9a17ad5cabf8b35499c4ad35d + call-bound: ^1.0.3 + checksum: 38c646c506e64ead41a36c182d91639833311970b6b6c6268634f109eef0a1a9d2f1f2e499ef4cb43c744a13443c4cdd2f0812d5afdcee5e9b65b72b28c48557 languageName: node linkType: hard @@ -31864,7 +31905,7 @@ __metadata: languageName: node linkType: hard -"is-map@npm:^2.0.1": +"is-map@npm:^2.0.3": version: 2.0.3 resolution: "is-map@npm:2.0.3" checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc @@ -31888,13 +31929,6 @@ __metadata: languageName: node linkType: hard -"is-negative-zero@npm:^2.0.3": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd - languageName: node - linkType: hard - "is-network-error@npm:^1.0.0": version: 1.0.1 resolution: "is-network-error@npm:1.0.1" @@ -31916,12 +31950,13 @@ __metadata: languageName: node linkType: hard -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + call-bound: ^1.0.3 + has-tostringtag: ^1.0.2 + checksum: 6517f0a0e8c4b197a21afb45cd3053dc711e79d45d8878aa3565de38d0102b130ca8732485122c7b336e98c27dacd5236854e3e6526e0eb30cae64956535662f languageName: node linkType: hard @@ -32034,13 +32069,15 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 + call-bound: ^1.0.2 + gopd: ^1.2.0 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 99ee0b6d30ef1bb61fa4b22fae7056c6c9b3c693803c0c284ff7a8570f83075a7d38cda53b06b7996d441215c27895ea5d1af62124562e13d91b3dbec41a5e13 languageName: node linkType: hard @@ -32067,19 +32104,19 @@ __metadata: languageName: node linkType: hard -"is-set@npm:^2.0.1": +"is-set@npm:^2.0.3": version: 2.0.3 resolution: "is-set@npm:2.0.3" checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2, is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" dependencies: - call-bind: ^1.0.7 - checksum: a4fff602c309e64ccaa83b859255a43bb011145a42d3f56f67d9268b55bc7e6d98a5981a1d834186ad3105d6739d21547083fe7259c76c0468483fc538e716d8 + call-bound: ^1.0.3 + checksum: 1611fedc175796eebb88f4dfc393dd969a4a8e6c69cadaff424ee9d4464f9f026399a5f84a90f7c62d6d7ee04e3626a912149726de102b0bd6c1ee6a9868fa5a languageName: node linkType: hard @@ -32120,12 +32157,13 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + call-bound: ^1.0.3 + has-tostringtag: ^1.0.2 + checksum: 2eeaaff605250f5e836ea3500d33d1a5d3aa98d008641d9d42fb941e929ffd25972326c2ef912987e54c95b6f10416281aaf1b35cdf81992cfb7524c5de8e193 languageName: node linkType: hard @@ -32138,21 +32176,23 @@ __metadata: languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + call-bound: ^1.0.2 + has-symbols: ^1.1.0 + safe-regex-test: ^1.1.0 + checksum: bfafacf037af6f3c9d68820b74be4ae8a736a658a3344072df9642a090016e281797ba8edbeb1c83425879aae55d1cb1f30b38bf132d703692b2570367358032 languageName: node linkType: hard -"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.3": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15, is-typed-array@npm:^1.1.3": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" dependencies: - which-typed-array: ^1.1.14 - checksum: 150f9ada183a61554c91e1c4290086d2c100b0dff45f60b028519be72a8db964da403c48760723bf5253979b8dffe7b544246e0e5351dcd05c5fdb1dcc1dc0f0 + which-typed-array: ^1.1.16 + checksum: ea7cfc46c282f805d19a9ab2084fd4542fed99219ee9dbfbc26284728bd713a51eac66daa74eca00ae0a43b61322920ba334793607dc39907465913e921e0892 languageName: node linkType: hard @@ -32184,29 +32224,29 @@ __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" - dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de - languageName: node - linkType: hard - -"is-weakset@npm:^2.0.1": +"is-weakmap@npm:^2.0.2": version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" + resolution: "is-weakmap@npm:2.0.2" + checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d + languageName: node + linkType: hard + +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": + version: 1.1.0 + resolution: "is-weakref@npm:1.1.0" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 + call-bound: ^1.0.2 + checksum: 2a2f3a1746ee1baecf9ac6483d903cd3f8ef3cca88e2baa42f2e85ea064bd246d218eed5f6d479fc1c76dae2231e71133b6b86160e821d176932be9fae3da4da + languageName: node + linkType: hard + +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" + dependencies: + call-bound: ^1.0.3 + get-intrinsic: ^1.2.6 + checksum: 5c6c8415a06065d78bdd5e3a771483aa1cd928df19138aa73c4c51333226f203f22117b4325df55cc8b3085a6716870a320c2d757efee92d7a7091a039082041 languageName: node linkType: hard @@ -32461,16 +32501,17 @@ __metadata: languageName: node linkType: hard -"iterator.prototype@npm:^1.1.3": - version: 1.1.3 - resolution: "iterator.prototype@npm:1.1.3" +"iterator.prototype@npm:^1.1.4": + version: 1.1.4 + resolution: "iterator.prototype@npm:1.1.4" dependencies: - define-properties: ^1.2.1 - get-intrinsic: ^1.2.1 - has-symbols: ^1.0.3 - reflect.getprototypeof: ^1.0.4 - set-function-name: ^2.0.1 - checksum: 7d2a1f8bcbba7b76f72e956faaf7b25405f4de54430c9d099992e6fb9d571717c3044604e8cdfb8e624cb881337d648030ee8b1541d544af8b338835e3f47ebe + define-data-property: ^1.1.4 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.6 + has-symbols: ^1.1.0 + reflect.getprototypeof: ^1.0.8 + set-function-name: ^2.0.2 + checksum: e2b1f0f7678cf6ff02b74085dbd708bdfb6c18357af46cedc18a34e08d066c9b26e9dfb7dd2619dc199d17e681f30200b122425f793e9ad0105671191433d50f languageName: node linkType: hard @@ -35011,6 +35052,13 @@ __metadata: languageName: node linkType: hard +"math-intrinsics@npm:^1.0.0, math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 0e513b29d120f478c85a70f49da0b8b19bc638975eca466f2eeae0071f3ad00454c621bf66e16dd435896c208e719fc91ad79bbfba4e400fe0b372e7c1c9c9a2 + languageName: node + linkType: hard + "md5.js@npm:^1.3.4": version: 1.3.5 resolution: "md5.js@npm:1.3.5" @@ -37330,10 +37378,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f +"object-inspect@npm:^1.13.3": + version: 1.13.3 + resolution: "object-inspect@npm:1.13.3" + checksum: 8c962102117241e18ea403b84d2521f78291b774b03a29ee80a9863621d88265ffd11d0d7e435c4c2cea0dc2a2fbf8bbc92255737a05536590f2df2e8756f297 languageName: node linkType: hard @@ -37354,15 +37402,17 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" dependencies: - call-bind: ^1.0.5 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 - has-symbols: ^1.0.3 + es-object-atoms: ^1.0.0 + has-symbols: ^1.1.0 object-keys: ^1.1.1 - checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25 + checksum: 60e07d2651cf4f5528c485f1aa4dbded9b384c47d80e8187cefd11320abb1aebebf78df5483451dfa549059f8281c21f7b4bf7d19e9e5e97d8d617df0df298de languageName: node linkType: hard @@ -37400,14 +37450,15 @@ __metadata: languageName: node linkType: hard -"object.values@npm:^1.1.6, object.values@npm:^1.2.0": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" +"object.values@npm:^1.1.6, object.values@npm:^1.2.0, object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 es-object-atoms: ^1.0.0 - checksum: 51fef456c2a544275cb1766897f34ded968b22adfc13ba13b5e4815fdaf4304a90d42a3aee114b1f1ede048a4890381d47a5594d84296f2767c6a0364b9da8fa + checksum: f9b9a2a125ccf8ded29414d7c056ae0d187b833ee74919821fc60d7e216626db220d9cb3cf33f965c84aaaa96133626ca13b80f3c158b673976dc8cfcfcd26bb languageName: node linkType: hard @@ -41121,17 +41172,19 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.4": - version: 1.0.4 - resolution: "reflect.getprototypeof@npm:1.0.4" +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.8, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.9 + resolution: "reflect.getprototypeof@npm:1.0.9" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - get-intrinsic: ^1.2.1 - globalthis: ^1.0.3 - which-builtin-type: ^1.1.3 - checksum: 16e2361988dbdd23274b53fb2b1b9cefeab876c3941a2543b4cadac6f989e3db3957b07a44aac46cfceb3e06e2871785ec2aac992d824f76292f3b5ee87f66f2 + call-bind: ^1.0.8 + define-properties: ^1.2.1 + dunder-proto: ^1.0.1 + es-abstract: ^1.23.6 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 + gopd: ^1.2.0 + which-builtin-type: ^1.2.1 + checksum: 280cfdb1ba29d838440731ccea877431ec41415783dff7845d5f026c9923a71165a00e56ebd21050cec31e9c39e2e3620d6077ad3025d3782ede8b47d14ef8ab languageName: node linkType: hard @@ -41192,15 +41245,15 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.2": - version: 1.5.2 - resolution: "regexp.prototype.flags@npm:1.5.2" +"regexp.prototype.flags@npm:^1.5.3": + version: 1.5.3 + resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: - call-bind: ^1.0.6 + call-bind: ^1.0.7 define-properties: ^1.2.1 es-errors: ^1.3.0 - set-function-name: ^2.0.1 - checksum: d7f333667d5c564e2d7a97c56c3075d64c722c9bb51b2b4df6822b2e8096d623a5e63088fb4c83df919b6951ef8113841de8b47de7224872fa6838bc5d8a7d64 + set-function-name: ^2.0.2 + checksum: 83ff0705b837f7cb6d664010a11642250f36d3f642263dd0f3bdfe8f150261aa7b26b50ee97f21c1da30ef82a580bb5afedbef5f45639d69edaafbeac9bbb0ed languageName: node linkType: hard @@ -42002,15 +42055,16 @@ __metadata: languageName: node linkType: hard -"safe-array-concat@npm:^1.1.2": - version: 1.1.2 - resolution: "safe-array-concat@npm:1.1.2" +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" dependencies: - call-bind: ^1.0.7 - get-intrinsic: ^1.2.4 - has-symbols: ^1.0.3 + call-bind: ^1.0.8 + call-bound: ^1.0.2 + get-intrinsic: ^1.2.6 + has-symbols: ^1.1.0 isarray: ^2.0.5 - checksum: a3b259694754ddfb73ae0663829e396977b99ff21cbe8607f35a469655656da8e271753497e59da8a7575baa94d2e684bea3e10ddd74ba046c0c9b4418ffa0c4 + checksum: 00f6a68140e67e813f3ad5e73e6dedcf3e42a9fa01f04d44b0d3f7b1f4b257af876832a9bfc82ac76f307e8a6cc652e3cf95876048a26cbec451847cf6ae3707 languageName: node linkType: hard @@ -42035,14 +42089,14 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.3": - version: 1.0.3 - resolution: "safe-regex-test@npm:1.0.3" +"safe-regex-test@npm:^1.0.3, safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" dependencies: - call-bind: ^1.0.6 + call-bound: ^1.0.2 es-errors: ^1.3.0 - is-regex: ^1.1.4 - checksum: 6c7d392ff1ae7a3ae85273450ed02d1d131f1d2c76e177d6b03eb88e6df8fa062639070e7d311802c1615f351f18dc58f9454501c58e28d5ffd9b8f502ba6489 + is-regex: ^1.2.1 + checksum: 3c809abeb81977c9ed6c869c83aca6873ea0f3ab0f806b8edbba5582d51713f8a6e9757d24d2b4b088f563801475ea946c8e77e7713e8c65cdd02305b6caedab languageName: node linkType: hard @@ -42383,7 +42437,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -42397,7 +42451,7 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.1, set-function-name@npm:^2.0.2": +"set-function-name@npm:^2.0.2": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" dependencies: @@ -42556,15 +42610,51 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4, side-channel@npm:^1.0.6": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" dependencies: - call-bind: ^1.0.7 es-errors: ^1.3.0 - get-intrinsic: ^1.2.4 - object-inspect: ^1.13.1 - checksum: bfc1afc1827d712271453e91b7cd3878ac0efd767495fd4e594c4c2afaa7963b7b510e249572bfd54b0527e66e4a12b61b80c061389e129755f34c493aad9b97 + object-inspect: ^1.13.3 + checksum: 603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f + languageName: node + linkType: hard + +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + checksum: 42501371cdf71f4ccbbc9c9e2eb00aaaab80a4c1c429d5e8da713fd4d39ef3b8d4a4b37ed4f275798a65260a551a7131fd87fe67e922dba4ac18586d6aab8b06 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + side-channel-map: ^1.0.1 + checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + +"side-channel@npm:^1.0.6, side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + side-channel-list: ^1.0.0 + side-channel-map: ^1.0.1 + side-channel-weakmap: ^1.0.2 + checksum: bf73d6d6682034603eb8e99c63b50155017ed78a522d27c2acec0388a792c3ede3238b878b953a08157093b85d05797217d270b7666ba1f111345fbe933380ff languageName: node linkType: hard @@ -43455,23 +43545,24 @@ __metadata: languageName: node linkType: hard -"string.prototype.matchall@npm:^4.0.11": - version: 4.0.11 - resolution: "string.prototype.matchall@npm:4.0.11" +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 - es-abstract: ^1.23.2 + es-abstract: ^1.23.6 es-errors: ^1.3.0 es-object-atoms: ^1.0.0 - get-intrinsic: ^1.2.4 - gopd: ^1.0.1 - has-symbols: ^1.0.3 - internal-slot: ^1.0.7 - regexp.prototype.flags: ^1.5.2 + get-intrinsic: ^1.2.6 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + internal-slot: ^1.1.0 + regexp.prototype.flags: ^1.5.3 set-function-name: ^2.0.2 - side-channel: ^1.0.6 - checksum: 6ac6566ed065c0c8489c91156078ca077db8ff64d683fda97ae652d00c52dfa5f39aaab0a710d8243031a857fd2c7c511e38b45524796764d25472d10d7075ae + side-channel: ^1.1.0 + checksum: 98a09d6af91bfc6ee25556f3d7cd6646d02f5f08bda55d45528ed273d266d55a71af7291fe3fc76854deffb9168cc1a917d0b07a7d5a178c7e9537c99e6d2b57 languageName: node linkType: hard @@ -43485,26 +43576,30 @@ __metadata: languageName: node linkType: hard -"string.prototype.trim@npm:^1.2.9": - version: 1.2.9 - resolution: "string.prototype.trim@npm:1.2.9" +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.2 + define-data-property: ^1.1.4 define-properties: ^1.2.1 - es-abstract: ^1.23.0 + es-abstract: ^1.23.5 es-object-atoms: ^1.0.0 - checksum: ea2df6ec1e914c9d4e2dc856fa08228e8b1be59b59e50b17578c94a66a176888f417264bb763d4aac638ad3b3dad56e7a03d9317086a178078d131aa293ba193 + has-property-descriptors: ^1.0.2 + checksum: 87659cd8561237b6c69f5376328fda934693aedde17bb7a2c57008e9d9ff992d0c253a391c7d8d50114e0e49ff7daf86a362f7961cf92f7564cd01342ca2e385 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" +"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.2 define-properties: ^1.2.1 es-object-atoms: ^1.0.0 - checksum: cc3bd2de08d8968a28787deba9a3cb3f17ca5f9f770c91e7e8fa3e7d47f079bad70fadce16f05dda9f261788be2c6e84a942f618c3bed31e42abc5c1084f8dfd + checksum: cb86f639f41d791a43627784be2175daa9ca3259c7cb83e7a207a729909b74f2ea0ec5d85de5761e6835e5f443e9420c6ff3f63a845378e4a61dd793177bc287 languageName: node linkType: hard @@ -45045,55 +45140,56 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" dependencies: - call-bind: ^1.0.7 + call-bound: ^1.0.3 es-errors: ^1.3.0 - is-typed-array: ^1.1.13 - checksum: 02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b + is-typed-array: ^1.1.14 + checksum: 3fb91f0735fb413b2bbaaca9fabe7b8fc14a3fa5a5a7546bab8a57e755be0e3788d893195ad9c2b842620592de0e68d4c077d4c2c41f04ec25b8b5bb82fa9a80 languageName: node linkType: hard -"typed-array-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 for-each: ^0.3.3 - gopd: ^1.0.1 - has-proto: ^1.0.3 - is-typed-array: ^1.1.13 - checksum: f65e5ecd1cf76b1a2d0d6f631f3ea3cdb5e08da106c6703ffe687d583e49954d570cc80434816d3746e18be889ffe53c58bf3e538081ea4077c26a41055b216d + gopd: ^1.2.0 + has-proto: ^1.2.0 + is-typed-array: ^1.1.14 + checksum: cda9352178ebeab073ad6499b03e938ebc30c4efaea63a26839d89c4b1da9d2640b0d937fc2bd1f049eb0a38def6fbe8a061b601292ae62fe079a410ce56e3a6 languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" +"typed-array-byte-offset@npm:^1.0.4": + version: 1.0.4 + resolution: "typed-array-byte-offset@npm:1.0.4" dependencies: available-typed-arrays: ^1.0.7 - call-bind: ^1.0.7 + call-bind: ^1.0.8 for-each: ^0.3.3 - gopd: ^1.0.1 - has-proto: ^1.0.3 - is-typed-array: ^1.1.13 - checksum: c8645c8794a621a0adcc142e0e2c57b1823bbfa4d590ad2c76b266aa3823895cf7afb9a893bf6685e18454ab1b0241e1a8d885a2d1340948efa4b56add4b5f67 + gopd: ^1.2.0 + has-proto: ^1.2.0 + is-typed-array: ^1.1.15 + reflect.getprototypeof: ^1.0.9 + checksum: 670b7e6bb1d3c2cf6160f27f9f529e60c3f6f9611c67e47ca70ca5cfa24ad95415694c49d1dbfeda016d3372cab7dfc9e38c7b3e1bb8d692cae13a63d3c144d7 languageName: node linkType: hard -"typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" dependencies: call-bind: ^1.0.7 for-each: ^0.3.3 gopd: ^1.0.1 - has-proto: ^1.0.3 is-typed-array: ^1.1.13 possible-typed-array-names: ^1.0.0 - checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c + reflect.getprototypeof: ^1.0.6 + checksum: deb1a4ffdb27cd930b02c7030cb3e8e0993084c643208e52696e18ea6dd3953dfc37b939df06ff78170423d353dc8b10d5bae5796f3711c1b3abe52872b3774c languageName: node linkType: hard @@ -45282,15 +45378,15 @@ __metadata: languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" dependencies: - call-bind: ^1.0.2 + call-bound: ^1.0.3 has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 + has-symbols: ^1.1.0 + which-boxed-primitive: ^1.1.1 + checksum: 729f13b84a5bfa3fead1d8139cee5c38514e63a8d6a437819a473e241ba87eeb593646568621c7fc7f133db300ef18d65d1a5a60dc9c7beb9000364d93c581df languageName: node linkType: hard @@ -46644,48 +46740,49 @@ __metadata: languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + is-bigint: ^1.1.0 + is-boolean-object: ^1.2.1 + is-number-object: ^1.1.1 + is-string: ^1.1.1 + is-symbol: ^1.1.1 + checksum: ee41d0260e4fd39551ad77700c7047d3d281ec03d356f5e5c8393fe160ba0db53ef446ff547d05f76ffabfd8ad9df7c9a827e12d4cccdbc8fccf9239ff8ac21e languageName: node linkType: hard -"which-builtin-type@npm:^1.1.3": - version: 1.1.3 - resolution: "which-builtin-type@npm:1.1.3" +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" dependencies: - function.prototype.name: ^1.1.5 - has-tostringtag: ^1.0.0 + call-bound: ^1.0.2 + function.prototype.name: ^1.1.6 + has-tostringtag: ^1.0.2 is-async-function: ^2.0.0 - is-date-object: ^1.0.5 - is-finalizationregistry: ^1.0.2 + is-date-object: ^1.1.0 + is-finalizationregistry: ^1.1.0 is-generator-function: ^1.0.10 - is-regex: ^1.1.4 + is-regex: ^1.2.1 is-weakref: ^1.0.2 isarray: ^2.0.5 - which-boxed-primitive: ^1.0.2 - which-collection: ^1.0.1 - which-typed-array: ^1.1.9 - checksum: 43730f7d8660ff9e33d1d3f9f9451c4784265ee7bf222babc35e61674a11a08e1c2925019d6c03154fcaaca4541df43abe35d2720843b9b4cbcebdcc31408f36 + which-boxed-primitive: ^1.1.0 + which-collection: ^1.0.2 + which-typed-array: ^1.1.16 + checksum: 7a3617ba0e7cafb795f74db418df889867d12bce39a477f3ee29c6092aa64d396955bf2a64eae3726d8578440e26777695544057b373c45a8bcf5fbe920bf633 languageName: node linkType: hard -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" dependencies: - is-map: ^2.0.1 - is-set: ^2.0.1 - is-weakmap: ^2.0.1 - is-weakset: ^2.0.1 - checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c + is-map: ^2.0.3 + is-set: ^2.0.3 + is-weakmap: ^2.0.2 + is-weakset: ^2.0.3 + checksum: c51821a331624c8197916598a738fc5aeb9a857f1e00d89f5e4c03dc7c60b4032822b8ec5696d28268bb83326456a8b8216344fb84270d18ff1d7628051879d9 languageName: node linkType: hard @@ -46699,16 +46796,17 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.15, which-typed-array@npm:^1.1.2, which-typed-array@npm:^1.1.9": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18, which-typed-array@npm:^1.1.2": + version: 1.1.18 + resolution: "which-typed-array@npm:1.1.18" dependencies: available-typed-arrays: ^1.0.7 - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 for-each: ^0.3.3 - gopd: ^1.0.1 + gopd: ^1.2.0 has-tostringtag: ^1.0.2 - checksum: 65227dcbfadf5677aacc43ec84356d17b5500cb8b8753059bb4397de5cd0c2de681d24e1a7bd575633f976a95f88233abfd6549c2105ef4ebd58af8aa1807c75 + checksum: d2feea7f51af66b3a240397aa41c796585033e1069f18e5b6d4cd3878538a1e7780596fd3ea9bf347c43d9e98e13be09b37d9ea3887cef29b11bc291fd47bb52 languageName: node linkType: hard From afba634e9bd3d1a18e515aa7fb24870ee4038e0f Mon Sep 17 00:00:00 2001 From: Patrick Guppy Date: Wed, 25 Dec 2024 13:00:34 +0800 Subject: [PATCH 107/213] docs(vscode): update vscode debugger instructions for backend Signed-off-by: Patrick Guppy --- docs/tooling/local-dev/debugging.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/tooling/local-dev/debugging.md b/docs/tooling/local-dev/debugging.md index 39981f2e54..65354442b2 100644 --- a/docs/tooling/local-dev/debugging.md +++ b/docs/tooling/local-dev/debugging.md @@ -56,19 +56,19 @@ In your `launch.json`, add a new entry with the following, ```jsonc { - "name": "Start Backend", - "type": "node", - "request": "launch", - "args": [ - "package", - "start" - ], - "cwd": "${workspaceFolder}/packages/backend", - "program": "${workspaceFolder}/node_modules/.bin/backstage-cli", - "skipFiles": [ - "/**" - ], - "console": "integratedTerminal" + "name": "Start Backend", + "type": "node", + "request": "launch", + "cwd": "${workspaceFolder}", + "runtimeExecutable": "yarn", + "args": [ + "start-backend", + "--inspect" + ], + "skipFiles": [ + "/**" + ], + "console": "integratedTerminal" }, ``` From a0a661786ce24f6ecb91139f37e8ed30eba35e8a Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Wed, 25 Dec 2024 22:54:29 +0100 Subject: [PATCH 108/213] catalog-react: do not refetch if filters don't change Signed-off-by: Vincenzo Scamporlino --- .../src/hooks/useEntityListProvider.test.tsx | 18 +++++++++++++++--- .../src/hooks/useEntityListProvider.tsx | 7 ++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx index 8701c56301..2a922cf417 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.test.tsx @@ -555,7 +555,7 @@ describe('', () => { }); }); -describe('', () => { +describe(``, () => { const origReplaceState = window.history.replaceState; const pagination: EntityListPagination = { mode: 'offset' }; const limit = 20; @@ -688,6 +688,18 @@ describe('', () => { await waitFor(() => { expect(mockCatalogApi.queryEntities).toHaveBeenCalledTimes(2); }); + + act(() => + result.current.updateFilters({ + user: EntityUserFilter.owned(ownershipEntityRefs), + }), + ); + + await expect(() => + waitFor(() => { + expect(mockCatalogApi.queryEntities).toHaveBeenCalledTimes(3); + }), + ).rejects.toThrow(); }); it('fetch when limit change', async () => { @@ -723,7 +735,7 @@ describe('', () => { expect(result.current.backendEntities.length).toBe(2); expect(mockCatalogApi.queryEntities).toHaveBeenCalledTimes(1); - await act(async () => { + act(() => { result.current.updateFilters({ kind: new EntityKindFilter('api', 'API'), }); @@ -750,7 +762,7 @@ describe('', () => { expect(result.current.backendEntities.length).toBe(2); expect(mockCatalogApi.queryEntities).toHaveBeenCalledTimes(1); - await act(async () => { + act(() => { result.current.setOffset!(5); result.current.setOffset!(10); }); diff --git a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx index b96357eb62..fc2dfe6a73 100644 --- a/plugins/catalog-react/src/hooks/useEntityListProvider.tsx +++ b/plugins/catalog-react/src/hooks/useEntityListProvider.tsx @@ -173,7 +173,7 @@ export const EntityListProvider = ( : 'none'; }; - const paginationMode: PaginationMode = getPaginationMode(); + const paginationMode = getPaginationMode(); const paginationLimit = typeof props.pagination === 'object' ? props.pagination.limit ?? 20 : 20; @@ -227,7 +227,7 @@ export const EntityListProvider = ( appliedFilters: {} as EntityFilters, entities: [], backendEntities: [], - pageInfo: paginationMode === 'cursor' ? {} : undefined, + pageInfo: {}, offset, limit, }; @@ -279,7 +279,8 @@ export const EntityListProvider = ( ); if ( - paginationMode === 'offset' || + (paginationMode === 'offset' && + (outputState.limit !== limit || outputState.offset !== offset)) || !isEqual(previousBackendFilter, backendFilter) ) { const response = await catalogApi.queryEntities({ From cbfc0a4eec81bb725ced4104594c99e18496494c Mon Sep 17 00:00:00 2001 From: Vincenzo Scamporlino Date: Wed, 25 Dec 2024 22:54:50 +0100 Subject: [PATCH 109/213] catalog-react: fix pagination changeset Signed-off-by: Vincenzo Scamporlino --- .changeset/nasty-pears-taste.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/nasty-pears-taste.md diff --git a/.changeset/nasty-pears-taste.md b/.changeset/nasty-pears-taste.md new file mode 100644 index 0000000000..667e85d9d4 --- /dev/null +++ b/.changeset/nasty-pears-taste.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-catalog-react': patch +--- + +Fixed an issue where the `` in `offset` mode would unnecessarily re-fetch data when the filter didn't change, causing a flicker effect. From 95491d2fa4608708027ea343f50bef9b687ba942 Mon Sep 17 00:00:00 2001 From: darylgraham Date: Tue, 5 Nov 2024 23:16:02 +0000 Subject: [PATCH 110/213] Extend Azure Org custom transformer docs to be more end-to-end Signed-off-by: darylgraham --- docs/integrations/azure/org.md | 139 +++++++++++++++++++++++++++++++-- 1 file changed, 132 insertions(+), 7 deletions(-) diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index e6fb69a520..6e8b9c84a3 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -258,21 +258,96 @@ The `myUserTransformer`, `myGroupTransformer`, `myOrganizationTransformer`, and The following provides an example of each kind of transformer. We recommend creating a `transformers.ts` file in your `packages/backend/src` folder for these. +First, lets set up the basic structure of the file, with functions for each kind of transformer that simply passes through the default transformer unchanged. + ```ts title="packages/backend/src/transformers.ts" import * as MicrosoftGraph from '@microsoft/microsoft-graph-types'; import { defaultGroupTransformer, defaultUserTransformer, defaultOrganizationTransformer, + microsoftGraphOrgEntityProviderTransformExtensionPoint, MicrosoftGraphProviderConfig, } from '@backstage/plugin-catalog-backend-module-msgraph'; import { GroupEntity, UserEntity } from '@backstage/catalog-model'; +import { createBackendModule } from '@backstage/backend-plugin-api'; -// This group transformer completely replaces the built in logic with custom logic. +// The Group transformer transforms Groups that are ingested from MS Graph export async function myGroupTransformer( group: MicrosoftGraph.Group, groupPhoto?: string, ): Promise { + const backstageGroup = await defaultGroupTransformer(group, groupPhoto); + return backstageGroup; +} + +// The User transformer transforms Users that are ingested from MS Graph +export async function myUserTransformer( + graphUser: MicrosoftGraph.User, + userPhoto?: string, +): Promise { + const backstageUser = await defaultUserTransformer(graphUser, userPhoto); + return backstageUser; +} + +// The Organization transformer transforms the root MS Graph Organization into a Group +export async function myOrganizationTransformer( + graphOrganization: MicrosoftGraph.Organization, +): Promise { + const backstageOrg = await defaultOrganizationTransformer(graphOrganization); + return backstageOrg; +} + +// The Provider Config transformer enables modification of the plugin config +export async function myProviderConfigTransformer( + provider: MicrosoftGraphProviderConfig, +): Promise { + return provider; +} + +// Wrapping these functions in a Module allows us to inject them into the Catalog plugin easily +export const myMsgraphTransformersModule = createBackendModule({ + pluginId: 'catalog', + moduleId: 'msgraph-org', + register(reg) { + reg.registerInit({ + deps: { + microsoftGraphTransformers: + microsoftGraphOrgEntityProviderTransformExtensionPoint, + }, + async init({ microsoftGraphTransformers }) { + // Set the transformers to our custom functions + microsoftGraphTransformers.setUserTransformer(myUserTransformer); + microsoftGraphTransformers.setGroupTransformer(myGroupTransformer); + microsoftGraphTransformers.setOrganizationTransformer( + myOrganizationTransformer, + ); + microsoftGraphTransformers.setProviderConfigTransformer( + myProviderConfigTransformer, + ); + }, + }); + }, +}); + +// Export a default to make importing into the backend simpler +export default myMsgraphTransformersModule; +``` + +Now lets customize each of the providers to suit our needs. + +The Group Transformer will have the default logic completely removed and replaced with our custom logic: + +```ts +export async function myGroupTransformer( + group: MicrosoftGraph.Group, + groupPhoto?: string, +): Promise { + // highlight-remove-start + const backstageGroup = await defaultGroupTransformer(group, groupPhoto); + return backstageGroup; + // highlight-remove-end + // highlight-add-start return { apiVersion: 'backstage.io/v1alpha1', kind: 'Group', @@ -285,40 +360,90 @@ export async function myGroupTransformer( children: [], }, }; + // highlight-add-end } +``` -// This user transformer makes use of the built in logic, but also sets the description field +The User Transformer makes use of the built-in logic, but also modifies the username and sets a description + +```ts export async function myUserTransformer( graphUser: MicrosoftGraph.User, userPhoto?: string, ): Promise { const backstageUser = await defaultUserTransformer(graphUser, userPhoto); - + // highlight-add-start + // Make sure the default transformer returned an entity if (backstageUser) { - backstageUser.metadata.description = 'Loaded from Microsoft Entra ID'; + // Update the description to make it obvious where this entity came from + backstageUser.metadata.description = + 'Loaded from Microsoft Entra ID via MyCustomUserTransformer'; + + // The default transformer sets the username to the email address with invalid characters subbed out: 'user_domain.com' + // Set the username to the local part of the email address in lowercase without the domain + const newName = backstageUser.metadata.name.split('_')[0].toLowerCase(); + backstageUser.metadata.name = newName; + + return backstageUser; } - + return undefined; + // highlight-add-end + // highlight-remove-start return backstageUser; + // highlight-remove-end } +``` -// Example organization transformer that removes the organization group completely +The Organization Transformer removes the organization group completely by returning undefined + +```ts export async function myOrganizationTransformer( graphOrganization: MicrosoftGraph.Organization, ): Promise { + // highlight-remove-start + const backstageOrg = await defaultOrganizationTransformer(graphOrganization); + return backstageOrg; + // highlight-remove-end + // highlight-add-start return undefined; + // highlight-add-end } +``` -// Example config transformer that expands the group filter to also include 'azure-group-a' +The Config Transformer expands the group filter to also include 'azure-group-a' + +```ts export async function myProviderConfigTransformer( provider: MicrosoftGraphProviderConfig, ): Promise { + // highlight-add-start if (!provider.groupFilter?.includes('azure-group-a')) { provider.groupFilter = `${provider.groupFilter} or displayName eq 'azure-group-a'`; } + // highlight-add-end return provider; } ``` +Now we just need to add our new module to the Backend. + +```ts +// packages/backend/src/index.ts +// Your file will have more than this in it + +const backend = createBackend(); + +... + +// highlight-add-start +backend.add(import('./transformers')); +// highlight-add-end + +... + +backend.start(); +``` + ## Troubleshooting ### No data From b84fde2cc530d46a3b8410ea1a66cffd75ce3181 Mon Sep 17 00:00:00 2001 From: Daryl Graham Date: Fri, 29 Nov 2024 20:19:56 +1000 Subject: [PATCH 111/213] Update docs/integrations/azure/org.md Co-authored-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Signed-off-by: Daryl Graham Signed-off-by: darylgraham --- docs/integrations/azure/org.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index 6e8b9c84a3..aab6c47b5d 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -260,7 +260,7 @@ The following provides an example of each kind of transformer. We recommend crea First, lets set up the basic structure of the file, with functions for each kind of transformer that simply passes through the default transformer unchanged. -```ts title="packages/backend/src/transformers.ts" +```ts title="packages/backend/src/extensions/transformers.ts" import * as MicrosoftGraph from '@microsoft/microsoft-graph-types'; import { defaultGroupTransformer, From 0ede7cc8fcd123e20f6e3f9aab1fde806e8cd9ab Mon Sep 17 00:00:00 2001 From: Daryl Graham Date: Fri, 29 Nov 2024 20:22:25 +1000 Subject: [PATCH 112/213] Apply suggestions from code review Co-authored-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Signed-off-by: Daryl Graham Signed-off-by: darylgraham --- docs/integrations/azure/org.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index aab6c47b5d..3773c664c2 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -306,7 +306,7 @@ export async function myProviderConfigTransformer( } // Wrapping these functions in a Module allows us to inject them into the Catalog plugin easily -export const myMsgraphTransformersModule = createBackendModule({ +export default createBackendModule({ pluginId: 'catalog', moduleId: 'msgraph-org', register(reg) { @@ -336,7 +336,7 @@ export default myMsgraphTransformersModule; Now lets customize each of the providers to suit our needs. -The Group Transformer will have the default logic completely removed and replaced with our custom logic: +This Group Transformer example will have the default logic completely removed and replaced with our custom logic: ```ts export async function myGroupTransformer( @@ -364,7 +364,7 @@ export async function myGroupTransformer( } ``` -The User Transformer makes use of the built-in logic, but also modifies the username and sets a description +This User Transformer example makes use of the built-in logic, but also modifies the username and sets a description ```ts export async function myUserTransformer( @@ -394,7 +394,7 @@ export async function myUserTransformer( } ``` -The Organization Transformer removes the organization group completely by returning undefined +This Organization Transformer example removes the organization group completely by returning undefined ```ts export async function myOrganizationTransformer( @@ -410,7 +410,7 @@ export async function myOrganizationTransformer( } ``` -The Config Transformer expands the group filter to also include 'azure-group-a' +This Config Transformer example expands the group filter to also include 'azure-group-a' ```ts export async function myProviderConfigTransformer( @@ -436,7 +436,7 @@ const backend = createBackend(); ... // highlight-add-start -backend.add(import('./transformers')); +backend.add(import('./extensions/transformers')); // highlight-add-end ... From 22da1177ff4dac312ecd079b5fb18ae98396aeb3 Mon Sep 17 00:00:00 2001 From: darylgraham Date: Mon, 2 Dec 2024 00:00:26 +0000 Subject: [PATCH 113/213] Update custom transformers with logic to explain why we would make the change Signed-off-by: darylgraham --- docs/integrations/azure/org.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index 3773c664c2..bc2b35d8c5 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -329,9 +329,6 @@ export default createBackendModule({ }); }, }); - -// Export a default to make importing into the backend simpler -export default myMsgraphTransformersModule; ``` Now lets customize each of the providers to suit our needs. @@ -348,15 +345,26 @@ export async function myGroupTransformer( return backstageGroup; // highlight-remove-end // highlight-add-start + // All of our groups are prefixed with the organisational unit: 'Engineering - Team A' + // We want to drop the org unit from the group name and use it for the namespace instead + const groupNameArr = group.displayName.split(' - '); + const displayName = groupNameArr[1]; + // Standardise name and namespace by replacing spaces with hyphens and converting to lowercase + const namespace = groupNameArr[0].replace(' ', '-').toLowerCase(); + const groupName = groupNameArr[1].replace(' ', '-').toLowerCase(); + return { apiVersion: 'backstage.io/v1alpha1', kind: 'Group', metadata: { - name: group.id!, + name: groupName, + description: group.description, annotations: {}, }, spec: { - type: 'Microsoft Entra ID', + type: 'team', + displayName: displayName, + email: group.mail, children: [], }, }; @@ -405,6 +413,8 @@ export async function myOrganizationTransformer( return backstageOrg; // highlight-remove-end // highlight-add-start + // The org transformer creates a group to be used as the base of the relationship tree for groups + // We don't need this to be created, so return undefined instead of an entity return undefined; // highlight-add-end } @@ -417,6 +427,8 @@ export async function myProviderConfigTransformer( provider: MicrosoftGraphProviderConfig, ): Promise { // highlight-add-start + // The filter in our config file relies on a property that has been intermittantly causing this important group to fail ingestion + // Ensure the group is always discovered by the filter if (!provider.groupFilter?.includes('azure-group-a')) { provider.groupFilter = `${provider.groupFilter} or displayName eq 'azure-group-a'`; } From 5e282bc5377508cf8c3f21c2800350eee80a5a3a Mon Sep 17 00:00:00 2001 From: darylgraham Date: Fri, 27 Dec 2024 11:59:21 +0000 Subject: [PATCH 114/213] codefence title added instead of a comment inside the block Signed-off-by: darylgraham --- docs/integrations/azure/org.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/integrations/azure/org.md b/docs/integrations/azure/org.md index bc2b35d8c5..068aa70101 100644 --- a/docs/integrations/azure/org.md +++ b/docs/integrations/azure/org.md @@ -439,8 +439,7 @@ export async function myProviderConfigTransformer( Now we just need to add our new module to the Backend. -```ts -// packages/backend/src/index.ts +```ts title="packages/backend/src/index.ts" // Your file will have more than this in it const backend = createBackend(); From aaf1c3b4d236c5796f877522d3d492d6f6f32454 Mon Sep 17 00:00:00 2001 From: Charles de Dreuille Date: Sun, 29 Dec 2024 16:05:51 +0100 Subject: [PATCH 115/213] First pass at creating a new website Signed-off-by: Charles de Dreuille --- packages/canon/canon-docs/.gitignore | 41 + packages/canon/canon-docs/README.md | 36 + packages/canon/canon-docs/app/favicon.ico | Bin 0 -> 25931 bytes packages/canon/canon-docs/app/globals.css | 11 + packages/canon/canon-docs/app/layout.tsx | 30 + packages/canon/canon-docs/app/page.module.css | 3 + packages/canon/canon-docs/app/page.tsx | 18 + .../canon/canon-docs/app/playground/page.tsx | 3 + .../components/Tabs/Tabs.module.css | 72 + .../canon-docs/components/Tabs/index.tsx | 84 + .../components/sidebar/Sidebar.module.css | 46 + .../canon-docs/components/sidebar/index.tsx | 32 + packages/canon/canon-docs/eslint.config.mjs | 16 + packages/canon/canon-docs/next.config.ts | 7 + packages/canon/canon-docs/package.json | 26 + packages/canon/canon-docs/public/logo.svg | 1 + packages/canon/canon-docs/tsconfig.json | 27 + packages/canon/canon-docs/yarn.lock | 3420 +++++++++++++++++ packages/canon/src/components/Icon/Icon.tsx | 2 + packages/canon/src/components/Icon/icons.ts | 4 + packages/canon/src/components/Icon/types.ts | 2 + packages/canon/src/contexts/canon.tsx | 2 + packages/canon/src/css/base.css | 4 +- packages/canon/src/css/normalize.css | 212 +- 24 files changed, 3992 insertions(+), 107 deletions(-) create mode 100644 packages/canon/canon-docs/.gitignore create mode 100644 packages/canon/canon-docs/README.md create mode 100644 packages/canon/canon-docs/app/favicon.ico create mode 100644 packages/canon/canon-docs/app/globals.css create mode 100644 packages/canon/canon-docs/app/layout.tsx create mode 100644 packages/canon/canon-docs/app/page.module.css create mode 100644 packages/canon/canon-docs/app/page.tsx create mode 100644 packages/canon/canon-docs/app/playground/page.tsx create mode 100644 packages/canon/canon-docs/components/Tabs/Tabs.module.css create mode 100644 packages/canon/canon-docs/components/Tabs/index.tsx create mode 100644 packages/canon/canon-docs/components/sidebar/Sidebar.module.css create mode 100644 packages/canon/canon-docs/components/sidebar/index.tsx create mode 100644 packages/canon/canon-docs/eslint.config.mjs create mode 100644 packages/canon/canon-docs/next.config.ts create mode 100644 packages/canon/canon-docs/package.json create mode 100644 packages/canon/canon-docs/public/logo.svg create mode 100644 packages/canon/canon-docs/tsconfig.json create mode 100644 packages/canon/canon-docs/yarn.lock diff --git a/packages/canon/canon-docs/.gitignore b/packages/canon/canon-docs/.gitignore new file mode 100644 index 0000000000..5ef6a52078 --- /dev/null +++ b/packages/canon/canon-docs/.gitignore @@ -0,0 +1,41 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.* +.yarn/* +!.yarn/patches +!.yarn/plugins +!.yarn/releases +!.yarn/versions + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.pnpm-debug.log* + +# env files (can opt-in for committing if needed) +.env* + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/packages/canon/canon-docs/README.md b/packages/canon/canon-docs/README.md new file mode 100644 index 0000000000..e215bc4ccf --- /dev/null +++ b/packages/canon/canon-docs/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/packages/canon/canon-docs/app/favicon.ico b/packages/canon/canon-docs/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 zcmeHv30#a{`}aL_*G&7qml|y<+KVaDM2m#dVr!KsA!#An?kSQM(q<_dDNCpjEux83 zLb9Z^XxbDl(w>%i@8hT6>)&Gu{h#Oeyszu?xtw#Zb1mO{pgX9699l+Qppw7jXaYf~-84xW z)w4x8?=youko|}Vr~(D$UXIbiXABHh`p1?nn8Po~fxRJv}|0e(BPs|G`(TT%kKVJAdg5*Z|x0leQq0 zkdUBvb#>9F()jo|T~kx@OM8$9wzs~t2l;K=woNssA3l6|sx2r3+kdfVW@e^8e*E}v zA1y5{bRi+3Z`uD3{F7LgFJDdvm;nJilkzDku>BwXH(8ItVCXk*-lSJnR?-2UN%hJ){&rlvg`CDTj z)Bzo!3v7Ou#83zEDEFcKt(f1E0~=rqeEbTnMvWR#{+9pg%7G8y>u1OVRUSoox-ovF z2Ydma(;=YuBY(eI|04{hXzZD6_f(v~H;C~y5=DhAC{MMS>2fm~1H_t2$56pc$NH8( z5bH|<)71dV-_oCHIrzrT`2s-5w_+2CM0$95I6X8p^r!gHp+j_gd;9O<1~CEQQGS8) zS9Qh3#p&JM-G8rHekNmKVewU;pJRcTAog68KYo^dRo}(M>36U4Us zfgYWSiHZL3;lpWT=zNAW>Dh#mB!_@Lg%$ms8N-;aPqMn+C2HqZgz&9~Eu z4|Kp<`$q)Uw1R?y(~S>ePdonHxpV1#eSP1B;Ogo+-Pk}6#0GsZZ5!||ev2MGdh}_m z{DeR7?0-1^zVs&`AV6Vt;r3`I`OI_wgs*w=eO%_#7Kepl{B@xiyCANc(l zzIyd4y|c6PXWq9-|KM8(zIk8LPk(>a)zyFWjhT!$HJ$qX1vo@d25W<fvZQ2zUz5WRc(UnFMKHwe1| zWmlB1qdbiA(C0jmnV<}GfbKtmcu^2*P^O?MBLZKt|As~ge8&AAO~2K@zbXelK|4T<{|y4`raF{=72kC2Kn(L4YyenWgrPiv z@^mr$t{#X5VuIMeL!7Ab6_kG$&#&5p*Z{+?5U|TZ`B!7llpVmp@skYz&n^8QfPJzL z0G6K_OJM9x+Wu2gfN45phANGt{7=C>i34CV{Xqlx(fWpeAoj^N0Biu`w+MVcCUyU* zDZuzO0>4Z6fbu^T_arWW5n!E45vX8N=bxTVeFoep_G#VmNlQzAI_KTIc{6>c+04vr zx@W}zE5JNSU>!THJ{J=cqjz+4{L4A{Ob9$ZJ*S1?Ggg3klFp!+Y1@K+pK1DqI|_gq z5ZDXVpge8-cs!o|;K73#YXZ3AShj50wBvuq3NTOZ`M&qtjj#GOFfgExjg8Gn8>Vq5 z`85n+9|!iLCZF5$HJ$Iu($dm?8~-ofu}tEc+-pyke=3!im#6pk_Wo8IA|fJwD&~~F zc16osQ)EBo58U7XDuMexaPRjU@h8tXe%S{fA0NH3vGJFhuyyO!Uyl2^&EOpX{9As0 zWj+P>{@}jxH)8|r;2HdupP!vie{sJ28b&bo!8`D^x}TE$%zXNb^X1p@0PJ86`dZyj z%ce7*{^oo+6%&~I!8hQy-vQ7E)0t0ybH4l%KltWOo~8cO`T=157JqL(oq_rC%ea&4 z2NcTJe-HgFjNg-gZ$6!Y`SMHrlj}Etf7?r!zQTPPSv}{so2e>Fjs1{gzk~LGeesX%r(Lh6rbhSo_n)@@G-FTQy93;l#E)hgP@d_SGvyCp0~o(Y;Ee8{ zdVUDbHm5`2taPUOY^MAGOw*>=s7=Gst=D+p+2yON!0%Hk` zz5mAhyT4lS*T3LS^WSxUy86q&GnoHxzQ6vm8)VS}_zuqG?+3td68_x;etQAdu@sc6 zQJ&5|4(I?~3d-QOAODHpZ=hlSg(lBZ!JZWCtHHSj`0Wh93-Uk)_S%zsJ~aD>{`A0~ z9{AG(e|q3g5B%wYKRxiL2Y$8(4w6bzchKuloQW#e&S3n+P- z8!ds-%f;TJ1>)v)##>gd{PdS2Oc3VaR`fr=`O8QIO(6(N!A?pr5C#6fc~Ge@N%Vvu zaoAX2&(a6eWy_q&UwOhU)|P3J0Qc%OdhzW=F4D|pt0E4osw;%<%Dn58hAWD^XnZD= z>9~H(3bmLtxpF?a7su6J7M*x1By7YSUbxGi)Ot0P77`}P3{)&5Un{KD?`-e?r21!4vTTnN(4Y6Lin?UkSM z`MXCTC1@4A4~mvz%Rh2&EwY))LeoT=*`tMoqcEXI>TZU9WTP#l?uFv+@Dn~b(>xh2 z;>B?;Tz2SR&KVb>vGiBSB`@U7VIWFSo=LDSb9F{GF^DbmWAfpms8Sx9OX4CnBJca3 zlj9(x!dIjN?OG1X4l*imJNvRCk}F%!?SOfiOq5y^mZW)jFL@a|r-@d#f7 z2gmU8L3IZq0ynIws=}~m^#@&C%J6QFo~Mo4V`>v7MI-_!EBMMtb%_M&kvAaN)@ZVw z+`toz&WG#HkWDjnZE!6nk{e-oFdL^$YnbOCN}JC&{$#$O27@|Tn-skXr)2ml2~O!5 zX+gYoxhoc7qoU?C^3~&!U?kRFtnSEecWuH0B0OvLodgUAi}8p1 zrO6RSXHH}DMc$&|?D004DiOVMHV8kXCP@7NKB zgaZq^^O<7PoKEp72kby@W0Z!Y*Ay{&vfg#C&gG@YVR9g?FEocMUi1gSN$+V+ayF45{a zuDZDTN}mS|;BO%gEf}pjBfN2-gIrU#G5~cucA;dokXW89%>AyXJJI z9X4UlIWA|ZYHgbI z5?oFk@A=Ik7lrEQPDH!H+b`7_Y~aDb_qa=B2^Y&Ow41cU=4WDd40dp5(QS-WMN-=Y z9g;6_-JdNU;|6cPwf$ak*aJIcwL@1n$#l~zi{c{EW?T;DaW*E8DYq?Umtz{nJ&w-M zEMyTDrC&9K$d|kZe2#ws6)L=7K+{ zQw{XnV6UC$6-rW0emqm8wJoeZK)wJIcV?dST}Z;G0Arq{dVDu0&4kd%N!3F1*;*pW zR&qUiFzK=@44#QGw7k1`3t_d8&*kBV->O##t|tonFc2YWrL7_eqg+=+k;!F-`^b8> z#KWCE8%u4k@EprxqiV$VmmtiWxDLgnGu$Vs<8rppV5EajBXL4nyyZM$SWVm!wnCj-B!Wjqj5-5dNXukI2$$|Bu3Lrw}z65Lc=1G z^-#WuQOj$hwNGG?*CM_TO8Bg-1+qc>J7k5c51U8g?ZU5n?HYor;~JIjoWH-G>AoUP ztrWWLbRNqIjW#RT*WqZgPJXU7C)VaW5}MiijYbABmzoru6EmQ*N8cVK7a3|aOB#O& zBl8JY2WKfmj;h#Q!pN%9o@VNLv{OUL?rixHwOZuvX7{IJ{(EdPpuVFoQqIOa7giLVkBOKL@^smUA!tZ1CKRK}#SSM)iQHk)*R~?M!qkCruaS!#oIL1c z?J;U~&FfH#*98^G?i}pA{ z9Jg36t4=%6mhY(quYq*vSxptes9qy|7xSlH?G=S@>u>Ebe;|LVhs~@+06N<4CViBk zUiY$thvX;>Tby6z9Y1edAMQaiH zm^r3v#$Q#2T=X>bsY#D%s!bhs^M9PMAcHbCc0FMHV{u-dwlL;a1eJ63v5U*?Q_8JO zT#50!RD619#j_Uf))0ooADz~*9&lN!bBDRUgE>Vud-i5ck%vT=r^yD*^?Mp@Q^v+V zG#-?gKlr}Eeqifb{|So?HM&g91P8|av8hQoCmQXkd?7wIJwb z_^v8bbg`SAn{I*4bH$u(RZ6*xUhuA~hc=8czK8SHEKTzSxgbwi~9(OqJB&gwb^l4+m`k*Q;_?>Y-APi1{k zAHQ)P)G)f|AyjSgcCFps)Fh6Bca*Xznq36!pV6Az&m{O8$wGFD? zY&O*3*J0;_EqM#jh6^gMQKpXV?#1?>$ml1xvh8nSN>-?H=V;nJIwB07YX$e6vLxH( zqYwQ>qxwR(i4f)DLd)-$P>T-no_c!LsN@)8`e;W@)-Hj0>nJ-}Kla4-ZdPJzI&Mce zv)V_j;(3ERN3_@I$N<^|4Lf`B;8n+bX@bHbcZTopEmDI*Jfl)-pFDvo6svPRoo@(x z);_{lY<;);XzT`dBFpRmGrr}z5u1=pC^S-{ce6iXQlLGcItwJ^mZx{m$&DA_oEZ)B{_bYPq-HA zcH8WGoBG(aBU_j)vEy+_71T34@4dmSg!|M8Vf92Zj6WH7Q7t#OHQqWgFE3ARt+%!T z?oLovLVlnf?2c7pTc)~cc^($_8nyKwsN`RA-23ed3sdj(ys%pjjM+9JrctL;dy8a( z@en&CQmnV(()bu|Y%G1-4a(6x{aLytn$T-;(&{QIJB9vMox11U-1HpD@d(QkaJdEb zG{)+6Dos_L+O3NpWo^=gR?evp|CqEG?L&Ut#D*KLaRFOgOEK(Kq1@!EGcTfo+%A&I z=dLbB+d$u{sh?u)xP{PF8L%;YPPW53+@{>5W=Jt#wQpN;0_HYdw1{ksf_XhO4#2F= zyPx6Lx2<92L-;L5PD`zn6zwIH`Jk($?Qw({erA$^bC;q33hv!d!>%wRhj# zal^hk+WGNg;rJtb-EB(?czvOM=H7dl=vblBwAv>}%1@{}mnpUznfq1cE^sgsL0*4I zJ##!*B?=vI_OEVis5o+_IwMIRrpQyT_Sq~ZU%oY7c5JMIADzpD!Upz9h@iWg_>>~j zOLS;wp^i$-E?4<_cp?RiS%Rd?i;f*mOz=~(&3lo<=@(nR!_Rqiprh@weZlL!t#NCc zO!QTcInq|%#>OVgobj{~ixEUec`E25zJ~*DofsQdzIa@5^nOXj2T;8O`l--(QyU^$t?TGY^7#&FQ+2SS3B#qK*k3`ye?8jUYSajE5iBbJls75CCc(m3dk{t?- zopcER9{Z?TC)mk~gpi^kbbu>b-+a{m#8-y2^p$ka4n60w;Sc2}HMf<8JUvhCL0B&Btk)T`ctE$*qNW8L$`7!r^9T+>=<=2qaq-;ll2{`{Rg zc5a0ZUI$oG&j-qVOuKa=*v4aY#IsoM+1|c4Z)<}lEDvy;5huB@1RJPquU2U*U-;gu z=En2m+qjBzR#DEJDO`WU)hdd{Vj%^0V*KoyZ|5lzV87&g_j~NCjwv0uQVqXOb*QrQ zy|Qn`hxx(58c70$E;L(X0uZZ72M1!6oeg)(cdKO ze0gDaTz+ohR-#d)NbAH4x{I(21yjwvBQfmpLu$)|m{XolbgF!pmsqJ#D}(ylp6uC> z{bqtcI#hT#HW=wl7>p!38sKsJ`r8}lt-q%Keqy%u(xk=yiIJiUw6|5IvkS+#?JTBl z8H5(Q?l#wzazujH!8o>1xtn8#_w+397*_cy8!pQGP%K(Ga3pAjsaTbbXJlQF_+m+-UpUUent@xM zg%jqLUExj~o^vQ3Gl*>wh=_gOr2*|U64_iXb+-111aH}$TjeajM+I20xw(((>fej-@CIz4S1pi$(#}P7`4({6QS2CaQS4NPENDp>sAqD z$bH4KGzXGffkJ7R>V>)>tC)uax{UsN*dbeNC*v}#8Y#OWYwL4t$ePR?VTyIs!wea+ z5Urmc)X|^`MG~*dS6pGSbU+gPJoq*^a=_>$n4|P^w$sMBBy@f*Z^Jg6?n5?oId6f{ z$LW4M|4m502z0t7g<#Bx%X;9<=)smFolV&(V^(7Cv2-sxbxopQ!)*#ZRhTBpx1)Fc zNm1T%bONzv6@#|dz(w02AH8OXe>kQ#1FMCzO}2J_mST)+ExmBr9cva-@?;wnmWMOk z{3_~EX_xadgJGv&H@zK_8{(x84`}+c?oSBX*Ge3VdfTt&F}yCpFP?CpW+BE^cWY0^ zb&uBN!Ja3UzYHK-CTyA5=L zEMW{l3Usky#ly=7px648W31UNV@K)&Ub&zP1c7%)`{);I4b0Q<)B}3;NMG2JH=X$U zfIW4)4n9ZM`-yRj67I)YSLDK)qfUJ_ij}a#aZN~9EXrh8eZY2&=uY%2N0UFF7<~%M zsB8=erOWZ>Ct_#^tHZ|*q`H;A)5;ycw*IcmVxi8_0Xk}aJA^ath+E;xg!x+As(M#0=)3!NJR6H&9+zd#iP(m0PIW8$ z1Y^VX`>jm`W!=WpF*{ioM?C9`yOR>@0q=u7o>BP-eSHqCgMDj!2anwH?s%i2p+Q7D zzszIf5XJpE)IG4;d_(La-xenmF(tgAxK`Y4sQ}BSJEPs6N_U2vI{8=0C_F?@7<(G; zo$~G=8p+076G;`}>{MQ>t>7cm=zGtfbdDXm6||jUU|?X?CaE?(<6bKDYKeHlz}DA8 zXT={X=yp_R;HfJ9h%?eWvQ!dRgz&Su*JfNt!Wu>|XfU&68iRikRrHRW|ZxzRR^`eIGt zIeiDgVS>IeExKVRWW8-=A=yA`}`)ZkWBrZD`hpWIxBGkh&f#ijr449~m`j6{4jiJ*C!oVA8ZC?$1RM#K(_b zL9TW)kN*Y4%^-qPpMP7d4)o?Nk#>aoYHT(*g)qmRUb?**F@pnNiy6Fv9rEiUqD(^O zzyS?nBrX63BTRYduaG(0VVG2yJRe%o&rVrLjbxTaAFTd8s;<<@Qs>u(<193R8>}2_ zuwp{7;H2a*X7_jryzriZXMg?bTuegABb^87@SsKkr2)0Gyiax8KQWstw^v#ix45EVrcEhr>!NMhprl$InQMzjSFH54x5k9qHc`@9uKQzvL4ihcq{^B zPrVR=o_ic%Y>6&rMN)hTZsI7I<3&`#(nl+3y3ys9A~&^=4?PL&nd8)`OfG#n zwAMN$1&>K++c{^|7<4P=2y(B{jJsQ0a#U;HTo4ZmWZYvI{+s;Td{Yzem%0*k#)vjpB zia;J&>}ICate44SFYY3vEelqStQWFihx%^vQ@Do(sOy7yR2@WNv7Y9I^yL=nZr3mb zXKV5t@=?-Sk|b{XMhA7ZGB@2hqsx}4xwCW!in#C zI@}scZlr3-NFJ@NFaJlhyfcw{k^vvtGl`N9xSo**rDW4S}i zM9{fMPWo%4wYDG~BZ18BD+}h|GQKc-g^{++3MY>}W_uq7jGHx{mwE9fZiPCoxN$+7 zrODGGJrOkcPQUB(FD5aoS4g~7#6NR^ma7-!>mHuJfY5kTe6PpNNKC9GGRiu^L31uG z$7v`*JknQHsYB!Tm_W{a32TM099djW%5e+j0Ve_ct}IM>XLF1Ap+YvcrLV=|CKo6S zb+9Nl3_YdKP6%Cxy@6TxZ>;4&nTneadr z_ES90ydCev)LV!dN=#(*f}|ZORFdvkYBni^aLbUk>BajeWIOcmHP#8S)*2U~QKI%S zyrLmtPqb&TphJ;>yAxri#;{uyk`JJqODDw%(Z=2`1uc}br^V%>j!gS)D*q*f_-qf8&D;W1dJgQMlaH5er zN2U<%Smb7==vE}dDI8K7cKz!vs^73o9f>2sgiTzWcwY|BMYHH5%Vn7#kiw&eItCqa zIkR2~Q}>X=Ar8W|^Ms41Fm8o6IB2_j60eOeBB1Br!boW7JnoeX6Gs)?7rW0^5psc- zjS16yb>dFn>KPOF;imD}e!enuIniFzv}n$m2#gCCv4jM#ArwlzZ$7@9&XkFxZ4n!V zj3dyiwW4Ki2QG{@i>yuZXQizw_OkZI^-3otXC{!(lUpJF33gI60ak;Uqitp74|B6I zgg{b=Iz}WkhCGj1M=hu4#Aw173YxIVbISaoc z-nLZC*6Tgivd5V`K%GxhBsp@SUU60-rfc$=wb>zdJzXS&-5(NRRodFk;Kxk!S(O(a0e7oY=E( zAyS;Ow?6Q&XA+cnkCb{28_1N8H#?J!*$MmIwLq^*T_9-z^&UE@A(z9oGYtFy6EZef LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/packages/canon/canon-docs/app/globals.css b/packages/canon/canon-docs/app/globals.css new file mode 100644 index 0000000000..ce79569b3d --- /dev/null +++ b/packages/canon/canon-docs/app/globals.css @@ -0,0 +1,11 @@ +body { + display: flex; + flex-direction: row; + background-color: var(--canon-background); + color: var(--canon-text-primary); +} + +iframe { + border: none; + width: 100%; +} diff --git a/packages/canon/canon-docs/app/layout.tsx b/packages/canon/canon-docs/app/layout.tsx new file mode 100644 index 0000000000..8db924521a --- /dev/null +++ b/packages/canon/canon-docs/app/layout.tsx @@ -0,0 +1,30 @@ +import type { Metadata } from 'next'; +import { Sidebar } from '../components/sidebar'; +import '../../src/css/core.css'; +import '../../src/css/components.css'; +import './globals.css'; +import { CanonProvider } from '../../src/contexts/canon'; + +export const metadata: Metadata = { + title: 'Canon', + description: 'UI library for Backstage', +}; + +export default function RootLayout({ + children, +}: Readonly<{ + children: React.ReactNode; +}>) { + return ( + + + + <> + + {children} + + + + + ); +} diff --git a/packages/canon/canon-docs/app/page.module.css b/packages/canon/canon-docs/app/page.module.css new file mode 100644 index 0000000000..601dd3a93d --- /dev/null +++ b/packages/canon/canon-docs/app/page.module.css @@ -0,0 +1,3 @@ +.page { + flex: 1; +} diff --git a/packages/canon/canon-docs/app/page.tsx b/packages/canon/canon-docs/app/page.tsx new file mode 100644 index 0000000000..09b77144cf --- /dev/null +++ b/packages/canon/canon-docs/app/page.tsx @@ -0,0 +1,18 @@ +'use client'; + +import { useSearchParams } from 'next/navigation'; +import styles from './page.module.css'; + +export default function Home() { + const searchParams = useSearchParams(); + const theme = searchParams.get('theme') === 'dark' ? 'Dark' : 'Light'; + const chromaticId = '67584b7e8c2eb09c0422c27e-dmfbzicnkw'; + const chromaticUrl = `https://${chromaticId}.chromatic.com/iframe.html`; + const iframeUrl = `${chromaticUrl}?globals=theme%3A${theme}&args=&id=components-button--primary`; + + return ( +
+