From f422984a531ae6f3c7596150935bed665a96e349 Mon Sep 17 00:00:00 2001 From: Axel Hecht Date: Wed, 29 Jan 2025 17:56:20 +0100 Subject: [PATCH 1/3] Remove unused dependencies from backend-app-api and backend-defaults. Also adjust the dependencies of config-loader to continue building. Signed-off-by: Axel Hecht --- .changeset/brown-tips-battle.md | 5 ++ .changeset/dirty-coins-invite.md | 5 ++ .changeset/thick-zoos-matter.md | 5 ++ packages/backend-app-api/knip-report.md | 43 +--------------- packages/backend-app-api/package.json | 40 +-------------- packages/backend-defaults/knip-report.md | 20 ++------ packages/backend-defaults/package.json | 6 +-- packages/config-loader/package.json | 1 + yarn.lock | 65 ++---------------------- 9 files changed, 29 insertions(+), 161 deletions(-) create mode 100644 .changeset/brown-tips-battle.md create mode 100644 .changeset/dirty-coins-invite.md create mode 100644 .changeset/thick-zoos-matter.md diff --git a/.changeset/brown-tips-battle.md b/.changeset/brown-tips-battle.md new file mode 100644 index 0000000000..718b763bed --- /dev/null +++ b/.changeset/brown-tips-battle.md @@ -0,0 +1,5 @@ +--- +'@backstage/config-loader': patch +--- + +Add missing devDependencies diff --git a/.changeset/dirty-coins-invite.md b/.changeset/dirty-coins-invite.md new file mode 100644 index 0000000000..3e35c4a6ca --- /dev/null +++ b/.changeset/dirty-coins-invite.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-defaults': patch +--- + +Remove unused dependencies diff --git a/.changeset/thick-zoos-matter.md b/.changeset/thick-zoos-matter.md new file mode 100644 index 0000000000..641eb30dfe --- /dev/null +++ b/.changeset/thick-zoos-matter.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-app-api': patch +--- + +Remove unused dependencies diff --git a/packages/backend-app-api/knip-report.md b/packages/backend-app-api/knip-report.md index 5180cb33c8..13b4ec495e 100644 --- a/packages/backend-app-api/knip-report.md +++ b/packages/backend-app-api/knip-report.md @@ -1,49 +1,8 @@ # Knip report -## Unused dependencies (27) - -| Name | Location | Severity | -| :-------------------------------- | :----------- | :------- | -| @backstage/plugin-permission-node | package.json | error | -| @backstage/plugin-auth-node | package.json | error | -| @backstage/config-loader | package.json | error | -| @backstage/cli-common | package.json | error | -| @manypkg/get-packages | package.json | error | -| @backstage/config | package.json | error | -| winston-transport | package.json | error | -| @backstage/types | package.json | error | -| path-to-regexp | package.json | error | -| compression | package.json | error | -| triple-beam | package.json | error | -| node-forge | package.json | error | -| selfsigned | package.json | error | -| minimatch | package.json | error | -| stoppable | package.json | error | -| minimist | package.json | error | -| logform | package.json | error | -| winston | package.json | error | -| cookie | package.json | error | -| helmet | package.json | error | -| lodash | package.json | error | -| morgan | package.json | error | -| luxon | package.json | error | -| cors | package.json | error | -| jose | package.json | error | -| knex | package.json | error | -| uuid | package.json | error | - -## Unused devDependencies (10) +## Unused devDependencies (1) | Name | Location | Severity | | :-------------------------- | :----------- | :------- | | @backstage/backend-defaults | package.json | error | -| @types/compression | package.json | error | -| @types/http-errors | package.json | error | -| @types/node-forge | package.json | error | -| @types/stoppable | package.json | error | -| @types/minimist | package.json | error | -| @types/morgan | package.json | error | -| http-errors | package.json | error | -| supertest | package.json | error | -| msw | package.json | error | diff --git a/packages/backend-app-api/package.json b/packages/backend-app-api/package.json index 071a4a4ba4..a7cf31b23b 100644 --- a/packages/backend-app-api/package.json +++ b/packages/backend-app-api/package.json @@ -51,48 +51,12 @@ }, "dependencies": { "@backstage/backend-plugin-api": "workspace:^", - "@backstage/cli-common": "workspace:^", - "@backstage/config": "workspace:^", - "@backstage/config-loader": "workspace:^", - "@backstage/errors": "workspace:^", - "@backstage/plugin-auth-node": "workspace:^", - "@backstage/plugin-permission-node": "workspace:^", - "@backstage/types": "workspace:^", - "@manypkg/get-packages": "^1.1.3", - "compression": "^1.7.4", - "cookie": "^0.7.0", - "cors": "^2.8.5", - "helmet": "^6.0.0", - "jose": "^5.0.0", - "knex": "^3.0.0", - "lodash": "^4.17.21", - "logform": "^2.3.2", - "luxon": "^3.0.0", - "minimatch": "^9.0.0", - "minimist": "^1.2.5", - "morgan": "^1.10.0", - "node-forge": "^1.3.1", - "path-to-regexp": "^8.0.0", - "selfsigned": "^2.0.0", - "stoppable": "^1.1.0", - "triple-beam": "^1.4.1", - "uuid": "^11.0.0", - "winston": "^3.2.1", - "winston-transport": "^4.5.0" + "@backstage/errors": "workspace:^" }, "devDependencies": { "@backstage/backend-defaults": "workspace:^", "@backstage/backend-test-utils": "workspace:^", - "@backstage/cli": "workspace:^", - "@types/compression": "^1.7.0", - "@types/http-errors": "^2.0.0", - "@types/minimist": "^1.2.0", - "@types/morgan": "^1.9.0", - "@types/node-forge": "^1.3.0", - "@types/stoppable": "^1.1.0", - "http-errors": "^2.0.0", - "msw": "^1.0.0", - "supertest": "^7.0.0" + "@backstage/cli": "workspace:^" }, "configSchema": "config.d.ts" } diff --git a/packages/backend-defaults/knip-report.md b/packages/backend-defaults/knip-report.md index 22105d3219..169963316a 100644 --- a/packages/backend-defaults/knip-report.md +++ b/packages/backend-defaults/knip-report.md @@ -1,21 +1,11 @@ # Knip report -## Unused dependencies (6) +## Unused dependencies (2) -| Name | Location | Severity | -| :-------------------- | :----------- | :------- | -| @backstage/cli-common | package.json | error | -| @azure/identity | package.json | error | -| better-sqlite3 | package.json | error | -| isomorphic-git | package.json | error | -| minimist | package.json | error | -| mysql2 | package.json | error | - -## Unused devDependencies (1) - -| Name | Location | Severity | -| :--------------- | :----------- | :------- | -| @types/stoppable | package.json | error | +| Name | Location | Severity | +| :------------- | :----------- | :------- | +| better-sqlite3 | package.json | error | +| mysql2 | package.json | error | ## Referenced optional peerDependencies (1) diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 6cd1daa2f9..f43d161c50 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -127,12 +127,10 @@ "@aws-sdk/client-s3": "^3.350.0", "@aws-sdk/credential-providers": "^3.350.0", "@aws-sdk/types": "^3.347.0", - "@azure/identity": "^4.0.0", "@azure/storage-blob": "^12.5.0", "@backstage/backend-app-api": "workspace:^", "@backstage/backend-dev-utils": "workspace:^", "@backstage/backend-plugin-api": "workspace:^", - "@backstage/cli-common": "workspace:^", "@backstage/cli-node": "workspace:^", "@backstage/config": "workspace:^", "@backstage/config-loader": "workspace:^", @@ -164,7 +162,6 @@ "fs-extra": "^11.2.0", "git-url-parse": "^15.0.0", "helmet": "^6.0.0", - "isomorphic-git": "^1.23.0", "jose": "^5.0.0", "keyv": "^5.2.1", "knex": "^3.0.0", @@ -172,7 +169,6 @@ "logform": "^2.3.2", "luxon": "^3.0.0", "minimatch": "^9.0.0", - "minimist": "^1.2.5", "mysql2": "^3.0.0", "node-fetch": "^2.7.0", "node-forge": "^1.3.1", @@ -201,11 +197,11 @@ "@google-cloud/cloud-sql-connector": "^1.4.0", "@types/archiver": "^6.0.0", "@types/base64-stream": "^1.0.2", + "@types/compression": "^1.7.5", "@types/concat-stream": "^2.0.0", "@types/http-errors": "^2.0.0", "@types/node-forge": "^1.3.0", "@types/pg-format": "^1.0.5", - "@types/stoppable": "^1.1.0", "@types/yauzl": "^2.10.0", "aws-sdk-client-mock": "^4.0.0", "http-errors": "^2.0.0", diff --git a/packages/config-loader/package.json b/packages/config-loader/package.json index 0965311af0..2a58bbf80b 100644 --- a/packages/config-loader/package.json +++ b/packages/config-loader/package.json @@ -56,6 +56,7 @@ "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^", "@types/json-schema-merge-allof": "^0.6.0", + "@types/minimist": "^1.2.5", "msw": "^1.0.0", "zen-observable": "^0.10.0" } diff --git a/yarn.lock b/yarn.lock index d2f3bfbe85..ff6fddd183 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3432,43 +3432,7 @@ __metadata: "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" - "@backstage/cli-common": "workspace:^" - "@backstage/config": "workspace:^" - "@backstage/config-loader": "workspace:^" "@backstage/errors": "workspace:^" - "@backstage/plugin-auth-node": "workspace:^" - "@backstage/plugin-permission-node": "workspace:^" - "@backstage/types": "workspace:^" - "@manypkg/get-packages": ^1.1.3 - "@types/compression": ^1.7.0 - "@types/http-errors": ^2.0.0 - "@types/minimist": ^1.2.0 - "@types/morgan": ^1.9.0 - "@types/node-forge": ^1.3.0 - "@types/stoppable": ^1.1.0 - compression: ^1.7.4 - cookie: ^0.7.0 - cors: ^2.8.5 - helmet: ^6.0.0 - http-errors: ^2.0.0 - jose: ^5.0.0 - knex: ^3.0.0 - lodash: ^4.17.21 - logform: ^2.3.2 - luxon: ^3.0.0 - minimatch: ^9.0.0 - minimist: ^1.2.5 - morgan: ^1.10.0 - msw: ^1.0.0 - node-forge: ^1.3.1 - path-to-regexp: ^8.0.0 - selfsigned: ^2.0.0 - stoppable: ^1.1.0 - supertest: ^7.0.0 - triple-beam: ^1.4.1 - uuid: ^11.0.0 - winston: ^3.2.1 - winston-transport: ^4.5.0 languageName: unknown linkType: soft @@ -3559,14 +3523,12 @@ __metadata: "@aws-sdk/credential-providers": ^3.350.0 "@aws-sdk/types": ^3.347.0 "@aws-sdk/util-stream-node": ^3.350.0 - "@azure/identity": ^4.0.0 "@azure/storage-blob": ^12.5.0 "@backstage/backend-app-api": "workspace:^" "@backstage/backend-dev-utils": "workspace:^" "@backstage/backend-plugin-api": "workspace:^" "@backstage/backend-test-utils": "workspace:^" "@backstage/cli": "workspace:^" - "@backstage/cli-common": "workspace:^" "@backstage/cli-node": "workspace:^" "@backstage/config": "workspace:^" "@backstage/config-loader": "workspace:^" @@ -3586,13 +3548,13 @@ __metadata: "@opentelemetry/api": ^1.9.0 "@types/archiver": ^6.0.0 "@types/base64-stream": ^1.0.2 + "@types/compression": ^1.7.5 "@types/concat-stream": ^2.0.0 "@types/cors": ^2.8.6 "@types/express": ^4.17.6 "@types/http-errors": ^2.0.0 "@types/node-forge": ^1.3.0 "@types/pg-format": ^1.0.5 - "@types/stoppable": ^1.1.0 "@types/yauzl": ^2.10.0 archiver: ^7.0.0 aws-sdk-client-mock: ^4.0.0 @@ -3609,7 +3571,6 @@ __metadata: git-url-parse: ^15.0.0 helmet: ^6.0.0 http-errors: ^2.0.0 - isomorphic-git: ^1.23.0 jose: ^5.0.0 keyv: ^5.2.1 knex: ^3.0.0 @@ -3617,7 +3578,6 @@ __metadata: logform: ^2.3.2 luxon: ^3.0.0 minimatch: ^9.0.0 - minimist: ^1.2.5 msw: ^1.0.0 mysql2: ^3.0.0 node-fetch: ^2.7.0 @@ -4118,6 +4078,7 @@ __metadata: "@backstage/types": "workspace:^" "@types/json-schema": ^7.0.6 "@types/json-schema-merge-allof": ^0.6.0 + "@types/minimist": ^1.2.5 ajv: ^8.10.0 chokidar: ^3.5.2 fs-extra: ^11.2.0 @@ -19351,7 +19312,7 @@ __metadata: languageName: node linkType: hard -"@types/compression@npm:^1.7.0": +"@types/compression@npm:^1.7.5": version: 1.7.5 resolution: "@types/compression@npm:1.7.5" dependencies: @@ -20067,22 +20028,13 @@ __metadata: languageName: node linkType: hard -"@types/minimist@npm:^1.2.0": +"@types/minimist@npm:^1.2.5": version: 1.2.5 resolution: "@types/minimist@npm:1.2.5" checksum: 477047b606005058ab0263c4f58097136268007f320003c348794f74adedc3166ffc47c80ec3e94687787f2ab7f4e72c468223946e79892cf0fd9e25e9970a90 languageName: node linkType: hard -"@types/morgan@npm:^1.9.0": - version: 1.9.9 - resolution: "@types/morgan@npm:1.9.9" - dependencies: - "@types/node": "*" - checksum: 54bcb432f6ddb82b94bc1970204bedb3465a9afdcced6c2c6b481cf5f276266663ba3edc2b728b0118aa9720bfe5d8561c0259daaad6b027017e35936b107db0 - languageName: node - linkType: hard - "@types/ms@npm:*": version: 0.7.31 resolution: "@types/ms@npm:0.7.31" @@ -20741,15 +20693,6 @@ __metadata: languageName: node linkType: hard -"@types/stoppable@npm:^1.1.0": - version: 1.1.3 - resolution: "@types/stoppable@npm:1.1.3" - dependencies: - "@types/node": "*" - checksum: 53cbe08da33d2babb4ee98fe123c1e08bc5a26f547a2eaeac7c279743bbee5f9b49c0772db6a106471a07092916deb9bb7e0632fd502585d45d9c398f036938d - languageName: node - linkType: hard - "@types/stream-buffers@npm:^3.0.3": version: 3.0.7 resolution: "@types/stream-buffers@npm:3.0.7" From 3cb9129954f0bedb98e0ddafbd874615d3812a40 Mon Sep 17 00:00:00 2001 From: Axel Hecht Date: Thu, 30 Jan 2025 19:08:20 +0100 Subject: [PATCH 2/3] Remove unused git.ts Signed-off-by: Axel Hecht --- .../urlReader/lib/GiteaUrlReader.test.ts | 8 - .../urlReader/lib/HarnessUrlReader.test.ts | 8 - .../src/entrypoints/urlReader/lib/git.ts | 148 ------------------ 3 files changed, 164 deletions(-) delete mode 100644 packages/backend-defaults/src/entrypoints/urlReader/lib/git.ts diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/GiteaUrlReader.test.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/GiteaUrlReader.test.ts index 77c995c552..410610c2dc 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/GiteaUrlReader.test.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/GiteaUrlReader.test.ts @@ -35,14 +35,6 @@ const treeResponseFactory = DefaultReadTreeResponseFactory.create({ config: new ConfigReader({}), }); -jest.mock('./git', () => ({ - Git: { - fromAuth: () => ({ - clone: jest.fn(() => Promise.resolve({})), - }), - }, -})); - const giteaProcessor = new GiteaUrlReader( new GiteaIntegration( readGiteaConfig( diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/HarnessUrlReader.test.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/HarnessUrlReader.test.ts index 004e1931d0..1f8dbfd624 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/HarnessUrlReader.test.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/HarnessUrlReader.test.ts @@ -35,14 +35,6 @@ const treeResponseFactory = DefaultReadTreeResponseFactory.create({ config: new ConfigReader({}), }); -jest.mock('./git', () => ({ - Git: { - fromAuth: () => ({ - clone: jest.fn(() => Promise.resolve({})), - }), - }, -})); - const harnessProcessor = new HarnessUrlReader( new HarnessIntegration( readHarnessConfig( diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/git.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/git.ts deleted file mode 100644 index 119d4f64bd..0000000000 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/git.ts +++ /dev/null @@ -1,148 +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 fs from 'fs-extra'; -import isomorphicGit, { ProgressCallback, AuthCallback } from 'isomorphic-git'; -import http from 'isomorphic-git/http/node'; -import { LoggerService } from '@backstage/backend-plugin-api'; - -/** - * Configure static credential for authentication - * - * @public - */ -export type StaticAuthOptions = { - username?: string; - password?: string; - token?: string; - logger?: LoggerService; -}; - -/** - * Configure an authentication callback that can provide credentials on demand - * - * @public - */ -export type AuthCallbackOptions = { - onAuth: AuthCallback; - logger?: LoggerService; -}; - -function isAuthCallbackOptions( - options: StaticAuthOptions | AuthCallbackOptions, -): options is AuthCallbackOptions { - return 'onAuth' in options; -} - -/* -provider username password -Azure 'notempty' token -Bitbucket Cloud 'x-token-auth' token -Bitbucket Server username password or token -GitHub 'x-access-token' token -GitLab 'oauth2' token - -From : https://isomorphic-git.org/docs/en/onAuth with fix for GitHub - -Or token provided as `token` for Bearer auth header -instead of Basic Auth (e.g., Bitbucket Server). -*/ -/** - * A convenience wrapper around the `isomorphic-git` library. - * - * @public - */ -export class Git { - private readonly headers: { - [x: string]: string; - }; - - private constructor( - private readonly config: { - onAuth: AuthCallback; - token?: string; - logger?: LoggerService; - }, - ) { - this.onAuth = config.onAuth; - - this.headers = { - 'user-agent': 'git/@isomorphic-git', - ...(config.token ? { Authorization: `Bearer ${config.token}` } : {}), - }; - } - - /** https://isomorphic-git.org/docs/en/clone */ - async clone(options: { - url: string; - dir: string; - ref?: string; - depth?: number; - noCheckout?: boolean; - }): Promise { - const { url, dir, ref, depth, noCheckout } = options; - this.config.logger?.info(`Cloning repo {dir=${dir},url=${url}}`); - - try { - return await isomorphicGit.clone({ - fs, - http, - url, - dir, - ref, - singleBranch: true, - depth: depth ?? 1, - noCheckout, - onProgress: this.onProgressHandler(), - headers: this.headers, - onAuth: this.onAuth, - }); - } catch (ex) { - this.config.logger?.error(`Failed to clone repo {dir=${dir},url=${url}}`); - if (ex.data) { - throw new Error(`${ex.message} {data=${JSON.stringify(ex.data)}}`); - } - throw ex; - } - } - - private onAuth: AuthCallback; - - private onProgressHandler = (): ProgressCallback => { - let currentPhase = ''; - - return event => { - if (currentPhase !== event.phase) { - currentPhase = event.phase; - this.config.logger?.info(event.phase); - } - const total = event.total - ? `${Math.round((event.loaded / event.total) * 100)}%` - : event.loaded; - this.config.logger?.debug(`status={${event.phase},total={${total}}}`); - }; - }; - - static fromAuth = (options: StaticAuthOptions | AuthCallbackOptions) => { - if (isAuthCallbackOptions(options)) { - const { onAuth, logger } = options; - return new Git({ onAuth, logger }); - } - - const { username, password, token, logger } = options; - return new Git({ onAuth: () => ({ username, password }), token, logger }); - }; -} From 3fe91c2b750550f4e8280714a174f9e687ee4062 Mon Sep 17 00:00:00 2001 From: Axel Hecht Date: Wed, 5 Feb 2025 21:56:42 +0100 Subject: [PATCH 3/3] Update .changeset/brown-tips-battle.md Co-authored-by: Vincenzo Scamporlino Signed-off-by: Axel Hecht --- .changeset/brown-tips-battle.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/brown-tips-battle.md b/.changeset/brown-tips-battle.md index 718b763bed..86a1185cfe 100644 --- a/.changeset/brown-tips-battle.md +++ b/.changeset/brown-tips-battle.md @@ -2,4 +2,4 @@ '@backstage/config-loader': patch --- -Add missing devDependencies +Added `@types/minimist` to `devDependencies`