diff --git a/.changeset/fluffy-jeans-eat.md b/.changeset/fluffy-jeans-eat.md new file mode 100644 index 0000000000..8935c33937 --- /dev/null +++ b/.changeset/fluffy-jeans-eat.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli': patch +--- + +Added check for the `repository` field in the `repo fix` command. diff --git a/.changeset/friendly-terms-love.md b/.changeset/friendly-terms-love.md new file mode 100644 index 0000000000..18fc399740 --- /dev/null +++ b/.changeset/friendly-terms-love.md @@ -0,0 +1,5 @@ +--- +'@backstage/repo-tools': patch +--- + +Introduced `knip` to the `knip-reports` command, which generates a `knip-report.md` file for your packages with dependency warnings, if any. diff --git a/.changeset/fuzzy-turtles-camp.md b/.changeset/fuzzy-turtles-camp.md new file mode 100644 index 0000000000..ca1767bd30 --- /dev/null +++ b/.changeset/fuzzy-turtles-camp.md @@ -0,0 +1,5 @@ +--- +'@backstage/cli-node': patch +--- + +Added `repository` field to `BackstagePackageJson` type. diff --git a/.changeset/mighty-tomatoes-visit.md b/.changeset/mighty-tomatoes-visit.md new file mode 100644 index 0000000000..beb37d02ed --- /dev/null +++ b/.changeset/mighty-tomatoes-visit.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +adds a x-goog-api-client header to existing API requests in this plugin to clearly identify API requests from this GKE plugin. headers are formatted as follows where `libVersion` represents the current dotted version number of the Backstage GKE plugin and `libName` represent the current Google API used at backstage. diff --git a/.changeset/ninety-hats-kiss.md b/.changeset/ninety-hats-kiss.md new file mode 100644 index 0000000000..ff5ec770f7 --- /dev/null +++ b/.changeset/ninety-hats-kiss.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-playlist': patch +--- + +Conditionally render playlist description only when it's non-empty diff --git a/.changeset/perfect-colts-hammer.md b/.changeset/perfect-colts-hammer.md new file mode 100644 index 0000000000..616bcbda6f --- /dev/null +++ b/.changeset/perfect-colts-hammer.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +Organized imports in plugin.ts diff --git a/.changeset/poor-points-do.md b/.changeset/poor-points-do.md new file mode 100644 index 0000000000..198ef24c83 --- /dev/null +++ b/.changeset/poor-points-do.md @@ -0,0 +1,46 @@ +--- +'@backstage/plugin-catalog-backend-module-scaffolder-entity-model': patch +'@backstage/plugin-search-backend-module-stack-overflow-collator': patch +'@backstage/plugin-permission-backend-module-allow-all-policy': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch +'@backstage/plugin-auth-backend-module-oauth2-proxy-provider': patch +'@backstage/plugin-auth-backend-module-vmware-cloud-provider': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch +'@backstage/plugin-catalog-backend-module-backstage-openapi': patch +'@backstage/plugin-auth-backend-module-atlassian-provider': patch +'@backstage/plugin-auth-backend-module-microsoft-provider': patch +'@backstage/plugin-auth-backend-module-pinniped-provider': patch +'@backstage/plugin-auth-backend-module-github-provider': patch +'@backstage/plugin-auth-backend-module-gitlab-provider': patch +'@backstage/plugin-auth-backend-module-oauth2-provider': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +'@backstage/plugin-analytics-module-newrelic-browser': patch +'@backstage/plugin-auth-backend-module-oidc-provider': patch +'@backstage/plugin-auth-backend-module-okta-provider': patch +'@backstage/plugin-catalog-backend-module-github-org': patch +'@backstage/backend-dynamic-feature-service': patch +'@backstage/plugin-scaffolder-backend-module-gerrit': patch +'@backstage/plugin-scaffolder-backend-module-github': patch +'@backstage/plugin-scaffolder-backend-module-azure': patch +'@backstage/plugin-notifications-backend': patch +'@backstage/frontend-test-utils': patch +'@backstage/plugin-analytics-module-ga4': patch +'@backstage/plugin-notifications-common': patch +'@backstage/plugin-notifications-node': patch +'@backstage/frontend-app-api': patch +'@backstage/plugin-kubernetes-react': patch +'@backstage/e2e-test-utils': patch +'@backstage/plugin-kubernetes-node': patch +'@backstage/plugin-signals-backend': patch +'@backstage/plugin-app-visualizer': patch +'@backstage/plugin-notifications': patch +'@backstage/plugin-signals-react': patch +'@backstage/plugin-vault-backend': patch +'@backstage/plugin-signals-node': patch +'@backstage/plugin-vault-node': patch +'@backstage/plugin-app-node': patch +'@backstage/plugin-opencost': patch +'@backstage/plugin-signals': patch +--- + +Added or fixed the `repository` field in `package.json`. diff --git a/.changeset/renovate-235713b.md b/.changeset/renovate-235713b.md new file mode 100644 index 0000000000..148062dadb --- /dev/null +++ b/.changeset/renovate-235713b.md @@ -0,0 +1,11 @@ +--- +'@backstage/core-components': patch +'@backstage/plugin-catalog-react': patch +'@backstage/plugin-entity-validation': patch +'@backstage/plugin-gcp-projects': patch +'@backstage/plugin-scaffolder-react': patch +'@backstage/plugin-scaffolder': patch +'@backstage/plugin-techdocs-module-addons-contrib': patch +--- + +Updated dependency `@react-hookz/web` to `^24.0.0`. diff --git a/.changeset/renovate-2d87790.md b/.changeset/renovate-2d87790.md new file mode 100644 index 0000000000..5230172e2b --- /dev/null +++ b/.changeset/renovate-2d87790.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.17.0`. +Updated dependency `@rjsf/core` to `5.17.0`. +Updated dependency `@rjsf/material-ui` to `5.17.0`. +Updated dependency `@rjsf/validator-ajv8` to `5.17.0`. diff --git a/.changeset/renovate-c392808.md b/.changeset/renovate-c392808.md new file mode 100644 index 0000000000..4d7f660d34 --- /dev/null +++ b/.changeset/renovate-c392808.md @@ -0,0 +1,8 @@ +--- +'@backstage/plugin-gcalendar': patch +'@backstage/plugin-microsoft-calendar': patch +'@backstage/plugin-techdocs': patch +--- + +Updated dependency `dompurify` to `^3.0.0`. +Updated dependency `@types/dompurify` to `^3.0.0`. diff --git a/.changeset/twelve-shirts-buy.md b/.changeset/twelve-shirts-buy.md new file mode 100644 index 0000000000..6183c7dabd --- /dev/null +++ b/.changeset/twelve-shirts-buy.md @@ -0,0 +1,15 @@ +--- +'@backstage/plugin-catalog-backend': patch +'@backstage/plugin-catalog-node': patch +--- + +Add support for `onProcessingError` handler at the catalog plugin (new backend system). + +You can use `setOnProcessingErrorHandler` at the `catalogProcessingExtensionPoint` +as replacement for + +```ts +catalogBuilder.subscribe({ + onProcessingError: hander, +}); +``` diff --git a/.changeset/wicked-dolphins-wash.md b/.changeset/wicked-dolphins-wash.md new file mode 100644 index 0000000000..9258913c41 --- /dev/null +++ b/.changeset/wicked-dolphins-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-kubernetes-backend': patch +--- + +On LocalKubectlProxyClusterLocator, when resolving localhost, IPv4 address is placed before IPv6 address, ignoring the order from the DNS resolver. This change is necessary since by default kubectl proxy listen on IPv4 diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d10106e47f..75416ace16 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -86,3 +86,5 @@ yarn.lock @backstage/maintainers @backst /plugins/tech-insights-backend-module-jsonfc @backstage/maintainers @backstage/reviewers @xantier /plugins/tech-insights-tech-insights-common @backstage/maintainers @backstage/reviewers @xantier /plugins/tech-insights-tech-insights-node @backstage/maintainers @backstage/reviewers @xantier + +knip-report.md diff --git a/.github/vale/config/vocabularies/Backstage/accept.txt b/.github/vale/config/vocabularies/Backstage/accept.txt index 46b6e9b7d6..f34b11b4d3 100644 --- a/.github/vale/config/vocabularies/Backstage/accept.txt +++ b/.github/vale/config/vocabularies/Backstage/accept.txt @@ -186,6 +186,7 @@ Kaswell keepalive Keyv Knex +knip Koyeb KPIs Kuang diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 247770a74e..e2c7d5dc28 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -155,7 +155,7 @@ jobs: name: Test ${{ matrix.node-version }} services: postgres16: - image: postgres:16@sha256:4d1b17af6f66b852ee3a721f6691a2ca7352f9d28f570a6a48cee4ebe646b2fd + image: postgres:16@sha256:09f23e02d76670d3b346a3c00aa33a27cf57aab8341eedfcdaed41459d14f5c4 env: POSTGRES_PASSWORD: postgres options: >- @@ -166,7 +166,7 @@ jobs: ports: - 5432/tcp postgres12: - image: postgres:12@sha256:aafc7d3faafa5f95fa4709007c742864747a104c3d950f98bb606145208e4a77 + image: postgres:12@sha256:8ffdca6e9208aceb30653fa0cc1c38956303ace453944b54b4f71019cfe854c1 env: POSTGRES_PASSWORD: postgres options: >- @@ -177,7 +177,7 @@ jobs: ports: - 5432/tcp mysql8: - image: mysql:8@sha256:d7c20c5ba268c558f4fac62977f8c7125bde0630ff8946b08dde44135ef40df3 + image: mysql:8@sha256:2a9ef1075ff30c65bbcf4f96b25a03ea3b3f492c284e6c4a612c269ce4c5bb19 env: MYSQL_ROOT_PASSWORD: root options: >- diff --git a/.github/workflows/deploy_packages.yml b/.github/workflows/deploy_packages.yml index 7e4f297933..a7d2cd048e 100644 --- a/.github/workflows/deploy_packages.yml +++ b/.github/workflows/deploy_packages.yml @@ -23,7 +23,7 @@ jobs: services: postgres16: - image: postgres:16@sha256:4d1b17af6f66b852ee3a721f6691a2ca7352f9d28f570a6a48cee4ebe646b2fd + image: postgres:16@sha256:09f23e02d76670d3b346a3c00aa33a27cf57aab8341eedfcdaed41459d14f5c4 env: POSTGRES_PASSWORD: postgres options: >- @@ -34,7 +34,7 @@ jobs: ports: - 5432/tcp postgres12: - image: postgres:12@sha256:aafc7d3faafa5f95fa4709007c742864747a104c3d950f98bb606145208e4a77 + image: postgres:12@sha256:8ffdca6e9208aceb30653fa0cc1c38956303ace453944b54b4f71019cfe854c1 env: POSTGRES_PASSWORD: postgres options: >- @@ -45,7 +45,7 @@ jobs: ports: - 5432/tcp mysql8: - image: mysql:8@sha256:d7c20c5ba268c558f4fac62977f8c7125bde0630ff8946b08dde44135ef40df3 + image: mysql:8@sha256:2a9ef1075ff30c65bbcf4f96b25a03ea3b3f492c284e6c4a612c269ce4c5bb19 env: MYSQL_ROOT_PASSWORD: root options: >- diff --git a/.github/workflows/uffizzi-preview.yaml b/.github/workflows/uffizzi-preview.yaml index dc23ad4bf7..d898209e56 100644 --- a/.github/workflows/uffizzi-preview.yaml +++ b/.github/workflows/uffizzi-preview.yaml @@ -117,7 +117,7 @@ jobs: # Create/Update comment with action deployment status - name: Create or Update Comment with Deployment Notification id: notification - uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} @@ -165,7 +165,7 @@ jobs: echo "Access the \`backstage\` endpoint at [\`${BACKSTAGE_HOST}\`](http://${BACKSTAGE_HOST})" >> $GITHUB_STEP_SUMMARY - name: Create or Update Comment with Deployment URL - uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.notification.outputs.comment-id }} issue-number: ${{ github.event.pull_request.number }} @@ -229,7 +229,7 @@ jobs: direction: last - name: Update Comment with Deletion - uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3 + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 with: comment-id: ${{ steps.find-comment.outputs.comment-id }} issue-number: ${{ needs.cache-manifests-file.outputs.pr-number }} diff --git a/.github/workflows/verify_accessibility-noop.yml b/.github/workflows/verify_accessibility-noop.yml index 280f3006bd..07c92b5b5d 100644 --- a/.github/workflows/verify_accessibility-noop.yml +++ b/.github/workflows/verify_accessibility-noop.yml @@ -7,7 +7,7 @@ on: branches: [master] paths-ignore: - 'lighthouserc.js' - - '.github/workflows/verify_accessibility_core.yml' + - '.github/workflows/verify_accessibility.yml' - 'plugins/catalog/src/**' - 'plugins/catalog-react/src/**' - 'plugins/techdocs/src/**' diff --git a/.github/workflows/verify_accessibility.yml b/.github/workflows/verify_accessibility.yml index 7501d768c6..ec4cdb777c 100644 --- a/.github/workflows/verify_accessibility.yml +++ b/.github/workflows/verify_accessibility.yml @@ -1,11 +1,11 @@ name: Accessibility on: - # NOTE: If you change these you must update verify_accessibility_core-noop.yml as well + # NOTE: If you change these you must update verify_accessibility-noop.yml as well pull_request: branches: [master] paths: - 'lighthouserc.js' - - '.github/workflows/verify_accessibility_core.yml' + - '.github/workflows/verify_accessibility.yml' - 'plugins/catalog/src/**' - 'plugins/catalog-react/src/**' - 'plugins/techdocs/src/**' diff --git a/.github/workflows/verify_e2e-linux.yml b/.github/workflows/verify_e2e-linux.yml index 9fd2acafa4..315cb76963 100644 --- a/.github/workflows/verify_e2e-linux.yml +++ b/.github/workflows/verify_e2e-linux.yml @@ -19,7 +19,7 @@ jobs: services: postgres: - image: postgres:12@sha256:aafc7d3faafa5f95fa4709007c742864747a104c3d950f98bb606145208e4a77 + image: postgres:12@sha256:8ffdca6e9208aceb30653fa0cc1c38956303ace453944b54b4f71019cfe854c1 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres diff --git a/.github/workflows/verify_microsite_accessibility-noop.yml b/.github/workflows/verify_microsite_accessibility-noop.yml new file mode 100644 index 0000000000..4b63dc41cc --- /dev/null +++ b/.github/workflows/verify_microsite_accessibility-noop.yml @@ -0,0 +1,31 @@ +# NO-OP placeholder that always passes for other paths +# This is here so that we're able to set the status check as required + +name: Microsite Accessibility +on: + pull_request: + branches: [master] + paths-ignore: + - '.github/workflows/verify_microsite_accessibility.yml' + - 'microsite/scripts/**' + - 'microsite/src/**' + - 'microsite/data/**' + - 'microsite/blog/**' + - 'microsite/static/**' + - 'beps/**' + - 'mkdocs.yml' + - 'docs/**' +permissions: + contents: read + +jobs: + noop: + name: Microsite Accessibility + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + + - run: echo NOOP diff --git a/.github/workflows/verify_microsite_accessibility.yml b/.github/workflows/verify_microsite_accessibility.yml new file mode 100644 index 0000000000..eb9d3de683 --- /dev/null +++ b/.github/workflows/verify_microsite_accessibility.yml @@ -0,0 +1,40 @@ +name: Microsite Accessibility +on: + # NOTE: If you change these you must update verify_microsite_accessibility-noop.yml as well + pull_request: + branches: [master] + paths: + - '.github/workflows/verify_microsite_accessibility.yml' + - 'microsite/**' + - 'beps/**' + - 'mkdocs.yml' + - 'docs/**' +jobs: + lhci: + name: Microsite Accessibility + runs-on: ubuntu-latest + steps: + - name: Harden Runner + uses: step-security/harden-runner@63c24ba6bd7ba022e95695ff85de572c04a18142 # v2.7.0 + with: + egress-policy: audit + + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Use Node.js 18.x + uses: actions/setup-node@b39b52d1213e96004bfcb1c61a8a6fa8ab84f3e8 # v4.0.1 + with: + node-version: 18.x + + - name: top-level install + run: yarn install --immutable + + - name: yarn install + run: yarn install --immutable + working-directory: microsite + + - name: run Lighthouse CI + run: | + yarn dlx @lhci/cli@0.11.x --config=microsite/lighthouserc.js autorun + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/verify_storybook.yml b/.github/workflows/verify_storybook.yml index 5471555402..563d9b811c 100644 --- a/.github/workflows/verify_storybook.yml +++ b/.github/workflows/verify_storybook.yml @@ -51,7 +51,7 @@ jobs: - run: yarn build-storybook - - uses: chromaui/action@05a82adb1e6919df177f54777e81a2ef3e312323 # v10 + - uses: chromaui/action@c53f50952a7b6d99666d77d8a61eb1b58944d68a # v10 with: token: ${{ secrets.GITHUB_TOKEN }} # projectToken intentionally shared to allow collaborators to run Chromatic on forks diff --git a/.gitignore b/.gitignore index c0ef0d2001..e499faf29e 100644 --- a/.gitignore +++ b/.gitignore @@ -162,4 +162,7 @@ e2e-test-report/ *svg.dtmp # Scripts -plugins-report.csv \ No newline at end of file +plugins-report.csv + +# Temporary knip configs +knip.json diff --git a/.prettierignore b/.prettierignore index c54ee5d821..c561036ebb 100644 --- a/.prettierignore +++ b/.prettierignore @@ -6,6 +6,7 @@ coverage templates api-report.md api-report-*.md +knip-report.md cli-report.md plugins/scaffolder-backend/sample-templates .vscode diff --git a/OWNERS.md b/OWNERS.md index 4d6fb21a80..7ad21c6fee 100644 --- a/OWNERS.md +++ b/OWNERS.md @@ -37,14 +37,13 @@ Team: @backstage/discoverability-maintainers Scope: Discoverability within Backstage, including the home page, information architecture, and search -| Name | Organization | Team | GitHub | Discord | -| ------------------------ | ------------ | ---- | ---------------------------------------- | ------------------ | -| Avantika Iyer | Spotify | BUX | [tikabom](http://github.com/tikabom) | - | -| Camila Belo | Spotify | BUX | [camilaibs](http://github.com/camilaibs) | Camila Loiola#0226 | -| Emma Indal | Spotify | BUX | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 | -| Raghunandan Balachandran | Spotify | BUX | [soapraj](http://github.com/soapraj) | raghunandanb#1114 | -| Renan Mendes Carvalho | Spotify | BUX | [aitherios](http://github.com/aitherios) | aitherios#0593 | -| Bailey Brooks | Spotify | BUX | [bailey](http://github.com/bailey) | \_bailey4 | +| Name | Organization | Team | GitHub | Discord | +| ------------------------ | ------------ | -------------- | ---------------------------------------- | ----------------- | +| Avantika Iyer | Spotify | Infinite Buck$ | [tikabom](http://github.com/tikabom) | - | +| Emma Indal | Spotify | Infinite Buck$ | [emmaindal](http://github.com/emmaindal) | emmaindal#7503 | +| Djamaile Rahamat | Spotify | Infinite Buck$ | [djamaile](http://github.com/djamaile) | dyoqi | +| Raghunandan Balachandran | Spotify | Infinite Buck$ | [soapraj](http://github.com/soapraj) | raghunandanb#1114 | +| Bailey Brooks | Spotify | Infinite Buck$ | [bailey](http://github.com/bailey) | \_bailey4 | ### Helm Charts diff --git a/beps/0003-auth-architecture-evolution/README.md b/beps/0003-auth-architecture-evolution/README.md index 60d5eb74a5..e5937aab0d 100644 --- a/beps/0003-auth-architecture-evolution/README.md +++ b/beps/0003-auth-architecture-evolution/README.md @@ -54,6 +54,7 @@ The following goals are the primary focus of this BEP: - Basic improvements to the service-to-service auth service interfaces such that we are confident that we do not need to break them in the near future. - If possible we will keep using the existing symmetrical keys that are used today, but it is likely that we will need to break compatibility of existing tokens. - Encapsulation of user credentials in upstream service requests, avoiding the pattern where backend plugins re-use the user token directly for their outgoing requests. +- Separate out the ownership information out of the Backstage user tokens, since user tokens have been growing large enough to have an impact on performance and reliability. ### Non-Goals @@ -72,6 +73,8 @@ In order to allow either unauthenticated access or cookie-based access, a plugin For service-to-service communication we will move away from reusing user tokens in upstream requests. We will instead implement an "On-Behalf-Of" flow where incoming user credentials are encapsulated in a service token for the upstream request. In line with this the new auth service interfaces will aim to make it difficult to directly forward credentials from incoming requests, and instead encourage that plugin backends issue new service credentials for upstream requests. +An issue that has been identified in the current auth implementation is that the user information embedded in the Backstage user tokens can grow fairly large. In order to avoid that this becomes a widespread problem, especially as we implement cookie auth with a 4kb size limit, we will remove the ownership entity refs (`ent` claim) from the user tokens. There were already very few consumers of this information in practice - only the `permission-backend` and `signal-backend` plugin packages currently rely on this information. The ownership data will instead be available via a new `UserInfoService`, owned by the `auth-backend`. The implementation of this new service will keep relying on the `ent` claim of the user token initially, but we will also implement a new `/v1/userinfo` endpoint in the `auth-backend` that will migrate to transparently in the future. + ## Design Details ### `AuthService` Interface @@ -79,29 +82,54 @@ For service-to-service communication we will move away from reusing user tokens The new `AuthService` interface is defined as follows: ```ts -export type BackstageCredentials = { - token: string; +// These credential types are opaque and will also store some internal information, for example bearer tokens - user?: { - userEntityRef: string; - ownershipEntityRefs: string[]; - }; +export type BackstageUserCredentials = { + $$type: '@backstage/BackstageCredentials'; - service?: { - id: string; - }; + type: 'user'; + + userEntityRef: string; }; +export type BackstageServiceCredentials = { + $$type: '@backstage/BackstageCredentials'; + + type: 'service'; + + // Exact format TBD, possibly 'plugin:' or 'external:' + subject: string; + + // Not implemented in the first iteration, but this is how we might extend this in the future + permissions?: string[]; +}; + +type BackstageCredentials = + | BackstageUserCredentials + | BackstageServiceCredentials; + export interface AuthService { authenticate(token: string): Promise; + // TODO: should the caller provide the target plugin ID? + // TODO: how can we make it very difficult to forget to forward credentials issueToken(credentials: BackstageCredentials): Promise<{ token: string }>; } ``` -### `AuthService` Usage Patterns +### `UserInfoService` Interface -TODO +The new `UserInfoService` interface is defined as follows: + +```ts +export interface UserInfoService { + getUserInfo( + credentials: BackstageUserCredentials, + ): Promise<{ ownershipEntityRefs: string[] /* profile info too? */ }>; +} +``` + +The `UserInfoService` is exported by `@backstage/auth-node`, and the initial implementation will simply read the ownership refs from the `ent` claim of the underlying token of the user credentials. The next iteration will instead call the `/v1/userinfo` endpoint of the `auth-backend`, once that has been implemented. ### `HttpRouterService` Interface @@ -196,14 +224,27 @@ export default createBackendPlugin({ The new `HttpAuthService` interface is defined as follows: ```ts +export type BackstageUnauthorizedCredentials = { + $$type: '@backstage/BackstageCredentials'; + + type: 'unauthorized'; +}; + +type BackstageCredentialTypes = { + user: BackstageUserCredentials; + service: BackstageServiceCredentials; + unauthorized: BackstageUnauthorizedCredentials; +}; + export interface HttpAuthService { createHttpPluginRouterMiddleware(options: OptionsTBD): Handler; - credentials( + credentials( req: Request, - options?: HttpAuthServiceMiddlewareOptions, - ): BackstageCredentials; + options?: HttpAuthServiceMiddlewareOptions, + ): Promise; + // TODO: Keep an eye on this, might not be needed requestHeaders( credentials: BackstageCredentials, ): Promise>; @@ -212,7 +253,7 @@ export interface HttpAuthService { } ``` -### `HttpAuthService` Usage Patterns +### `AuthService`, `HttpAuthService` and `UserInfoService` Usage Patterns All of these usages patterns are from the perspective of a plugin backend. @@ -221,15 +262,10 @@ All of these usages patterns are from the perspective of a plugin backend. ```ts // All routes only allow authenticated users and services by default. router.get('/read-data', (req, res) => { - // TODO: user can currently be undefined, figure out best pattern to avoid that - const { user } = httpAuth.credentials(req); - if (!user) { - throw new NotAllowedError( - 'Service requests are not allowed on this endpoint', - ); - } + const credentials = await httpAuth.credentials(req, { allow: ['user'] }); // throws if not: user (or obo), user-cookie + const { ownershipEntityRefs } = await userInfo.getUserInfo(credentials); console.log( - `User ref=${user.userEntityRef} ownership=${user.ownershipEntityRefs}`, + `User ref=${credentials.userEntityRef} ownership=${ownershipEntityRefs} claims=${credentials.extraClaims}`, ); // ... }); @@ -238,11 +274,36 @@ router.get('/read-data', (req, res) => { #### Forward the user credentials from an incoming requests to upstream plugin backend ```ts +class CatalogIntegration { + async getEntity( + res: string, + options: { + credentials: BackstageUserCredentials | BackstageServiceCredentials; + }, + ) { + return catalogClient.getEntityByRef(req.params.entityRef, { + token: await auth.issueToken({ + forward: options.credentials, + }), + }); + } +} + +// Earlier in the router setup +const catalogIntegration = new CatalogIntegration(); + router.get('/read-data', (req, res) => { // The catalogClient will have a reference to the (plugin scoped) HttpAuthService, // which it uses to create the credential headers for the upstream request. const entity = await catalogClient.getEntityByRef(req.params.entityRef, { - credentials: httpAuth.credentials(req), + credentials: httpAuth.forwardCredentials(req, { + dangerouslyAllowUnauthenticated: true, + }), + }); + + // TODO: try this out in more places in plugins + const entity = await catalogIntegration.getEntity(req.params.entityRef, { + credentials: await httpAuth.credentials(req), }); // ... }); @@ -252,15 +313,17 @@ router.get('/read-data', (req, res) => { ```ts router.get('/read-data', (req, res) => { - const credentials = httpAuth.credentials(req); - if (credentials.user) { - res.json( - // Silly example just to highlight separate code paths for user and - // service requests - todoStore.listOwnedTodos({ owner: credentials.user.userEntityRef }), - ); + const credentials = await httpAuth.credentials(req, { + allow: ['user', 'service'], + }); + if (credentials.type === 'user') { + res.json(todoStore.listOwnedTodos({ owner: credentials.userEntityRef })); } else { - res.json(todoStore.listTodos()); + res.json( + todoStore.listTodos({ + serviceId: credentials.subject, + }), + ); } }); ``` @@ -294,9 +357,10 @@ router.get( (req, res) => { // These credentials don't actually contain an underlying user token for cookie-authed requests // If you try to pass them to the AuthService, it'll throw. - const { user } = httpAuth.credentials(req); + const credentials = await httpAuth.credentials(req, { allow: ['user'] }); + const { ownershipEntityRefs } = await userInfo.getUserInfo(credentials); console.log( - `User ref=${user.userEntityRef} ownership=${user.ownershipEntityRefs}`, + `User ref=${credentials.userEntityRef} ownership=${ownershipEntityRefs}`, ); // ... }, @@ -309,6 +373,19 @@ The existing `IdentityService` and `TokenManagerService` will be deprecated and The release plan for the `HttpAuthService` is TBD, but is likely to be shipped as a no-op for plugins using the old backend system. The goal is for all plugins using the new backend system to have endpoint security be opt-out, which will be a breaking change. +### Implementation Tasks + +- [ ] Implement `AuthService` +- [ ] Implement `HttpAuthService` - leave cookie auth as unimplemented for now +- [ ] Add `configure()` for `HttpRouterService`, using `HttpAuthService` +- [ ] Implement a compatibility wrapper in `backend-common` that accepts `AuthService`, `HttpAuthService`, `IdentityService`, and `TokenManagerService` (all optional), and returns implementations for `AuthService` and `HttpAuthService`, such hat existing plugins can use a single `createRouter` implementation for both the old and new backend systems. +- [ ] Implement `UserInfoService` in `@backstage/auth-node` - for now it will just extract the ownership entity refs from the token stored in the credentials +- [ ] Implement cookie auth in `HttpAuthService` - just put the user token in the cookie for now +- [ ] Migrate plugins: + - [ ] Permission backend + - [ ] TechDocs backend + - [ ] App backend + ## Dependencies No significant dependencies have been identified for this work, although any future security audits of Backstage are considered dependent on this work. @@ -316,3 +393,68 @@ No significant dependencies have been identified for this work, although any fut ## Alternatives An alternative to built-in protection from external access would be to keep relying on external mechanisms to protect access to Backstage. We feel that this is a suboptimal solution since it adds complexity to the adoption of Backstage, and increases the risk of misconfiguration and security breaches. Regardless of whether we add built-in protection or not the ability to protect API endpoints needs to be addressed in some way, since it is a requirement for the permission system to work. This means that the extra steps to ensure protection out of the box are fairly minimal when looking at just the delta for protecting API access. + +### Access Control Patterns + +These are the different patterns that we've considered for how plugins should control access to their endpoints. + +#### Separate methods / configuration for `use` + +This approach extends the `HttpRouterService` with separate methods or options for specifying the access control for different handlers. + +Pros: + +- We can make strict access control the default, making relaxed controls an opt-in +- The routing setup is quite explicit in what handlers allow for what access levels + +Cons: + +- Forces separation of the router, splitting it into separate handlers for different levels of access. +- Can be extremely confusing because the top-level middleware for more lax access will also apply to the more strict access levels. For example + + ```ts + const cookieRouter = Router(); + cookieRouter.use(rateLimit()); + http.useWithCookieAuthentication(cookieRouter); + + const mainRouter = Router(); + // rateLimit() will apply here too + http.use(mainRouter); + ``` + +This applied to any similar way of structuring this API, such as a single `.use()` method with additional options: + +```ts +http.use(cookieRouter, { allow: ['user-cookie'] }); +``` + +#### Separate configuration on different paths for `use` + +Similar to the previous approach, but also require that a path is provided. This removes much of the confusion around what middleware are applied. + +The downside of this approach is that it still has the drawback of forcing a separation of the router, but at the same it provides very little benefit over a top-level path configuration approach like `http.configure()`. The `'/static'` path in the below example essentially has the exact same logic as `.configure({ cookieAuthPaths: ['/static'] })` since it'd be implemented in the same way. The `.configure()` approach has the benefit of allowing plugin authors to decide whether they want to keep the routes separate or not. + +This does have the benefit of letting the framework know which exact routes are protected, which can be useful for introspection, although that benefit also applies to the `.configure()` approach. + +```ts +// This isn't too bad, but it's extremely similar to the configure() method since +// we're just matching on the path. The benefit of configure is that it allows you +// to keep everything in a singe router if desired. +http.use('/static', cookieRouter, { allow: ['user-cookie'] }); +``` + +#### Complete opt-out + +This approach simply enabled plugins to opt-out of the default access control, and instead require that they implement the necessary endpoint protection using `httpAuth.middleware()`. + +This approach makes it a bit easier to make mistakes compared to the `.configure()` approach, but at the same time it has the benefit of collection all access control login in a single place (the plugin router). It also doesn't allow the framework to see which endpoints have relaxed protection, which is a downside. + +Still, this is a pattern that is currently second in line if we don't go with the `.configure()` approach. + +```ts +http.dangerouslyDisableAuthentication(); +``` + +#### Leave access control to the plugin router + +Having strict access control be the default with explicit opt-out is an explicit goal of this work, so this is not an option that we are considering. diff --git a/contrib/.devcontainer/Dockerfile b/contrib/.devcontainer/Dockerfile index 05be7a6d7f..5c21c73acc 100644 --- a/contrib/.devcontainer/Dockerfile +++ b/contrib/.devcontainer/Dockerfile @@ -1,4 +1,4 @@ -FROM mcr.microsoft.com/devcontainers/typescript-node:20@sha256:185cde4e033cd68fb4c5c9eef94ba6bde0dac2f334ecd1a7cf6cd2c87f712d85 +FROM mcr.microsoft.com/devcontainers/typescript-node:20@sha256:381a1fde32704f229b439ade94816d5619f710e35698982ec35afcd9384ae6cf RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \ && apt-get -y install chromium \ diff --git a/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild b/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild index a0ab7e7afe..96edc80a77 100644 --- a/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild +++ b/contrib/docker/frontend-with-nginx/Dockerfile.dockerbuild @@ -46,7 +46,7 @@ RUN yarn workspace app build -FROM nginx:mainline@sha256:5f44022eab9198d75939d9eaa5341bc077eca16fa51d4ef32d33f1bd4c8cbe7d +FROM nginx:mainline@sha256:84c52dfd55c467e12ef85cad6a252c0990564f03c4850799bf41dd738738691f RUN apt-get update && apt-get -y install jq && rm -rf /var/lib/apt/lists/* diff --git a/contrib/docker/frontend-with-nginx/Dockerfile.hostbuild b/contrib/docker/frontend-with-nginx/Dockerfile.hostbuild index 7e58443e66..c29b0c1516 100644 --- a/contrib/docker/frontend-with-nginx/Dockerfile.hostbuild +++ b/contrib/docker/frontend-with-nginx/Dockerfile.hostbuild @@ -27,7 +27,7 @@ -FROM nginx:mainline@sha256:5f44022eab9198d75939d9eaa5341bc077eca16fa51d4ef32d33f1bd4c8cbe7d +FROM nginx:mainline@sha256:84c52dfd55c467e12ef85cad6a252c0990564f03c4850799bf41dd738738691f RUN apt-get update && apt-get -y install jq && rm -rf /var/lib/apt/lists/* diff --git a/docs/conf/writing.md b/docs/conf/writing.md index aef9620373..e0eb72f828 100644 --- a/docs/conf/writing.md +++ b/docs/conf/writing.md @@ -220,6 +220,8 @@ clientSecret: someGithubAppClientSecret webhookSecret: someWebhookSecret privateKey: | -----BEGIN RSA PRIVATE KEY----- - SomeRsaPrivateKey + SomeRsaPrivateKeySecurelyStored -----END RSA PRIVATE KEY----- ``` + +**Warning: Sensitive information, such as private keys, should not be hard coded**. We recommend that this entire file should be a secret and stored as such in a secure storage solution like Vault, to ensure they are neither exposed nor misused. This example key part only shows the format on how to use the yaml | syntax to make sure that the key is valid. diff --git a/docs/frontend-system/architecture/03-extensions.md b/docs/frontend-system/architecture/03-extensions.md index 46bfa3d86f..061c695abb 100644 --- a/docs/frontend-system/architecture/03-extensions.md +++ b/docs/frontend-system/architecture/03-extensions.md @@ -81,8 +81,6 @@ const extension = createExtension({ Note that while the `createExtension` is public API and used in many places, it is not typically what you use when building plugins and features. Instead there are many extension creator functions exported by both the core APIs and plugins that make it easier to create extensions for more specific usages. -... TODO ... - ## Extension Data Communication between extensions happens in one direction, from one child extension through the attachment point to its parent. The child extension outputs data which is then passed as inputs to the parent extension. This data is called Extension Data, where the shape of each individual piece of data is described by an Extension Data Reference. These references are created separately from the extensions themselves, and can be shared across multiple different kinds of extensions. Each reference consists of an ID and a TypeScript type that the data needs to conform to, and represents one type of data that can be shared between extensions. @@ -137,7 +135,7 @@ const extension = createExtension({ We provide default `coreExtensionData`, which provides commonly used `ExtensionDataRef`s - e.g. for `React.JSX.Element` and `RouteRef`. They can be used when creating your own extension. For example, the React Element extension data that we defined above is already provided as `coreExtensionData.reactElement`. - +For a full list and explanations of all types of core extension data, see the [core extension data reference](../building-plugins/04-built-in-data-refs.md). ### Optional Extension Data diff --git a/docs/frontend-system/building-apps/01-index.md b/docs/frontend-system/building-apps/01-index.md new file mode 100644 index 0000000000..e23f628fb6 --- /dev/null +++ b/docs/frontend-system/building-apps/01-index.md @@ -0,0 +1,148 @@ +--- +id: index +title: Building Frontend Apps +sidebar_label: Overview +# prettier-ignore +description: Building frontend apps using the new frontend system +--- + +> **NOTE: The new frontend system is in alpha and is only supported by a small number of plugins.** + +To get set up quickly with your own Backstage project you can create a Backstage App. + +A Backstage App is a monorepo setup that includes everything you need to run Backstage in your own environment. + +## Creating a new app + +To create a new Backstage app we recommend using the `@backstage/create-app` command line, and the easiest way to run this package is with `npx`: + +:::note +The create-app CLI requires Node.js Active LTS Release. +::: + +```sh +# The command bellow creates a Backstage App inside the current folder. +# The name of the app-folder is the name that was provided when prompted. +npx @backstage/create-app@latest +``` + +The created-app is currently templated for legacy frontend system applications, so the app wiring code it creates needs to be migrated, see [the app instance](#the-app-instance) section for an example. + +## The app instance + +The starting point of a frontend app is the `createApp` function, which accepts a single options object as its only parameter. It is imported from `@backstage/frontend-app-api`, which is where you will find most of the common APIs for building apps. + +This is how to create a minimal app: + +```tsx title="in src/index.ts" +import ReactDOM from 'react-dom/client'; +import { createApp } from '@backstage/frontend-app-api'; +import catalogPlugin from '@backstage/plugin-catalog/alpha'; + +// Create your app instance +const app = createApp({ + // Features such as plugins can be installed explicitly, but we will explore other options later on + features: [catalogPlugin], +}); + +// This creates a React element that renders the entire app +const root = app.createRoot(); + +// Just like any other React we need a root element. No server side rendering is used. +const rootEl = document.getElementById('root')!; + +ReactDOM.createRoot(rootEl).render(root); +``` + +Note that `createRoot` returns the root element that is rendered by React. The above example is installing a catalog plugin and using default settings for the app, as no options other than the `features` array are passed to the `createApp` function. + +Visit the [built-in extensions](#customize-or-override-built-in-extensions) section to see what is installed by default in a Backstage application. + +## Configure your app + +### Bind external routes + +Linking routes from different plugins requires this configuration. You can do this either through a configuration file or by coding, visit [this](https://backstage.io/docs/frontend-system/architecture/routes#binding-external-route-references) page for instructions. + +### Enable feature discovery + +Use this setting to enable experimental feature discovery when building your app with `@backstage/cli`. With this configuration your application tries to discover and install package extensions automatically, check [here](../architecture/02-app.md#feature-discovery) for more details. + +:::warning +Remember that package extensions that are not auto-discovered must be manually added to the application when creating an app. See [features](#install-features-manually) for more details. +::: + +### Configure extensions individually + +It is possible to enable, disable and configure extensions individually in the `app-config.yaml` config file. To get familiar with what is available for app extensions personalization, go to the [built-in extensions](./02-built-in-extensions.md) documentation. For plugin customizations, we recommend that you read the instructions in each plugin's README file. + +### Customize or override built-in extensions + +Previously you would customize the application route, components, apis, sidebar, etc. through the code in `App.tsx`. Now we want you to write less code and install more extensions to customize your Backstage instance. See [here](../building-plugins/03-extension-types.md) which types of extensions are available for you to customize your application. + +## Use code to customize the app at a more granular level + +### Install features manually + +A manual installation is required if your packages are not discovered automatically, either because you are not using `@backstage/cli` to build your application or because the features are defined in local modules in the app package. In order to manually install a feature, you must import it and pass it to the `createApp` function: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; +// This plugin was create as a local module in the app +import { somePlugin } from './plugins'; + +const app = createApp({ + features: [somePlugin], +}); + +export default app.createRoot(); +``` + +:::info +You can also pass overrides to the features array, for more details, please read the [extension overrides](../architecture/05-extension-overrides.md) documentation. +::: + +### Using an async features loader + +In case you need to perform asynchronous operations before passing features to the `createApp` function, define a [feature loader](https://backstage.io/docs/reference/frontend-app-api.createappfeatureloader/) object and pass it to the `features` option: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; + +const app = createApp({ + features: { + getLoaderName: () => '', + // there is a reference to the config api in the options param + load: async _options => { + // returning a lazy loaded plugins and overrides array + // could be util for module federation + return import('./features').then(m => m.default); + }, + }, +}); + +export default app.createRoot(); +``` + +### Lazy load your configuration file + +In some cases we want to load our configuration from a backend server and to do so, you can pass an callback to the `configLoader` option when calling the `createApp` function, the callback should return a promise of an object with the config object: + +```tsx title="packages/app/src/App.tsx" +import { createApp } from '@backstage/frontend-app-api'; +import { getConfigFromServer } from './utils'; + +// Example lazy loading the app configuration +const app = createApp({ + // Returns Promise<{ config: ConfigApi }> + configLoader: async () => { + // Calls an async utility method that fetches the config object from the server + const config = await getConfigFromServer(); + // Feel free to manipulate the config object before returning it + // A common example is conditionally modify the config based on the running enviroment + return { config }; + }, +}); + +export default app.createRoot(); +``` diff --git a/docs/frontend-system/building-apps/02-built-in-extensions.md b/docs/frontend-system/building-apps/02-built-in-extensions.md new file mode 100644 index 0000000000..4f8417f74f --- /dev/null +++ b/docs/frontend-system/building-apps/02-built-in-extensions.md @@ -0,0 +1,190 @@ +--- +id: built-in-extensions +title: App Built-in Extensions +sidebar_label: Built-in extensions +# prettier-ignore +description: Configuring or overriding built-in extensions +--- + +Built-in extensions are default app extensions that are always installed when you create a Backstage app. + +## Disable built-in extensions + +All built-in extensions can be disabled in the same way as you disable any other extension: + +```yaml title="app-config.yaml" +extensions: + # Disabling the built-in app root alert element + - app-root-element:app/alert-display: false +``` + +:::warning +Be careful when disabling built-in extensions, as there may be other extensions depending on their existence. For example, the built-in "alert display" extension displays messages retrieved via [AlertApi](https://backstage.io/docs/reference/core-plugin-api.alertapi) and disabling this extension will cause the application to no longer display these messages unless you install another extension that displays messages from `AlertApi`. +::: + +## Override built-in extensions + +You can override any built-in extension whenever their customizations, whether through configuration or input, do not meet a use case for your Backstage instance. Check out [this](../architecture/05-extension-overrides.md) documentation on how to override application extensions. + +:::warning +Be aware there could be some implementation requirements to properly override an built-in extension, such as using same apis and do not remove inputs or configurations otherwise you can cause a side effect in other parts of the system that expects same minimal behavior. +::: + +## Default built-in extensions + +### App + +This extension is the first extension attached to the extension tree. It is responsible for receiving the application's root element and other Frontend framework inputs. + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ------------ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| root | The app root element. | [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata) | false | The [`App/Root`](#app-root) extension output. | No creator available, configure or override the [`App/Root`](#app-root) extension. | +| apis | The app apis factories. | [createApiExtension.factoryDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createapiextension.factorydataref) | false | See [default apis](#default-apis-extensions). | [createApiExtension](https://backstage.io/docs/reference/frontend-plugin-api.createapiextension) | +| themes | The app themes list. | [createThemeExtension.themeDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createthemeextension.themedataref) | false | See [default themes](#default-theme-extensions). | [createThemeExtension](https://backstage.io/docs/reference/frontend-plugin-api.createthemeextension) | +| components | The app components list. | [createComponentExtension.componentDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createcomponentextension.componentdataref) | false | See [default components](#default-components-extensions). | [createComponentExtension](https://backstage.io/docs/reference/frontend-plugin-api.createcomponentextension) | +| translations | The app translations list. | [createTranslationExtension.translationDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createtranslationextension.translationdataref) | false | - | [createTranslationExtension](https://backstage.io/docs/reference/frontend-plugin-api.createtranslationextension) | + +#### Default theme extensions + +Extensions that provides default theme inputs for the `App` extension. + +| kind | namespace | name | id | +| :---: | :-------: | :---: | :---------------: | +| theme | app | light | `theme:app/light` | +| theme | app | dark | `theme:app/dark` | + +#### Default components extensions + +Extensions that provides default components inputs for the `App` extension. + +| kind | namespace | name | id | +| :--------: | :-------: | :-----------------------------------: | :----------------------------------------------------: | +| components | app | core.components.progress | `components:app/core.components.progress` | +| components | app | core.components.notFoundErrorPage | `components:app/core.components.notFoundErrorPage` | +| components | app | core.components.errorBoundaryFallback | `components:app/core.components.errorBoundaryFallback` | + +#### Default apis extensions + +Extensions that provides default apis inputs for the `App` extension. + +| kind | namespace | name | id | +| :--: | :------------------------: | :--: | :------------------------------: | +| api | core.discovery | - | `api:core.discovery` | +| api | core.alert | - | `api:core.alert` | +| api | core.analytics | - | `api:core.analytics` | +| api | core.error | - | `api:core.error` | +| api | core.storage | - | `api:core.storage` | +| api | core.fetch | - | `api:core.fetch` | +| api | core.oauthrequest | - | `api:core.oauthrequest` | +| api | core.auth.google | - | `api:core.auth.google` | +| api | core.auth.microsoft | - | `api:core.auth.microsoft` | +| api | core.auth.github | - | `api:core.auth.github` | +| api | core.auth.okta | - | `api:core.auth.okta` | +| api | core.auth.gitlab | - | `api:core.auth.gitlab` | +| api | core.auth.onelogin | - | `api:core.auth.onelogin` | +| api | core.auth.bitbucket | - | `api:core.auth.bitbucket` | +| api | core.auth.bitbucket-server | - | `api:core.auth.bitbucket-server` | +| api | core.auth.atlassian | - | `api:core.auth.atlassian` | +| api | plugin.permission.api | - | `api:plugin.permission.api` | + +### App root + +This is the extension that creates the app root element, so it renders root level components such as app router and layout. + +#### Inputs + +| Name | Description | Requirements | Optional | Default | Extension creator | +| ---------- | --------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | +| router | A React component that should manager the app routes context. | It must be one [router](https://reactrouter.com/en/main/routers/picking-a-router#web-projects) component or a custom component compatible with the 'react-router' library. | true | [BrowserRouter](https://reactrouter.com/en/main/router-components/browser-router) | [createRouterExtension](https://backstage.io/docs/reference/frontend-plugin-api.createrouterextension) | +| signInPage | A React component that should render the app sign-in page. | Should call the `onSignInSuccess` prop when the user has been successfully authorized, otherwise the user will not be correctly redirected to the application home page. | true | The default `AppRoot` extension does not use a default component for this input, it bypasses the user authentication check and always renders all routes when a login page is not installed. | [createSignInPageExtension](https://backstage.io/docs/reference/frontend-plugin-api.createsigninpageextension/) | +| children | A React component that renders the app sidebar and main content in a particular layout. | - | false | The [`App/Layout`](#app-layout) extension output. | No creator available, configure or override the [`App/Layout`](#app-layout) extension. | +| elements | React elements to be rendered outside of the app layout, such as shared popups. | - | false | See [default elements](#default-app-root-elements-extensions). | [createAppRootElementExtension](https://backstage.io/docs/reference/frontend-plugin-api.createapprootelementextension/) | +| wrappers | React components that should wrap the root element. | - | true | - | [createAppRootWrapperExtension](https://backstage.io/docs/reference/frontend-plugin-api.createapprootwrapperextension/) | + +#### Default app root elements extensions + +##### Alert Display + +An app root element extension that displays messages posted via the [`AlertApi`](https://backstage.io/docs/reference/core-plugin-api.alertapi). + +| kind | namespace | name | id | +| :--------------: | :-------: | :-----------: | :----------------------------------: | +| app-root-element | app | alert-display | `app-root-element:app/alert-display` | + +###### Configurations + +| Key | Type | Default value | Description | +| -------------------- | -------------------------------------------------------------------------- | ----------------------------------------- | ----------------------------------------------------------------- | +| `transientTimeoutMs` | number | 5000 | Time in milliseconds to wait before displaying messages. | +| `anchorOrigin` | { vertical: 'top' \| 'bottom', horizontal: 'left' \| 'center' \| 'right' } | { vertical: 'top', horizontal: 'center' } | Position on the screen where the message alert will be displayed. | + +###### Override or disable the extension + +If you do not want to display alerts, disable this extension or if the available settings do not meet your needs, override this extension. + +:::warning +The built-in "alert display" extension displays messages retrieved via [AlertApi](https://backstage.io/docs/reference/core-plugin-api.alertapi) and disabling this extension will cause the application to no longer display these messages unless you install another extension that displays messages from `AlertApi`. +::: + +##### OAuth Request Dialog + +An app root element extension that renders the oauth request dialog, it is based on the [oauthRequestApi](https://backstage.io/docs/reference/core-plugin-api.oauthrequestapi/). + +| kind | namespace | name | id | +| :--------------: | :-------: | :------------------: | :-----------------------------------------: | +| app-root-element | app | oauth-request-dialog | `app-root-element:app/oauth-request-dialog` | + +### App layout + +Renders the app's sidebar and content in a specific layout. + +| kind | namespace | name | id | +| :--: | :-------: | :----: | :----------: | +| - | app | layout | `app/layout` | + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ------- | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------- | -------- | ------- | ------------------------------------ | +| nav | A React element that renders the app sidebar. | [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata) | false | - | Override the `App/Nav` extension. | +| content | A React element that renders the app content. | [coreExtensionData.reactElement](https://backstage.io/docs/reference/frontend-plugin-api.coreextensiondata) | false | - | Override the `App/Routes` extension. | + +### App nav + +Extension responsible for rendering the logo and items in the app's sidebar. + +| kind | namespace | name | id | +| :--: | :-------: | :--: | :-------: | +| - | app | nav | `app/nav` | + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ----- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------------------------- | +| logos | A nav logos object. | [createNavLogoExtension.logoElementsDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createnavlogoextension.logoelementsdataref) | true | - | [createNavLogoExtension](https://backstage.io/docs/reference/frontend-plugin-api.createnavlogoextension) | +| items | Nav items target objects. | [createNavItemExtension.targetDataRef](https://backstage.io/docs/reference/frontend-plugin-api.createnavitemextension.targetdataref) | true | - | [createNavItemExtension](https://backstage.io/docs/reference/frontend-plugin-api.createnavitemextension) | + +### App routes + +Renders a route element for each route received as input and a `NotFoundErrorPage` component. + +| kind | namespace | name | id | +| :--: | :-------: | :----: | :----------: | +| - | app | routes | `app/routes` | + +#### Caveats + +Be careful when overriding this extension, as to do so correctly you must consider these implementation requirements: + +- The routing system is managed by more than one extension, and they all use `react-router` behind the scenes. There are also some utilities that are based on the same `routing` library like `useRouteRefParams`. Therefore, you cannot use a different library without causing side effects in these other extensions and helper utilities; +- Don't remove configs or inputs, just extend these things yourself with optional new options, otherwise it will cause breaking changes for extensions like `createPageExtension` that depend on this type of inputs; +- Remember to user the route refs for getting paths dynamically, otherwise if an adopter modifies a path through configuration, the route is not going to point to the configured path; +- Adopters expect to be able to customize the `NotFoundErrorPage` component via Components API, you should render this component for routes not configured. + +#### Inputs + +| Name | Description | Type | Optional | Default | Extension creator | +| ------ | ----------------------- | ---------------------------------------------------------------------------------------------------------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------- | +| routes | The route objects list. | `{ path: coreExtensionData.routePath, ref: coreExtensionData.routeRef.optional(), element: coreExtensionData.reactElement }` | false | - | [createPageExtension](https://backstage.io/docs/reference/frontend-plugin-api.createpageextension) | diff --git a/docs/frontend-system/building-plugins/04-built-in-data-refs.md b/docs/frontend-system/building-plugins/04-built-in-data-refs.md new file mode 100644 index 0000000000..dacbbf30f1 --- /dev/null +++ b/docs/frontend-system/building-plugins/04-built-in-data-refs.md @@ -0,0 +1,61 @@ +--- +id: built-in-data-refs +title: Built-in data refs +sidebar_label: Built-in data refs +# prettier-ignore +description: Configuring or overriding built-in extension data references +--- + +> **NOTE: The new frontend system is in alpha and is only supported by a small number of plugins.** + +To have a better understanding of extension data references please read [the corresponding architecture section](../architecture/03-extensions.md#extension-data) first. + +## Built-in extension data references + +Data references help to define the inputs and outputs of an extension. A data ref is uniquely identified through its `id`. Through the data ref, strong typing is enforced for the input/output of the extension. + +### `reactElement` + +| id | type | +| :-----------------: | :-----------: | +| `core.reactElement` | `JSX.Element` | + +The `reactElement` data reference can be used for defining the extension input/output of React elements. Example usage could be something like this: + +```tsx +import { + coreExtensionData, + createExtensionInput, + createPageExtension, +} from '@backstage/frontend-plugin-api'; + +const homePage = createPageExtension({ + defaultPath: '/home', + routeRef: rootRouteRef, + inputs: { + props: createExtensionInput({ + children: coreExtensionData.reactElement.optional(), + }), + }, +}); +``` + +### `routePath` + +| id | type | +| :-----------------: | :------: | +| `core.routing.path` | `string` | + +The `routePath` data reference can be used for defining the extension input/output of string paths. + +### `routeRef` + +| id | type | +| :----------------: | :--------: | +| `core.routing.ref` | `RouteRef` | + +The `routeRef` data reference can be used for defining the extension input/output of route references. + +### Other data references + +There are other data refs in the frontend system you might stumble upon while building your plugin. Most of them were created for use cases inside the core of the system, but they can be used also in your plugin. diff --git a/microsite/data/plugins/statuspage.yaml b/microsite/data/plugins/statuspage.yaml new file mode 100644 index 0000000000..652052defc --- /dev/null +++ b/microsite/data/plugins/statuspage.yaml @@ -0,0 +1,10 @@ +--- +title: Statuspage.io Plugin +author: AxisCommunications +authorUrl: https://github.com/AxisCommunications +category: Monitoring +description: The Statuspage plugin allows you to embedd https://statuspage.io components, component groups and dashboards in Backstage. +documentation: https://github.com/AxisCommunications/backstage-plugins/blob/main/plugins/statuspage/README.md +iconUrl: https://raw.githubusercontent.com/AxisCommunications/backstage-plugins/main/plugins/statuspage/media/logo.png +npmPackageName: '@axis-backstage/plugin-statuspage' +addedDate: '2024-02-06' diff --git a/microsite/lighthouserc.js b/microsite/lighthouserc.js new file mode 100644 index 0000000000..f0024ee0b3 --- /dev/null +++ b/microsite/lighthouserc.js @@ -0,0 +1,68 @@ +/* + * 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. + */ + +var sidebars = require('./sidebars.json'); + +module.exports = { + ci: { + collect: { + url: [ + /** Home */ + 'http://localhost:3000', + /** Docs - Getting Started */ + 'http://localhost:3000/docs/getting-started', + /** Docs - Software Catalog */ + 'http://localhost:3000/docs/features/software-catalog', + /** Docs - Create a Plugin */ + 'http://localhost:3000/docs/plugins/create-a-plugin', + /** Docs - Designing for Backstage */ + 'http://localhost:3000/docs/dls/design', + /** Blog */ + 'http://localhost:3000/blog', + /** Plugins */ + 'http://localhost:3000/plugins', + /** Demos */ + 'http://localhost:3000/demos', + /** Community */ + 'http://localhost:3000/community', + /** Releases */ + ...sidebars.releases['Release Notes'].map( + path => `http://localhost:3000/docs/${path}`, + ), + ], + settings: { + onlyCategories: ['accessibility'], + output: ['html', 'json'], + outputPath: './.lighthouseci/reports', + preset: 'desktop', + }, + // refers to root package scripts + startServerCommand: 'yarn run start:microsite', + startServerReadyPattern: 'compiled successfully', + startServerReadyTimeout: 600000, + numberOfRuns: 1, + }, + assert: { + assertions: { + 'categories:performance': 'off', + 'categories:pwa': 'off', + 'categories:best-practices': 'off', + 'categories:seo': 'off', + 'categories:accessibility': ['error', { minScore: 0.95 }], + }, + }, + }, +}; diff --git a/microsite/sidebars.json b/microsite/sidebars.json index e76faac0ed..146d8db059 100644 --- a/microsite/sidebars.json +++ b/microsite/sidebars.json @@ -413,7 +413,16 @@ "items": [ "frontend-system/building-plugins/index", "frontend-system/building-plugins/testing", - "frontend-system/building-plugins/extension-types" + "frontend-system/building-plugins/extension-types", + "frontend-system/building-plugins/built-in-data-refs" + ] + }, + { + "type": "category", + "label": "Building Apps", + "items": [ + "frontend-system/building-apps/index", + "frontend-system/building-apps/built-in-extensions" ] }, { diff --git a/microsite/src/pages/community/index.tsx b/microsite/src/pages/community/index.tsx index fdb97b39ec..42c42ae0c3 100644 --- a/microsite/src/pages/community/index.tsx +++ b/microsite/src/pages/community/index.tsx @@ -88,8 +88,8 @@ const Community = () => { }, { name: 'VMWare', - url: 'https://www.vmware.com', - logo: 'img/partner-logo-vmware.png', + url: 'https://tanzu.vmware.com/', + logo: 'img/partner-logo-tanzubybroadcom.png', }, ]; //#endregion diff --git a/microsite/static/img/partner-logo-tanzubybroadcom.png b/microsite/static/img/partner-logo-tanzubybroadcom.png new file mode 100644 index 0000000000..0bd5586203 Binary files /dev/null and b/microsite/static/img/partner-logo-tanzubybroadcom.png differ diff --git a/microsite/static/img/partner-logo-vmware.png b/microsite/static/img/partner-logo-vmware.png deleted file mode 100644 index 049975ca15..0000000000 Binary files a/microsite/static/img/partner-logo-vmware.png and /dev/null differ diff --git a/microsite/yarn.lock b/microsite/yarn.lock index 8bbef32fa1..b858d2bf13 100644 --- a/microsite/yarn.lock +++ b/microsite/yarn.lock @@ -2701,90 +2701,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-arm64@npm:1.3.107" +"@swc/core-darwin-arm64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-arm64@npm:1.4.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-x64@npm:1.3.107" +"@swc/core-darwin-x64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-x64@npm:1.4.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.107" +"@swc/core-linux-arm-gnueabihf@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.4.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.107" +"@swc/core-linux-arm64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-gnu@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.107" +"@swc/core-linux-arm64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-musl@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.107" +"@swc/core-linux-x64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-gnu@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-musl@npm:1.3.107" +"@swc/core-linux-x64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-musl@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.107" +"@swc/core-win32-arm64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-arm64-msvc@npm:1.4.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.107" +"@swc/core-win32-ia32-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-ia32-msvc@npm:1.4.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.107" +"@swc/core-win32-x64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-x64-msvc@npm:1.4.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.107 - resolution: "@swc/core@npm:1.3.107" + version: 1.4.0 + resolution: "@swc/core@npm:1.4.0" dependencies: - "@swc/core-darwin-arm64": 1.3.107 - "@swc/core-darwin-x64": 1.3.107 - "@swc/core-linux-arm-gnueabihf": 1.3.107 - "@swc/core-linux-arm64-gnu": 1.3.107 - "@swc/core-linux-arm64-musl": 1.3.107 - "@swc/core-linux-x64-gnu": 1.3.107 - "@swc/core-linux-x64-musl": 1.3.107 - "@swc/core-win32-arm64-msvc": 1.3.107 - "@swc/core-win32-ia32-msvc": 1.3.107 - "@swc/core-win32-x64-msvc": 1.3.107 + "@swc/core-darwin-arm64": 1.4.0 + "@swc/core-darwin-x64": 1.4.0 + "@swc/core-linux-arm-gnueabihf": 1.4.0 + "@swc/core-linux-arm64-gnu": 1.4.0 + "@swc/core-linux-arm64-musl": 1.4.0 + "@swc/core-linux-x64-gnu": 1.4.0 + "@swc/core-linux-x64-musl": 1.4.0 + "@swc/core-win32-arm64-msvc": 1.4.0 + "@swc/core-win32-ia32-msvc": 1.4.0 + "@swc/core-win32-x64-msvc": 1.4.0 "@swc/counter": ^0.1.1 "@swc/types": ^0.1.5 peerDependencies: @@ -2813,14 +2813,14 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 0dccff50461fb8c0f4af053b70e555c91386cb07aa7657a7328d58e397d15640723587549416d8fa7dcc073ad11b39318146bd50ec4a82345ce2ce39c7ba4c00 + checksum: cef6459ba707362e88373f1c2c779c760a7fdf06c0123856be005bb012de91cb913b37fb49e485ac551494a1ee46fb6369c5aca9d453e1e5e391a8514c0db185 languageName: node linkType: hard -"@swc/counter@npm:^0.1.1": - version: 0.1.1 - resolution: "@swc/counter@npm:0.1.1" - checksum: bb974babd493ba01c0d4a95ab610c3fc15fbf609c08cb0342798e485f57ecc0950abbf84e07124e63c5fe610b492d9a8dd03701d3b9ef7329d9e8bf3cc44980f +"@swc/counter@npm:^0.1.1, @swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 languageName: node linkType: hard @@ -11500,12 +11500,14 @@ __metadata: linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.4 - resolution: "swc-loader@npm:0.2.4" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: f23bfe8900b35abdcb9910a2749f3c9d66edf5c660afc67fcf7983647eaec322e024d1edd3bd9fd48bd3191eea0616f67b5f8b5f923e3a648fa5b448683c3213 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard diff --git a/package.json b/package.json index 3592a3df84..d3188d483a 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,12 @@ "start-backend": "yarn workspace example-backend start", "start:next": "yarn workspace example-app-next start", "start-backend:next": "yarn workspace example-backend-next start", + "start:microsite": "cd microsite/ && yarn start", "build:backend": "yarn workspace example-backend build", "build:all": "backstage-cli repo build --all", "build:api-reports": "yarn build:api-reports:only --tsc", "build:api-reports:only": "backstage-repo-tools api-reports --allow-warnings 'packages/core-components,plugins/+(catalog|catalog-import|git-release-manager|jenkins|kubernetes)' -o ae-wrong-input-file-type --validate-release-tags", + "build:knip-reports": "backstage-repo-tools knip-reports", "build:api-docs": "LANG=en_EN yarn build:api-reports --docs --exclude 'plugins/@(adr|adr-backend|adr-common|airbrake|airbrake-backend|allure|analytics-module-ga|analytics-module-ga4|analytics-module-newrelic-browser|apache-airflow|api-docs|api-docs-module-protoc-gen-doc|apollo-explorer|app-visualizer|azure-devops|azure-devops-backend|azure-devops-common|azure-sites|azure-sites-backend|azure-sites-common|badges|badges-backend|bazaar|bazaar-backend|bitbucket-cloud-common|bitrise|catalog-graph|catalog-graphql|catalog-import|catalog-unprocessed-entities|cicd-statistics|cicd-statistics-module-gitlab|circleci|cloudbuild|code-climate|code-coverage|code-coverage-backend|codescene|config-schema|cost-insights|cost-insights-common|dynatrace|entity-feedback|entity-feedback-backend|entity-feedback-common|entity-validation|example-todo-list|example-todo-list-backend|example-todo-list-common|firehydrant|fossa|gcalendar|gcp-projects|git-release-manager|github-actions|github-deployments|github-issues|github-pull-requests-board|gitops-profiles|gocd|graphiql|graphql-backend|graphql-voyager|ilert|jenkins|jenkins-backend|jenkins-common|kafka|kafka-backend|lighthouse|lighthouse-backend|lighthouse-common|linguist|linguist-backend|linguist-common|microsoft-calendar|newrelic|newrelic-dashboard|nomad|nomad-backend|octopus-deploy|opencost|pagerduty|periskop|periskop-backend|playlist|playlist-backend|playlist-common|proxy-backend|puppetdb|rollbar|rollbar-backend|sentry|shortcuts|splunk-on-call|stack-overflow|stack-overflow-backend|stackstorm|tech-radar|tech-radar-2|todo|todo-backend|xcmetrics)'", "build:plugins-report": "node ./scripts/build-plugins-report", "tsc": "tsc", @@ -43,6 +45,10 @@ "prepare": "husky", "postinstall": "husky || true" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage" + }, "workspaces": { "packages": [ "packages/*", @@ -86,6 +92,7 @@ "eslint-plugin-testing-library": "^6.0.0", "fs-extra": "10.1.0", "husky": "^9.0.0", + "knip": "^4.3.1", "lint-staged": "^15.0.0", "minimist": "^1.2.5", "node-gyp": "^10.0.0", diff --git a/packages/app-defaults/knip-report.md b/packages/app-defaults/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/app-defaults/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/app-next-example-plugin/knip-report.md b/packages/app-next-example-plugin/knip-report.md new file mode 100644 index 0000000000..d6aa71307d --- /dev/null +++ b/packages/app-next-example-plugin/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------|:-------------| +| msw | package.json | +| cross-fetch | package.json | + diff --git a/packages/app-next/knip-report.md b/packages/app-next/knip-report.md new file mode 100644 index 0000000000..65927e1a55 --- /dev/null +++ b/packages/app-next/knip-report.md @@ -0,0 +1,82 @@ +# Knip report + +## Unused dependencies (64) + +| Name | Location | +|:-------------------------------------------------|:-------------| +| lodash | package.json | +| history | package.json | +| react-use | package.json | +| @octokit/rest | package.json | +| zen-observable | package.json | +| @material-ui/lab | package.json | +| @backstage/theme | package.json | +| @backstage/plugin-org | package.json | +| @backstage/plugin-adr | package.json | +| @backstage/plugin-todo | package.json | +| @backstage/plugin-gocd | package.json | +| app-next-example-plugin | package.json | +| @backstage/plugin-kafka | package.json | +| @backstage/app-defaults | package.json | +| @backstage/plugin-sentry | package.json | +| @backstage/plugin-search | package.json | +| @backstage/plugin-badges | package.json | +| @backstage/catalog-model | package.json | +| @backstage/plugin-rollbar | package.json | +| @backstage/plugin-jenkins | package.json | +| @backstage/plugin-explore | package.json | +| @backstage/plugin-catalog | package.json | +| @circleci/backstage-plugin | package.json | +| @backstage/plugin-puppetdb | package.json | +| @backstage/plugin-playlist | package.json | +| @backstage/plugin-newrelic | package.json | +| @backstage/plugin-linguist | package.json | +| @backstage/plugin-devtools | package.json | +| @backstage/plugin-api-docs | package.json | +| @backstage/plugin-airbrake | package.json | +| @backstage/plugin-shortcuts | package.json | +| @backstage/plugin-dynatrace | package.json | +| @backstage/plugin-stackstorm | package.json | +| @backstage/plugin-scaffolder | package.json | +| @backstage/plugin-lighthouse | package.json | +| @backstage/plugin-kubernetes | package.json | +| @backstage/plugin-cloudbuild | package.json | +| @backstage/plugin-azure-sites | package.json | +| @backstage/plugin-search-react | package.json | +| @backstage/plugin-gcp-projects | package.json | +| @backstage/plugin-azure-devops | package.json | +| @backstage/plugin-tech-insights | package.json | +| @backstage/plugin-search-common | package.json | +| @backstage/plugin-cost-insights | package.json | +| @backstage/plugin-code-coverage | package.json | +| @backstage/plugin-catalog-react | package.json | +| @backstage/plugin-catalog-graph | package.json | +| @backstage/plugin-techdocs-react | package.json | +| @backstage/plugin-octopus-deploy | package.json | +| @backstage/plugin-github-actions | package.json | +| @backstage/plugin-catalog-common | package.json | +| @backstage/plugin-apache-airflow | package.json | +| @backstage/plugin-linguist-common | package.json | +| @backstage/plugin-entity-feedback | package.json | +| @backstage/plugin-scaffolder-react | package.json | +| @backstage/plugin-permission-react | package.json | +| @roadiehq/backstage-plugin-travis-ci | package.json | +| @roadiehq/backstage-plugin-buildkite | package.json | +| @backstage/plugin-newrelic-dashboard | package.json | +| @oriflame/backstage-plugin-score-card | package.json | +| @roadiehq/backstage-plugin-github-insights | package.json | +| @backstage/plugin-catalog-unprocessed-entities | package.json | +| @roadiehq/backstage-plugin-github-pull-requests | package.json | +| @backstage/plugin-techdocs-module-addons-contrib | package.json | + +## Unused devDependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| cross-env | package.json | +| @types/jquery | package.json | +| @testing-library/dom | package.json | +| @types/zen-observable | package.json | +| @testing-library/react | package.json | +| @testing-library/user-event | package.json | + diff --git a/packages/app-next/package.json b/packages/app-next/package.json index 3848870f53..4d9ee93474 100644 --- a/packages/app-next/package.json +++ b/packages/app-next/package.json @@ -2,6 +2,11 @@ "name": "example-app-next", "version": "0.0.6-next.2", "private": true, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/app-next" + }, "backstage": { "role": "frontend" }, diff --git a/packages/app/knip-report.md b/packages/app/knip-report.md new file mode 100644 index 0000000000..f22347da9f --- /dev/null +++ b/packages/app/knip-report.md @@ -0,0 +1,38 @@ +# Knip report + +## Unused dependencies (15) + +| Name | Location | +|:----------------------------------|:-------------| +| vite | package.json | +| history | package.json | +| react-router | package.json | +| @octokit/rest | package.json | +| zen-observable | package.json | +| vite-plugin-html | package.json | +| @material-ui/lab | package.json | +| @backstage/theme | package.json | +| @vitejs/plugin-react | package.json | +| vite-plugin-node-polyfills | package.json | +| @backstage/plugin-airbrake | package.json | +| @backstage/frontend-app-api | package.json | +| @backstage/plugin-azure-sites | package.json | +| @backstage/plugin-search-common | package.json | +| @backstage/plugin-linguist-common | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:----------------------------|:-------------| +| cross-env | package.json | +| @types/jquery | package.json | +| @testing-library/dom | package.json | +| @types/zen-observable | package.json | +| @testing-library/user-event | package.json | + +## Unlisted dependencies (1) + +| Name | Location | +|:------------|:---------------------------------------------------------| +| @rjsf/utils | src/components/scaffolder/customScaffolderExtensions.tsx | + diff --git a/packages/backend-app-api/knip-report.md b/packages/backend-app-api/knip-report.md new file mode 100644 index 0000000000..355dd47ada --- /dev/null +++ b/packages/backend-app-api/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| winston-transport | package.json | + diff --git a/packages/backend-common/knip-report.md b/packages/backend-common/knip-report.md new file mode 100644 index 0000000000..4ee6339bb6 --- /dev/null +++ b/packages/backend-common/knip-report.md @@ -0,0 +1,24 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:----------------------|:-------------| +| mysql2 | package.json | +| @types/webpack-env | package.json | +| @manypkg/get-packages | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-------------------|:-------------| +| mysql2 | package.json | +| better-sqlite3 | package.json | +| @types/webpack-env | package.json | + +## Referenced optional peerDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| pg-connection-string | package.json | + diff --git a/packages/backend-defaults/knip-report.md b/packages/backend-defaults/knip-report.md new file mode 100644 index 0000000000..4c06faddc0 --- /dev/null +++ b/packages/backend-defaults/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/backend-test-utils | package.json | + diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index 5cb374a872..6959c0f67b 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -33,10 +33,10 @@ }, "dependencies": { "@backstage/backend-app-api": "workspace:^", - "@backstage/backend-common": "workspace:^", - "@backstage/backend-plugin-api": "workspace:^" + "@backstage/backend-common": "workspace:^" }, "devDependencies": { + "@backstage/backend-plugin-api": "workspace:^", "@backstage/backend-test-utils": "workspace:^", "@backstage/cli": "workspace:^" }, diff --git a/packages/backend-dev-utils/knip-report.md b/packages/backend-dev-utils/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/backend-dev-utils/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/backend-dynamic-feature-service/knip-report.md b/packages/backend-dynamic-feature-service/knip-report.md new file mode 100644 index 0000000000..23abb2f791 --- /dev/null +++ b/packages/backend-dynamic-feature-service/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------------------------|:-------------| +| @backstage/errors | package.json | +| @backstage/plugin-search-common | package.json | + diff --git a/packages/backend-dynamic-feature-service/package.json b/packages/backend-dynamic-feature-service/package.json index 08e3af8cec..01616e38b8 100644 --- a/packages/backend-dynamic-feature-service/package.json +++ b/packages/backend-dynamic-feature-service/package.json @@ -9,6 +9,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/backend-dynamic-feature-service" + }, "backstage": { "role": "node-library" }, diff --git a/packages/backend-next/knip-report.md b/packages/backend-next/knip-report.md new file mode 100644 index 0000000000..7f0063fa72 --- /dev/null +++ b/packages/backend-next/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (7) + +| Name | Location | +|:-------------------------------------------------|:-------------| +| @backstage/backend-tasks | package.json | +| @backstage/plugin-auth-node | package.json | +| @backstage/backend-plugin-api | package.json | +| @backstage/plugin-permission-node | package.json | +| @backstage/plugin-permission-common | package.json | +| @backstage/plugin-search-backend-node | package.json | +| @backstage/plugin-catalog-backend-module-openapi | package.json | + diff --git a/packages/backend-openapi-utils/knip-report.md b/packages/backend-openapi-utils/knip-report.md new file mode 100644 index 0000000000..a8d532ade5 --- /dev/null +++ b/packages/backend-openapi-utils/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:------------------------------|:-------------| +| lodash | package.json | +| @backstage/backend-plugin-api | package.json | + diff --git a/packages/backend-plugin-api/knip-report.md b/packages/backend-plugin-api/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/backend-plugin-api/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/backend-tasks/knip-report.md b/packages/backend-tasks/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/backend-tasks/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/backend-test-utils/knip-report.md b/packages/backend-test-utils/knip-report.md new file mode 100644 index 0000000000..21168511a0 --- /dev/null +++ b/packages/backend-test-utils/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused dependencies (5) + +| Name | Location | +|:------------------|:-------------| +| pg | package.json | +| msw | package.json | +| mysql2 | package.json | +| better-sqlite3 | package.json | +| @backstage/errors | package.json | + diff --git a/packages/backend/knip-report.md b/packages/backend/knip-report.md new file mode 100644 index 0000000000..e86fa28ba7 --- /dev/null +++ b/packages/backend/knip-report.md @@ -0,0 +1,26 @@ +# Knip report + +## Unused dependencies (12) + +| Name | Location | +|:--------------------------------------------------|:-------------| +| pg | package.json | +| luxon | package.json | +| mysql2 | package.json | +| example-app | package.json | +| @octokit/rest | package.json | +| better-sqlite3 | package.json | +| @gitbeaker/node | package.json | +| pg-connection-string | package.json | +| azure-devops-node-api | package.json | +| @backstage/plugin-tech-insights-node | package.json | +| @backstage/plugin-azure-sites-common | package.json | +| @backstage/plugin-scaffolder-backend-module-rails | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------------------|:-------------| +| @types/luxon | package.json | +| @types/express-serve-static-core | package.json | + diff --git a/packages/catalog-client/knip-report.md b/packages/catalog-client/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/catalog-client/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/catalog-model/knip-report.md b/packages/catalog-model/knip-report.md new file mode 100644 index 0000000000..50ad53c764 --- /dev/null +++ b/packages/catalog-model/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-------------------|:-------------| +| @types/json-schema | package.json | + diff --git a/packages/cli-common/knip-report.md b/packages/cli-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/cli-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/cli-node/api-report.md b/packages/cli-node/api-report.md index 71be6c4bd4..4bd152dca8 100644 --- a/packages/cli-node/api-report.md +++ b/packages/cli-node/api-report.md @@ -55,6 +55,14 @@ export interface BackstagePackageJson { registry?: string; }; // (undocumented) + repository?: + | string + | { + type: string; + url: string; + directory: string; + }; + // (undocumented) scripts?: { [key: string]: string; }; diff --git a/packages/cli-node/knip-report.md b/packages/cli-node/knip-report.md new file mode 100644 index 0000000000..3f331a31e4 --- /dev/null +++ b/packages/cli-node/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------|:-------------| +| semver | package.json | + diff --git a/packages/cli-node/src/monorepo/PackageGraph.ts b/packages/cli-node/src/monorepo/PackageGraph.ts index fb46dbde26..cd01ec833f 100644 --- a/packages/cli-node/src/monorepo/PackageGraph.ts +++ b/packages/cli-node/src/monorepo/PackageGraph.ts @@ -58,6 +58,14 @@ export interface BackstagePackageJson { registry?: string; }; + repository?: + | string + | { + type: string; + url: string; + directory: string; + }; + dependencies?: { [key: string]: string; }; diff --git a/packages/cli/knip-report.md b/packages/cli/knip-report.md new file mode 100644 index 0000000000..788465700c --- /dev/null +++ b/packages/cli/knip-report.md @@ -0,0 +1,70 @@ +# Knip report + +## Unused dependencies (28) + +| Name | Location | +|:---------------------------------|:-------------| +| util | package.json | +| glob | package.json | +| buffer | package.json | +| sucrase | package.json | +| process | package.json | +| postcss | package.json | +| esbuild | package.json | +| @swc/jest | package.json | +| @swc/core | package.json | +| @svgr/core | package.json | +| cross-fetch | package.json | +| jest-runtime | package.json | +| @swc/helpers | package.json | +| replace-in-file | package.json | +| jest-css-modules | package.json | +| @svgr/plugin-jsx | package.json | +| @svgr/plugin-svgo | package.json | +| @types/webpack-env | package.json | +| eslint-plugin-react | package.json | +| terser-webpack-plugin | package.json | +| jest-environment-jsdom | package.json | +| eslint-plugin-jsx-a11y | package.json | +| @sucrase/webpack-loader | package.json | +| eslint-plugin-react-hooks | package.json | +| eslint-plugin-deprecation | package.json | +| eslint-formatter-friendly | package.json | +| @spotify/eslint-config-react | package.json | +| @typescript-eslint/eslint-plugin | package.json | + +## Unused devDependencies (13) + +| Name | Location | +|:----------------------------------------|:-------------| +| del | package.json | +| ts-node | package.json | +| nodemon | package.json | +| @types/ejs | package.json | +| @types/svgo | package.json | +| @backstage/theme | package.json | +| @types/http-proxy | package.json | +| @backstage/dev-utils | package.json | +| @backstage/core-app-api | package.json | +| @backstage/core-components | package.json | +| @types/terser-webpack-plugin | package.json | +| @backstage/backend-plugin-api | package.json | +| @types/rollup-plugin-peer-deps-external | package.json | + +## Referenced optional peerDependencies (4) + +| Name | Location | +|:---------------------------|:-------------| +| vite | package.json | +| vite-plugin-html | package.json | +| @vitejs/plugin-react | package.json | +| vite-plugin-node-polyfills | package.json | + +## Unlisted dependencies (3) + +| Name | Location | +|:-------------------|:-------------------------------------------| +| prettier | src/commands/migrate/packageLintConfigs.ts | +| react-dom/client | src/lib/bundler/hasReactDomClient.ts | +| react/package.json | src/lib/bundler/server.ts | + diff --git a/packages/cli/src/commands/repo/fix.ts b/packages/cli/src/commands/repo/fix.ts index bd5b375ed5..b975203a73 100644 --- a/packages/cli/src/commands/repo/fix.ts +++ b/packages/cli/src/commands/repo/fix.ts @@ -22,7 +22,11 @@ import { } from '@backstage/cli-node'; import { OptionValues } from 'commander'; import fs from 'fs-extra'; -import { resolve as resolvePath } from 'path'; +import { + resolve as resolvePath, + join as joinPath, + relative as relativePath, +} from 'path'; import { paths } from '../../lib/paths'; /** @@ -189,12 +193,64 @@ export function fixSideEffects(pkg: FixablePackage) { pkg.changed = true; } +export function createRepositoryFieldFixer() { + const rootPkg = require(paths.resolveTargetRoot('package.json')); + const rootRepoField = rootPkg.repository; + if (!rootRepoField) { + return () => {}; + } + + const rootType = rootRepoField.type || 'git'; + const rootUrl = rootRepoField.url; + const rootDir = rootRepoField.directory || ''; + + return (pkg: FixablePackage) => { + const expectedPath = joinPath( + rootDir, + relativePath(paths.targetRoot, pkg.dir), + ); + const repoField = pkg.packageJson.repository; + + if (!repoField || typeof repoField === 'string') { + const pkgEntries = Object.entries(pkg.packageJson); + pkgEntries.splice( + // Place it just above the backstage field + pkgEntries.findIndex(([name]) => name === 'backstage'), + 0, + [ + 'repository', + { + type: rootType, + url: rootUrl, + directory: expectedPath, + }, + ], + ); + pkg.packageJson = Object.fromEntries(pkgEntries) as BackstagePackageJson; + pkg.changed = true; + return; + } + + // If there's a type or URL mismatch, leave the field as is + if (repoField.type !== rootType || repoField.url !== rootUrl) { + return; + } + + if (repoField.directory !== expectedPath) { + repoField.directory = expectedPath; + pkg.changed = true; + } + }; +} + export async function command(opts: OptionValues): Promise { const packages = await readFixablePackages(); + const fixRepositoryField = createRepositoryFieldFixer(); for (const pkg of packages) { fixPackageExports(pkg); fixSideEffects(pkg); + fixRepositoryField(pkg); } if (opts.check) { diff --git a/packages/codemods/knip-report.md b/packages/codemods/knip-report.md new file mode 100644 index 0000000000..4f3830137e --- /dev/null +++ b/packages/codemods/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:--------|:-------------| +| ts-node | package.json | + diff --git a/packages/config-loader/knip-report.md b/packages/config-loader/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/config-loader/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/config/knip-report.md b/packages/config/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/config/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/core-app-api/knip-report.md b/packages/core-app-api/knip-report.md new file mode 100644 index 0000000000..41d0a1038b --- /dev/null +++ b/packages/core-app-api/knip-report.md @@ -0,0 +1,20 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| history | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:-----------------------------|:-------------| +| react-router-beta | package.json | +| react-router-stable | package.json | +| @testing-library/dom | package.json | +| react-router-dom-beta | package.json | +| react-router-dom-stable | package.json | +| @testing-library/user-event | package.json | +| @testing-library/react-hooks | package.json | + diff --git a/packages/core-compat-api/knip-report.md b/packages/core-compat-api/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/core-compat-api/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/core-components/knip-report.md b/packages/core-components/knip-report.md new file mode 100644 index 0000000000..5045df6d01 --- /dev/null +++ b/packages/core-components/knip-report.md @@ -0,0 +1,26 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------|:-------------| +| linkifyjs | package.json | +| @date-io/core | package.json | + +## Unused devDependencies (4) + +| Name | Location | +|:------------------------|:-------------| +| cross-fetch | package.json | +| @testing-library/dom | package.json | +| @types/google-protobuf | package.json | +| @backstage/app-defaults | package.json | + +## Unlisted dependencies (3) + +| Name | Location | +|:------------------|:--------------------------------------------------------| +| csstype | src/components/Lifecycle/Lifecycle.tsx | +| copy-to-clipboard | src/components/LogViewer/RealLogViewer.test.tsx | +| copy-to-clipboard | src/components/LogViewer/useLogViewerSelection.test.tsx | + diff --git a/packages/core-components/package.json b/packages/core-components/package.json index 12a07e74a7..8355d42417 100644 --- a/packages/core-components/package.json +++ b/packages/core-components/package.json @@ -56,7 +56,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", + "@react-hookz/web": "^24.0.0", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@types/react-sparklines": "^1.7.0", "@types/react-text-truncate": "^0.14.0", diff --git a/packages/core-plugin-api/knip-report.md b/packages/core-plugin-api/knip-report.md new file mode 100644 index 0000000000..093d207cef --- /dev/null +++ b/packages/core-plugin-api/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:----------------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/user-event | package.json | + diff --git a/packages/create-app/knip-report.md b/packages/create-app/knip-report.md new file mode 100644 index 0000000000..aaa19415f5 --- /dev/null +++ b/packages/create-app/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:----------------------|:-------------| +| ts-node | package.json | +| nodemon | package.json | +| @types/command-exists | package.json | + diff --git a/packages/dev-utils/knip-report.md b/packages/dev-utils/knip-report.md new file mode 100644 index 0000000000..9296c042d9 --- /dev/null +++ b/packages/dev-utils/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @backstage/theme | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/packages/e2e-test-utils/knip-report.md b/packages/e2e-test-utils/knip-report.md new file mode 100644 index 0000000000..32dd4fa877 --- /dev/null +++ b/packages/e2e-test-utils/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Referenced optional peerDependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @playwright/test | package.json | + diff --git a/packages/e2e-test-utils/package.json b/packages/e2e-test-utils/package.json index 3448497395..84e001acff 100644 --- a/packages/e2e-test-utils/package.json +++ b/packages/e2e-test-utils/package.json @@ -22,6 +22,11 @@ ] } }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/e2e-test-utils" + }, "backstage": { "role": "node-library" }, diff --git a/packages/e2e-test/knip-report.md b/packages/e2e-test/knip-report.md new file mode 100644 index 0000000000..2b616ced03 --- /dev/null +++ b/packages/e2e-test/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------|:-------------| +| ts-node | package.json | +| nodemon | package.json | +| @types/puppeteer | package.json | + diff --git a/packages/e2e-test/src/commands/run.ts b/packages/e2e-test/src/commands/run.ts index cadd7b878d..9a9bf556ee 100644 --- a/packages/e2e-test/src/commands/run.ts +++ b/packages/e2e-test/src/commands/run.ts @@ -71,6 +71,20 @@ export async function run() { env: { ...process.env, CI: undefined }, }); + await switchToReact17(appDir); + + print(`Running 'yarn install' to install React 17`); + await runPlain(['yarn', 'install'], { cwd: appDir }); + + print(`Running 'yarn tsc' with React 17`); + await runPlain(['yarn', 'tsc'], { cwd: appDir }); + + print(`Running 'yarn test:e2e' with React 17`); + await runPlain(['yarn', 'test:e2e'], { + cwd: appDir, + env: { ...process.env, CI: undefined }, + }); + if ( Boolean(process.env.POSTGRES_USER) || Boolean(process.env.MYSQL_CONNECTION) @@ -393,6 +407,35 @@ async function createPlugin(options: { } } +/** + * Switch the entire project to use React 17 + */ +async function switchToReact17(appDir: string) { + const rootPkg = await fs.readJson(resolvePath(appDir, 'package.json')); + rootPkg.resolutions = { + ...(rootPkg.resolutions || {}), + react: '^17.0.0', + 'react-dom': '^17.0.0', + '@types/react': '^17.0.0', + '@types/react-dom': '^17.0.0', + }; + await fs.writeJson(resolvePath(appDir, 'package.json'), rootPkg, { + spaces: 2, + }); + + await fs.writeFile( + resolvePath(appDir, 'packages/app/src/index.tsx'), + `import '@backstage/cli/asset-types'; +import React from 'react'; +import ReactDOM from 'react-dom'; +import App from './App'; + +ReactDOM.render(, document.getElementById('root')); +`, + 'utf8', + ); +} + /** Drops PG databases */ async function dropDB(database: string, client: string) { try { diff --git a/packages/errors/knip-report.md b/packages/errors/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/errors/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/eslint-plugin/knip-report.md b/packages/eslint-plugin/knip-report.md new file mode 100644 index 0000000000..77fca799d7 --- /dev/null +++ b/packages/eslint-plugin/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unlisted dependencies (2) + +| Name | Location | +|:-------|:-------------------------------| +| estree | lib/visitImports.js | +| estree | rules/no-undeclared-imports.js | + diff --git a/packages/frontend-app-api/knip-report.md b/packages/frontend-app-api/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/frontend-app-api/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/frontend-app-api/package.json b/packages/frontend-app-api/package.json index 4dd530fd1a..3b9e5433f0 100644 --- a/packages/frontend-app-api/package.json +++ b/packages/frontend-app-api/package.json @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/frontend-app-api" + }, "backstage": { "role": "web-library" }, diff --git a/packages/frontend-plugin-api/knip-report.md b/packages/frontend-plugin-api/knip-report.md new file mode 100644 index 0000000000..d99a671601 --- /dev/null +++ b/packages/frontend-plugin-api/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:---------------------------|:-------------| +| lodash | package.json | +| @material-ui/core | package.json | +| @backstage/core-components | package.json | + diff --git a/packages/frontend-test-utils/knip-report.md b/packages/frontend-test-utils/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/frontend-test-utils/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/frontend-test-utils/package.json b/packages/frontend-test-utils/package.json index ea1a461b72..80e15e11e2 100644 --- a/packages/frontend-test-utils/package.json +++ b/packages/frontend-test-utils/package.json @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "packages/frontend-test-utils" + }, "backstage": { "role": "web-library" }, diff --git a/packages/integration-aws-node/knip-report.md b/packages/integration-aws-node/knip-report.md new file mode 100644 index 0000000000..761161eaab --- /dev/null +++ b/packages/integration-aws-node/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------------------------|:-------------| +| @backstage/errors | package.json | +| @aws-sdk/credential-provider-node | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-------------------------|:-------------| +| @backstage/test-utils | package.json | +| @backstage/config-loader | package.json | + diff --git a/packages/integration-react/knip-report.md b/packages/integration-react/knip-report.md new file mode 100644 index 0000000000..bce307acdd --- /dev/null +++ b/packages/integration-react/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| msw | package.json | +| @testing-library/dom | package.json | + diff --git a/packages/integration/knip-report.md b/packages/integration/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/integration/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/release-manifests/knip-report.md b/packages/release-manifests/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/release-manifests/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/repo-tools/cli-report.md b/packages/repo-tools/cli-report.md index 7988c479b0..13e588e3e2 100644 --- a/packages/repo-tools/cli-report.md +++ b/packages/repo-tools/cli-report.md @@ -15,6 +15,7 @@ Commands: api-reports [options] [paths...] type-deps generate-catalog-info [options] + knip-reports [options] [paths...] package [command] repo [command] help [command] @@ -49,6 +50,16 @@ Options: -h, --help ``` +### `backstage-repo-tools knip-reports` + +``` +Usage: backstage-repo-tools knip-reports [options] [paths...] + +Options: + --ci + -h, --help +``` + ### `backstage-repo-tools package` ``` diff --git a/packages/repo-tools/knip-report.md b/packages/repo-tools/knip-report.md new file mode 100644 index 0000000000..a33ff31924 --- /dev/null +++ b/packages/repo-tools/knip-report.md @@ -0,0 +1,25 @@ +# Knip report + +## Unused dependencies (6) + +| Name | Location | +|:------------------------------------|:-------------| +| glob | package.json | +| ts-node | package.json | +| is-glob | package.json | +| @stoplight/spectral-runtime | package.json | +| @stoplight/spectral-functions | package.json | +| @openapitools/openapi-generator-cli | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @types/is-glob | package.json | + +## Referenced optional peerDependencies (1) + +| Name | Location | +|:---------|:-------------| +| prettier | package.json | + diff --git a/packages/repo-tools/src/commands/api-reports/api-extractor.ts b/packages/repo-tools/src/commands/api-reports/api-extractor.ts index b8c241bb0b..250e8c5c03 100644 --- a/packages/repo-tools/src/commands/api-reports/api-extractor.ts +++ b/packages/repo-tools/src/commands/api-reports/api-extractor.ts @@ -16,37 +16,36 @@ import { groupBy } from 'lodash'; import { - resolve as resolvePath, - relative as relativePath, basename, join, + relative as relativePath, + resolve as resolvePath, } from 'path'; -import { execFile } from 'child_process'; import fs from 'fs-extra'; import { + CompilerState, Extractor, ExtractorConfig, - CompilerState, ExtractorLogLevel, ExtractorMessage, } from '@microsoft/api-extractor'; import { Program } from 'typescript'; import { - DocNode, - IDocNodeContainerParameters, - TSDocTagSyntaxKind, - TSDocConfiguration, - Standardization, DocBlockTag, - DocPlainText, DocLinkTag, + DocNode, + DocPlainText, + IDocNodeContainerParameters, + Standardization, + TSDocConfiguration, + TSDocTagSyntaxKind, } from '@microsoft/tsdoc'; import { TSDocConfigFile } from '@microsoft/tsdoc-config'; import { - ApiPackage, - ApiModel, ApiItem, ApiItemKind, + ApiModel, + ApiPackage, } from '@microsoft/api-extractor-model'; import { IMarkdownDocumenterOptions, @@ -64,6 +63,7 @@ import { AstDeclaration } from '@microsoft/api-extractor/lib/analyzer/AstDeclara import { paths as cliPaths } from '../../lib/paths'; import minimatch from 'minimatch'; import { getPackageExportNames } from '../../lib/entryPoints'; +import { createBinRunner } from '../util'; const tmpDir = cliPaths.resolveTargetRoot( './node_modules/.cache/api-extractor', @@ -290,10 +290,10 @@ function logApiReportInstructions() { '*************************************************************************************', ); console.log( - '* You have uncommitted changes to the public API of a package. *', + '* You have uncommitted changes to the public API or reports of a package. *', ); console.log( - '* To solve this, run `yarn build:api-reports` and commit all api-report.md changes. *', + '* To solve this, run `yarn build:api-reports` and commit all md file changes. *', ); console.log( '*************************************************************************************', @@ -1227,31 +1227,6 @@ export async function categorizePackageDirs(packageDirs: string[]) { return { tsPackageDirs, cliPackageDirs }; } -function createBinRunner(cwd: string, path: string) { - return async (...command: string[]) => - new Promise((resolve, reject) => { - execFile( - 'node', - [path, ...command], - { - cwd, - shell: true, - timeout: 60000, - maxBuffer: 1024 * 1024, - }, - (err, stdout, stderr) => { - if (err) { - reject(new Error(`${err.message}\n${stderr}`)); - } else if (stderr) { - reject(new Error(`Command printed error output: ${stderr}`)); - } else { - resolve(stdout); - } - }, - ); - }); -} - function parseHelpPage(helpPageContent: string) { const [, usage] = helpPageContent.match(/^\s*Usage: (.*)$/im) ?? []; const lines = helpPageContent.split(/\r?\n/); @@ -1443,3 +1418,66 @@ export async function runCliExtraction({ } } } + +interface KnipExtractionOptions { + packageDirs: string[]; + isLocalBuild: boolean; +} + +export async function runKnipReports({ + packageDirs, + isLocalBuild, +}: KnipExtractionOptions) { + const knipDir = cliPaths.resolveTargetRoot('./node_modules/knip/bin/'); + + for (const packageDir of packageDirs) { + console.log(`## Processing ${packageDir}`); + const fullDir = cliPaths.resolveTargetRoot(packageDir); + const reportPath = resolvePath(fullDir, 'knip-report.md'); + const run = createBinRunner(fullDir, ''); + + const report = await run( + `${knipDir}/knip.js`, + `--directory ${fullDir}`, // Run in the package directory + '--no-exit-code', // Removing this will end the process in case there are findings by knip + '--no-progress', // Remove unnecessary debugging from output + // TODO: Add more checks when dependencies start to look ok, see https://knip.dev/reference/cli#--include + '--include dependencies,unlisted', + '--reporter markdown', + ); + + const existingReport = await fs + .readFile(reportPath, 'utf8') + .catch(error => { + if (error.code === 'ENOENT') { + return undefined; + } + throw error; + }); + + if (existingReport !== report) { + if (isLocalBuild) { + console.warn(`Knip report changed for ${packageDir}`); + await fs.writeFile(reportPath, report); + } else { + logApiReportInstructions(); + + if (existingReport) { + console.log(''); + console.log( + `The conflicting file is ${relativePath( + cliPaths.targetRoot, + reportPath, + )}, expecting the following content:`, + ); + console.log(''); + + console.log(report); + + logApiReportInstructions(); + } + throw new Error(`Knip report changed for ${packageDir}, `); + } + } + } +} diff --git a/packages/repo-tools/src/commands/api-reports/api-reports.test.ts b/packages/repo-tools/src/commands/api-reports/api-reports.test.ts index d1f7a3836c..955720c52e 100644 --- a/packages/repo-tools/src/commands/api-reports/api-reports.test.ts +++ b/packages/repo-tools/src/commands/api-reports/api-reports.test.ts @@ -20,9 +20,9 @@ import * as pathsLib from '../../lib/paths'; import { buildDocs, - runCliExtraction, - runApiExtraction, categorizePackageDirs, + runApiExtraction, + runCliExtraction, } from './api-extractor'; import { buildApiReports } from './api-reports'; @@ -43,6 +43,7 @@ jest.mock('./api-extractor', () => ({ runApiExtraction: jest.fn(), runCliExtraction: jest.fn(), buildDocs: jest.fn(), + runKnipReports: jest.fn(), })); const projectPaths = pathsLib.paths; diff --git a/packages/repo-tools/src/commands/api-reports/api-reports.ts b/packages/repo-tools/src/commands/api-reports/api-reports.ts index d9164578b0..637cd86671 100644 --- a/packages/repo-tools/src/commands/api-reports/api-reports.ts +++ b/packages/repo-tools/src/commands/api-reports/api-reports.ts @@ -16,11 +16,11 @@ import { OptionValues } from 'commander'; import { - createTemporaryTsConfig, + buildDocs, categorizePackageDirs, + createTemporaryTsConfig, runApiExtraction, runCliExtraction, - buildDocs, } from './api-extractor'; import { paths as cliPaths, resolvePackagePaths } from '../../lib/paths'; import { generateTypeDeclarations } from './generateTypeDeclarations'; @@ -94,6 +94,7 @@ export const buildApiReports = async (paths: string[] = [], opts: Options) => { validateReleaseTags: opts.validateReleaseTags, }); } + if (cliPackageDirs.length > 0) { console.log('# Generating package CLI reports'); await runCliExtraction({ diff --git a/packages/repo-tools/src/commands/index.ts b/packages/repo-tools/src/commands/index.ts index 1fa37402ce..e0463da4f9 100644 --- a/packages/repo-tools/src/commands/index.ts +++ b/packages/repo-tools/src/commands/index.ts @@ -168,6 +168,17 @@ export function registerCommands(program: Command) { ), ), ); + + program + .command('knip-reports [paths...]') + .option('--ci', 'CI run checks that there is no changes on knip reports') + .description('Generate a knip report for selected packages') + .action( + lazy(() => + import('./knip-reports/knip-reports').then(m => m.buildKnipReports), + ), + ); + registerPackageCommand(program); registerRepoCommand(program); } diff --git a/packages/repo-tools/src/commands/knip-reports/knip-extractor.ts b/packages/repo-tools/src/commands/knip-reports/knip-extractor.ts new file mode 100644 index 0000000000..c170ea1409 --- /dev/null +++ b/packages/repo-tools/src/commands/knip-reports/knip-extractor.ts @@ -0,0 +1,181 @@ +/* + * 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 { paths as cliPaths } from '../../lib/paths'; +import pLimit from 'p-limit'; +import os from 'os'; +import { relative as relativePath, resolve as resolvePath } from 'path'; +import fs from 'fs-extra'; +import { createBinRunner } from '../util'; + +// Ignore this due to Knip error: Error: ENAMETOOLONG: name too long, scandir +const ignoredPackages = ['packages/techdocs-cli-embedded-app']; + +interface KnipExtractionOptions { + packageDirs: string[]; + isLocalBuild: boolean; +} + +interface KnipConfigOptions { + packageDir: string; +} + +interface KnipPackageOptions { + packageDir: string; + knipDir: string; + isLocalBuild: boolean; +} + +function logKnipReportInstructions() { + console.log(''); + console.log( + '*************************************************************************************', + ); + console.log( + '* You have uncommitted changes to the knip reports of a package. *', + ); + console.log( + '* To solve this, run `yarn build:knip-reports` and commit all md file changes. *', + ); + console.log( + '*************************************************************************************', + ); + console.log(''); +} + +async function generateKnipConfig({ packageDir }: KnipConfigOptions) { + const knipConfig = { + entry: [ + 'dev/index.{ts,tsx}', + 'src/index.{ts,tsx}', + 'src/alpha.{ts,tsx}', + 'src/routes.ts', + 'src/run.ts', + ], + jest: { + entry: ['src/setupTests.ts', '**/*.test.{ts,tsx}'], + }, + storybook: { entry: 'src/components/**/*.stories.tsx' }, + ignore: [ + '.eslintrc.js', + 'config.d.ts', + 'knexfile.js', + 'node_modules/**', + 'dist/**', + '{fixtures,migrations,templates}/**', + ], + ignoreDependencies: [ + '@backstage/cli', // everything depends on this for its package.json commands + ], + }; + await fs.writeFile( + `${packageDir}/knip.json`, + JSON.stringify(knipConfig, null, 2), + ); +} + +function cleanKnipConfig({ packageDir }: KnipConfigOptions) { + if (fs.existsSync(`${packageDir}/knip.json`)) { + fs.rmSync(`${packageDir}/knip.json`); + } +} + +async function handlePackage({ + packageDir, + knipDir, + isLocalBuild, +}: KnipPackageOptions) { + console.log(`## Processing ${packageDir}`); + if (ignoredPackages.includes(packageDir)) { + console.log(`Skipping ${packageDir}`); + return; + } + const fullDir = cliPaths.resolveTargetRoot(packageDir); + const reportPath = resolvePath(fullDir, 'knip-report.md'); + const run = createBinRunner(fullDir, ''); + + await generateKnipConfig({ packageDir: fullDir }); + + const report = await run( + `${knipDir}/knip.js`, + `--directory ${fullDir}`, // Run in the package directory + '--config knip.json', + '--no-exit-code', // Removing this will end the process in case there are findings by knip + '--no-progress', // Remove unnecessary debugging from output + // TODO: Add more checks when dependencies start to look ok, see https://knip.dev/reference/cli#--include + '--include dependencies,unlisted', + '--reporter markdown', + ); + + cleanKnipConfig({ packageDir: fullDir }); + + const existingReport = await fs.readFile(reportPath, 'utf8').catch(error => { + if (error.code === 'ENOENT') { + return undefined; + } + throw error; + }); + + if (existingReport !== report) { + if (isLocalBuild) { + console.warn(`Knip report changed for ${packageDir}`); + await fs.writeFile(reportPath, report); + } else { + logKnipReportInstructions(); + + if (existingReport) { + console.log(''); + console.log( + `The conflicting file is ${relativePath( + cliPaths.targetRoot, + reportPath, + )}, expecting the following content:`, + ); + console.log(''); + + console.log(report); + + logKnipReportInstructions(); + } + throw new Error(`Knip report changed for ${packageDir}, `); + } + } +} + +export async function runKnipReports({ + packageDirs, + isLocalBuild, +}: KnipExtractionOptions) { + const knipDir = cliPaths.resolveTargetRoot('./node_modules/knip/bin/'); + const limiter = pLimit(os.cpus().length); + + try { + await Promise.all( + packageDirs.map(packageDir => + limiter(async () => + handlePackage({ packageDir, knipDir, isLocalBuild }), + ), + ), + ); + } catch (e) { + console.log( + `Error occurred during knip reporting: ${e}, cleaning knip configs`, + ); + packageDirs.map(packageDir => { + const fullDir = cliPaths.resolveTargetRoot(packageDir); + cleanKnipConfig({ packageDir: fullDir }); + }); + } +} diff --git a/packages/repo-tools/src/commands/knip-reports/knip-reports.ts b/packages/repo-tools/src/commands/knip-reports/knip-reports.ts new file mode 100644 index 0000000000..48ffa6cbdb --- /dev/null +++ b/packages/repo-tools/src/commands/knip-reports/knip-reports.ts @@ -0,0 +1,54 @@ +/* + * 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 { OptionValues } from 'commander'; +import { runKnipReports } from './knip-extractor'; +import { resolvePackagePaths } from '../../lib/paths'; + +type Options = { + ci?: boolean; +} & OptionValues; + +export const buildKnipReports = async (paths: string[] = [], opts: Options) => { + const isCiBuild = opts.ci; + + const isAllPackages = !paths?.length; + const selectedPackageDirs = await resolvePackagePaths({ + paths, + include: opts.include, + exclude: opts.exclude, + }); + + if (isAllPackages && !isCiBuild) { + console.log(''); + console.log( + 'TIP: You can generate knip-reports for select packages by passing package paths:', + ); + console.log(''); + console.log( + ' yarn build:knip-reports packages/config packages/core-plugin-api plugins/*', + ); + console.log(''); + } + + if (selectedPackageDirs.length > 0) { + console.log('# Generating package knip reports'); + await runKnipReports({ + packageDirs: selectedPackageDirs, + isLocalBuild: !isCiBuild, + }); + } +}; diff --git a/packages/repo-tools/src/commands/util.ts b/packages/repo-tools/src/commands/util.ts new file mode 100644 index 0000000000..933945bc5c --- /dev/null +++ b/packages/repo-tools/src/commands/util.ts @@ -0,0 +1,41 @@ +/* + * 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 { execFile } from 'child_process'; + +export function createBinRunner(cwd: string, path: string) { + return async (...command: string[]) => + new Promise((resolve, reject) => { + execFile( + 'node', + [path, ...command], + { + cwd, + shell: true, + timeout: 60000, + maxBuffer: 1024 * 1024, + }, + (err, stdout, stderr) => { + if (err) { + reject(new Error(`${err.message}\n${stderr}`)); + } else if (stderr) { + reject(new Error(`Command printed error output: ${stderr}`)); + } else { + resolve(stdout); + } + }, + ); + }); +} diff --git a/packages/techdocs-cli-embedded-app/knip-report.md b/packages/techdocs-cli-embedded-app/knip-report.md new file mode 100644 index 0000000000..87e4093961 --- /dev/null +++ b/packages/techdocs-cli-embedded-app/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:----------------------|:-------------| +| history | package.json | +| react-use | package.json | +| @backstage/theme | package.json | +| @backstage/test-utils | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:----------------------------|:-------------| +| cross-env | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @testing-library/jest-dom | package.json | +| @testing-library/user-event | package.json | + diff --git a/packages/techdocs-cli/knip-report.md b/packages/techdocs-cli/knip-report.md new file mode 100644 index 0000000000..411c1f0251 --- /dev/null +++ b/packages/techdocs-cli/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------------|:-------------| +| global-agent | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-------------------|:-------------| +| ts-node | package.json | +| nodemon | package.json | +| @types/webpack-env | package.json | + diff --git a/packages/test-utils/knip-report.md b/packages/test-utils/knip-report.md new file mode 100644 index 0000000000..2ccb1eab4f --- /dev/null +++ b/packages/test-utils/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| @material-ui/core | package.json | + diff --git a/packages/theme/knip-report.md b/packages/theme/knip-report.md new file mode 100644 index 0000000000..dfa0fbe480 --- /dev/null +++ b/packages/theme/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------|:-------------| +| @emotion/react | package.json | +| @emotion/styled | package.json | + diff --git a/packages/types/knip-report.md b/packages/types/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/types/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/packages/version-bridge/knip-report.md b/packages/version-bridge/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/packages/version-bridge/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/adr-backend/knip-report.md b/plugins/adr-backend/knip-report.md new file mode 100644 index 0000000000..b3b12df69b --- /dev/null +++ b/plugins/adr-backend/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------|:-------------| +| yn | package.json | +| node-fetch | package.json | + diff --git a/plugins/adr-common/knip-report.md b/plugins/adr-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/adr-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/adr/knip-report.md b/plugins/adr/knip-report.md new file mode 100644 index 0000000000..e7a618ab50 --- /dev/null +++ b/plugins/adr/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------------|:-------------| +| remark-gfm | package.json | +| react-markdown | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/airbrake-backend/knip-report.md b/plugins/airbrake-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/airbrake-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/airbrake/knip-report.md b/plugins/airbrake/knip-report.md new file mode 100644 index 0000000000..b2bb63e01e --- /dev/null +++ b/plugins/airbrake/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | +| @backstage/app-defaults | package.json | + diff --git a/plugins/allure/knip-report.md b/plugins/allure/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/allure/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/analytics-module-ga/knip-report.md b/plugins/analytics-module-ga/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/analytics-module-ga/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/analytics-module-ga4/knip-report.md b/plugins/analytics-module-ga4/knip-report.md new file mode 100644 index 0000000000..38df6e0841 --- /dev/null +++ b/plugins/analytics-module-ga4/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @types/jest | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/analytics-module-ga4/package.json b/plugins/analytics-module-ga4/package.json index 7b21e4a30d..83f43a0d6a 100644 --- a/plugins/analytics-module-ga4/package.json +++ b/plugins/analytics-module-ga4/package.json @@ -16,7 +16,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/plugins/analytics-module-ga4" + "directory": "plugins/analytics-module-ga4" }, "sideEffects": false, "scripts": { diff --git a/plugins/analytics-module-newrelic-browser/knip-report.md b/plugins/analytics-module-newrelic-browser/knip-report.md new file mode 100644 index 0000000000..56419ede4c --- /dev/null +++ b/plugins/analytics-module-newrelic-browser/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/react | package.json | + diff --git a/plugins/analytics-module-newrelic-browser/package.json b/plugins/analytics-module-newrelic-browser/package.json index e3d250f386..61f15092f5 100644 --- a/plugins/analytics-module-newrelic-browser/package.json +++ b/plugins/analytics-module-newrelic-browser/package.json @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/analytics-module-newrelic-browser" + }, "backstage": { "role": "frontend-plugin-module" }, diff --git a/plugins/apache-airflow/knip-report.md b/plugins/apache-airflow/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/apache-airflow/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/api-docs-module-protoc-gen-doc/knip-report.md b/plugins/api-docs-module-protoc-gen-doc/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/api-docs-module-protoc-gen-doc/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/api-docs/knip-report.md b/plugins/api-docs/knip-report.md new file mode 100644 index 0000000000..7e74e1ff78 --- /dev/null +++ b/plugins/api-docs/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:---------------------|:-------------| +| graphql-ws | package.json | +| graphql-config | package.json | +| isomorphic-form-data | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/apollo-explorer/knip-report.md b/plugins/apollo-explorer/knip-report.md new file mode 100644 index 0000000000..be911cb4ea --- /dev/null +++ b/plugins/apollo-explorer/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------|:-------------| +| use-deep-compare-effect | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/app-backend/knip-report.md b/plugins/app-backend/knip-report.md new file mode 100644 index 0000000000..461d60ec91 --- /dev/null +++ b/plugins/app-backend/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---|:-------------| +| yn | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------------|:-------------| +| @backstage/backend-app-api | package.json | + diff --git a/plugins/app-node/knip-report.md b/plugins/app-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/app-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/app-node/package.json b/plugins/app-node/package.json index 02c0d999da..7ea9fa1d3c 100644 --- a/plugins/app-node/package.json +++ b/plugins/app-node/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/app-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/app-visualizer/knip-report.md b/plugins/app-visualizer/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/app-visualizer/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/app-visualizer/package.json b/plugins/app-visualizer/package.json index 4b5568e06f..e87faf9f5b 100644 --- a/plugins/app-visualizer/package.json +++ b/plugins/app-visualizer/package.json @@ -5,6 +5,11 @@ "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/app-visualizer" + }, "backstage": { "role": "frontend-plugin" }, diff --git a/plugins/auth-backend-module-atlassian-provider/knip-report.md b/plugins/auth-backend-module-atlassian-provider/knip-report.md new file mode 100644 index 0000000000..6d3d030a17 --- /dev/null +++ b/plugins/auth-backend-module-atlassian-provider/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------|:-------------| +| express | package.json | +| passport | package.json | + diff --git a/plugins/auth-backend-module-atlassian-provider/package.json b/plugins/auth-backend-module-atlassian-provider/package.json index 2e9d8d8b32..288aeb1d05 100644 --- a/plugins/auth-backend-module-atlassian-provider/package.json +++ b/plugins/auth-backend-module-atlassian-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-atlassian-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-aws-alb-provider/knip-report.md b/plugins/auth-backend-module-aws-alb-provider/knip-report.md new file mode 100644 index 0000000000..ddc7848450 --- /dev/null +++ b/plugins/auth-backend-module-aws-alb-provider/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-------------------------------|:-------------| +| @backstage/backend-common | package.json | +| @backstage/plugin-auth-backend | package.json | + diff --git a/plugins/auth-backend-module-gcp-iap-provider/knip-report.md b/plugins/auth-backend-module-gcp-iap-provider/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/auth-backend-module-gcp-iap-provider/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/auth-backend-module-github-provider/knip-report.md b/plugins/auth-backend-module-github-provider/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/auth-backend-module-github-provider/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/auth-backend-module-github-provider/package.json b/plugins/auth-backend-module-github-provider/package.json index c72730efae..7085e95003 100644 --- a/plugins/auth-backend-module-github-provider/package.json +++ b/plugins/auth-backend-module-github-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-github-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-gitlab-provider/knip-report.md b/plugins/auth-backend-module-gitlab-provider/knip-report.md new file mode 100644 index 0000000000..6d3d030a17 --- /dev/null +++ b/plugins/auth-backend-module-gitlab-provider/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------|:-------------| +| express | package.json | +| passport | package.json | + diff --git a/plugins/auth-backend-module-gitlab-provider/package.json b/plugins/auth-backend-module-gitlab-provider/package.json index 5f60e9baff..f89c94b7e9 100644 --- a/plugins/auth-backend-module-gitlab-provider/package.json +++ b/plugins/auth-backend-module-gitlab-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-gitlab-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-google-provider/knip-report.md b/plugins/auth-backend-module-google-provider/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/auth-backend-module-google-provider/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/auth-backend-module-microsoft-provider/knip-report.md b/plugins/auth-backend-module-microsoft-provider/knip-report.md new file mode 100644 index 0000000000..5eebe74ce2 --- /dev/null +++ b/plugins/auth-backend-module-microsoft-provider/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| passport | package.json | + diff --git a/plugins/auth-backend-module-microsoft-provider/package.json b/plugins/auth-backend-module-microsoft-provider/package.json index e68abd607e..32325c5574 100644 --- a/plugins/auth-backend-module-microsoft-provider/package.json +++ b/plugins/auth-backend-module-microsoft-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-microsoft-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-oauth2-provider/knip-report.md b/plugins/auth-backend-module-oauth2-provider/knip-report.md new file mode 100644 index 0000000000..5eebe74ce2 --- /dev/null +++ b/plugins/auth-backend-module-oauth2-provider/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| passport | package.json | + diff --git a/plugins/auth-backend-module-oauth2-provider/package.json b/plugins/auth-backend-module-oauth2-provider/package.json index c5d940c7e0..525fa5ab34 100644 --- a/plugins/auth-backend-module-oauth2-provider/package.json +++ b/plugins/auth-backend-module-oauth2-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-oauth2-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/knip-report.md b/plugins/auth-backend-module-oauth2-proxy-provider/knip-report.md new file mode 100644 index 0000000000..4c06faddc0 --- /dev/null +++ b/plugins/auth-backend-module-oauth2-proxy-provider/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/auth-backend-module-oauth2-proxy-provider/package.json b/plugins/auth-backend-module-oauth2-proxy-provider/package.json index 17f5a512cb..3903108d2b 100644 --- a/plugins/auth-backend-module-oauth2-proxy-provider/package.json +++ b/plugins/auth-backend-module-oauth2-proxy-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-oauth2-proxy-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-oidc-provider/knip-report.md b/plugins/auth-backend-module-oidc-provider/knip-report.md new file mode 100644 index 0000000000..6fd89606e4 --- /dev/null +++ b/plugins/auth-backend-module-oidc-provider/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------------------|:-------------| +| passport | package.json | +| @backstage/backend-common | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| cookie-parser | package.json | +| express-session | package.json | +| express-promise-router | package.json | + diff --git a/plugins/auth-backend-module-oidc-provider/package.json b/plugins/auth-backend-module-oidc-provider/package.json index 93b6196bfb..d144fddc59 100644 --- a/plugins/auth-backend-module-oidc-provider/package.json +++ b/plugins/auth-backend-module-oidc-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-oidc-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-okta-provider/knip-report.md b/plugins/auth-backend-module-okta-provider/knip-report.md new file mode 100644 index 0000000000..6d3d030a17 --- /dev/null +++ b/plugins/auth-backend-module-okta-provider/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------|:-------------| +| express | package.json | +| passport | package.json | + diff --git a/plugins/auth-backend-module-okta-provider/package.json b/plugins/auth-backend-module-okta-provider/package.json index c770d443bc..ab3e1a90a7 100644 --- a/plugins/auth-backend-module-okta-provider/package.json +++ b/plugins/auth-backend-module-okta-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-okta-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-pinniped-provider/knip-report.md b/plugins/auth-backend-module-pinniped-provider/knip-report.md new file mode 100644 index 0000000000..73b1371fa5 --- /dev/null +++ b/plugins/auth-backend-module-pinniped-provider/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:----------------|:-------------| +| passport | package.json | +| cookie-parser | package.json | +| express-session | package.json | + diff --git a/plugins/auth-backend-module-pinniped-provider/package.json b/plugins/auth-backend-module-pinniped-provider/package.json index 977839c87a..6b3eee0675 100644 --- a/plugins/auth-backend-module-pinniped-provider/package.json +++ b/plugins/auth-backend-module-pinniped-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-pinniped-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend-module-vmware-cloud-provider/knip-report.md b/plugins/auth-backend-module-vmware-cloud-provider/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/auth-backend-module-vmware-cloud-provider/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/auth-backend-module-vmware-cloud-provider/package.json b/plugins/auth-backend-module-vmware-cloud-provider/package.json index ab5eb71477..db3f76dc66 100644 --- a/plugins/auth-backend-module-vmware-cloud-provider/package.json +++ b/plugins/auth-backend-module-vmware-cloud-provider/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/auth-backend-module-vmware-cloud-provider" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/auth-backend/knip-report.md b/plugins/auth-backend/knip-report.md new file mode 100644 index 0000000000..ee02bfba0a --- /dev/null +++ b/plugins/auth-backend/knip-report.md @@ -0,0 +1,31 @@ +# Knip report + +## Unused dependencies (12) + +| Name | Location | +|:------------------------|:-------------| +| yn | package.json | +| cors | package.json | +| morgan | package.json | +| winston | package.json | +| fs-extra | package.json | +| node-cache | package.json | +| compression | package.json | +| openid-client | package.json | +| passport-github2 | package.json | +| passport-microsoft | package.json | +| google-auth-library | package.json | +| passport-google-oauth20 | package.json | + +## Unused devDependencies (7) + +| Name | Location | +|:-------------------------------|:-------------| +| @types/xml2js | package.json | +| @types/body-parser | package.json | +| @types/passport-saml | package.json | +| @types/passport-github2 | package.json | +| @types/passport-strategy | package.json | +| @types/passport-microsoft | package.json | +| @types/passport-google-oauth20 | package.json | + diff --git a/plugins/auth-node/knip-report.md b/plugins/auth-node/knip-report.md new file mode 100644 index 0000000000..aa2e6b58d5 --- /dev/null +++ b/plugins/auth-node/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------|:-------------| +| winston | package.json | +| node-fetch | package.json | + diff --git a/plugins/azure-devops-backend/knip-report.md b/plugins/azure-devops-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/azure-devops-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/azure-devops-common/knip-report.md b/plugins/azure-devops-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/azure-devops-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/azure-devops/knip-report.md b/plugins/azure-devops/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/azure-devops/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/azure-sites-backend/knip-report.md b/plugins/azure-sites-backend/knip-report.md new file mode 100644 index 0000000000..ad2b8c7f46 --- /dev/null +++ b/plugins/azure-sites-backend/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-------------------------|:-------------| +| node-fetch | package.json | +| @backstage/catalog-model | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @types/supertest | package.json | + diff --git a/plugins/azure-sites-common/knip-report.md b/plugins/azure-sites-common/knip-report.md new file mode 100644 index 0000000000..b5306f357f --- /dev/null +++ b/plugins/azure-sites-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------------------------|:-------------| +| @backstage/catalog-model | package.json | + diff --git a/plugins/azure-sites/knip-report.md b/plugins/azure-sites/knip-report.md new file mode 100644 index 0000000000..bb814fc76c --- /dev/null +++ b/plugins/azure-sites/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @backstage/theme | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/badges-backend/knip-report.md b/plugins/badges-backend/knip-report.md new file mode 100644 index 0000000000..eee4105ef0 --- /dev/null +++ b/plugins/badges-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----|:-------------| +| cors | package.json | + diff --git a/plugins/badges/knip-report.md b/plugins/badges/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/badges/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/bazaar-backend/knip-report.md b/plugins/bazaar-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/bazaar-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/bazaar/knip-report.md b/plugins/bazaar/knip-report.md new file mode 100644 index 0000000000..cd275e5030 --- /dev/null +++ b/plugins/bazaar/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/catalog-client | package.json | + diff --git a/plugins/bitbucket-cloud-common/knip-report.md b/plugins/bitbucket-cloud-common/knip-report.md new file mode 100644 index 0000000000..ab7c99b1af --- /dev/null +++ b/plugins/bitbucket-cloud-common/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:------------------------------------|:-------------| +| ts-morph | package.json | +| @openapitools/openapi-generator-cli | package.json | + diff --git a/plugins/bitrise/knip-report.md b/plugins/bitrise/knip-report.md new file mode 100644 index 0000000000..afc7ef165d --- /dev/null +++ b/plugins/bitrise/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| recharts | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| @types/recharts | package.json | +| @testing-library/dom | package.json | + diff --git a/plugins/catalog-backend-module-aws/knip-report.md b/plugins/catalog-backend-module-aws/knip-report.md new file mode 100644 index 0000000000..0d78efc55e --- /dev/null +++ b/plugins/catalog-backend-module-aws/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @aws-sdk/credential-providers | package.json | + diff --git a/plugins/catalog-backend-module-azure/knip-report.md b/plugins/catalog-backend-module-azure/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-azure/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-backstage-openapi/knip-report.md b/plugins/catalog-backend-module-backstage-openapi/knip-report.md new file mode 100644 index 0000000000..d61ab715a1 --- /dev/null +++ b/plugins/catalog-backend-module-backstage-openapi/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-------|:-------------| +| yn | package.json | +| lodash | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| @types/express | package.json | +| @types/supertest | package.json | + diff --git a/plugins/catalog-backend-module-backstage-openapi/package.json b/plugins/catalog-backend-module-backstage-openapi/package.json index e76d550c11..19deaa42de 100644 --- a/plugins/catalog-backend-module-backstage-openapi/package.json +++ b/plugins/catalog-backend-module-backstage-openapi/package.json @@ -9,6 +9,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-backend-module-backstage-openapi" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/catalog-backend-module-bitbucket-cloud/knip-report.md b/plugins/catalog-backend-module-bitbucket-cloud/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-bitbucket-cloud/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-bitbucket-server/knip-report.md b/plugins/catalog-backend-module-bitbucket-server/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-bitbucket-server/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-bitbucket/.eslintrc.js b/plugins/catalog-backend-module-bitbucket/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/catalog-backend-module-bitbucket/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md b/plugins/catalog-backend-module-bitbucket/CHANGELOG.md deleted file mode 100644 index 8a54e85f13..0000000000 --- a/plugins/catalog-backend-module-bitbucket/CHANGELOG.md +++ /dev/null @@ -1,1184 +0,0 @@ -# @backstage/plugin-catalog-backend-module-bitbucket - -## 0.2.25-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.21.0-next.2 - - @backstage/plugin-catalog-node@1.6.2-next.2 - - @backstage/config@1.1.1 - - @backstage/integration@1.9.0-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 - -## 0.2.25-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.21.0-next.1 - - @backstage/integration@1.9.0-next.0 - - @backstage/config@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.1 - - @backstage/plugin-catalog-node@1.6.2-next.1 - -## 0.2.25-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.21.0-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.16-next.0 - - @backstage/plugin-catalog-node@1.6.2-next.0 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - -## 0.2.24 - -### Patch Changes - -- 4016f21: Remove some unused dependencies -- Updated dependencies - - @backstage/backend-common@0.20.1 - - @backstage/plugin-catalog-node@1.6.1 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - -## 0.2.24-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.1-next.2 - - @backstage/plugin-catalog-node@1.6.1-next.2 - -## 0.2.24-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.1-next.1 - - @backstage/integration@1.8.0 - - @backstage/config@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - - @backstage/plugin-catalog-node@1.6.1-next.1 - -## 0.2.24-next.0 - -### Patch Changes - -- 4016f21: Remove some unused dependencies -- Updated dependencies - - @backstage/backend-common@0.20.1-next.0 - - @backstage/plugin-catalog-node@1.6.1-next.0 - - @backstage/config@1.1.1 - - @backstage/integration@1.8.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - -## 0.2.23 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.0 - - @backstage/plugin-catalog-node@1.6.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15 - - @backstage/integration@1.8.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.23-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.0-next.3 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/integration@1.8.0-next.1 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.1 - - @backstage/plugin-catalog-node@1.6.0-next.3 - -## 0.2.23-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.6.0-next.2 - - @backstage/backend-common@0.20.0-next.2 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/integration@1.8.0-next.1 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.1 - -## 0.2.23-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@1.8.0-next.1 - - @backstage/backend-common@0.20.0-next.1 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.1 - - @backstage/plugin-catalog-node@1.5.1-next.1 - -## 0.2.23-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.20.0-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.15-next.0 - - @backstage/integration@1.8.0-next.0 - - @backstage/plugin-catalog-node@1.5.1-next.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.22 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.5.0 - - @backstage/integration@1.7.2 - - @backstage/backend-common@0.19.9 - - @backstage/plugin-bitbucket-cloud-common@0.2.14 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.22-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.9-next.2 - - @backstage/plugin-catalog-node@1.5.0-next.2 - -## 0.2.22-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.5.0-next.1 - - @backstage/integration@1.7.2-next.0 - - @backstage/backend-common@0.19.9-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.14-next.0 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - -## 0.2.22-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.9-next.0 - - @backstage/integration@1.7.1 - - @backstage/catalog-model@1.4.3 - - @backstage/config@1.1.1 - - @backstage/errors@1.2.3 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.13 - - @backstage/plugin-catalog-node@1.4.8-next.0 - -## 0.2.21 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.8 - - @backstage/integration@1.7.1 - - @backstage/plugin-catalog-node@1.4.7 - - @backstage/catalog-model@1.4.3 - - @backstage/errors@1.2.3 - - @backstage/plugin-bitbucket-cloud-common@0.2.13 - - @backstage/config@1.1.1 - - @backstage/types@1.1.1 - -## 0.2.21-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.8-next.2 - - @backstage/catalog-model@1.4.3-next.0 - - @backstage/integration@1.7.1-next.1 - - @backstage/errors@1.2.3-next.0 - - @backstage/plugin-catalog-node@1.4.7-next.2 - - @backstage/config@1.1.1-next.0 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.13-next.1 - -## 0.2.20-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.4.6-next.1 - - @backstage/backend-common@0.19.7-next.1 - - @backstage/config@1.1.0 - - @backstage/catalog-model@1.4.2 - - @backstage/errors@1.2.2 - - @backstage/integration@1.7.1-next.0 - - @backstage/types@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.13-next.0 - -## 0.2.20-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@1.7.1-next.0 - - @backstage/backend-common@0.19.7-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.13-next.0 - - @backstage/config@1.1.0 - - @backstage/catalog-model@1.4.2 - - @backstage/errors@1.2.2 - - @backstage/types@1.1.1 - - @backstage/plugin-catalog-node@1.4.6-next.0 - -## 0.2.18 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.5 - - @backstage/config@1.1.0 - - @backstage/catalog-model@1.4.2 - - @backstage/errors@1.2.2 - - @backstage/integration@1.7.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.12 - - @backstage/types@1.1.1 - - @backstage/plugin-catalog-node@1.4.4 - -## 0.2.18-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.4.2-next.2 - - @backstage/config@1.1.0-next.2 - - @backstage/errors@1.2.2-next.0 - - @backstage/integration@1.7.0-next.3 - - @backstage/plugin-bitbucket-cloud-common@0.2.12-next.3 - - @backstage/types@1.1.1-next.0 - - @backstage/backend-common@0.19.5-next.3 - - @backstage/plugin-catalog-node@1.4.4-next.3 - -## 0.2.18-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/config@1.1.0-next.1 - - @backstage/backend-common@0.19.5-next.2 - - @backstage/plugin-catalog-node@1.4.4-next.2 - - @backstage/integration@1.7.0-next.2 - - @backstage/catalog-model@1.4.2-next.1 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.12-next.2 - -## 0.2.18-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/config@1.1.0-next.0 - - @backstage/integration@1.7.0-next.1 - - @backstage/backend-common@0.19.5-next.1 - - @backstage/catalog-model@1.4.2-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.12-next.1 - - @backstage/plugin-catalog-node@1.4.4-next.1 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - -## 0.2.17-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.4-next.0 - - @backstage/integration@1.7.0-next.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.11-next.0 - - @backstage/plugin-catalog-node@1.4.3-next.0 - -## 0.2.15 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.9 - - @backstage/plugin-catalog-node@1.4.1 - - @backstage/integration@1.6.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - -## 0.2.15-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2-next.2 - - @backstage/plugin-catalog-node@1.4.1-next.2 - -## 0.2.15-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.9-next.0 - - @backstage/plugin-catalog-node@1.4.1-next.1 - - @backstage/integration@1.5.1 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/types@1.1.0 - -## 0.2.15-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.2-next.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/errors@1.2.1 - - @backstage/integration@1.5.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.8 - - @backstage/plugin-catalog-node@1.4.1-next.0 - -## 0.2.14 - -### Patch Changes - -- Updated dependencies - - @backstage/errors@1.2.1 - - @backstage/backend-common@0.19.1 - - @backstage/plugin-catalog-node@1.4.0 - - @backstage/catalog-model@1.4.1 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.8 - -## 0.2.14-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/errors@1.2.1-next.0 - - @backstage/backend-common@0.19.1-next.0 - - @backstage/plugin-catalog-node@1.4.0-next.0 - - @backstage/catalog-model@1.4.1-next.0 - - @backstage/config@1.0.8 - - @backstage/integration@1.5.1-next.0 - - @backstage/types@1.1.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.8-next.0 - -## 0.2.13 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0 - - @backstage/types@1.1.0 - - @backstage/integration@1.5.0 - - @backstage/catalog-model@1.4.0 - - @backstage/errors@1.2.0 - - @backstage/plugin-catalog-node@1.3.7 - - @backstage/config@1.0.8 - - @backstage/plugin-bitbucket-cloud-common@0.2.7 - -## 0.2.13-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0-next.2 - - @backstage/catalog-model@1.4.0-next.1 - - @backstage/config@1.0.7 - - @backstage/errors@1.2.0-next.0 - - @backstage/integration@1.5.0-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.7-next.0 - - @backstage/plugin-catalog-node@1.3.7-next.2 - -## 0.2.13-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.19.0-next.1 - - @backstage/integration@1.5.0-next.0 - - @backstage/errors@1.2.0-next.0 - - @backstage/catalog-model@1.4.0-next.0 - - @backstage/plugin-catalog-node@1.3.7-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.7-next.0 - - @backstage/config@1.0.7 - - @backstage/types@1.0.2 - -## 0.2.13-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-node@1.3.7-next.0 - - @backstage/backend-common@0.18.6-next.0 - - @backstage/integration@1.4.5 - - @backstage/config@1.0.7 - - @backstage/catalog-model@1.3.0 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.6 - -## 0.2.12 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5 - - @backstage/integration@1.4.5 - - @backstage/plugin-catalog-node@1.3.6 - - @backstage/catalog-model@1.3.0 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.6 - -## 0.2.12-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5-next.1 - - @backstage/plugin-catalog-node@1.3.6-next.1 - - @backstage/config@1.0.7 - -## 0.2.12-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.5-next.0 - - @backstage/integration@1.4.5-next.0 - - @backstage/plugin-catalog-node@1.3.6-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.6-next.0 - - @backstage/catalog-model@1.3.0 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - -## 0.2.11 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.4 - - @backstage/catalog-model@1.3.0 - - @backstage/integration@1.4.4 - - @backstage/plugin-catalog-node@1.3.5 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5 - -## 0.2.11-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.3.0-next.0 - - @backstage/backend-common@0.18.4-next.2 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/integration@1.4.4-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 - - @backstage/plugin-catalog-node@1.3.5-next.3 - -## 0.2.11-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.4-next.2 - - @backstage/catalog-model@1.2.1 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/integration@1.4.4-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 - - @backstage/plugin-catalog-node@1.3.5-next.2 - -## 0.2.11-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/integration@1.4.4-next.0 - - @backstage/backend-common@0.18.4-next.1 - - @backstage/catalog-model@1.2.1 - - @backstage/config@1.0.7 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.5-next.0 - - @backstage/plugin-catalog-node@1.3.5-next.1 - -## 0.2.11-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.4-next.0 - - @backstage/config@1.0.7 - - @backstage/integration@1.4.3 - - @backstage/catalog-model@1.2.1 - - @backstage/errors@1.1.5 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.4 - - @backstage/plugin-catalog-node@1.3.5-next.0 - -## 0.2.10 - -### Patch Changes - -- e675f902980: Make sure to not use deprecated exports from `@backstage/plugin-catalog-backend` -- 52b0022dab7: Updated dependency `msw` to `^1.0.0`. -- Updated dependencies - - @backstage/backend-common@0.18.3 - - @backstage/errors@1.1.5 - - @backstage/plugin-catalog-node@1.3.4 - - @backstage/catalog-model@1.2.1 - - @backstage/integration@1.4.3 - - @backstage/plugin-bitbucket-cloud-common@0.2.4 - - @backstage/config@1.0.7 - - @backstage/types@1.0.2 - -## 0.2.10-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.3-next.2 - - @backstage/plugin-catalog-backend@1.8.0-next.2 - - @backstage/config@1.0.7-next.0 - - @backstage/integration@1.4.3-next.0 - -## 0.2.10-next.1 - -### Patch Changes - -- 52b0022dab7: Updated dependency `msw` to `^1.0.0`. -- Updated dependencies - - @backstage/errors@1.1.5-next.0 - - @backstage/backend-common@0.18.3-next.1 - - @backstage/integration@1.4.3-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.4-next.0 - - @backstage/plugin-catalog-backend@1.8.0-next.1 - - @backstage/config@1.0.7-next.0 - - @backstage/catalog-model@1.2.1-next.1 - - @backstage/types@1.0.2 - -## 0.2.10-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.8.0-next.0 - - @backstage/backend-common@0.18.3-next.0 - - @backstage/catalog-model@1.2.1-next.0 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9 - -### Patch Changes - -- 85b04f659a: Internal refactor to not use deprecated `substr` -- Updated dependencies - - @backstage/plugin-catalog-backend@1.7.2 - - @backstage/backend-common@0.18.2 - - @backstage/catalog-model@1.2.0 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.2-next.2 - - @backstage/plugin-catalog-backend@1.7.2-next.2 - - @backstage/catalog-model@1.2.0-next.1 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9-next.1 - -### Patch Changes - -- 85b04f659a: Internal refactor to not use deprecated `substr` -- Updated dependencies - - @backstage/plugin-catalog-backend@1.7.2-next.1 - - @backstage/backend-common@0.18.2-next.1 - - @backstage/catalog-model@1.1.6-next.0 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - -## 0.2.9-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.6-next.0 - - @backstage/backend-common@0.18.2-next.0 - - @backstage/plugin-catalog-backend@1.7.2-next.0 - -## 0.2.7 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.0 - - @backstage/catalog-model@1.1.5 - - @backstage/plugin-catalog-backend@1.7.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.3 - - @backstage/config@1.0.6 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2 - - @backstage/types@1.0.2 - -## 0.2.7-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.0-next.1 - - @backstage/plugin-catalog-backend@1.7.0-next.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3-next.1 - - @backstage/catalog-model@1.1.5-next.1 - - @backstage/config@1.0.6-next.0 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2-next.0 - - @backstage/types@1.0.2 - -## 0.2.7-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.18.0-next.0 - - @backstage/config@1.0.6-next.0 - - @backstage/plugin-catalog-backend@1.7.0-next.1 - - @backstage/catalog-model@1.1.5-next.1 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.2-next.0 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.3-next.0 - -## 0.2.7-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.5-next.0 - - @backstage/plugin-catalog-backend@1.7.0-next.0 - - @backstage/backend-common@0.17.0 - - @backstage/config@1.0.5 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.1 - - @backstage/types@1.0.2 - - @backstage/plugin-bitbucket-cloud-common@0.2.2 - -## 0.2.6 - -### Patch Changes - -- 3280711113: Updated dependency `msw` to `^0.49.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0 - - @backstage/backend-common@0.17.0 - - @backstage/errors@1.1.4 - - @backstage/integration@1.4.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2 - - @backstage/types@1.0.2 - - @backstage/catalog-model@1.1.4 - - @backstage/config@1.0.5 - -## 0.2.6-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0-next.3 - - @backstage/backend-common@0.17.0-next.3 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/errors@1.1.4-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/types@1.0.2-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 - -## 0.2.6-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0-next.2 - - @backstage/backend-common@0.17.0-next.2 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/errors@1.1.4-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/types@1.0.2-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 - -## 0.2.6-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.17.0-next.1 - - @backstage/plugin-catalog-backend@1.6.0-next.1 - - @backstage/types@1.0.2-next.1 - - @backstage/config@1.0.5-next.1 - - @backstage/integration@1.4.1-next.1 - - @backstage/catalog-model@1.1.4-next.1 - - @backstage/errors@1.1.4-next.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.1 - -## 0.2.6-next.0 - -### Patch Changes - -- 3280711113: Updated dependency `msw` to `^0.49.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.6.0-next.0 - - @backstage/backend-common@0.16.1-next.0 - - @backstage/integration@1.4.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.2-next.0 - - @backstage/types@1.0.2-next.0 - - @backstage/catalog-model@1.1.4-next.0 - - @backstage/config@1.0.5-next.0 - - @backstage/errors@1.1.4-next.0 - -## 0.2.5 - -### Patch Changes - -- 4c9f7847e4: Updated dependency `msw` to `^0.48.0` while moving it to be a dev dependency. -- Updated dependencies - - @backstage/backend-common@0.16.0 - - @backstage/plugin-catalog-backend@1.5.1 - - @backstage/integration@1.4.0 - - @backstage/catalog-model@1.1.3 - - @backstage/types@1.0.1 - - @backstage/plugin-bitbucket-cloud-common@0.2.1 - - @backstage/config@1.0.4 - - @backstage/errors@1.1.3 - -## 0.2.5-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.16.0-next.1 - - @backstage/plugin-catalog-backend@1.5.1-next.1 - - @backstage/catalog-model@1.1.3-next.0 - - @backstage/config@1.0.4-next.0 - - @backstage/errors@1.1.3-next.0 - - @backstage/integration@1.4.0-next.0 - - @backstage/types@1.0.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.1-next.0 - -## 0.2.5-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.16.0-next.0 - - @backstage/plugin-catalog-backend@1.5.1-next.0 - - @backstage/integration@1.4.0-next.0 - - @backstage/catalog-model@1.1.3-next.0 - - @backstage/types@1.0.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.1-next.0 - - @backstage/config@1.0.4-next.0 - - @backstage/errors@1.1.3-next.0 - -## 0.2.4 - -### Patch Changes - -- 23f9199a0f: Deprecate `@backstage/plugin-catalog-backend-module-bitbucket`. - - Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` - or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - -- Updated dependencies - - @backstage/catalog-model@1.1.2 - - @backstage/backend-common@0.15.2 - - @backstage/plugin-catalog-backend@1.5.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0 - - @backstage/config@1.0.3 - - @backstage/errors@1.1.2 - - @backstage/integration@1.3.2 - - @backstage/types@1.0.0 - -## 0.2.4-next.2 - -### Patch Changes - -- 23f9199a0f: Deprecate `@backstage/plugin-catalog-backend-module-bitbucket`. - - Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` - or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.5.0-next.2 - - @backstage/backend-common@0.15.2-next.2 - - @backstage/catalog-model@1.1.2-next.2 - - @backstage/config@1.0.3-next.2 - - @backstage/errors@1.1.2-next.2 - - @backstage/integration@1.3.2-next.2 - - @backstage/types@1.0.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0-next.2 - -## 0.2.4-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.2-next.1 - - @backstage/catalog-model@1.1.2-next.1 - - @backstage/config@1.0.3-next.1 - - @backstage/errors@1.1.2-next.1 - - @backstage/integration@1.3.2-next.1 - - @backstage/types@1.0.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0-next.1 - - @backstage/plugin-catalog-backend@1.4.1-next.1 - -## 0.2.4-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.2-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.2.0-next.0 - - @backstage/plugin-catalog-backend@1.4.1-next.0 - - @backstage/backend-common@0.15.2-next.0 - - @backstage/config@1.0.3-next.0 - - @backstage/errors@1.1.2-next.0 - - @backstage/integration@1.3.2-next.0 - - @backstage/types@1.0.0 - -## 0.2.3 - -### Patch Changes - -- 667d917488: Updated dependency `msw` to `^0.47.0`. -- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`. -- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. -- Updated dependencies - - @backstage/backend-common@0.15.1 - - @backstage/integration@1.3.1 - - @backstage/plugin-catalog-backend@1.4.0 - - @backstage/catalog-model@1.1.1 - - @backstage/config@1.0.2 - - @backstage/errors@1.1.1 - - @backstage/plugin-bitbucket-cloud-common@0.1.3 - -## 0.2.3-next.3 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.1-next.0 - - @backstage/config@1.0.2-next.0 - - @backstage/errors@1.1.1-next.0 - - @backstage/integration@1.3.1-next.2 - - @backstage/plugin-catalog-backend@1.4.0-next.3 - - @backstage/backend-common@0.15.1-next.3 - -## 0.2.3-next.2 - -### Patch Changes - -- 667d917488: Updated dependency `msw` to `^0.47.0`. -- 87ec2ba4d6: Updated dependency `msw` to `^0.46.0`. -- Updated dependencies - - @backstage/backend-common@0.15.1-next.2 - - @backstage/integration@1.3.1-next.1 - - @backstage/plugin-catalog-backend@1.4.0-next.2 - - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.1 - -## 0.2.3-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.1-next.1 - - @backstage/plugin-catalog-backend@1.4.0-next.1 - -## 0.2.3-next.0 - -### Patch Changes - -- bf5e9030eb: Updated dependency `msw` to `^0.45.0`. -- Updated dependencies - - @backstage/backend-common@0.15.1-next.0 - - @backstage/plugin-catalog-backend@1.3.2-next.0 - - @backstage/integration@1.3.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.1.3-next.0 - -## 0.2.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.0 - - @backstage/integration@1.3.0 - - @backstage/plugin-catalog-backend@1.3.1 - - @backstage/plugin-bitbucket-cloud-common@0.1.2 - -## 0.2.2-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.15.0-next.0 - - @backstage/integration@1.3.0-next.0 - - @backstage/plugin-catalog-backend@1.3.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.1.2-next.0 - -## 0.2.1 - -### Patch Changes - -- a70869e775: Updated dependency `msw` to `^0.43.0`. -- 8006d0f9bf: Updated dependency `msw` to `^0.44.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.3.0 - - @backstage/backend-common@0.14.1 - - @backstage/catalog-model@1.1.0 - - @backstage/integration@1.2.2 - - @backstage/plugin-bitbucket-cloud-common@0.1.1 - - @backstage/errors@1.1.0 - -## 0.2.1-next.2 - -### Patch Changes - -- a70869e775: Updated dependency `msw` to `^0.43.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.3.0-next.3 - - @backstage/backend-common@0.14.1-next.3 - - @backstage/integration@1.2.2-next.3 - - @backstage/plugin-bitbucket-cloud-common@0.1.1-next.1 - - @backstage/catalog-model@1.1.0-next.3 - -## 0.2.1-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/catalog-model@1.1.0-next.1 - - @backstage/backend-common@0.14.1-next.1 - - @backstage/errors@1.1.0-next.0 - - @backstage/plugin-catalog-backend@1.2.1-next.1 - - @backstage/integration@1.2.2-next.1 - -## 0.2.1-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.14.1-next.0 - - @backstage/catalog-model@1.1.0-next.0 - - @backstage/integration@1.2.2-next.0 - - @backstage/plugin-catalog-backend@1.2.1-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.1.1-next.0 - -## 0.2.0 - -### Minor Changes - -- 1c01c0fd14: Integrate `@backstage/plugin-bitbucket-cloud-common` as replacement for the `BitbucketCloudClient`. - -### Patch Changes - -- 8f7b1835df: Updated dependency `msw` to `^0.41.0`. -- Updated dependencies - - @backstage/plugin-catalog-backend@1.2.0 - - @backstage/backend-common@0.14.0 - - @backstage/integration@1.2.1 - - @backstage/plugin-bitbucket-cloud-common@0.1.0 - - @backstage/catalog-model@1.0.3 - -## 0.2.0-next.2 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.14.0-next.2 - - @backstage/integration@1.2.1-next.2 - - @backstage/plugin-catalog-backend@1.2.0-next.2 - -## 0.2.0-next.1 - -### Minor Changes - -- 1c01c0fd14: Integrate `@backstage/plugin-bitbucket-cloud-common` as replacement for the `BitbucketCloudClient`. - -### Patch Changes - -- 8f7b1835df: Updated dependency `msw` to `^0.41.0`. -- Updated dependencies - - @backstage/backend-common@0.13.6-next.1 - - @backstage/integration@1.2.1-next.1 - - @backstage/plugin-catalog-backend@1.2.0-next.1 - - @backstage/catalog-model@1.0.3-next.0 - - @backstage/plugin-bitbucket-cloud-common@0.1.0-next.0 - -## 0.1.4-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.6-next.0 - - @backstage/integration@1.2.1-next.0 - - @backstage/plugin-catalog-backend@1.2.0-next.0 - -## 0.1.3 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3 - - @backstage/plugin-catalog-backend@1.1.2 - - @backstage/integration@1.2.0 - - @backstage/config@1.0.1 - - @backstage/catalog-model@1.0.2 - -## 0.1.3-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3-next.2 - - @backstage/plugin-catalog-backend@1.1.2-next.2 - - @backstage/config@1.0.1-next.0 - - @backstage/catalog-model@1.0.2-next.0 - - @backstage/integration@1.2.0-next.1 - -## 0.1.3-next.0 - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.3-next.0 - - @backstage/integration@1.2.0-next.0 - - @backstage/plugin-catalog-backend@1.1.2-next.0 - -## 0.1.2 - -### Patch Changes - -- c47509e1a0: Implemented changes suggested by Deepsource.io including multiple double non-null assertion operators and unexpected awaits for non-promise values. -- 9fed130139: split BitbucketClient into BitbucketCloudClient, BitbucketServerClient -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0 - - @backstage/integration@1.1.0 - - @backstage/catalog-model@1.0.1 - - @backstage/backend-common@0.13.2 - -## 0.1.2-next.2 - -### Patch Changes - -- 9fed130139: split BitbucketClient into BitbucketCloudClient, BitbucketServerClient -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0-next.2 - - @backstage/catalog-model@1.0.1-next.1 - -## 0.1.2-next.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.1.0-next.1 - - @backstage/integration@1.1.0-next.1 - - @backstage/backend-common@0.13.2-next.1 - -## 0.1.2-next.0 - -### Patch Changes - -- c47509e1a0: Implemented changes suggested by Deepsource.io including multiple double non-null assertion operators and unexpected awaits for non-promise values. -- Updated dependencies - - @backstage/catalog-model@1.0.1-next.0 - - @backstage/plugin-catalog-backend@1.0.1-next.0 - - @backstage/backend-common@0.13.2-next.0 - - @backstage/integration@1.0.1-next.0 - -## 0.1.1 - -### Patch Changes - -- Updated dependencies - - @backstage/plugin-catalog-backend@1.0.0 - - @backstage/backend-common@0.13.1 - - @backstage/catalog-model@1.0.0 - - @backstage/integration@1.0.0 - - @backstage/config@1.0.0 - - @backstage/errors@1.0.0 - - @backstage/types@1.0.0 - -## 0.1.0 - -### Minor Changes - -- 47a5ae5dd2: Added package, moving out Bitbucket specific functionality from the catalog-backend - -### Patch Changes - -- Updated dependencies - - @backstage/backend-common@0.13.0 - - @backstage/plugin-catalog-backend@0.24.0 - - @backstage/catalog-model@0.13.0 diff --git a/plugins/catalog-backend-module-bitbucket/README.md b/plugins/catalog-backend-module-bitbucket/README.md deleted file mode 100644 index ae22c7a427..0000000000 --- a/plugins/catalog-backend-module-bitbucket/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Catalog Backend Module for Bitbucket - -This is an extension module to the plugin-catalog-backend plugin, providing extensions targeted at Bitbucket offerings. - -## Getting started - -See [Backstage documentation](https://backstage.io/docs/integrations/bitbucket/discovery) for details on how to install -and configure the plugin. diff --git a/plugins/catalog-backend-module-bitbucket/api-report.md b/plugins/catalog-backend-module-bitbucket/api-report.md deleted file mode 100644 index 30b2a89826..0000000000 --- a/plugins/catalog-backend-module-bitbucket/api-report.md +++ /dev/null @@ -1,47 +0,0 @@ -## API Report File for "@backstage/plugin-catalog-backend-module-bitbucket" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts -import { BitbucketIntegration } from '@backstage/integration'; -import { CatalogProcessor } from '@backstage/plugin-catalog-node'; -import { CatalogProcessorEmit } from '@backstage/plugin-catalog-node'; -import { CatalogProcessorResult } from '@backstage/plugin-catalog-node'; -import { Config } from '@backstage/config'; -import { LocationSpec } from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; -import { ScmIntegrationRegistry } from '@backstage/integration'; - -// @public @deprecated (undocumented) -export class BitbucketDiscoveryProcessor implements CatalogProcessor { - constructor(options: { - integrations: ScmIntegrationRegistry; - parser?: BitbucketRepositoryParser; - logger: Logger; - }); - // (undocumented) - static fromConfig( - config: Config, - options: { - parser?: BitbucketRepositoryParser; - logger: Logger; - }, - ): BitbucketDiscoveryProcessor; - // (undocumented) - getProcessorName(): string; - // (undocumented) - readLocation( - location: LocationSpec, - _optional: boolean, - emit: CatalogProcessorEmit, - ): Promise; -} - -// @public @deprecated -export type BitbucketRepositoryParser = (options: { - integration: BitbucketIntegration; - target: string; - presence?: 'optional' | 'required'; - logger: Logger; -}) => AsyncIterable; -``` diff --git a/plugins/catalog-backend-module-bitbucket/catalog-info.yaml b/plugins/catalog-backend-module-bitbucket/catalog-info.yaml deleted file mode 100644 index a384181766..0000000000 --- a/plugins/catalog-backend-module-bitbucket/catalog-info.yaml +++ /dev/null @@ -1,10 +0,0 @@ -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: backstage-plugin-catalog-backend-module-bitbucket - title: '@backstage/plugin-catalog-backend-module-bitbucket' - description: A Backstage catalog backend module that helps integrate towards Bitbucket -spec: - lifecycle: experimental - type: backstage-backend-plugin-module - owner: catalog-maintainers diff --git a/plugins/catalog-backend-module-bitbucket/knip-report.md b/plugins/catalog-backend-module-bitbucket/knip-report.md new file mode 100644 index 0000000000..7f1069ffcc --- /dev/null +++ b/plugins/catalog-backend-module-bitbucket/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/backend-common | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:------------------------------|:-------------| +| msw | package.json | +| @backstage/cli | package.json | +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-bitbucket/package.json b/plugins/catalog-backend-module-bitbucket/package.json deleted file mode 100644 index 19dd046280..0000000000 --- a/plugins/catalog-backend-module-bitbucket/package.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "name": "@backstage/plugin-catalog-backend-module-bitbucket", - "description": "A Backstage catalog backend module that helps integrate towards Bitbucket", - "version": "0.2.25-next.2", - "deprecated": true, - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public", - "main": "dist/index.cjs.js", - "types": "dist/index.d.ts" - }, - "backstage": { - "role": "backend-plugin-module" - }, - "homepage": "https://backstage.io", - "repository": { - "type": "git", - "url": "https://github.com/backstage/backstage", - "directory": "plugins/catalog-backend-module-bitbucket" - }, - "keywords": [ - "backstage" - ], - "scripts": { - "build": "backstage-cli package build", - "lint": "backstage-cli package lint", - "test": "backstage-cli package test", - "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack", - "clean": "backstage-cli package clean", - "start": "backstage-cli package start" - }, - "dependencies": { - "@backstage/backend-common": "workspace:^", - "@backstage/config": "workspace:^", - "@backstage/integration": "workspace:^", - "@backstage/plugin-bitbucket-cloud-common": "workspace:^", - "@backstage/plugin-catalog-node": "workspace:^", - "node-fetch": "^2.6.7", - "winston": "^3.2.1" - }, - "devDependencies": { - "@backstage/backend-test-utils": "workspace:^", - "@backstage/cli": "workspace:^", - "msw": "^1.0.0" - }, - "files": [ - "dist" - ] -} diff --git a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.test.ts b/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.test.ts deleted file mode 100644 index 262fb4e6c4..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.test.ts +++ /dev/null @@ -1,1176 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { getVoidLogger } from '@backstage/backend-common'; -import { setupRequestMockHandlers } from '@backstage/backend-test-utils'; -import { ConfigReader } from '@backstage/config'; -import { Models } from '@backstage/plugin-bitbucket-cloud-common'; -import { LocationSpec, processingResult } from '@backstage/plugin-catalog-node'; -import { RequestHandler, rest } from 'msw'; -import { setupServer } from 'msw/node'; -import { BitbucketDiscoveryProcessor } from './BitbucketDiscoveryProcessor'; -import { PagedResponse } from './lib'; - -const server = setupServer(); - -function setupStubs( - projects: any[], - bitbucketBaseUrl = `https://bitbucket.mycompany.com`, -) { - function pagedResponse(values: any): PagedResponse { - return { - values: values, - isLastPage: true, - } as PagedResponse; - } - - function stubbedProject( - project: string, - repos: string[], - ): RequestHandler { - return rest.get( - `${bitbucketBaseUrl}/api/rest/1.0/projects/${project}/repos`, - (_, res, ctx) => { - const response = []; - for (const repo of repos) { - response.push({ - slug: repo, - links: { - self: [ - { - href: `${bitbucketBaseUrl}/projects/${project}/repos/${repo}/browse`, - }, - ], - }, - }); - } - return res(ctx.json(pagedResponse(response))); - }, - ); - } - - server.use( - rest.get(`${bitbucketBaseUrl}/api/rest/1.0/projects`, (_, res, ctx) => { - return res( - ctx.json( - pagedResponse( - projects.map(p => { - return { key: p.key }; - }), - ), - ), - ); - }), - ); - - for (const project of projects) { - server.use(stubbedProject(project.key, project.repos)); - } -} - -function setupBitbucketCloudStubs( - workspace: string, - repositories: Pick[], -) { - const stubCallerFn = jest.fn(); - function pagedResponse(values: any): Models.PaginatedRepositories { - return { - values: values, - page: 1, - } as Models.PaginatedRepositories; - } - - server.use( - rest.get( - `https://api.bitbucket.org/2.0/repositories/${workspace}`, - (req, res, ctx) => { - stubCallerFn(req); - return res( - ctx.json( - pagedResponse( - repositories.map(r => ({ - ...r, - links: { - html: { - href: `https://bitbucket.org/${workspace}/${r.slug}`, - }, - }, - })), - ), - ), - ); - }, - ), - ); - return stubCallerFn; -} - -function setupBitbucketCloudSearchStubs( - workspace: string, - repositories: Pick[], - catalogPath: string, -) { - const stubCallerFn = jest.fn(); - function pagedResponse(values: any): Models.PaginatedRepositories { - return { - values: values, - page: 1, - } as Models.PaginatedRepositories; - } - - server.use( - rest.get( - `https://api.bitbucket.org/2.0/workspaces/${workspace}/search/code`, - (req, res, ctx) => { - stubCallerFn(req); - return res( - ctx.json( - pagedResponse( - repositories.map(r => ({ - type: 'code_search_result', - content_match_count: 0, - content_matches: [], - path_matches: [ - catalogPath - .split('/') - .flatMap(seg => [{ text: '/' }, { text: seg, match: true }]) - .slice(1), - ], - file: { - commit: { - repository: { - ...r, - links: { - html: { - href: `https://bitbucket.org/${workspace}/${r.slug}`, - }, - }, - }, - }, - path: catalogPath, - }, - })), - ), - ), - ); - }, - ), - ); - return stubCallerFn; -} - -describe('BitbucketDiscoveryProcessor', () => { - setupRequestMockHandlers(server); - - afterEach(() => jest.resetAllMocks()); - - describe('reject unrelated entries', () => { - it('rejects unknown types', async () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [{ host: 'bitbucket.mycompany.com', token: 'blob' }], - }, - }), - { logger: getVoidLogger() }, - ); - const location: LocationSpec = { - type: 'not-bitbucket-discovery', - target: 'https://bitbucket.mycompany.com', - }; - await expect( - processor.readLocation(location, false, () => {}), - ).resolves.toBeFalsy(); - }); - - it('rejects unknown targets', async () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { host: 'bitbucket.org', token: 'blob' }, - { host: 'bitbucket.mycompany.com', token: 'blob' }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: 'https://not.bitbucket.mycompany.com/foobar', - }; - await expect( - processor.readLocation(location, false, () => {}), - ).rejects.toThrow( - /There is no Bitbucket integration that matches https:\/\/not.bitbucket.mycompany.com\/foobar/, - ); - }); - }); - - describe('handles organisation repositories', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.mycompany.com', - token: 'blob', - apiBaseUrl: 'https://bitbucket.mycompany.com/api/rest/1.0', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories', async () => { - setupStubs([ - { key: 'backstage', repos: ['backstage'] }, - { key: 'demo', repos: ['demo'] }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/*/repos/*/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/backstage/browse/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/demo/repos/demo/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupStubs([ - { key: 'backstage', repos: ['backstage', 'techdocs-cli'] }, - { key: 'demo', repos: ['demo'] }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-*/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-cli/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories by target search ref', async () => { - setupStubs([{ key: 'demo', repos: ['demo'] }]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/demo/repos/demo/catalog.yaml?ref=branch-name', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/demo/repos/demo/browse/catalog.yaml?ref=branch-name', - presence: 'optional', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupStubs([{ key: 'backstage', repos: ['test', 'abctest', 'testxyz'] }]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/test/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/test/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.mycompany.com/projects/backstage/repos/*'} - ${'https://bitbucket.mycompany.com/projects/backstage/repos/*/'} - ${'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-*/'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupStubs([{ key: 'backstage', repos: ['techdocs-cli'] }]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/techdocs-cli/browse/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - }); - - describe('handles organisation repositories with a custom baseURL', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.mycompany.com', - token: 'blob', - apiBaseUrl: - 'https://bitbucket.mycompany.com/custom-path/api/rest/1.0', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories', async () => { - setupStubs( - [ - { key: 'backstage', repos: ['backstage'] }, - { key: 'demo', repos: ['demo'] }, - ], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/*/repos/*/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/backstage/browse/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupStubs( - [ - { key: 'backstage', repos: ['backstage', 'techdocs-cli'] }, - { key: 'demo', repos: ['demo'] }, - ], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-*/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-cli/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories by target search ref', async () => { - setupStubs( - [{ key: 'demo', repos: ['demo'] }], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/catalog.yaml?ref=branch-name', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/demo/repos/demo/browse/catalog.yaml?ref=branch-name', - presence: 'optional', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupStubs( - [{ key: 'backstage', repos: ['test', 'abctest', 'testxyz'] }], - 'https://bitbucket.mycompany.com/custom-path', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/test/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/test/browse/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/*'} - ${'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/*/'} - ${'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-*/'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupStubs( - [{ key: 'backstage', repos: ['techdocs-cli'] }], - 'https://bitbucket.mycompany.com/custom-path', - ); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.mycompany.com/custom-path/projects/backstage/repos/techdocs-cli/browse/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - }); - - describe('handles cloud repositories', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.org', - username: 'myuser', - appPassword: 'blob', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories by default', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: 'https://bitbucket.org/workspaces/myworkspace', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - - it('uses provided catalog path', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace?catalogPath=my/nested/path/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/my/nested/path/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/my/nested/path/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output all repositories', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/*/repos/*?catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'optional', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*?catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-two', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-three', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-three?catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-three/src/master/catalog.yaml', - presence: 'optional', - }, - }); - }); - - it('submits query', async () => { - const mockCall = setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ]); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace?q=project.key ~ "prj-one"', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - expect(mockCall).toHaveBeenCalledTimes(1); - // it should be possible to do this via an `expect.objectContaining` check but seems to fail with some encoding issue. - expect(mockCall.mock.calls[0][0].url).toMatchInlineSnapshot( - `"https://api.bitbucket.org/2.0/repositories/myworkspace?page=1&pagelen=100&q=project.key+%7E+%22prj-one%22"`, - ); - }); - - it.each` - target - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*/'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-*/'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'optional', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.org/test'} - `("target '$target' is rejected", async ({ target }) => { - setupBitbucketCloudStubs('myworkspace', [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await expect( - processor.readLocation(location, false, emitter), - ).rejects.toThrow(/Failed to parse /); - }); - }); - - describe('handles cloud repositories using code search', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.org', - username: 'myuser', - appPassword: 'blob', - }, - ], - }, - }), - { logger: getVoidLogger() }, - ); - - it('output all repositories by default', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'catalog-info.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: 'https://bitbucket.org/workspaces/myworkspace?search=true', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'required', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog-info.yaml', - presence: 'required', - }, - }); - }); - - it('uses provided catalog path', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'my/nested/path/catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace?search=true&catalogPath=my/nested/path/catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/my/nested/path/catalog.yaml', - presence: 'required', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/my/nested/path/catalog.yaml', - presence: 'required', - }, - }); - }); - - it('output all repositories', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/*/repos/*?search=true&catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(2); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'required', - }, - }); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-two/src/master/catalog.yaml', - presence: 'required', - }, - }); - }); - - it('output repositories with wildcards', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-two' }, - slug: 'repository-two', - }, - ], - 'catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*?search=true&catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog.yaml', - presence: 'required', - }, - }); - }); - - it('filter unrelated repositories', async () => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-two', - }, - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-three', - }, - ], - 'catalog.yaml', - ); - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-three?search=true&catalogPath=catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-three/src/master/catalog.yaml', - presence: 'required', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*?search=true'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/*/?search=true'} - ${'https://bitbucket.org/workspaces/myworkspace/projects/prj-one/repos/repository-*/?search=true'} - `("target '$target' adds default path to catalog", async ({ target }) => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ], - 'catalog-info.yaml', - ); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'url', - target: - 'https://bitbucket.org/myworkspace/repository-one/src/master/catalog-info.yaml', - presence: 'required', - }, - }); - }); - - it.each` - target - ${'https://bitbucket.org/test?search=true'} - `("target '$target' is rejected", async ({ target }) => { - setupBitbucketCloudSearchStubs( - 'myworkspace', - [ - { - project: { type: 'project', key: 'prj-one' }, - slug: 'repository-one', - }, - ], - 'catalog-info.yaml', - ); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: target, - }; - - const emitter = jest.fn(); - await expect( - processor.readLocation(location, false, emitter), - ).rejects.toThrow(/Failed to parse /); - }); - }); - - describe('Custom repository parser', () => { - const processor = BitbucketDiscoveryProcessor.fromConfig( - new ConfigReader({ - integrations: { - bitbucket: [ - { - host: 'bitbucket.mycompany.com', - token: 'blob', - apiBaseUrl: 'https://bitbucket.mycompany.com/api/rest/1.0', - }, - ], - }, - }), - { - parser: async function* customRepositoryParser({}) { - yield processingResult.location({ - type: 'custom-location-type', - target: 'custom-target', - presence: 'optional', - }); - }, - logger: getVoidLogger(), - }, - ); - - it('use custom repository parser', async () => { - setupStubs([{ key: 'backstage', repos: ['test'] }]); - - const location: LocationSpec = { - type: 'bitbucket-discovery', - target: - 'https://bitbucket.mycompany.com/projects/backstage/repos/test/catalog.yaml', - }; - - const emitter = jest.fn(); - await processor.readLocation(location, false, emitter); - - expect(emitter).toHaveBeenCalledTimes(1); - expect(emitter).toHaveBeenCalledWith({ - type: 'location', - location: { - type: 'custom-location-type', - target: 'custom-target', - presence: 'optional', - }, - }); - }); - }); -}); diff --git a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts b/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts deleted file mode 100644 index 3f25d6ed7b..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/BitbucketDiscoveryProcessor.ts +++ /dev/null @@ -1,415 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { Config } from '@backstage/config'; -import { - BitbucketIntegration, - ScmIntegrationRegistry, - ScmIntegrations, -} from '@backstage/integration'; -import { - BitbucketCloudClient, - Models, -} from '@backstage/plugin-bitbucket-cloud-common'; -import { - CatalogProcessor, - CatalogProcessorEmit, - LocationSpec, -} from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; -import { - BitbucketRepository, - BitbucketRepositoryParser, - BitbucketServerClient, - defaultRepositoryParser, - paginated, -} from './lib'; - -const DEFAULT_BRANCH = 'master'; -const DEFAULT_CATALOG_LOCATION = '/catalog-info.yaml'; - -/** - * @public - * @deprecated Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - */ -export class BitbucketDiscoveryProcessor implements CatalogProcessor { - private readonly integrations: ScmIntegrationRegistry; - private readonly parser: BitbucketRepositoryParser; - private readonly logger: Logger; - - static fromConfig( - config: Config, - options: { - parser?: BitbucketRepositoryParser; - logger: Logger; - }, - ) { - const integrations = ScmIntegrations.fromConfig(config); - - return new BitbucketDiscoveryProcessor({ - ...options, - integrations, - }); - } - - constructor(options: { - integrations: ScmIntegrationRegistry; - parser?: BitbucketRepositoryParser; - logger: Logger; - }) { - this.integrations = options.integrations; - this.parser = options.parser || defaultRepositoryParser; - this.logger = options.logger; - this.logger.warn( - 'Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead.', - ); - } - - getProcessorName(): string { - return 'BitbucketDiscoveryProcessor'; - } - - async readLocation( - location: LocationSpec, - _optional: boolean, - emit: CatalogProcessorEmit, - ): Promise { - if (location.type !== 'bitbucket-discovery') { - return false; - } - - const integration = this.integrations.bitbucket.byUrl(location.target); - if (!integration) { - throw new Error( - `There is no Bitbucket integration that matches ${location.target}. Please add a configuration entry for it under integrations.bitbucket`, - ); - } - - const startTimestamp = Date.now(); - this.logger.info( - `Reading ${integration.config.host} repositories from ${location.target}`, - ); - - const processOptions: ProcessOptions = { - emit, - integration, - location, - }; - - const isBitbucketCloud = integration.config.host === 'bitbucket.org'; - const { scanned, matches } = isBitbucketCloud - ? await this.processCloudRepositories(processOptions) - : await this.processOrganizationRepositories(processOptions); - - const duration = ((Date.now() - startTimestamp) / 1000).toFixed(1); - this.logger.debug( - `Read ${scanned} ${integration.config.host} repositories (${matches} matching the pattern) in ${duration} seconds`, - ); - - return true; - } - - private async processCloudRepositories( - options: ProcessOptions, - ): Promise { - const { location, integration, emit } = options; - const client = BitbucketCloudClient.fromConfig(integration.config); - - const { searchEnabled } = parseBitbucketCloudUrl(location.target); - - const result = searchEnabled - ? await searchBitbucketCloudLocations(client, location.target) - : await readBitbucketCloudLocations(client, location.target); - - for (const locationTarget of result.matches) { - for await (const entity of this.parser({ - integration, - target: locationTarget, - presence: searchEnabled ? 'required' : 'optional', - logger: this.logger, - })) { - emit(entity); - } - } - return { - matches: result.matches.length, - scanned: result.scanned, - }; - } - - private async processOrganizationRepositories( - options: ProcessOptions, - ): Promise { - const { location, integration, emit } = options; - const { catalogPath: requestedCatalogPath } = parseUrl(location.target); - const catalogPath = requestedCatalogPath - ? `/${requestedCatalogPath}` - : DEFAULT_CATALOG_LOCATION; - - const client = new BitbucketServerClient({ - config: integration.config, - }); - - const result = await readBitbucketOrg(client, location.target); - for (const repository of result.matches) { - for await (const entity of this.parser({ - integration, - target: `${repository.links.self[0].href}${catalogPath}`, - logger: this.logger, - })) { - emit(entity); - } - } - return { - matches: result.matches.length, - scanned: result.scanned, - }; - } -} - -export async function readBitbucketOrg( - client: BitbucketServerClient, - target: string, -): Promise> { - const { projectSearchPath, repoSearchPath } = parseUrl(target); - const projects = paginated(options => client.listProjects(options)); - const result: Result = { - scanned: 0, - matches: [], - }; - - for await (const project of projects) { - if (!projectSearchPath.test(project.key)) { - continue; - } - const repositories = paginated(options => - client.listRepositories(project.key, options), - ); - for await (const repository of repositories) { - result.scanned++; - if (repoSearchPath.test(repository.slug)) { - result.matches.push(repository); - } - } - } - return result; -} - -export async function searchBitbucketCloudLocations( - client: BitbucketCloudClient, - target: string, -): Promise> { - const { - workspacePath, - catalogPath: requestedCatalogPath, - projectSearchPath, - repoSearchPath, - } = parseBitbucketCloudUrl(target); - - const result: Result = { - scanned: 0, - matches: [], - }; - - const catalogPath = requestedCatalogPath - ? requestedCatalogPath - : DEFAULT_CATALOG_LOCATION; - const catalogFilename = catalogPath.substring( - catalogPath.lastIndexOf('/') + 1, - ); - - // load all fields relevant for creating refs later, but not more - const fields = [ - // exclude code/content match details - '-values.content_matches', - // include/add relevant repository details - '+values.file.commit.repository.mainbranch.name', - '+values.file.commit.repository.project.key', - '+values.file.commit.repository.slug', - // remove irrelevant links - '-values.*.links', - '-values.*.*.links', - '-values.*.*.*.links', - // ...except the one we need - '+values.file.commit.repository.links.html.href', - ].join(','); - const query = `"${catalogFilename}" path:${catalogPath}`; - const searchResults = client - .searchCode(workspacePath, query, { fields }) - .iterateResults(); - - for await (const searchResult of searchResults) { - // not a file match, but a code match - if (searchResult.path_matches!.length === 0) { - continue; - } - - const repository = searchResult.file!.commit!.repository!; - if (!matchesPostFilters(repository, projectSearchPath, repoSearchPath)) { - continue; - } - - const repoUrl = repository.links!.html!.href; - const branch = repository.mainbranch?.name ?? DEFAULT_BRANCH; - const filePath = searchResult.file!.path; - const location = `${repoUrl}/src/${branch}/${filePath}`; - - result.matches.push(location); - } - - return result; -} - -export async function readBitbucketCloudLocations( - client: BitbucketCloudClient, - target: string, -): Promise> { - const { catalogPath: requestedCatalogPath } = parseBitbucketCloudUrl(target); - const catalogPath = requestedCatalogPath - ? `/${requestedCatalogPath}` - : DEFAULT_CATALOG_LOCATION; - - return readBitbucketCloud(client, target).then(result => { - const matches = result.matches.map(repository => { - const branch = repository.mainbranch?.name ?? DEFAULT_BRANCH; - return `${repository.links!.html!.href}/src/${branch}${catalogPath}`; - }); - - return { - scanned: result.scanned, - matches, - }; - }); -} - -export async function readBitbucketCloud( - client: BitbucketCloudClient, - target: string, -): Promise> { - const { - workspacePath, - queryParam: q, - projectSearchPath, - repoSearchPath, - } = parseBitbucketCloudUrl(target); - - const repositories = client - .listRepositoriesByWorkspace(workspacePath, { q }) - .iterateResults(); - const result: Result = { - scanned: 0, - matches: [], - }; - - for await (const repository of repositories) { - result.scanned++; - if (matchesPostFilters(repository, projectSearchPath, repoSearchPath)) { - result.matches.push(repository); - } - } - return result; -} - -function matchesPostFilters( - repository: Models.Repository, - projectSearchPath: RegExp | undefined, - repoSearchPath: RegExp | undefined, -): boolean { - return ( - (!projectSearchPath || projectSearchPath.test(repository.project!.key!)) && - (!repoSearchPath || repoSearchPath.test(repository.slug!)) - ); -} - -function parseUrl(urlString: string): { - projectSearchPath: RegExp; - repoSearchPath: RegExp; - catalogPath: string; -} { - const url = new URL(urlString); - const indexOfProjectSegment = - url.pathname.toLowerCase().indexOf('/projects/') + 1; - const path = url.pathname.slice(indexOfProjectSegment).split('/'); - - // /projects/backstage/repos/techdocs-*/catalog-info.yaml - if (path.length > 3 && path[1].length && path[3].length) { - return { - projectSearchPath: escapeRegExp(decodeURIComponent(path[1])), - repoSearchPath: escapeRegExp(decodeURIComponent(path[3])), - catalogPath: decodeURIComponent(path.slice(4).join('/') + url.search), - }; - } - - throw new Error(`Failed to parse ${urlString}`); -} - -function readPathParameters(pathParts: string[]): Map { - const vals: Record = {}; - for (let i = 0; i + 1 < pathParts.length; i += 2) { - vals[pathParts[i]] = decodeURIComponent(pathParts[i + 1]); - } - return new Map(Object.entries(vals)); -} - -function parseBitbucketCloudUrl(urlString: string): { - workspacePath: string; - catalogPath?: string; - projectSearchPath?: RegExp; - repoSearchPath?: RegExp; - queryParam?: string; - searchEnabled: boolean; -} { - const url = new URL(urlString); - const pathMap = readPathParameters(url.pathname.slice(1).split('/')); - const query = url.searchParams; - - if (!pathMap.has('workspaces')) { - throw new Error(`Failed to parse workspace from ${urlString}`); - } - - return { - workspacePath: pathMap.get('workspaces')!, - projectSearchPath: pathMap.has('projects') - ? escapeRegExp(pathMap.get('projects')!) - : undefined, - repoSearchPath: pathMap.has('repos') - ? escapeRegExp(pathMap.get('repos')!) - : undefined, - catalogPath: query.get('catalogPath') || undefined, - queryParam: query.get('q') || undefined, - searchEnabled: query.get('search')?.toLowerCase() === 'true', - }; -} - -function escapeRegExp(str: string): RegExp { - return new RegExp(`^${str.replace(/\*/g, '.*')}$`); -} - -type ProcessOptions = { - integration: BitbucketIntegration; - location: LocationSpec; - emit: CatalogProcessorEmit; -}; - -type Result = { - scanned: number; - matches: T[]; -}; - -type ResultSummary = { - scanned: number; - matches: number; -}; diff --git a/plugins/catalog-backend-module-bitbucket/src/index.ts b/plugins/catalog-backend-module-bitbucket/src/index.ts deleted file mode 100644 index 5bbda25dea..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/index.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * A Backstage catalog backend module that helps integrate towards Bitbucket - * - * @packageDocumentation - */ - -export { BitbucketDiscoveryProcessor } from './BitbucketDiscoveryProcessor'; -export type { BitbucketRepositoryParser } from './lib/BitbucketRepositoryParser'; diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.test.ts b/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.test.ts deleted file mode 100644 index 478ccd7c52..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.test.ts +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { processingResult } from '@backstage/plugin-catalog-node'; -import { defaultRepositoryParser } from './BitbucketRepositoryParser'; - -describe('BitbucketRepositoryParser', () => { - describe('defaultRepositoryParser', () => { - it('emits location', async () => { - const browseUrl = - 'https://bitbucket.mycompany.com/projects/project-key/repos/repo-slug/browse'; - const path = '/catalog-info.yaml'; - const expected = [ - processingResult.location({ - type: 'url', - target: `${browseUrl}${path}`, - presence: 'optional', - }), - ]; - const actual = defaultRepositoryParser({ - target: `${browseUrl}${path}`, - }); - - let i = 0; - for await (const entity of actual) { - expect(entity).toStrictEqual(expected[i]); - i++; - } - }); - }); -}); diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.ts b/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.ts deleted file mode 100644 index aa973f87c2..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketRepositoryParser.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { BitbucketIntegration } from '@backstage/integration'; -import { - CatalogProcessorResult, - processingResult, -} from '@backstage/plugin-catalog-node'; -import { Logger } from 'winston'; - -/** - * A custom callback that reacts to finding a repository by yielding processing - * results. - * - * @public - * @deprecated Please migrate to `@backstage/plugin-catalog-backend-module-bitbucket-cloud` or `@backstage/plugin-catalog-backend-module-bitbucket-server` instead. - */ -export type BitbucketRepositoryParser = (options: { - integration: BitbucketIntegration; - target: string; - presence?: 'optional' | 'required'; - logger: Logger; -}) => AsyncIterable; - -export const defaultRepositoryParser = - async function* defaultRepositoryParser(options: { - target: string; - presence?: 'optional' | 'required'; - }) { - yield processingResult.location({ - type: 'url', - target: options.target, - // Not all locations may actually exist, since the user defined them as a wildcard pattern. - // Thus, we emit them as optional and let the downstream processor find them while not outputting - // an error if it couldn't. - presence: options.presence ?? 'optional', - }); - }; diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketServerClient.ts b/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketServerClient.ts deleted file mode 100644 index bcebb1713b..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/BitbucketServerClient.ts +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import { - BitbucketIntegrationConfig, - getBitbucketRequestOptions, -} from '@backstage/integration'; -import fetch from 'node-fetch'; - -export class BitbucketServerClient { - private readonly config: BitbucketIntegrationConfig; - - constructor(options: { config: BitbucketIntegrationConfig }) { - this.config = options.config; - } - - async listProjects(options?: ListOptions): Promise> { - return this.pagedRequest(`${this.config.apiBaseUrl}/projects`, options); - } - - async listRepositories( - projectKey: string, - options?: ListOptions, - ): Promise> { - return this.pagedRequest( - `${this.config.apiBaseUrl}/projects/${encodeURIComponent( - projectKey, - )}/repos`, - options, - ); - } - - private async pagedRequest( - endpoint: string, - options?: ListOptions, - ): Promise> { - const request = new URL(endpoint); - for (const key in options) { - if (options[key]) { - request.searchParams.append(key, options[key]!.toString()); - } - } - - const response = await fetch( - request.toString(), - getBitbucketRequestOptions(this.config), - ); - if (!response.ok) { - throw new Error( - `Unexpected response when fetching ${request.toString()}. Expected 200 but got ${ - response.status - } - ${response.statusText}`, - ); - } - return response.json() as Promise>; - } -} - -export type ListOptions = { - [key: string]: number | undefined; - limit?: number | undefined; - start?: number | undefined; -}; - -export type PagedResponse = { - size: number; - limit: number; - start: number; - isLastPage: boolean; - values: T[]; - nextPageStart: number; -}; - -export async function* paginated( - request: (options: ListOptions) => Promise>, - options?: ListOptions, -) { - const opts = options || { start: 0 }; - let res; - do { - res = await request(opts); - opts.start = res.nextPageStart; - for (const item of res.values) { - yield item; - } - } while (!res.isLastPage); -} diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/index.ts b/plugins/catalog-backend-module-bitbucket/src/lib/index.ts deleted file mode 100644 index c93bd7afd9..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/index.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { defaultRepositoryParser } from './BitbucketRepositoryParser'; -export type { BitbucketRepositoryParser } from './BitbucketRepositoryParser'; -export { BitbucketServerClient, paginated } from './BitbucketServerClient'; -export type { PagedResponse } from './BitbucketServerClient'; -export type { BitbucketRepository } from './types'; diff --git a/plugins/catalog-backend-module-bitbucket/src/lib/types.ts b/plugins/catalog-backend-module-bitbucket/src/lib/types.ts deleted file mode 100644 index b1bb416363..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/lib/types.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright 2021 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -type BitbucketRepositoryBase = { - project: { - key: string; - }; - slug: string; -}; - -export type BitbucketRepository = BitbucketRepositoryBase & { - links: Record< - string, - { - href: string; - }[] - >; -}; diff --git a/plugins/catalog-backend-module-bitbucket/src/setupTests.ts b/plugins/catalog-backend-module-bitbucket/src/setupTests.ts deleted file mode 100644 index d3232290a7..0000000000 --- a/plugins/catalog-backend-module-bitbucket/src/setupTests.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2020 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export {}; diff --git a/plugins/catalog-backend-module-gcp/knip-report.md b/plugins/catalog-backend-module-gcp/knip-report.md new file mode 100644 index 0000000000..4c06faddc0 --- /dev/null +++ b/plugins/catalog-backend-module-gcp/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/catalog-backend-module-gerrit/knip-report.md b/plugins/catalog-backend-module-gerrit/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-gerrit/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-github-org/knip-report.md b/plugins/catalog-backend-module-github-org/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-github-org/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-github-org/package.json b/plugins/catalog-backend-module-github-org/package.json index 4eef491fef..fc460647ad 100644 --- a/plugins/catalog-backend-module-github-org/package.json +++ b/plugins/catalog-backend-module-github-org/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-backend-module-github-org" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/catalog-backend-module-github/knip-report.md b/plugins/catalog-backend-module-github/knip-report.md new file mode 100644 index 0000000000..9da10acac4 --- /dev/null +++ b/plugins/catalog-backend-module-github/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:----------------------------------|:-------------| +| @backstage/plugin-catalog-backend | package.json | + +## Unlisted dependencies (3) + +| Name | Location | +|:------------------------|:----------------------------------------------| +| @octokit/webhooks-types | src/providers/GithubEntityProvider.ts | +| @octokit/webhooks-types | src/providers/GithubMultiOrgEntityProvider.ts | +| @octokit/webhooks-types | src/providers/GithubOrgEntityProvider.ts | + diff --git a/plugins/catalog-backend-module-gitlab/knip-report.md b/plugins/catalog-backend-module-gitlab/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-gitlab/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-incremental-ingestion/knip-report.md b/plugins/catalog-backend-module-incremental-ingestion/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-incremental-ingestion/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-ldap/knip-report.md b/plugins/catalog-backend-module-ldap/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-ldap/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-msgraph/knip-report.md b/plugins/catalog-backend-module-msgraph/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-msgraph/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-openapi/knip-report.md b/plugins/catalog-backend-module-openapi/knip-report.md new file mode 100644 index 0000000000..4e8c8afdcf --- /dev/null +++ b/plugins/catalog-backend-module-openapi/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:--------------|:-------------| +| openapi-types | package.json | + diff --git a/plugins/catalog-backend-module-puppetdb/knip-report.md b/plugins/catalog-backend-module-puppetdb/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-puppetdb/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/knip-report.md b/plugins/catalog-backend-module-scaffolder-entity-model/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-scaffolder-entity-model/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend-module-scaffolder-entity-model/package.json b/plugins/catalog-backend-module-scaffolder-entity-model/package.json index 17304252f2..e1e6d0a966 100644 --- a/plugins/catalog-backend-module-scaffolder-entity-model/package.json +++ b/plugins/catalog-backend-module-scaffolder-entity-model/package.json @@ -19,6 +19,11 @@ ] } }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/catalog-backend-module-scaffolder-entity-model" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/catalog-backend-module-unprocessed/knip-report.md b/plugins/catalog-backend-module-unprocessed/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-backend-module-unprocessed/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-backend/knip-report.md b/plugins/catalog-backend/knip-report.md new file mode 100644 index 0000000000..3dffc866b2 --- /dev/null +++ b/plugins/catalog-backend/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------------|:-------------| +| node-fetch | package.json | +| @backstage/repo-tools | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| better-sqlite3 | package.json | + diff --git a/plugins/catalog-backend/src/service/CatalogPlugin.ts b/plugins/catalog-backend/src/service/CatalogPlugin.ts index 0800d41340..538fe4a69e 100644 --- a/plugins/catalog-backend/src/service/CatalogPlugin.ts +++ b/plugins/catalog-backend/src/service/CatalogPlugin.ts @@ -17,6 +17,7 @@ import { createBackendPlugin, coreServices, } from '@backstage/backend-plugin-api'; +import { Entity } from '@backstage/catalog-model'; import { CatalogBuilder, CatalogPermissionRuleInput } from './CatalogBuilder'; import { CatalogAnalysisExtensionPoint, @@ -40,6 +41,10 @@ class CatalogProcessingExtensionPointImpl #processors = new Array(); #entityProviders = new Array(); #placeholderResolvers: Record = {}; + #onProcessingErrorHandler?: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void; addProcessor( ...processors: Array> @@ -61,6 +66,15 @@ class CatalogProcessingExtensionPointImpl this.#placeholderResolvers[key] = resolver; } + setOnProcessingErrorHandler( + handler: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void, + ) { + this.#onProcessingErrorHandler = handler; + } + get processors() { return this.#processors; } @@ -72,6 +86,10 @@ class CatalogProcessingExtensionPointImpl get placeholderResolvers() { return this.#placeholderResolvers; } + + get onProcessingErrorHandler() { + return this.#onProcessingErrorHandler; + } } class CatalogAnalysisExtensionPointImpl @@ -162,6 +180,11 @@ export const catalogPlugin = createBackendPlugin({ scheduler, logger: winstonLogger, }); + if (processingExtensions.onProcessingErrorHandler) { + builder.subscribe({ + onProcessingError: processingExtensions.onProcessingErrorHandler, + }); + } builder.addProcessor(...processingExtensions.processors); builder.addEntityProvider(...processingExtensions.entityProviders); Object.entries(processingExtensions.placeholderResolvers).forEach( diff --git a/plugins/catalog-common/knip-report.md b/plugins/catalog-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-graph/knip-report.md b/plugins/catalog-graph/knip-report.md new file mode 100644 index 0000000000..479bb3d3ad --- /dev/null +++ b/plugins/catalog-graph/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| p-limit | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/catalog-import/knip-report.md b/plugins/catalog-import/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/catalog-import/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/catalog-node/api-report-alpha.md b/plugins/catalog-node/api-report-alpha.md index 74339b1bc9..5be4b114c0 100644 --- a/plugins/catalog-node/api-report-alpha.md +++ b/plugins/catalog-node/api-report-alpha.md @@ -54,6 +54,13 @@ export interface CatalogProcessingExtensionPoint { addProcessor( ...processors: Array> ): void; + // (undocumented) + setOnProcessingErrorHandler( + handler: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void, + ): void; } // @alpha (undocumented) diff --git a/plugins/catalog-node/knip-report.md b/plugins/catalog-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/catalog-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/catalog-node/src/extensions.ts b/plugins/catalog-node/src/extensions.ts index 7aa9264030..e2ee1b4f4b 100644 --- a/plugins/catalog-node/src/extensions.ts +++ b/plugins/catalog-node/src/extensions.ts @@ -37,6 +37,12 @@ export interface CatalogProcessingExtensionPoint { ...providers: Array> ): void; addPlaceholderResolver(key: string, resolver: PlaceholderResolver): void; + setOnProcessingErrorHandler( + handler: (event: { + unprocessedEntity: Entity; + errors: Error[]; + }) => Promise | void, + ): void; } /** diff --git a/plugins/catalog-react/knip-report.md b/plugins/catalog-react/knip-report.md new file mode 100644 index 0000000000..964e4b4fa4 --- /dev/null +++ b/plugins/catalog-react/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| react-test-renderer | package.json | +| @testing-library/dom | package.json | + diff --git a/plugins/catalog-react/package.json b/plugins/catalog-react/package.json index b4c2c786b4..97dfc7f289 100644 --- a/plugins/catalog-react/package.json +++ b/plugins/catalog-react/package.json @@ -61,7 +61,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", + "@react-hookz/web": "^24.0.0", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.2.6", "lodash": "^4.17.21", diff --git a/plugins/catalog-unprocessed-entities/knip-report.md b/plugins/catalog-unprocessed-entities/knip-report.md new file mode 100644 index 0000000000..56419ede4c --- /dev/null +++ b/plugins/catalog-unprocessed-entities/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/react | package.json | + diff --git a/plugins/catalog/knip-report.md b/plugins/catalog/knip-report.md new file mode 100644 index 0000000000..078f190a95 --- /dev/null +++ b/plugins/catalog/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| history | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/cicd-statistics-module-gitlab/knip-report.md b/plugins/cicd-statistics-module-gitlab/knip-report.md new file mode 100644 index 0000000000..66601dcd40 --- /dev/null +++ b/plugins/cicd-statistics-module-gitlab/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------|:-------------| +| luxon | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:-------------|:-------------| +| @types/react | package.json | + diff --git a/plugins/cicd-statistics/knip-report.md b/plugins/cicd-statistics/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/cicd-statistics/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/circleci/knip-report.md b/plugins/circleci/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/circleci/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/cloudbuild/knip-report.md b/plugins/cloudbuild/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/cloudbuild/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/code-climate/knip-report.md b/plugins/code-climate/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/code-climate/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/code-coverage-backend/knip-report.md b/plugins/code-coverage-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/code-coverage-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/code-coverage/knip-report.md b/plugins/code-coverage/knip-report.md new file mode 100644 index 0000000000..692a165d1a --- /dev/null +++ b/plugins/code-coverage/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @types/highlightjs | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/codescene/knip-report.md b/plugins/codescene/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/codescene/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/config-schema/knip-report.md b/plugins/config-schema/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/config-schema/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/cost-insights-common/knip-report.md b/plugins/cost-insights-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/cost-insights-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/cost-insights/knip-report.md b/plugins/cost-insights/knip-report.md new file mode 100644 index 0000000000..795d658aec --- /dev/null +++ b/plugins/cost-insights/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------------------|:-------------| +| history | package.json | +| @material-ui/styles | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| canvas | package.json | +| @testing-library/dom | package.json | + diff --git a/plugins/devtools-backend/knip-report.md b/plugins/devtools-backend/knip-report.md new file mode 100644 index 0000000000..c67c6d55ce --- /dev/null +++ b/plugins/devtools-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:----------------|:-------------| +| @types/minimist | package.json | + diff --git a/plugins/devtools-common/knip-report.md b/plugins/devtools-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/devtools-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/devtools/knip-report.md b/plugins/devtools/knip-report.md new file mode 100644 index 0000000000..56419ede4c --- /dev/null +++ b/plugins/devtools/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/react | package.json | + diff --git a/plugins/dynatrace/knip-report.md b/plugins/dynatrace/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/dynatrace/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/entity-feedback-backend/knip-report.md b/plugins/entity-feedback-backend/knip-report.md new file mode 100644 index 0000000000..24611c2cf0 --- /dev/null +++ b/plugins/entity-feedback-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| node-fetch | package.json | + diff --git a/plugins/entity-feedback-common/knip-report.md b/plugins/entity-feedback-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/entity-feedback-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/entity-feedback/knip-report.md b/plugins/entity-feedback/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/entity-feedback/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/entity-validation/knip-report.md b/plugins/entity-validation/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/entity-validation/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/entity-validation/package.json b/plugins/entity-validation/package.json index ed9d240067..105bc19b45 100644 --- a/plugins/entity-validation/package.json +++ b/plugins/entity-validation/package.json @@ -42,7 +42,7 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", + "@react-hookz/web": "^24.0.0", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@uiw/react-codemirror": "^4.9.3", "lodash": "^4.17.21", diff --git a/plugins/events-backend-module-aws-sqs/knip-report.md b/plugins/events-backend-module-aws-sqs/knip-report.md new file mode 100644 index 0000000000..0325a848ed --- /dev/null +++ b/plugins/events-backend-module-aws-sqs/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @aws-sdk/types | package.json | + diff --git a/plugins/events-backend-module-azure/knip-report.md b/plugins/events-backend-module-azure/knip-report.md new file mode 100644 index 0000000000..de5b7ea23b --- /dev/null +++ b/plugins/events-backend-module-azure/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + diff --git a/plugins/events-backend-module-bitbucket-cloud/knip-report.md b/plugins/events-backend-module-bitbucket-cloud/knip-report.md new file mode 100644 index 0000000000..de5b7ea23b --- /dev/null +++ b/plugins/events-backend-module-bitbucket-cloud/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + diff --git a/plugins/events-backend-module-gerrit/knip-report.md b/plugins/events-backend-module-gerrit/knip-report.md new file mode 100644 index 0000000000..de5b7ea23b --- /dev/null +++ b/plugins/events-backend-module-gerrit/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + diff --git a/plugins/events-backend-module-github/knip-report.md b/plugins/events-backend-module-github/knip-report.md new file mode 100644 index 0000000000..de5b7ea23b --- /dev/null +++ b/plugins/events-backend-module-github/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + diff --git a/plugins/events-backend-module-gitlab/knip-report.md b/plugins/events-backend-module-gitlab/knip-report.md new file mode 100644 index 0000000000..de5b7ea23b --- /dev/null +++ b/plugins/events-backend-module-gitlab/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + diff --git a/plugins/events-backend-test-utils/knip-report.md b/plugins/events-backend-test-utils/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/events-backend-test-utils/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/events-backend/knip-report.md b/plugins/events-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/events-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/events-node/knip-report.md b/plugins/events-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/events-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/example-todo-list-backend/knip-report.md b/plugins/example-todo-list-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/example-todo-list-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/example-todo-list-backend/package.json b/plugins/example-todo-list-backend/package.json index fb9ddd74a8..1a564ab689 100644 --- a/plugins/example-todo-list-backend/package.json +++ b/plugins/example-todo-list-backend/package.json @@ -12,7 +12,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/plugins/example-todo-list-backend" + "directory": "plugins/example-todo-list-backend" }, "publishConfig": { "access": "public", diff --git a/plugins/example-todo-list-common/knip-report.md b/plugins/example-todo-list-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/example-todo-list-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/example-todo-list-common/package.json b/plugins/example-todo-list-common/package.json index 1d984812f9..df2cd403c4 100644 --- a/plugins/example-todo-list-common/package.json +++ b/plugins/example-todo-list-common/package.json @@ -17,7 +17,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/plugins/example-todo-list-common" + "directory": "plugins/example-todo-list-common" }, "sideEffects": false, "scripts": { diff --git a/plugins/example-todo-list/knip-report.md b/plugins/example-todo-list/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/example-todo-list/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/explore-backend/knip-report.md b/plugins/explore-backend/knip-report.md new file mode 100644 index 0000000000..24611c2cf0 --- /dev/null +++ b/plugins/explore-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| node-fetch | package.json | + diff --git a/plugins/explore-common/knip-report.md b/plugins/explore-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/explore-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/explore-react/knip-report.md b/plugins/explore-react/knip-report.md new file mode 100644 index 0000000000..70644e01fb --- /dev/null +++ b/plugins/explore-react/knip-report.md @@ -0,0 +1,10 @@ +# Knip report + +## Unused devDependencies (3) + +| Name | Location | +|:-----------------------|:-------------| +| @types/react | package.json | +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/explore/knip-report.md b/plugins/explore/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/explore/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/firehydrant/knip-report.md b/plugins/firehydrant/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/firehydrant/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/fossa/knip-report.md b/plugins/fossa/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/fossa/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/gcalendar/knip-report.md b/plugins/gcalendar/knip-report.md new file mode 100644 index 0000000000..836928ead1 --- /dev/null +++ b/plugins/gcalendar/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------------------------|:-------------| +| @maxim_mazurok/gapi.client.calendar | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| @types/sanitize-html | package.json | +| @testing-library/dom | package.json | + diff --git a/plugins/gcalendar/package.json b/plugins/gcalendar/package.json index d3f3fa31da..1720a35c77 100644 --- a/plugins/gcalendar/package.json +++ b/plugins/gcalendar/package.json @@ -38,7 +38,7 @@ "@tanstack/react-query": "^4.1.3", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.3.1", - "dompurify": "^2.3.6", + "dompurify": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "material-ui-popup-state": "^1.9.3", @@ -56,7 +56,7 @@ "@testing-library/dom": "^9.0.0", "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", - "@types/dompurify": "^2.3.3", + "@types/dompurify": "^3.0.0", "@types/sanitize-html": "^2.6.2" }, "files": [ diff --git a/plugins/gcp-projects/knip-report.md b/plugins/gcp-projects/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/gcp-projects/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/gcp-projects/package.json b/plugins/gcp-projects/package.json index 3963141099..d7d674477f 100644 --- a/plugins/gcp-projects/package.json +++ b/plugins/gcp-projects/package.json @@ -37,7 +37,7 @@ "@backstage/core-components": "workspace:^", "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", - "@react-hookz/web": "^23.0.0", + "@react-hookz/web": "^24.0.0", "@types/react": "^16.13.1 || ^17.0.0" }, "peerDependencies": { diff --git a/plugins/git-release-manager/knip-report.md b/plugins/git-release-manager/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/git-release-manager/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/github-actions/knip-report.md b/plugins/github-actions/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/github-actions/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/github-deployments/knip-report.md b/plugins/github-deployments/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/github-deployments/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/github-issues/knip-report.md b/plugins/github-issues/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/github-issues/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/github-pull-requests-board/knip-report.md b/plugins/github-pull-requests-board/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/github-pull-requests-board/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/gitops-profiles/knip-report.md b/plugins/gitops-profiles/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/gitops-profiles/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/gocd/knip-report.md b/plugins/gocd/knip-report.md new file mode 100644 index 0000000000..066001e3d9 --- /dev/null +++ b/plugins/gocd/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---|:-------------| +| qs | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/graphiql/knip-report.md b/plugins/graphiql/knip-report.md new file mode 100644 index 0000000000..ce36adb90f --- /dev/null +++ b/plugins/graphiql/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| graphql-ws | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| @types/codemirror | package.json | +| @testing-library/dom | package.json | + diff --git a/plugins/graphql-voyager/knip-report.md b/plugins/graphql-voyager/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/graphql-voyager/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/home-react/knip-report.md b/plugins/home-react/knip-report.md new file mode 100644 index 0000000000..e54f91f933 --- /dev/null +++ b/plugins/home-react/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-------------------------|:-------------| +| @types/react-grid-layout | package.json | + diff --git a/plugins/home-react/package.json b/plugins/home-react/package.json index c37399f40a..edf7379dfc 100644 --- a/plugins/home-react/package.json +++ b/plugins/home-react/package.json @@ -38,7 +38,7 @@ "@backstage/core-plugin-api": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@rjsf/utils": "5.16.1", + "@rjsf/utils": "5.17.0", "@types/react": "^16.13.1 || ^17.0.0" }, "peerDependencies": { diff --git a/plugins/home/knip-report.md b/plugins/home/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/home/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/home/package.json b/plugins/home/package.json index a1a989db74..a91e8ba1f5 100644 --- a/plugins/home/package.json +++ b/plugins/home/package.json @@ -62,10 +62,10 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@rjsf/core": "5.16.1", - "@rjsf/material-ui": "5.16.1", - "@rjsf/utils": "5.16.1", - "@rjsf/validator-ajv8": "5.16.1", + "@rjsf/core": "5.17.0", + "@rjsf/material-ui": "5.17.0", + "@rjsf/utils": "5.17.0", + "@rjsf/validator-ajv8": "5.17.0", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "lodash": "^4.17.21", "luxon": "^3.4.3", diff --git a/plugins/ilert/knip-report.md b/plugins/ilert/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/ilert/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/jenkins-backend/knip-report.md b/plugins/jenkins-backend/knip-report.md new file mode 100644 index 0000000000..ed17b5a456 --- /dev/null +++ b/plugins/jenkins-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-----------------|:-------------| +| @types/supertest | package.json | + diff --git a/plugins/jenkins-common/knip-report.md b/plugins/jenkins-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/jenkins-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/jenkins/knip-report.md b/plugins/jenkins/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/jenkins/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/kafka-backend/knip-report.md b/plugins/kafka-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/kafka-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/kafka/knip-report.md b/plugins/kafka/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/kafka/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/kubernetes-backend/knip-report.md b/plugins/kubernetes-backend/knip-report.md new file mode 100644 index 0000000000..bf0ef0a854 --- /dev/null +++ b/plugins/kubernetes-backend/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:---------------|:-------------| +| morgan | package.json | +| stream-buffers | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:------------|:-------------| +| @types/aws4 | package.json | + diff --git a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts index 849a7839e2..e6e19a6aaa 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.test.ts @@ -18,8 +18,18 @@ import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernete import '@backstage/backend-common'; import { ConfigReader, Config } from '@backstage/config'; import { GkeClusterLocator } from './GkeClusterLocator'; +import * as container from '@google-cloud/container'; const mockedListClusters = jest.fn(); +jest.mock('@google-cloud/container', () => { + return { + v1: { + ClusterManagerClient: jest.fn().mockImplementation(() => { + mockedListClusters(); + }), + }, + }; +}); describe('GkeClusterLocator', () => { beforeEach(() => { @@ -485,5 +495,18 @@ describe('GkeClusterLocator', () => { }, ]); }); + it('constructs ClusterManagerClient with identifying metadata', async () => { + const configs: Config = new ConfigReader({ + type: 'gke', + projectId: 'some-project', + }); + + GkeClusterLocator.fromConfig(configs); + + expect(container.v1.ClusterManagerClient).toHaveBeenCalledWith({ + libName: 'backstage/kubernetes-backend.GkeClusterLocator', + libVersion: expect.any(String), + }); + }); }); }); diff --git a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts index 03f5bda103..3b3d74e17f 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/GkeClusterLocator.ts @@ -21,6 +21,7 @@ import * as container from '@google-cloud/container'; import { Duration } from 'luxon'; import { runPeriodically } from '../service/runPeriodically'; import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; +import packageinfo from '../../package.json'; interface MatchResourceLabelEntry { key: string; @@ -80,13 +81,17 @@ export class GkeClusterLocator implements KubernetesClustersSupplier { return gkeClusterLocator; } + // Added an `x-goog-api-client` header to API requests made by the GKE cluster locator to clearly identify API requests from this plugin. static fromConfig( config: Config, refreshInterval: Duration | undefined = undefined, ): GkeClusterLocator { return GkeClusterLocator.fromConfigWithClient( config, - new container.v1.ClusterManagerClient(), + new container.v1.ClusterManagerClient({ + libName: `backstage/kubernetes-backend.GkeClusterLocator`, + libVersion: packageinfo.version, + }), refreshInterval, ); } diff --git a/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts b/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts index 9bbab42443..f825203505 100644 --- a/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts +++ b/plugins/kubernetes-backend/src/cluster-locator/LocalKubectlProxyLocator.ts @@ -15,18 +15,25 @@ */ import { ANNOTATION_KUBERNETES_AUTH_PROVIDER } from '@backstage/plugin-kubernetes-common'; -import { ClusterDetails, KubernetesClustersSupplier } from '../types/types'; +import { + ClusterDetails, + KubernetesClustersSupplier, +} from '@backstage/plugin-kubernetes-node'; +import dns from 'node:dns'; export class LocalKubectlProxyClusterLocator implements KubernetesClustersSupplier { private readonly clusterDetails: ClusterDetails[]; + // verbatim: when false, IPv4 addresses are placed before IPv6 addresses, ignoring the order from the DNS resolver + // By default kubectl proxy listens on 127.0.0.1 instead of [::1] + private lookupPromise = dns.promises.lookup('localhost', { verbatim: false }); public constructor() { this.clusterDetails = [ { name: 'local', - url: 'http:/localhost:8001', + url: 'http://localhost:8001', authMetadata: { [ANNOTATION_KUBERNETES_AUTH_PROVIDER]: 'localKubectlProxy', }, @@ -36,6 +43,8 @@ export class LocalKubectlProxyClusterLocator } async getClusters(): Promise { + const lookupResolution = await this.lookupPromise; + this.clusterDetails[0].url = `http://${lookupResolution.address}:8001`; return this.clusterDetails; } } diff --git a/plugins/kubernetes-backend/src/plugin.ts b/plugins/kubernetes-backend/src/plugin.ts index 1b4aca4160..74a8a68e53 100644 --- a/plugins/kubernetes-backend/src/plugin.ts +++ b/plugins/kubernetes-backend/src/plugin.ts @@ -16,30 +16,29 @@ import { loggerToWinstonLogger } from '@backstage/backend-common'; import { - createBackendPlugin, coreServices, + createBackendPlugin, } from '@backstage/backend-plugin-api'; import { catalogServiceRef } from '@backstage/plugin-catalog-node/alpha'; import { KubernetesBuilder } from '@backstage/plugin-kubernetes-backend'; + import { - KubernetesObjectsProviderExtensionPoint, - kubernetesObjectsProviderExtensionPoint, - KubernetesObjectsProvider, - KubernetesClusterSupplierExtensionPoint, - kubernetesClusterSupplierExtensionPoint, - KubernetesClustersSupplier, - KubernetesAuthStrategyExtensionPoint, - AuthenticationStrategy, kubernetesAuthStrategyExtensionPoint, - KubernetesFetcher, - KubernetesServiceLocatorExtensionPoint, - KubernetesServiceLocator, - kubernetesServiceLocatorExtensionPoint, -} from '@backstage/plugin-kubernetes-node'; -import { - KubernetesFetcherExtensionPoint, + kubernetesClusterSupplierExtensionPoint, kubernetesFetcherExtensionPoint, + kubernetesObjectsProviderExtensionPoint, + kubernetesServiceLocatorExtensionPoint, + type AuthenticationStrategy, + type KubernetesAuthStrategyExtensionPoint, + type KubernetesClusterSupplierExtensionPoint, + type KubernetesClustersSupplier, + type KubernetesFetcher, + type KubernetesFetcherExtensionPoint, + type KubernetesObjectsProvider, + type KubernetesObjectsProviderExtensionPoint, + type KubernetesServiceLocator, + type KubernetesServiceLocatorExtensionPoint, } from '@backstage/plugin-kubernetes-node'; class ObjectsProvider implements KubernetesObjectsProviderExtensionPoint { diff --git a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts index f2eb61e7f9..527cf94a6a 100644 --- a/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts +++ b/plugins/kubernetes-backend/src/service/KubernetesProxy.test.ts @@ -646,7 +646,7 @@ describe('KubernetesProxy', () => { }); worker.use( - rest.get('http://localhost:8001/api/v1/namespaces', (req, res, ctx) => { + rest.get('http://127.0.0.1:8001/api/v1/namespaces', (req, res, ctx) => { return req.headers.get('Authorization') ? res(ctx.status(401)) : res( diff --git a/plugins/kubernetes-cluster/knip-report.md b/plugins/kubernetes-cluster/knip-report.md new file mode 100644 index 0000000000..fc27b3ada0 --- /dev/null +++ b/plugins/kubernetes-cluster/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (5) + +| Name | Location | +|:------------------------|:-------------| +| luxon | package.json | +| lodash | package.json | +| js-yaml | package.json | +| cronstrue | package.json | +| @kubernetes-models/base | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/kubernetes-common/knip-report.md b/plugins/kubernetes-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/kubernetes-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/kubernetes-node/knip-report.md b/plugins/kubernetes-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/kubernetes-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/kubernetes-node/package.json b/plugins/kubernetes-node/package.json index fa47649351..aeaa1c3dc4 100644 --- a/plugins/kubernetes-node/package.json +++ b/plugins/kubernetes-node/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/kubernetes-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/kubernetes-react/knip-report.md b/plugins/kubernetes-react/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/kubernetes-react/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/kubernetes-react/package.json b/plugins/kubernetes-react/package.json index fa8e24b6ba..45df0bacb2 100644 --- a/plugins/kubernetes-react/package.json +++ b/plugins/kubernetes-react/package.json @@ -10,6 +10,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/kubernetes-react" + }, "backstage": { "role": "web-library" }, diff --git a/plugins/kubernetes/knip-report.md b/plugins/kubernetes/knip-report.md new file mode 100644 index 0000000000..976379711d --- /dev/null +++ b/plugins/kubernetes/knip-report.md @@ -0,0 +1,24 @@ +# Knip report + +## Unused dependencies (11) + +| Name | Location | +|:--------------------------------|:-------------| +| xterm | package.json | +| luxon | package.json | +| lodash | package.json | +| js-yaml | package.json | +| cronstrue | package.json | +| xterm-addon-fit | package.json | +| kubernetes-models | package.json | +| xterm-addon-attach | package.json | +| @kubernetes/client-node | package.json | +| @kubernetes-models/base | package.json | +| @kubernetes-models/apimachinery | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/lighthouse-backend/knip-report.md b/plugins/lighthouse-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/lighthouse-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/lighthouse-common/knip-report.md b/plugins/lighthouse-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/lighthouse-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/lighthouse/knip-report.md b/plugins/lighthouse/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/lighthouse/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/linguist-backend/knip-report.md b/plugins/linguist-backend/knip-report.md new file mode 100644 index 0000000000..c43ee7028e --- /dev/null +++ b/plugins/linguist-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:----------------------------|:-------------| +| @backstage/plugin-auth-node | package.json | + diff --git a/plugins/linguist-common/knip-report.md b/plugins/linguist-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/linguist-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/linguist/knip-report.md b/plugins/linguist/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/linguist/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/microsoft-calendar/knip-report.md b/plugins/microsoft-calendar/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/microsoft-calendar/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/microsoft-calendar/package.json b/plugins/microsoft-calendar/package.json index 25b8993713..aca81f8ad2 100644 --- a/plugins/microsoft-calendar/package.json +++ b/plugins/microsoft-calendar/package.json @@ -57,7 +57,7 @@ "@tanstack/react-query": "^4.1.3", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.3.1", - "dompurify": "^2.3.6", + "dompurify": "^3.0.0", "lodash": "^4.17.21", "luxon": "^3.0.0", "material-ui-popup-state": "^1.9.3", diff --git a/plugins/newrelic-dashboard/knip-report.md b/plugins/newrelic-dashboard/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/newrelic-dashboard/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/newrelic/knip-report.md b/plugins/newrelic/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/newrelic/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/nomad-backend/knip-report.md b/plugins/nomad-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/nomad-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/nomad/knip-report.md b/plugins/nomad/knip-report.md new file mode 100644 index 0000000000..56419ede4c --- /dev/null +++ b/plugins/nomad/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/react | package.json | + diff --git a/plugins/notifications-backend/knip-report.md b/plugins/notifications-backend/knip-report.md new file mode 100644 index 0000000000..e2b5a1fac9 --- /dev/null +++ b/plugins/notifications-backend/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| node-fetch | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:----|:-------------| +| msw | package.json | + diff --git a/plugins/notifications-backend/package.json b/plugins/notifications-backend/package.json index f9138e38b4..2b6b8ab573 100644 --- a/plugins/notifications-backend/package.json +++ b/plugins/notifications-backend/package.json @@ -9,6 +9,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications-backend" + }, "backstage": { "role": "backend-plugin" }, diff --git a/plugins/notifications-common/knip-report.md b/plugins/notifications-common/knip-report.md new file mode 100644 index 0000000000..1a934d7231 --- /dev/null +++ b/plugins/notifications-common/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------------------|:-------------| +| @material-ui/icons | package.json | + diff --git a/plugins/notifications-common/package.json b/plugins/notifications-common/package.json index f2c4018ea9..a768d64b73 100644 --- a/plugins/notifications-common/package.json +++ b/plugins/notifications-common/package.json @@ -11,6 +11,11 @@ "module": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications-common" + }, "backstage": { "role": "common-library" }, diff --git a/plugins/notifications-node/knip-report.md b/plugins/notifications-node/knip-report.md new file mode 100644 index 0000000000..f27d8200f6 --- /dev/null +++ b/plugins/notifications-node/knip-report.md @@ -0,0 +1,12 @@ +# Knip report + +## Unused dependencies (5) + +| Name | Location | +|:-------------------------------|:-------------| +| uuid | package.json | +| knex | package.json | +| @backstage/catalog-model | package.json | +| @backstage/catalog-client | package.json | +| @backstage/plugin-signals-node | package.json | + diff --git a/plugins/notifications-node/package.json b/plugins/notifications-node/package.json index 44c38b2314..93cae9b929 100644 --- a/plugins/notifications-node/package.json +++ b/plugins/notifications-node/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/notifications/knip-report.md b/plugins/notifications/knip-report.md new file mode 100644 index 0000000000..b39b31f0ed --- /dev/null +++ b/plugins/notifications/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| @material-ui/lab | package.json | +| @backstage/theme | package.json | + +## Unused devDependencies (3) + +| Name | Location | +|:----------------------------|:-------------| +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/notifications/package.json b/plugins/notifications/package.json index e41bedc17a..2e0a75d39b 100644 --- a/plugins/notifications/package.json +++ b/plugins/notifications/package.json @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/notifications" + }, "backstage": { "role": "frontend-plugin" }, diff --git a/plugins/octopus-deploy/knip-report.md b/plugins/octopus-deploy/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/octopus-deploy/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/opencost/knip-report.md b/plugins/opencost/knip-report.md new file mode 100644 index 0000000000..3adcf83e0c --- /dev/null +++ b/plugins/opencost/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @testing-library/jest-dom | package.json | + diff --git a/plugins/opencost/package.json b/plugins/opencost/package.json index 5fba181742..e947f307d4 100644 --- a/plugins/opencost/package.json +++ b/plugins/opencost/package.json @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/opencost" + }, "backstage": { "role": "frontend-plugin" }, diff --git a/plugins/org-react/knip-report.md b/plugins/org-react/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/org-react/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/org/knip-report.md b/plugins/org/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/org/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/pagerduty/knip-report.md b/plugins/pagerduty/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/pagerduty/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/periskop-backend/knip-report.md b/plugins/periskop-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/periskop-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/periskop/knip-report.md b/plugins/periskop/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/periskop/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/permission-backend-module-policy-allow-all/knip-report.md b/plugins/permission-backend-module-policy-allow-all/knip-report.md new file mode 100644 index 0000000000..4c06faddc0 --- /dev/null +++ b/plugins/permission-backend-module-policy-allow-all/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/permission-backend-module-policy-allow-all/package.json b/plugins/permission-backend-module-policy-allow-all/package.json index 22027f88f1..b2284a6455 100644 --- a/plugins/permission-backend-module-policy-allow-all/package.json +++ b/plugins/permission-backend-module-policy-allow-all/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/permission-backend-module-policy-allow-all" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/permission-backend/knip-report.md b/plugins/permission-backend/knip-report.md new file mode 100644 index 0000000000..9d9866fbe6 --- /dev/null +++ b/plugins/permission-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---|:-------------| +| yn | package.json | + diff --git a/plugins/permission-common/knip-report.md b/plugins/permission-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/permission-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/permission-node/knip-report.md b/plugins/permission-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/permission-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/permission-react/knip-report.md b/plugins/permission-react/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/permission-react/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/playlist-backend/knip-report.md b/plugins/playlist-backend/knip-report.md new file mode 100644 index 0000000000..24611c2cf0 --- /dev/null +++ b/plugins/playlist-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----------|:-------------| +| node-fetch | package.json | + diff --git a/plugins/playlist-common/knip-report.md b/plugins/playlist-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/playlist-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/playlist/knip-report.md b/plugins/playlist/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/playlist/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx b/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx index 1408607133..8b52bcc1de 100644 --- a/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx +++ b/plugins/playlist/src/components/PlaylistCard/PlaylistCard.tsx @@ -106,7 +106,9 @@ export const PlaylistCard = ({ playlist }: PlaylistCardProps) => { Description - + {playlist.description && ( + + )} diff --git a/plugins/proxy-backend/knip-report.md b/plugins/proxy-backend/knip-report.md new file mode 100644 index 0000000000..b805aad6c3 --- /dev/null +++ b/plugins/proxy-backend/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:-------|:-------------| +| yup | package.json | +| yaml | package.json | +| uuid | package.json | +| morgan | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:------------|:-------------| +| @types/yup | package.json | +| @types/uuid | package.json | + diff --git a/plugins/puppetdb/knip-report.md b/plugins/puppetdb/knip-report.md new file mode 100644 index 0000000000..56419ede4c --- /dev/null +++ b/plugins/puppetdb/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/react | package.json | + diff --git a/plugins/rollbar-backend/knip-report.md b/plugins/rollbar-backend/knip-report.md new file mode 100644 index 0000000000..cde0a94293 --- /dev/null +++ b/plugins/rollbar-backend/knip-report.md @@ -0,0 +1,11 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:------------|:-------------| +| cors | package.json | +| morgan | package.json | +| fs-extra | package.json | +| compression | package.json | + diff --git a/plugins/rollbar/knip-report.md b/plugins/rollbar/knip-report.md new file mode 100644 index 0000000000..6753bab719 --- /dev/null +++ b/plugins/rollbar/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------|:-------------| +| lodash | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/scaffolder-backend-module-azure/knip-report.md b/plugins/scaffolder-backend-module-azure/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/scaffolder-backend-module-azure/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/scaffolder-backend-module-azure/package.json b/plugins/scaffolder-backend-module-azure/package.json index 5c69820477..4c30a38d74 100644 --- a/plugins/scaffolder-backend-module-azure/package.json +++ b/plugins/scaffolder-backend-module-azure/package.json @@ -8,6 +8,11 @@ "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-azure" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/knip-report.md b/plugins/scaffolder-backend-module-bitbucket-cloud/knip-report.md new file mode 100644 index 0000000000..986d99107d --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| fs-extra | package.json | + diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/package.json b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json index 23136e9d0d..a71ff30e7b 100644 --- a/plugins/scaffolder-backend-module-bitbucket-cloud/package.json +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/package.json @@ -8,6 +8,11 @@ "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-bitbucket-cloud" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-bitbucket-server/knip-report.md b/plugins/scaffolder-backend-module-bitbucket-server/knip-report.md new file mode 100644 index 0000000000..f79901ebd0 --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket-server/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----|:-------------| +| yaml | package.json | + diff --git a/plugins/scaffolder-backend-module-bitbucket-server/package.json b/plugins/scaffolder-backend-module-bitbucket-server/package.json index 261bf3eb31..32384a77ea 100644 --- a/plugins/scaffolder-backend-module-bitbucket-server/package.json +++ b/plugins/scaffolder-backend-module-bitbucket-server/package.json @@ -8,6 +8,11 @@ "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-bitbucket-server" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-bitbucket/knip-report.md b/plugins/scaffolder-backend-module-bitbucket/knip-report.md new file mode 100644 index 0000000000..986d99107d --- /dev/null +++ b/plugins/scaffolder-backend-module-bitbucket/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:---------|:-------------| +| fs-extra | package.json | + diff --git a/plugins/scaffolder-backend-module-bitbucket/package.json b/plugins/scaffolder-backend-module-bitbucket/package.json index 5393340287..6d572cdf5f 100644 --- a/plugins/scaffolder-backend-module-bitbucket/package.json +++ b/plugins/scaffolder-backend-module-bitbucket/package.json @@ -9,6 +9,11 @@ "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-bitbucket" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/knip-report.md b/plugins/scaffolder-backend-module-confluence-to-markdown/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/scaffolder-backend-module-cookiecutter/knip-report.md b/plugins/scaffolder-backend-module-cookiecutter/knip-report.md new file mode 100644 index 0000000000..98eb698cf5 --- /dev/null +++ b/plugins/scaffolder-backend-module-cookiecutter/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:--------|:-------------| +| yn | package.json | +| winston | package.json | + diff --git a/plugins/scaffolder-backend-module-gerrit/knip-report.md b/plugins/scaffolder-backend-module-gerrit/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/scaffolder-backend-module-gerrit/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/scaffolder-backend-module-gerrit/package.json b/plugins/scaffolder-backend-module-gerrit/package.json index 7fd95a1209..93d325fcf7 100644 --- a/plugins/scaffolder-backend-module-gerrit/package.json +++ b/plugins/scaffolder-backend-module-gerrit/package.json @@ -8,6 +8,11 @@ "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-gerrit" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-github/knip-report.md b/plugins/scaffolder-backend-module-github/knip-report.md new file mode 100644 index 0000000000..12e9bc4670 --- /dev/null +++ b/plugins/scaffolder-backend-module-github/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unlisted dependencies (1) + +| Name | Location | +|:-------------------------------|:-----------------------| +| @octokit/core/dist-types/types | src/actions/helpers.ts | + diff --git a/plugins/scaffolder-backend-module-github/package.json b/plugins/scaffolder-backend-module-github/package.json index 97ac31cf80..c762dab88b 100644 --- a/plugins/scaffolder-backend-module-github/package.json +++ b/plugins/scaffolder-backend-module-github/package.json @@ -8,6 +8,11 @@ "publishConfig": { "access": "public" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/scaffolder-backend-module-github" + }, "backstage": { "role": "backend-plugin-module" }, diff --git a/plugins/scaffolder-backend-module-gitlab/knip-report.md b/plugins/scaffolder-backend-module-gitlab/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/scaffolder-backend-module-gitlab/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/scaffolder-backend-module-rails/Rails.dockerfile b/plugins/scaffolder-backend-module-rails/Rails.dockerfile index 191ddda8e7..6c973c21b4 100644 --- a/plugins/scaffolder-backend-module-rails/Rails.dockerfile +++ b/plugins/scaffolder-backend-module-rails/Rails.dockerfile @@ -1,4 +1,4 @@ -FROM ruby:3.3@sha256:79fd4a27fc343abc7372e9082fcfae3750e24cdb519c1cfd89cfa7a4d48a5191 +FROM ruby:3.3@sha256:6936c28e1221d653c0d9af9d2b6a9e27ba0350cd10c9cc57464c62743d723b76 RUN apt-get update -qq && \ apt-get install -y nodejs postgresql-client git && \ diff --git a/plugins/scaffolder-backend-module-rails/knip-report.md b/plugins/scaffolder-backend-module-rails/knip-report.md new file mode 100644 index 0000000000..a6ddbda8b6 --- /dev/null +++ b/plugins/scaffolder-backend-module-rails/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:----------|:-------------| +| jest-when | package.json | + diff --git a/plugins/scaffolder-backend-module-sentry/knip-report.md b/plugins/scaffolder-backend-module-sentry/knip-report.md new file mode 100644 index 0000000000..f79901ebd0 --- /dev/null +++ b/plugins/scaffolder-backend-module-sentry/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-----|:-------------| +| yaml | package.json | + diff --git a/plugins/scaffolder-backend-module-yeoman/knip-report.md b/plugins/scaffolder-backend-module-yeoman/knip-report.md new file mode 100644 index 0000000000..de5b7ea23b --- /dev/null +++ b/plugins/scaffolder-backend-module-yeoman/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| winston | package.json | + diff --git a/plugins/scaffolder-backend/knip-report.md b/plugins/scaffolder-backend/knip-report.md new file mode 100644 index 0000000000..8cdb60963f --- /dev/null +++ b/plugins/scaffolder-backend/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------|:-------------| +| p-limit | package.json | + diff --git a/plugins/scaffolder-common/knip-report.md b/plugins/scaffolder-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/scaffolder-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/scaffolder-node/knip-report.md b/plugins/scaffolder-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/scaffolder-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/scaffolder-react/knip-report.md b/plugins/scaffolder-react/knip-report.md new file mode 100644 index 0000000000..b675d80796 --- /dev/null +++ b/plugins/scaffolder-react/knip-report.md @@ -0,0 +1,18 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:--------------------------|:-------------| +| zod | package.json | +| immer | package.json | +| zod-to-json-schema | package.json | +| @backstage/catalog-client | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------------------|:-------------| +| @testing-library/dom | package.json | +| @backstage/plugin-catalog-common | package.json | + diff --git a/plugins/scaffolder-react/package.json b/plugins/scaffolder-react/package.json index ec1eaf85ec..438f6f0191 100644 --- a/plugins/scaffolder-react/package.json +++ b/plugins/scaffolder-react/package.json @@ -58,11 +58,11 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", - "@rjsf/core": "5.16.1", - "@rjsf/material-ui": "5.16.1", - "@rjsf/utils": "5.16.1", - "@rjsf/validator-ajv8": "5.16.1", + "@react-hookz/web": "^24.0.0", + "@rjsf/core": "5.17.0", + "@rjsf/material-ui": "5.17.0", + "@rjsf/utils": "5.17.0", + "@rjsf/validator-ajv8": "5.17.0", "@types/json-schema": "^7.0.9", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "classnames": "^2.2.6", diff --git a/plugins/scaffolder/knip-report.md b/plugins/scaffolder/knip-report.md new file mode 100644 index 0000000000..f6677d35aa --- /dev/null +++ b/plugins/scaffolder/knip-report.md @@ -0,0 +1,17 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:--------------------|:-------------| +| immer | package.json | +| git-url-parse | package.json | +| @rjsf/material-ui | package.json | +| json-schema-library | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/scaffolder/package.json b/plugins/scaffolder/package.json index ce90c8d035..53e17ee1f4 100644 --- a/plugins/scaffolder/package.json +++ b/plugins/scaffolder/package.json @@ -67,11 +67,11 @@ "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", "@material-ui/lab": "4.0.0-alpha.61", - "@react-hookz/web": "^23.0.0", - "@rjsf/core": "5.16.1", - "@rjsf/material-ui": "5.16.1", - "@rjsf/utils": "5.16.1", - "@rjsf/validator-ajv8": "5.16.1", + "@react-hookz/web": "^24.0.0", + "@rjsf/core": "5.17.0", + "@rjsf/material-ui": "5.17.0", + "@rjsf/utils": "5.17.0", + "@rjsf/validator-ajv8": "5.17.0", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", "@uiw/react-codemirror": "^4.9.3", "classnames": "^2.2.6", diff --git a/plugins/search-backend-module-catalog/knip-report.md b/plugins/search-backend-module-catalog/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend-module-catalog/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-backend-module-elasticsearch/knip-report.md b/plugins/search-backend-module-elasticsearch/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend-module-elasticsearch/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-backend-module-explore/knip-report.md b/plugins/search-backend-module-explore/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend-module-explore/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-backend-module-pg/knip-report.md b/plugins/search-backend-module-pg/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend-module-pg/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-backend-module-stack-overflow-collator/knip-report.md b/plugins/search-backend-module-stack-overflow-collator/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend-module-stack-overflow-collator/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-backend-module-stack-overflow-collator/package.json b/plugins/search-backend-module-stack-overflow-collator/package.json index 8ff7324e08..aaa6bf68b3 100644 --- a/plugins/search-backend-module-stack-overflow-collator/package.json +++ b/plugins/search-backend-module-stack-overflow-collator/package.json @@ -17,7 +17,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/search-backend-module-stack-overflow" + "directory": "plugins/search-backend-module-stack-overflow-collator" }, "scripts": { "start": "backstage-cli package start", diff --git a/plugins/search-backend-module-techdocs/knip-report.md b/plugins/search-backend-module-techdocs/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend-module-techdocs/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-backend-node/knip-report.md b/plugins/search-backend-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-backend/knip-report.md b/plugins/search-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-common/knip-report.md b/plugins/search-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/search-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/search-react/knip-report.md b/plugins/search-react/knip-report.md new file mode 100644 index 0000000000..cdde921c7b --- /dev/null +++ b/plugins/search-react/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:----------------------------|:-------------| +| @testing-library/dom | package.json | +| @backstage/frontend-app-api | package.json | + diff --git a/plugins/search/knip-report.md b/plugins/search/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/search/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/sentry/knip-report.md b/plugins/sentry/knip-report.md new file mode 100644 index 0000000000..b4585fc885 --- /dev/null +++ b/plugins/sentry/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------|:-------------| +| @date-io/core | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/shortcuts/knip-report.md b/plugins/shortcuts/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/shortcuts/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/signals-backend/knip-report.md b/plugins/signals-backend/knip-report.md new file mode 100644 index 0000000000..8ab4a18908 --- /dev/null +++ b/plugins/signals-backend/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:----------------------|:-------------| +| node-fetch | package.json | +| @backstage/config | package.json | +| http-proxy-middleware | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:----|:-------------| +| msw | package.json | + diff --git a/plugins/signals-backend/package.json b/plugins/signals-backend/package.json index fa33e58992..728b11f7ba 100644 --- a/plugins/signals-backend/package.json +++ b/plugins/signals-backend/package.json @@ -9,6 +9,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals-backend" + }, "backstage": { "role": "backend-plugin" }, diff --git a/plugins/signals-node/knip-report.md b/plugins/signals-node/knip-report.md new file mode 100644 index 0000000000..d4c5e58b40 --- /dev/null +++ b/plugins/signals-node/knip-report.md @@ -0,0 +1,19 @@ +# Knip report + +## Unused dependencies (6) + +| Name | Location | +|:----------------------------|:-------------| +| ws | package.json | +| uuid | package.json | +| express | package.json | +| @backstage/config | package.json | +| @backstage/backend-common | package.json | +| @backstage/plugin-auth-node | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------|:-------------| +| @types/express | package.json | + diff --git a/plugins/signals-node/package.json b/plugins/signals-node/package.json index 09aa8e2d2e..40837e90a1 100644 --- a/plugins/signals-node/package.json +++ b/plugins/signals-node/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/signals-react/knip-report.md b/plugins/signals-react/knip-report.md new file mode 100644 index 0000000000..816333d8ed --- /dev/null +++ b/plugins/signals-react/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:------------------|:-------------| +| @material-ui/core | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/signals-react/package.json b/plugins/signals-react/package.json index a977de7802..a8aa9bd885 100644 --- a/plugins/signals-react/package.json +++ b/plugins/signals-react/package.json @@ -10,6 +10,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals-react" + }, "backstage": { "role": "web-library" }, diff --git a/plugins/signals/knip-report.md b/plugins/signals/knip-report.md new file mode 100644 index 0000000000..a931e9a80c --- /dev/null +++ b/plugins/signals/knip-report.md @@ -0,0 +1,21 @@ +# Knip report + +## Unused dependencies (4) + +| Name | Location | +|:-------------------|:-------------| +| react-use | package.json | +| @material-ui/lab | package.json | +| @backstage/theme | package.json | +| @material-ui/icons | package.json | + +## Unused devDependencies (5) + +| Name | Location | +|:----------------------------|:-------------| +| msw | package.json | +| @backstage/test-utils | package.json | +| @testing-library/react | package.json | +| @backstage/core-app-api | package.json | +| @testing-library/user-event | package.json | + diff --git a/plugins/signals/package.json b/plugins/signals/package.json index 45be979c8c..9f69b615dc 100644 --- a/plugins/signals/package.json +++ b/plugins/signals/package.json @@ -9,6 +9,11 @@ "main": "dist/index.esm.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/signals" + }, "backstage": { "role": "frontend-plugin" }, diff --git a/plugins/sonarqube-backend/knip-report.md b/plugins/sonarqube-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/sonarqube-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/sonarqube-react/knip-report.md b/plugins/sonarqube-react/knip-report.md new file mode 100644 index 0000000000..d2a8d555ce --- /dev/null +++ b/plugins/sonarqube-react/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:-------------|:-------------| +| @types/react | package.json | + diff --git a/plugins/sonarqube/knip-report.md b/plugins/sonarqube/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/sonarqube/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/splunk-on-call/knip-report.md b/plugins/splunk-on-call/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/splunk-on-call/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/stack-overflow-backend/knip-report.md b/plugins/stack-overflow-backend/knip-report.md new file mode 100644 index 0000000000..657b4e2f99 --- /dev/null +++ b/plugins/stack-overflow-backend/knip-report.md @@ -0,0 +1,16 @@ +# Knip report + +## Unused dependencies (3) + +| Name | Location | +|:-----------|:-------------| +| qs | package.json | +| winston | package.json | +| node-fetch | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:------------------------------|:-------------| +| @backstage/backend-test-utils | package.json | + diff --git a/plugins/stack-overflow/knip-report.md b/plugins/stack-overflow/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/stack-overflow/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/stackstorm/knip-report.md b/plugins/stackstorm/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/stackstorm/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/tech-insights-backend-module-jsonfc/knip-report.md b/plugins/tech-insights-backend-module-jsonfc/knip-report.md new file mode 100644 index 0000000000..9442bb1d71 --- /dev/null +++ b/plugins/tech-insights-backend-module-jsonfc/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----------------|:-------------| +| luxon | package.json | +| @backstage/types | package.json | + diff --git a/plugins/tech-insights-backend/knip-report.md b/plugins/tech-insights-backend/knip-report.md new file mode 100644 index 0000000000..92035bd3ce --- /dev/null +++ b/plugins/tech-insights-backend/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:-----|:-------------| +| yn | package.json | +| uuid | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:----------------|:-------------| +| wait-for-expect | package.json | + diff --git a/plugins/tech-insights-common/knip-report.md b/plugins/tech-insights-common/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/tech-insights-common/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/tech-insights-node/knip-report.md b/plugins/tech-insights-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/tech-insights-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/tech-insights/knip-report.md b/plugins/tech-insights/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/tech-insights/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/tech-radar/knip-report.md b/plugins/tech-radar/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/tech-radar/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/techdocs-addons-test-utils/knip-report.md b/plugins/techdocs-addons-test-utils/knip-report.md new file mode 100644 index 0000000000..2bc648851f --- /dev/null +++ b/plugins/techdocs-addons-test-utils/knip-report.md @@ -0,0 +1,14 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:--------------------------|:-------------| +| @backstage/plugin-catalog | package.json | + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/techdocs-backend/knip-report.md b/plugins/techdocs-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/techdocs-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/techdocs-module-addons-contrib/knip-report.md b/plugins/techdocs-module-addons-contrib/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/techdocs-module-addons-contrib/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/techdocs-module-addons-contrib/package.json b/plugins/techdocs-module-addons-contrib/package.json index af1a88c174..5357fbb736 100644 --- a/plugins/techdocs-module-addons-contrib/package.json +++ b/plugins/techdocs-module-addons-contrib/package.json @@ -41,7 +41,7 @@ "@backstage/plugin-techdocs-react": "workspace:^", "@material-ui/core": "^4.12.2", "@material-ui/icons": "^4.9.1", - "@react-hookz/web": "^23.0.0", + "@react-hookz/web": "^24.0.0", "git-url-parse": "^13.0.0", "photoswipe": "^5.3.7" }, diff --git a/plugins/techdocs-node/knip-report.md b/plugins/techdocs-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/techdocs-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/techdocs-react/knip-report.md b/plugins/techdocs-react/knip-report.md new file mode 100644 index 0000000000..d5e024b535 --- /dev/null +++ b/plugins/techdocs-react/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:-------------|:-------------| +| react-helmet | package.json | + diff --git a/plugins/techdocs/knip-report.md b/plugins/techdocs/knip-report.md new file mode 100644 index 0000000000..ec1a86cfa3 --- /dev/null +++ b/plugins/techdocs/knip-report.md @@ -0,0 +1,15 @@ +# Knip report + +## Unused dependencies (1) + +| Name | Location | +|:----|:-------------| +| jss | package.json | + +## Unused devDependencies (2) + +| Name | Location | +|:---------------------|:-------------| +| canvas | package.json | +| @testing-library/dom | package.json | + diff --git a/plugins/techdocs/package.json b/plugins/techdocs/package.json index 9629494159..3544b62589 100644 --- a/plugins/techdocs/package.json +++ b/plugins/techdocs/package.json @@ -66,7 +66,7 @@ "@material-ui/lab": "4.0.0-alpha.61", "@material-ui/styles": "^4.10.0", "@types/react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "dompurify": "^2.2.9", + "dompurify": "^3.0.0", "event-source-polyfill": "1.0.25", "git-url-parse": "^13.0.0", "jss": "~10.10.0", @@ -89,7 +89,7 @@ "@testing-library/jest-dom": "^6.0.0", "@testing-library/react": "^14.0.0", "@testing-library/user-event": "^14.0.0", - "@types/dompurify": "^2.2.2", + "@types/dompurify": "^3.0.0", "@types/event-source-polyfill": "^1.0.0", "canvas": "^2.10.2" }, diff --git a/plugins/todo-backend/knip-report.md b/plugins/todo-backend/knip-report.md new file mode 100644 index 0000000000..dcbe031460 --- /dev/null +++ b/plugins/todo-backend/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused dependencies (2) + +| Name | Location | +|:----------------------|:-------------| +| yn | package.json | +| @backstage/repo-tools | package.json | + diff --git a/plugins/todo/knip-report.md b/plugins/todo/knip-report.md new file mode 100644 index 0000000000..b58bbb7d88 --- /dev/null +++ b/plugins/todo/knip-report.md @@ -0,0 +1,9 @@ +# Knip report + +## Unused devDependencies (2) + +| Name | Location | +|:-----------------------|:-------------| +| @testing-library/dom | package.json | +| @testing-library/react | package.json | + diff --git a/plugins/user-settings-backend/knip-report.md b/plugins/user-settings-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/user-settings-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/user-settings/knip-report.md b/plugins/user-settings/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/user-settings/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/vault-backend/knip-report.md b/plugins/vault-backend/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/vault-backend/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/vault-backend/package.json b/plugins/vault-backend/package.json index 4bd9d93c3e..7dafc4a0d2 100644 --- a/plugins/vault-backend/package.json +++ b/plugins/vault-backend/package.json @@ -17,7 +17,7 @@ "repository": { "type": "git", "url": "https://github.com/backstage/backstage", - "directory": "plugins/vault" + "directory": "plugins/vault-backend" }, "keywords": [ "backstage", diff --git a/plugins/vault-node/knip-report.md b/plugins/vault-node/knip-report.md new file mode 100644 index 0000000000..2661c35327 --- /dev/null +++ b/plugins/vault-node/knip-report.md @@ -0,0 +1,2 @@ +# Knip report + diff --git a/plugins/vault-node/package.json b/plugins/vault-node/package.json index 0460b3fd8e..f5ab268b58 100644 --- a/plugins/vault-node/package.json +++ b/plugins/vault-node/package.json @@ -10,6 +10,11 @@ "main": "dist/index.cjs.js", "types": "dist/index.d.ts" }, + "repository": { + "type": "git", + "url": "https://github.com/backstage/backstage", + "directory": "plugins/vault-node" + }, "backstage": { "role": "node-library" }, diff --git a/plugins/vault/knip-report.md b/plugins/vault/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/vault/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/plugins/xcmetrics/knip-report.md b/plugins/xcmetrics/knip-report.md new file mode 100644 index 0000000000..3620b3a323 --- /dev/null +++ b/plugins/xcmetrics/knip-report.md @@ -0,0 +1,8 @@ +# Knip report + +## Unused devDependencies (1) + +| Name | Location | +|:---------------------|:-------------| +| @testing-library/dom | package.json | + diff --git a/scripts/check-docs-quality.js b/scripts/check-docs-quality.js index 7960ff72bb..119dd6bef4 100755 --- a/scripts/check-docs-quality.js +++ b/scripts/check-docs-quality.js @@ -13,6 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + const { spawnSync } = require('child_process'); const { resolve: resolvePath, @@ -21,15 +22,18 @@ const { } = require('path'); const fs = require('fs').promises; -const IGNORED = [ +const IGNORED_WHEN_LISTING = [ /^ADOPTERS\.md$/, /^OWNERS\.md$/, /^.*[/\\]CHANGELOG\.md$/, /^.*[/\\]([^\/]+-)?api-report\.md$/, + /^.*[/\\]knip-report\.md$/, /^docs[/\\]releases[/\\].*-changelog\.md$/, /^docs[/\\]reference[/\\]/, ]; +const IGNORED_WHEN_EXPLICIT = [/^.*[/\\]knip-report\.md$/]; + const rootDir = resolvePath(__dirname, '..'); // Manual listing to avoid dependency install for listing files in CI @@ -41,7 +45,7 @@ async function listFiles(dir = '') { .map(async file => { const path = joinPath(dir, file); - if (IGNORED.some(pattern => pattern.test(path))) { + if (IGNORED_WHEN_LISTING.some(pattern => pattern.test(path))) { return []; } if ((await fs.stat(path)).isDirectory()) { @@ -65,7 +69,7 @@ async function exitIfMissingVale() { } catch (e) { if (process.env.CI) { console.log( - `Language linter (vale) was not found. Please install vale linter (https://docs.errata.ai/vale/install).\n`, + `Language linter (vale) was not found. Please install vale linter (https://vale.sh/docs/vale-cli/installation/).\n`, ); process.exit(1); } @@ -113,7 +117,9 @@ async function main() { const absolutePaths = process.argv .slice(2) .filter(path => !path.startsWith('-')); - const relativePaths = absolutePaths.map(path => relativePath(rootDir, path)); + const relativePaths = absolutePaths + .map(path => relativePath(rootDir, path)) + .filter(path => !IGNORED_WHEN_EXPLICIT.some(pattern => pattern.test(path))); const success = await runVale( relativePaths.length === 0 ? await listFiles() : relativePaths, diff --git a/storybook/yarn.lock b/storybook/yarn.lock index c8ec3d12cd..d2fe0b1c40 100644 --- a/storybook/yarn.lock +++ b/storybook/yarn.lock @@ -2842,90 +2842,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-arm64@npm:1.3.107" +"@swc/core-darwin-arm64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-arm64@npm:1.4.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-x64@npm:1.3.107" +"@swc/core-darwin-x64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-x64@npm:1.4.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.107" +"@swc/core-linux-arm-gnueabihf@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.4.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.107" +"@swc/core-linux-arm64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-gnu@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.107" +"@swc/core-linux-arm64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-musl@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.107" +"@swc/core-linux-x64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-gnu@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-musl@npm:1.3.107" +"@swc/core-linux-x64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-musl@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.107" +"@swc/core-win32-arm64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-arm64-msvc@npm:1.4.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.107" +"@swc/core-win32-ia32-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-ia32-msvc@npm:1.4.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.107" +"@swc/core-win32-x64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-x64-msvc@npm:1.4.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.107 - resolution: "@swc/core@npm:1.3.107" + version: 1.4.0 + resolution: "@swc/core@npm:1.4.0" dependencies: - "@swc/core-darwin-arm64": 1.3.107 - "@swc/core-darwin-x64": 1.3.107 - "@swc/core-linux-arm-gnueabihf": 1.3.107 - "@swc/core-linux-arm64-gnu": 1.3.107 - "@swc/core-linux-arm64-musl": 1.3.107 - "@swc/core-linux-x64-gnu": 1.3.107 - "@swc/core-linux-x64-musl": 1.3.107 - "@swc/core-win32-arm64-msvc": 1.3.107 - "@swc/core-win32-ia32-msvc": 1.3.107 - "@swc/core-win32-x64-msvc": 1.3.107 + "@swc/core-darwin-arm64": 1.4.0 + "@swc/core-darwin-x64": 1.4.0 + "@swc/core-linux-arm-gnueabihf": 1.4.0 + "@swc/core-linux-arm64-gnu": 1.4.0 + "@swc/core-linux-arm64-musl": 1.4.0 + "@swc/core-linux-x64-gnu": 1.4.0 + "@swc/core-linux-x64-musl": 1.4.0 + "@swc/core-win32-arm64-msvc": 1.4.0 + "@swc/core-win32-ia32-msvc": 1.4.0 + "@swc/core-win32-x64-msvc": 1.4.0 "@swc/counter": ^0.1.1 "@swc/types": ^0.1.5 peerDependencies: @@ -2954,14 +2954,14 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 0dccff50461fb8c0f4af053b70e555c91386cb07aa7657a7328d58e397d15640723587549416d8fa7dcc073ad11b39318146bd50ec4a82345ce2ce39c7ba4c00 + checksum: cef6459ba707362e88373f1c2c779c760a7fdf06c0123856be005bb012de91cb913b37fb49e485ac551494a1ee46fb6369c5aca9d453e1e5e391a8514c0db185 languageName: node linkType: hard -"@swc/counter@npm:^0.1.1": - version: 0.1.1 - resolution: "@swc/counter@npm:0.1.1" - checksum: bb974babd493ba01c0d4a95ab610c3fc15fbf609c08cb0342798e485f57ecc0950abbf84e07124e63c5fe610b492d9a8dd03701d3b9ef7329d9e8bf3cc44980f +"@swc/counter@npm:^0.1.1, @swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 languageName: node linkType: hard @@ -10906,12 +10906,14 @@ __metadata: linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.4 - resolution: "swc-loader@npm:0.2.4" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: f23bfe8900b35abdcb9910a2749f3c9d66edf5c660afc67fcf7983647eaec322e024d1edd3bd9fd48bd3191eea0616f67b5f8b5f923e3a648fa5b448683c3213 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard diff --git a/yarn.lock b/yarn.lock index b95b0b9dfd..c53abaacb4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -363,15 +363,15 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.504.0": - version: 3.504.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.504.0" +"@aws-sdk/client-cognito-identity@npm:3.509.0": + version: 3.509.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.504.0 + "@aws-sdk/credential-provider-node": 3.509.0 "@aws-sdk/middleware-host-header": 3.502.0 "@aws-sdk/middleware-logger": 3.502.0 "@aws-sdk/middleware-recursion-detection": 3.502.0 @@ -407,19 +407,19 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: e941df21af6e53a408a1b92db33ad4575a459eae983320959be9a3e152a9293eea93fc62579c60282a3454a520b493624a44f9529b7f9eca66ca2ebd9615004a + checksum: 5ec80c36888445f6462308b66c9c06c85202b411ed4157ec96e638317507907b313f6e9062fa5266b88e091364d2872ea30a5c59f50ce5c2bdd069140bf6ab2d languageName: node linkType: hard "@aws-sdk/client-eks@npm:^3.350.0": - version: 3.504.0 - resolution: "@aws-sdk/client-eks@npm:3.504.0" + version: 3.509.0 + resolution: "@aws-sdk/client-eks@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.504.0 + "@aws-sdk/credential-provider-node": 3.509.0 "@aws-sdk/middleware-host-header": 3.502.0 "@aws-sdk/middleware-logger": 3.502.0 "@aws-sdk/middleware-recursion-detection": 3.502.0 @@ -457,19 +457,19 @@ __metadata: "@smithy/util-waiter": ^2.1.1 tslib: ^2.5.0 uuid: ^8.3.2 - checksum: 40650c95b683fd9adedd1aedfffd23cab73c22f971d82d3e5547732c01d332dfab981d7d47fe81fae2f1db406b58f899e62bf5844b3ee42e7005b0a1ece86227 + checksum: 9c15bf5ea7635487e62b59974ec17940987b6efcac28a46786f423d4900508f10675976be72dfae8704fda5b0192d3e19faa8a6a4ad344790d4ab589e0c9ad30 languageName: node linkType: hard "@aws-sdk/client-organizations@npm:^3.350.0": - version: 3.504.0 - resolution: "@aws-sdk/client-organizations@npm:3.504.0" + version: 3.509.0 + resolution: "@aws-sdk/client-organizations@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.504.0 + "@aws-sdk/credential-provider-node": 3.509.0 "@aws-sdk/middleware-host-header": 3.502.0 "@aws-sdk/middleware-logger": 3.502.0 "@aws-sdk/middleware-recursion-detection": 3.502.0 @@ -505,20 +505,20 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: 15daecdad337d503a672ec36d177aeb66ea5061ffcd559a66ae8dfb8bafcc2c7428fe855c2b7b832f222edf1fc2917d39ecd31e71ad19d6f9805f7b46b3cb929 + checksum: 3af1844b63bc996807483deb85919756f82381d112bfb2c1cdc5c1e9291a71eb926a064e84ed1c4c22c23e9631502437e6b7cfacf922145c35e8c5aa63a9fd06 languageName: node linkType: hard "@aws-sdk/client-s3@npm:^3.350.0": - version: 3.504.0 - resolution: "@aws-sdk/client-s3@npm:3.504.0" + version: 3.509.0 + resolution: "@aws-sdk/client-s3@npm:3.509.0" dependencies: "@aws-crypto/sha1-browser": 3.0.0 "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.504.0 + "@aws-sdk/credential-provider-node": 3.509.0 "@aws-sdk/middleware-bucket-endpoint": 3.502.0 "@aws-sdk/middleware-expect-continue": 3.502.0 "@aws-sdk/middleware-flexible-checksums": 3.502.0 @@ -571,23 +571,23 @@ __metadata: "@smithy/util-waiter": ^2.1.1 fast-xml-parser: 4.2.5 tslib: ^2.5.0 - checksum: 22f4bb61196d5a567295e4ad42248f132a5e16ed1eb66bee9fcb7273dad13a9c3a2ebe5b2fb4277e645ede8b0650ddb2665fd450018b56cc29650dbd5d6ce427 + checksum: 8bbb1badb376c4f541bcfdf45cef8c9057565f6ee7516fffd645f1384549b937f76fafbc9b73ff240aaff49efd9acfdd20a37e6d1e316f9215208a29abb2ea24 languageName: node linkType: hard "@aws-sdk/client-sqs@npm:^3.350.0": - version: 3.504.0 - resolution: "@aws-sdk/client-sqs@npm:3.504.0" + version: 3.509.0 + resolution: "@aws-sdk/client-sqs@npm:3.509.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 - "@aws-sdk/credential-provider-node": 3.504.0 + "@aws-sdk/credential-provider-node": 3.509.0 "@aws-sdk/middleware-host-header": 3.502.0 "@aws-sdk/middleware-logger": 3.502.0 "@aws-sdk/middleware-recursion-detection": 3.502.0 - "@aws-sdk/middleware-sdk-sqs": 3.502.0 + "@aws-sdk/middleware-sdk-sqs": 3.507.0 "@aws-sdk/middleware-user-agent": 3.502.0 "@aws-sdk/region-config-resolver": 3.502.0 "@aws-sdk/types": 3.502.0 @@ -621,17 +621,17 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: 4b533cc79693ef82ead2c02ebe530a7cc8d73eeb11ca2e95ee21d84b479a5d277d42c152ecf08727e4f323a4ada995d3ff8ba248a845c85214ca06843996357c + checksum: 4858f376f24dbd70007bff8a9c766c8b3778f32dabb6b4228f74b97f4b094c671c827d3f3ab1e30aec7bc24a39ada06e5f6f060c14274b7ee64081119de03fa6 languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.504.0": - version: 3.504.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.504.0" +"@aws-sdk/client-sso-oidc@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.507.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/core": 3.496.0 "@aws-sdk/middleware-host-header": 3.502.0 "@aws-sdk/middleware-logger": 3.502.0 @@ -669,14 +669,14 @@ __metadata: "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 peerDependencies: - "@aws-sdk/credential-provider-node": ^3.504.0 - checksum: 93e816246e1f3ebf00c696f9f1cc2b3afd8c49ffc67020ce8aba0e752051afce4bfe9521bf6f4ad8dc55eeef5d320a903353829704215ec5838bbc08ec48974c + "@aws-sdk/credential-provider-node": ^3.507.0 + checksum: e85da9c9f2eb791c866dd767aa9942ac2e4f9f957185503032f8ae964c066bef6cae258d8075e442cf41333117e3bc73c1d8d1c2625ba76c569d0d42d5d48409 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/client-sso@npm:3.502.0" +"@aws-sdk/client-sso@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/client-sso@npm:3.507.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 @@ -715,13 +715,13 @@ __metadata: "@smithy/util-retry": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: ef801b4838af20d0d0458b02f0ca8ecb1e08ab1a8c1fe885b446745f730aee1e8a4fd1cbc555a7628390f67955d6d62b06f57f426551210356414f3c15cdd084 + checksum: e5ede601b02c6fb33c9a6d93c0dfffb9b7b2631f601f323c3cf8594e9d472a55024a0345b33d213b5fa8940f685788080233b38d62cf7602c39fceae45d0b36a languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.504.0, @aws-sdk/client-sts@npm:^3.350.0": - version: 3.504.0 - resolution: "@aws-sdk/client-sts@npm:3.504.0" +"@aws-sdk/client-sts@npm:3.507.0, @aws-sdk/client-sts@npm:^3.350.0": + version: 3.507.0 + resolution: "@aws-sdk/client-sts@npm:3.507.0" dependencies: "@aws-crypto/sha256-browser": 3.0.0 "@aws-crypto/sha256-js": 3.0.0 @@ -763,8 +763,8 @@ __metadata: fast-xml-parser: 4.2.5 tslib: ^2.5.0 peerDependencies: - "@aws-sdk/credential-provider-node": ^3.504.0 - checksum: f13bd125c5a5f4bf75945c4bb72b2e4e27eec5d666e3fed81014b86f4abbed6b4751bf74448d35e361bab2fb45c1574908e3354ff09d474a64392deeb05f7150 + "@aws-sdk/credential-provider-node": ^3.507.0 + checksum: f00584e210e99836457814c15c5796c4014117277d564f0eb7d2b98b18af5c5bd6f7df6925aa7f295fa9ac0a263c2d9d49bb8e23e583569074449a2fb3d15ed1 languageName: node linkType: hard @@ -782,16 +782,16 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.504.0": - version: 3.504.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.504.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.509.0": + version: 3.509.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.509.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.504.0 + "@aws-sdk/client-cognito-identity": 3.509.0 "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 20bd84eb8bc1dc9f1ef8eb730cbf6c0d546a8ab43be724f7f16c94b39bf9c7ab46f32f27fcc102be873ff43bf19b1a7793164ec827730b582b5d4493c7fefdae + checksum: 7fb2ff1e098968d36e711db7457d2389a3244cebec87da60488750020aad568b938de2e306566190e8c610e40d3c0e3402b2c48a6046f5ee8a9c11c00a4ca803 languageName: node linkType: hard @@ -824,42 +824,42 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.504.0": - version: 3.504.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.504.0" +"@aws-sdk/credential-provider-ini@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.507.0" dependencies: - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/credential-provider-env": 3.502.0 "@aws-sdk/credential-provider-process": 3.502.0 - "@aws-sdk/credential-provider-sso": 3.504.0 - "@aws-sdk/credential-provider-web-identity": 3.504.0 + "@aws-sdk/credential-provider-sso": 3.507.0 + "@aws-sdk/credential-provider-web-identity": 3.507.0 "@aws-sdk/types": 3.502.0 "@smithy/credential-provider-imds": ^2.2.1 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: b8a2b56ee7109608c74b97a0fa7c52759d11b4754e81b4fd32a178d9e2ee2ea4c334e31a657b2f10d042da30f53f7e6003d87c6e4a13f517e6d5d4afaa8fba20 + checksum: b07df1a5f9e157d2fe49a44fd2c90564c8f3ab5543f70769a39e5d155e2ea21b3e793cfc84388e773c8d1d5d442bb1df64fa38fd223a8333f2c58f45ed2c8494 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.504.0, @aws-sdk/credential-provider-node@npm:^3.350.0": - version: 3.504.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.504.0" +"@aws-sdk/credential-provider-node@npm:3.509.0, @aws-sdk/credential-provider-node@npm:^3.350.0": + version: 3.509.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.509.0" dependencies: "@aws-sdk/credential-provider-env": 3.502.0 "@aws-sdk/credential-provider-http": 3.503.1 - "@aws-sdk/credential-provider-ini": 3.504.0 + "@aws-sdk/credential-provider-ini": 3.507.0 "@aws-sdk/credential-provider-process": 3.502.0 - "@aws-sdk/credential-provider-sso": 3.504.0 - "@aws-sdk/credential-provider-web-identity": 3.504.0 + "@aws-sdk/credential-provider-sso": 3.507.0 + "@aws-sdk/credential-provider-web-identity": 3.507.0 "@aws-sdk/types": 3.502.0 "@smithy/credential-provider-imds": ^2.2.1 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: 5d36589c7755313992013c8d2d776f2ab919a1d528eb17ed32d869869595d941d3e0e533e80bc2ea7b49a94fd80f205a4438aba5e5eabfc0a8f4717665490a59 + checksum: 85bac6b0813b9c4d3cd878b21e940bb7730005c9bd7f9307e0eb9e93a229166761fcb25b57714a8019063b9eb3ff0c90cca31d9821589e8cd51adafe42232c37 languageName: node linkType: hard @@ -876,55 +876,55 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.504.0": - version: 3.504.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.504.0" +"@aws-sdk/credential-provider-sso@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.507.0" dependencies: - "@aws-sdk/client-sso": 3.502.0 - "@aws-sdk/token-providers": 3.504.0 + "@aws-sdk/client-sso": 3.507.0 + "@aws-sdk/token-providers": 3.507.0 "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: e3716422ef27e6aa6d50a9e85809c2e51b2f7a3d8bddc4b1b0d61a5cfce2ccb2c7503e9319498861f57b05557027fe59863b3ee292601321b7fb80d772027ddb + checksum: 2bfbd29ea3650c25794ca6054fd93da51ecb59ae64515fc8257ccb17a6b4ade6fcf615f86b042169b57255305b4fb2892961c2ddae52c21e3b47f90c69f1b0b0 languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.504.0": - version: 3.504.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.504.0" +"@aws-sdk/credential-provider-web-identity@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.507.0" dependencies: - "@aws-sdk/client-sts": 3.504.0 + "@aws-sdk/client-sts": 3.507.0 "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: daf3c44b6663cd3e63634fce953c8ddd409640f53462c6e625de9b238b98dfc288776264990957f06f3134a6ba96dabd16e82cd7150d5c2579bcc625f9d2933d + checksum: dc06ce47e00d1688e9297a2b7fdbe763ac0738325ebdb9779caa4d44914fb378b9381505ddb5fc30d44b68764bc3459481417cf7a8def7e96d9437b72d8649d0 languageName: node linkType: hard "@aws-sdk/credential-providers@npm:^3.350.0": - version: 3.504.1 - resolution: "@aws-sdk/credential-providers@npm:3.504.1" + version: 3.509.0 + resolution: "@aws-sdk/credential-providers@npm:3.509.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.504.0 - "@aws-sdk/client-sso": 3.502.0 - "@aws-sdk/client-sts": 3.504.0 - "@aws-sdk/credential-provider-cognito-identity": 3.504.0 + "@aws-sdk/client-cognito-identity": 3.509.0 + "@aws-sdk/client-sso": 3.507.0 + "@aws-sdk/client-sts": 3.507.0 + "@aws-sdk/credential-provider-cognito-identity": 3.509.0 "@aws-sdk/credential-provider-env": 3.502.0 "@aws-sdk/credential-provider-http": 3.503.1 - "@aws-sdk/credential-provider-ini": 3.504.0 - "@aws-sdk/credential-provider-node": 3.504.0 + "@aws-sdk/credential-provider-ini": 3.507.0 + "@aws-sdk/credential-provider-node": 3.509.0 "@aws-sdk/credential-provider-process": 3.502.0 - "@aws-sdk/credential-provider-sso": 3.504.0 - "@aws-sdk/credential-provider-web-identity": 3.504.0 + "@aws-sdk/credential-provider-sso": 3.507.0 + "@aws-sdk/credential-provider-web-identity": 3.507.0 "@aws-sdk/types": 3.502.0 "@smithy/credential-provider-imds": ^2.2.1 "@smithy/property-provider": ^2.1.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: d27d06c982560ed1925573ef14f55fc6784c02103c570834a6fbaab2083c9d006dfc842484d1ed44477f1607da99d30edcbcdf1b61e28ad1a541dc7e639b182d + checksum: 2e6b2cc78734f69f2496dd940f868a39a919696625082fab63d7e5d7bd741a0d1c2109bdbb66fef216417a7fd6070e112a84236d1597731585f9f586e8c0926d languageName: node linkType: hard @@ -950,8 +950,8 @@ __metadata: linkType: hard "@aws-sdk/lib-storage@npm:^3.350.0": - version: 3.504.0 - resolution: "@aws-sdk/lib-storage@npm:3.504.0" + version: 3.509.0 + resolution: "@aws-sdk/lib-storage@npm:3.509.0" dependencies: "@smithy/abort-controller": ^2.1.1 "@smithy/middleware-endpoint": ^2.4.1 @@ -962,7 +962,7 @@ __metadata: tslib: ^2.5.0 peerDependencies: "@aws-sdk/client-s3": ^3.0.0 - checksum: b6b23444c78b45192279b580365460d2aaa0beaef2dc7ca1479d6a927eba59d408ea75bbb0691aa2f31daed9a59d0dedf50688839e406eacde858ebca60a25b8 + checksum: eca8d6014fd58a675f493da236018ec35a5d8f7128966a097bcd3ca81c3b1d0738bf8baaffe155cc6cb7ad8f9e0d41946894f499a5337344162eb20efcf97846 languageName: node linkType: hard @@ -1085,16 +1085,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/middleware-sdk-sqs@npm:3.502.0": - version: 3.502.0 - resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.502.0" +"@aws-sdk/middleware-sdk-sqs@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/middleware-sdk-sqs@npm:3.507.0" dependencies: "@aws-sdk/types": 3.502.0 + "@smithy/smithy-client": ^2.3.1 "@smithy/types": ^2.9.1 "@smithy/util-hex-encoding": ^2.1.1 "@smithy/util-utf8": ^2.1.1 tslib: ^2.5.0 - checksum: 42bf269bcb5d77586fdc4457eeee40457a956f2235576a32421551e296de8070a85402f32d0d4dd92fed3aec6b68686873f95086817013e70bd3a911456768f3 + checksum: 2995ce335247ff7ac8660ebec8175bbb072c256f29d4577a520305b505cedaf7269638e393c79cc85949cb1eccb9cbad786ee88900df8a45f8a0cf4525f9a080 languageName: node linkType: hard @@ -1235,17 +1236,17 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.504.0": - version: 3.504.0 - resolution: "@aws-sdk/token-providers@npm:3.504.0" +"@aws-sdk/token-providers@npm:3.507.0": + version: 3.507.0 + resolution: "@aws-sdk/token-providers@npm:3.507.0" dependencies: - "@aws-sdk/client-sso-oidc": 3.504.0 + "@aws-sdk/client-sso-oidc": 3.507.0 "@aws-sdk/types": 3.502.0 "@smithy/property-provider": ^2.1.1 "@smithy/shared-ini-file-loader": ^2.3.1 "@smithy/types": ^2.9.1 tslib: ^2.5.0 - checksum: efdda4b1d1976085f2fa3f3733cfc644f8a9a66f07e76e3b250d27b66a4c25ce2e9bfd526b2a7041d9c683d5535d445b7ab511eb3ecefe67376318d019b5e224 + checksum: 8d90139d9a1d2976e799b3234b723d903cbb2001acbfad658330de5a2fa5a04028e9db288780cd6d071edaf3d3890138ef7a69851e6b173433787635ac316ccf languageName: node linkType: hard @@ -3919,7 +3920,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -5419,23 +5420,6 @@ __metadata: languageName: unknown linkType: soft -"@backstage/plugin-catalog-backend-module-bitbucket@workspace:plugins/catalog-backend-module-bitbucket": - version: 0.0.0-use.local - resolution: "@backstage/plugin-catalog-backend-module-bitbucket@workspace:plugins/catalog-backend-module-bitbucket" - dependencies: - "@backstage/backend-common": "workspace:^" - "@backstage/backend-test-utils": "workspace:^" - "@backstage/cli": "workspace:^" - "@backstage/config": "workspace:^" - "@backstage/integration": "workspace:^" - "@backstage/plugin-bitbucket-cloud-common": "workspace:^" - "@backstage/plugin-catalog-node": "workspace:^" - msw: ^1.0.0 - node-fetch: ^2.6.7 - winston: ^3.2.1 - languageName: unknown - linkType: soft - "@backstage/plugin-catalog-backend-module-gcp@workspace:plugins/catalog-backend-module-gcp": version: 0.0.0-use.local resolution: "@backstage/plugin-catalog-backend-module-gcp@workspace:plugins/catalog-backend-module-gcp" @@ -5934,7 +5918,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -6506,7 +6490,7 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -6809,11 +6793,11 @@ __metadata: "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 - "@types/dompurify": ^2.3.3 + "@types/dompurify": ^3.0.0 "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 "@types/sanitize-html": ^2.6.2 classnames: ^2.3.1 - dompurify: ^2.3.6 + dompurify: ^3.0.0 lodash: ^4.17.21 luxon: ^3.0.0 material-ui-popup-state: ^1.9.3 @@ -6834,7 +6818,7 @@ __metadata: "@backstage/core-plugin-api": "workspace:^" "@backstage/dev-utils": "workspace:^" "@material-ui/core": ^4.12.2 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -7134,7 +7118,7 @@ __metadata: "@backstage/core-plugin-api": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 - "@rjsf/utils": 5.16.1 + "@rjsf/utils": 5.17.0 "@types/react": ^16.13.1 || ^17.0.0 "@types/react-grid-layout": ^1.3.2 peerDependencies: @@ -7165,10 +7149,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.16.1 - "@rjsf/material-ui": 5.16.1 - "@rjsf/utils": 5.16.1 - "@rjsf/validator-ajv8": 5.16.1 + "@rjsf/core": 5.17.0 + "@rjsf/material-ui": 5.17.0 + "@rjsf/utils": 5.17.0 + "@rjsf/validator-ajv8": 5.17.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -7677,7 +7661,7 @@ __metadata: "@testing-library/react": ^14.0.0 "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 classnames: ^2.3.1 - dompurify: ^2.3.6 + dompurify: ^3.0.0 lodash: ^4.17.21 luxon: ^3.0.0 material-ui-popup-state: ^1.9.3 @@ -8719,11 +8703,11 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 - "@rjsf/core": 5.16.1 - "@rjsf/material-ui": 5.16.1 - "@rjsf/utils": 5.16.1 - "@rjsf/validator-ajv8": 5.16.1 + "@react-hookz/web": ^24.0.0 + "@rjsf/core": 5.17.0 + "@rjsf/material-ui": 5.17.0 + "@rjsf/utils": 5.17.0 + "@rjsf/validator-ajv8": 5.17.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -8783,11 +8767,11 @@ __metadata: "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 "@material-ui/lab": 4.0.0-alpha.61 - "@react-hookz/web": ^23.0.0 - "@rjsf/core": 5.16.1 - "@rjsf/material-ui": 5.16.1 - "@rjsf/utils": 5.16.1 - "@rjsf/validator-ajv8": 5.16.1 + "@react-hookz/web": ^24.0.0 + "@rjsf/core": 5.17.0 + "@rjsf/material-ui": 5.17.0 + "@rjsf/utils": 5.17.0 + "@rjsf/validator-ajv8": 5.17.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -9609,7 +9593,7 @@ __metadata: "@backstage/test-utils": "workspace:^" "@material-ui/core": ^4.12.2 "@material-ui/icons": ^4.9.1 - "@react-hookz/web": ^23.0.0 + "@react-hookz/web": ^24.0.0 "@testing-library/dom": ^9.0.0 "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 @@ -9726,11 +9710,11 @@ __metadata: "@testing-library/jest-dom": ^6.0.0 "@testing-library/react": ^14.0.0 "@testing-library/user-event": ^14.0.0 - "@types/dompurify": ^2.2.2 + "@types/dompurify": ^3.0.0 "@types/event-source-polyfill": ^1.0.0 "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 canvas: ^2.10.2 - dompurify: ^2.2.9 + dompurify: ^3.0.0 event-source-polyfill: 1.0.25 git-url-parse: ^13.0.0 jss: ~10.10.0 @@ -10806,6 +10790,33 @@ __metadata: languageName: node linkType: hard +"@ericcornelissen/bash-parser@npm:0.5.2": + version: 0.5.2 + resolution: "@ericcornelissen/bash-parser@npm:0.5.2" + dependencies: + array-last: ^1.1.1 + babylon: ^6.9.1 + compose-function: ^3.0.3 + deep-freeze: 0.0.1 + filter-iterator: 0.0.1 + filter-obj: ^1.1.0 + has-own-property: ^0.1.0 + identity-function: ^1.0.0 + is-iterable: ^1.1.0 + iterable-lookahead: ^1.0.0 + lodash.curry: ^4.1.1 + magic-string: ^0.16.0 + map-obj: ^2.0.0 + object-pairs: ^0.1.0 + object-values: ^1.0.0 + reverse-arguments: ^1.0.0 + shell-quote-word: ^1.0.1 + to-pascal-case: ^1.0.0 + unescape-js: ^1.0.5 + checksum: ed6feb775a45e529e36b8ab01cfe2ba39446d8403f30022d4c00f009a45ae47e9c2fd43d5607b7120366c29c42aaf4c5b0bc202066e71d543f3cde235240a87b + languageName: node + linkType: hard + "@esbuild/aix-ppc64@npm:0.19.12": version: 0.19.12 resolution: "@esbuild/aix-ppc64@npm:0.19.12" @@ -11671,11 +11682,11 @@ __metadata: linkType: hard "@google-cloud/container@npm:^5.0.0": - version: 5.5.0 - resolution: "@google-cloud/container@npm:5.5.0" + version: 5.6.0 + resolution: "@google-cloud/container@npm:5.6.0" dependencies: google-gax: ^4.0.3 - checksum: e88dd56e6911d3bdbb3f63d91536636f9018d421a5e6d3ab8f002c62f1c46d488e83265406c23fe02ae10edab0fc55b32bef726795e04dd52e0b38889d323dd0 + checksum: 3222a86659e250e82694da16d0efa67855b905b931c08901d6aff0daf3d41b300cea3937342f3f6e9995f9dacf3a61914c74d45b2dea627aceedf87415b0aa3e languageName: node linkType: hard @@ -13334,9 +13345,9 @@ __metadata: languageName: node linkType: hard -"@mswjs/interceptors@npm:^0.25.15": - version: 0.25.15 - resolution: "@mswjs/interceptors@npm:0.25.15" +"@mswjs/interceptors@npm:^0.25.16": + version: 0.25.16 + resolution: "@mswjs/interceptors@npm:0.25.16" dependencies: "@open-draft/deferred-promise": ^2.2.0 "@open-draft/logger": ^0.3.0 @@ -13344,7 +13355,7 @@ __metadata: is-node-process: ^1.2.0 outvariant: ^1.2.1 strict-event-emitter: ^0.5.1 - checksum: dbe43f2df398bbe48ee5ea4ecf055144c9c5689218e5955b01378ea084044dab992d1b434d3533e75df044030a976402e53ec65d743c2619e024defd75ffc076 + checksum: 862eb02be5f7606c643793b66b50b75e6a00784c4c6fcca3db7a52391f01a557f404d178493e716b9190412317a5fa7177abb33bfa4be576a08be4ba4e765575 languageName: node linkType: hard @@ -13660,6 +13671,16 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.scandir@npm:3.0.0": + version: 3.0.0 + resolution: "@nodelib/fs.scandir@npm:3.0.0" + dependencies: + "@nodelib/fs.stat": 3.0.0 + run-parallel: ^1.2.0 + checksum: f4e9d07b310f248503d3cd632310b25cd01d97a74701bc59e1458bad32c84f78615d9853820adba8af73d970868aab46de68e540ca7efd90dacd4ea34d05553d + languageName: node + linkType: hard + "@nodelib/fs.stat@npm:2.0.5, @nodelib/fs.stat@npm:^2.0.2": version: 2.0.5 resolution: "@nodelib/fs.stat@npm:2.0.5" @@ -13667,6 +13688,23 @@ __metadata: languageName: node linkType: hard +"@nodelib/fs.stat@npm:3.0.0": + version: 3.0.0 + resolution: "@nodelib/fs.stat@npm:3.0.0" + checksum: 93a93e19b64d0275b5120bed2cf85da4c5804014de1bdac6e9933b835b1cb9f88252dc990b148076bec034fc757bdd97d74cf5d99bc9f895e0f925aeabe7dbcf + languageName: node + linkType: hard + +"@nodelib/fs.walk@npm:2.0.0": + version: 2.0.0 + resolution: "@nodelib/fs.walk@npm:2.0.0" + dependencies: + "@nodelib/fs.scandir": 3.0.0 + fastq: ^1.15.0 + checksum: f900965bc3953a67cb74916ec0950cd5d58006a9218aef99928cc22dd77d117376aaf710e46c740d18638a99337a4e81cbf70c892a2124269bf177c459d89837 + languageName: node + linkType: hard + "@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" @@ -13777,6 +13815,22 @@ __metadata: languageName: node linkType: hard +"@npmcli/git@npm:^5.0.0": + version: 5.0.4 + resolution: "@npmcli/git@npm:5.0.4" + dependencies: + "@npmcli/promise-spawn": ^7.0.0 + lru-cache: ^10.0.1 + npm-pick-manifest: ^9.0.0 + proc-log: ^3.0.0 + promise-inflight: ^1.0.1 + promise-retry: ^2.0.1 + semver: ^7.3.5 + which: ^4.0.0 + checksum: 3c4adb7294eb7562cb0d908f36e1967ae6bde438192affd7f103cdeebbd9b2d83cd6b41b7db2278c9acd934c4af138baa094544e8e8a530b515c4084438d0170 + languageName: node + linkType: hard + "@npmcli/installed-package-contents@npm:^1.0.6, @npmcli/installed-package-contents@npm:^1.0.7": version: 1.0.7 resolution: "@npmcli/installed-package-contents@npm:1.0.7" @@ -13789,6 +13843,18 @@ __metadata: languageName: node linkType: hard +"@npmcli/map-workspaces@npm:3.0.4": + version: 3.0.4 + resolution: "@npmcli/map-workspaces@npm:3.0.4" + dependencies: + "@npmcli/name-from-folder": ^2.0.0 + glob: ^10.2.2 + minimatch: ^9.0.0 + read-package-json-fast: ^3.0.0 + checksum: 99607dbc502b16d0ce7a47a81ccc496b3f5ed10df4e61e61a505929de12c356092996044174ae0cfd6d8cc177ef3b597eef4987b674fc0c5a306d3a8cc1fe91a + languageName: node + linkType: hard + "@npmcli/map-workspaces@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/map-workspaces@npm:2.0.0" @@ -13840,6 +13906,13 @@ __metadata: languageName: node linkType: hard +"@npmcli/name-from-folder@npm:^2.0.0": + version: 2.0.0 + resolution: "@npmcli/name-from-folder@npm:2.0.0" + checksum: fb3ef891aa57315fb6171866847f298577c8bda98a028e93e458048477133e142b4eb45ce9f3b80454f7c257612cb01754ee782d608507698dd712164436f5bd + languageName: node + linkType: hard + "@npmcli/node-gyp@npm:^1.0.2, @npmcli/node-gyp@npm:^1.0.3": version: 1.0.3 resolution: "@npmcli/node-gyp@npm:1.0.3" @@ -13847,6 +13920,21 @@ __metadata: languageName: node linkType: hard +"@npmcli/package-json@npm:5.0.0": + version: 5.0.0 + resolution: "@npmcli/package-json@npm:5.0.0" + dependencies: + "@npmcli/git": ^5.0.0 + glob: ^10.2.2 + hosted-git-info: ^7.0.0 + json-parse-even-better-errors: ^3.0.0 + normalize-package-data: ^6.0.0 + proc-log: ^3.0.0 + semver: ^7.5.3 + checksum: 0d128e84e05e8a1771c8cc1f4232053fecf32e28f44e123ad16366ca3a7fd06f272f25f0b7d058f2763cab26bc479c8fc3c570af5de6324b05cb39868dcc6264 + languageName: node + linkType: hard + "@npmcli/package-json@npm:^1.0.1": version: 1.0.1 resolution: "@npmcli/package-json@npm:1.0.1" @@ -13865,6 +13953,15 @@ __metadata: languageName: node linkType: hard +"@npmcli/promise-spawn@npm:^7.0.0": + version: 7.0.1 + resolution: "@npmcli/promise-spawn@npm:7.0.1" + dependencies: + which: ^4.0.0 + checksum: a2b25d66d4dc835c69593bdf56588d66299fde3e80be4978347e686f24647007b794ce4da4cfcfcc569c67112720b746c4e7bf18ce45c096712d8b75fed19ec7 + languageName: node + linkType: hard + "@npmcli/run-script@npm:^2.0.0": version: 2.0.0 resolution: "@npmcli/run-script@npm:2.0.0" @@ -14779,6 +14876,141 @@ __metadata: languageName: node linkType: hard +"@pnpm/constants@npm:7.1.1": + version: 7.1.1 + resolution: "@pnpm/constants@npm:7.1.1" + checksum: a8b6a8c633ba2099ee844a3dd7934352a2135872e86f8fe497d599837b8be7eac374839598b70030e63cb3a32f945e881d6c0e1542f0be2b74ec52d78f891649 + languageName: node + linkType: hard + +"@pnpm/core-loggers@npm:9.0.6": + version: 9.0.6 + resolution: "@pnpm/core-loggers@npm:9.0.6" + dependencies: + "@pnpm/types": 9.4.2 + peerDependencies: + "@pnpm/logger": ^5.0.0 + checksum: ab0656839c873f5954109d540ca2a7b144626036c7f78ef4a7717e755449f9c7acda3a425b83ebc1349ad5ce295f2b6e9b133be14294b11c5df6a0f8b4feaea1 + languageName: node + linkType: hard + +"@pnpm/error@npm:5.0.2": + version: 5.0.2 + resolution: "@pnpm/error@npm:5.0.2" + dependencies: + "@pnpm/constants": 7.1.1 + checksum: 490e90b3a6fa6527a5a2b07dfd46982e005d8834036871a30cf03fcb389497b9828ed01c0d39e88b6352a340556de316eae9dbefcb3246f368815a03241576e6 + languageName: node + linkType: hard + +"@pnpm/fetching-types@npm:5.0.0": + version: 5.0.0 + resolution: "@pnpm/fetching-types@npm:5.0.0" + dependencies: + "@zkochan/retry": ^0.2.0 + node-fetch: 3.0.0-beta.9 + checksum: 845c1597be6246f484477c3badce5573a1ab35c741f59e297813faf195d07e4c03ca871beb10d614a987a4dff78bd72265c0bd56c40cbf941e416b1f3ea6231c + languageName: node + linkType: hard + +"@pnpm/graceful-fs@npm:3.2.0": + version: 3.2.0 + resolution: "@pnpm/graceful-fs@npm:3.2.0" + dependencies: + graceful-fs: ^4.2.11 + checksum: b31bad77530101d27044d2d712ecf09684398cc72311fbb079675f393219fff002a9ab8e3ea91014e79f1586a861a100ac9b4881d72156383aca6e85cf9855be + languageName: node + linkType: hard + +"@pnpm/logger@npm:5.0.0": + version: 5.0.0 + resolution: "@pnpm/logger@npm:5.0.0" + dependencies: + bole: ^5.0.0 + ndjson: ^2.0.0 + checksum: 6ea91cb3a539351371147b6f051489a01630538327bb3773105e91b9b35ec689b6fc1d112d484726deffe6953b738318e1a86205362baf9fb49fad27084b8f74 + languageName: node + linkType: hard + +"@pnpm/npm-package-arg@npm:^1.0.0": + version: 1.0.0 + resolution: "@pnpm/npm-package-arg@npm:1.0.0" + dependencies: + hosted-git-info: ^4.0.1 + semver: ^7.3.5 + validate-npm-package-name: ^4.0.0 + checksum: e3dbcb605b6c86e0d29854aab00af086fd922211c9c2ed4f4923a70947c10d563b5e9adc8441d7ec0a23d074edb9cd1f0c334b506c4ecc549b07b60700f3639a + languageName: node + linkType: hard + +"@pnpm/npm-resolver@npm:18.1.0": + version: 18.1.0 + resolution: "@pnpm/npm-resolver@npm:18.1.0" + dependencies: + "@pnpm/core-loggers": 9.0.6 + "@pnpm/error": 5.0.2 + "@pnpm/fetching-types": 5.0.0 + "@pnpm/graceful-fs": 3.2.0 + "@pnpm/resolve-workspace-range": 5.0.1 + "@pnpm/resolver-base": 11.1.0 + "@pnpm/types": 9.4.2 + "@zkochan/retry": ^0.2.0 + encode-registry: ^3.0.1 + load-json-file: ^6.2.0 + lru-cache: ^10.0.2 + normalize-path: ^3.0.0 + p-limit: ^3.1.0 + p-memoize: 4.0.1 + parse-npm-tarball-url: ^3.0.0 + path-temp: ^2.1.0 + ramda: "npm:@pnpm/ramda@0.28.1" + rename-overwrite: ^5.0.0 + semver: ^7.5.4 + ssri: 10.0.5 + version-selector-type: ^3.0.0 + peerDependencies: + "@pnpm/logger": ^5.0.0 + checksum: 81b0dd97a0062374db7aecd68a94e7e52dd19c9675bd052c7fa7a2b5edb6219dc525e71dccb70bf4bae90faf44f6e1cd0d4f155606bc754ffcec4f9ab6852c08 + languageName: node + linkType: hard + +"@pnpm/resolve-workspace-range@npm:5.0.1": + version: 5.0.1 + resolution: "@pnpm/resolve-workspace-range@npm:5.0.1" + dependencies: + semver: ^7.4.0 + checksum: 4c6a853b1f6d8030e5458d1d88891932e209ed35daa3032919802e6005a4beca5fa31ffd2769be1353a9f0367971afebd51493ab187ac675a73a35640a82aaa1 + languageName: node + linkType: hard + +"@pnpm/resolver-base@npm:11.1.0": + version: 11.1.0 + resolution: "@pnpm/resolver-base@npm:11.1.0" + dependencies: + "@pnpm/types": 9.4.2 + checksum: ff42d6f1bd3cfef46ab644709de13795af682c04575d782ec8cf32ef4b114486f22f3d758b1d94423ee8969fbb786a81d3a7b6fa52054af8e403b19f15a40b3f + languageName: node + linkType: hard + +"@pnpm/types@npm:9.4.2": + version: 9.4.2 + resolution: "@pnpm/types@npm:9.4.2" + checksum: a499e5442c53c38820730e626eb75b67305c838d486e2544527a1dd7bc2666ac75e91db8bc8b6ee7776927593297339468e212d239f27b0d0520ee972ab8b0b9 + languageName: node + linkType: hard + +"@pnpm/workspace.pkgs-graph@npm:^2.0.14": + version: 2.0.14 + resolution: "@pnpm/workspace.pkgs-graph@npm:2.0.14" + dependencies: + "@pnpm/npm-package-arg": ^1.0.0 + "@pnpm/npm-resolver": 18.1.0 + "@pnpm/resolve-workspace-range": 5.0.1 + ramda: "npm:@pnpm/ramda@0.28.1" + checksum: ff3b5234611da1ec4b636616554abcb4720c4fcd3db33bcb7b4b1e4ed5ebd091a854163876c1b1f7d56d2ec6e4f344c22eaf02054f2963d9a50a49462412793d + languageName: node + linkType: hard + "@popperjs/core@npm:^2.11.8": version: 2.11.8 resolution: "@popperjs/core@npm:2.11.8" @@ -15440,10 +15672,26 @@ __metadata: languageName: node linkType: hard -"@remix-run/router@npm:1.14.2": - version: 1.14.2 - resolution: "@remix-run/router@npm:1.14.2" - checksum: 8be55596f64563de95dea04c147ab67c4e6c9b72277c92d4de257dbb326e2aa16ad2adbdec32eb2c985808c642933ac895220654b8c899e4f4bd38f9fd97ff6e +"@react-hookz/web@npm:^24.0.0": + version: 24.0.4 + resolution: "@react-hookz/web@npm:24.0.4" + dependencies: + "@react-hookz/deep-equal": ^1.0.4 + peerDependencies: + js-cookie: ^3.0.5 + react: ^16.8 || ^17 || ^18 + react-dom: ^16.8 || ^17 || ^18 + peerDependenciesMeta: + js-cookie: + optional: true + checksum: 842dd51a2c875814c7468632315d756e79fcdff2882d7224e8e06c630f95ab788b6a59c29c0318cb049a18be97537803be8e3dbae12de34b2ae1290ababe266a + languageName: node + linkType: hard + +"@remix-run/router@npm:1.15.0": + version: 1.15.0 + resolution: "@remix-run/router@npm:1.15.0" + checksum: 0b5ea6b2e7bb7f3266005e033337a6fed29c458aa5ddc9a97a90ff19813ae6dfb4392871722d66d7e8db93a29760a8257830a9af58824b3a3363ed58e1e471d8 languageName: node linkType: hard @@ -15461,32 +15709,32 @@ __metadata: languageName: node linkType: hard -"@rjsf/core@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/core@npm:5.16.1" +"@rjsf/core@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/core@npm:5.17.0" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 - markdown-to-jsx: ^7.4.0 + markdown-to-jsx: ^7.4.1 nanoid: ^3.3.7 prop-types: ^15.8.1 peerDependencies: "@rjsf/utils": ^5.16.x react: ^16.14.0 || >=17 - checksum: 2f88dc6af9dda8ec5c8cbac63f3f9e776a11fe363ce938aa7b5c7a3baaa84a7a2f3796ebf55b361a8cb65267a1715ab880a4743636fb88e06b0240d07f0e4c7b + checksum: adfcbd1d44cef5f9e5de2873096085abd03b146dcef2c9c226060341ce2c935b5399e4ad5f00ad5091394224f5859bd6ac9bac533537dc5c8e2edb16b52b67cf languageName: node linkType: hard -"@rjsf/material-ui@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/material-ui@npm:5.16.1" +"@rjsf/material-ui@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/material-ui@npm:5.17.0" peerDependencies: "@material-ui/core": ^4.12.3 "@material-ui/icons": ^4.11.2 "@rjsf/core": ^5.16.x "@rjsf/utils": ^5.16.x react: ^16.14.0 || >=17 - checksum: ca237b699d74246622f4a29078674bfbf9c8238adec7fda6a5062e064d11c6f15c6dba117daa21fe3ac778fa2e884fb2366b5c5bb5e9490f91f9b611f7f010fe + checksum: c56fb145042cd1af7c6f0e149f4c7e61a9c4b9cf9e6dce40cd4f691da569e7d14ca1b922a0f54aafd6ae6900772cdccbdf3719ea83a0be2d0cc3a5f0486939f3 languageName: node linkType: hard @@ -15505,9 +15753,9 @@ __metadata: languageName: node linkType: hard -"@rjsf/utils@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/utils@npm:5.16.1" +"@rjsf/utils@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/utils@npm:5.17.0" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -15516,13 +15764,13 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: 0c69527de4ab6f9d6ec4d1a5e05a31a0a38062d40abe2a2da7bc2324b20b08b0e90c188977ac4408f3b004c758c28097444746f3215e21e184c11cad7e9278c1 + checksum: 01d0001f83083764a8552e009aa7df084621df9d1fc6ccdfad9d534513084421b1ad7494cab77b9b8205d680fd915f612d87800e20ab242e7066f33184c73d4f languageName: node linkType: hard -"@rjsf/validator-ajv8@npm:5.16.1": - version: 5.16.1 - resolution: "@rjsf/validator-ajv8@npm:5.16.1" +"@rjsf/validator-ajv8@npm:5.17.0": + version: 5.17.0 + resolution: "@rjsf/validator-ajv8@npm:5.17.0" dependencies: ajv: ^8.12.0 ajv-formats: ^2.1.1 @@ -15530,7 +15778,7 @@ __metadata: lodash-es: ^4.17.21 peerDependencies: "@rjsf/utils": ^5.16.x - checksum: ab26fc02ad86c7ff36e69aa1285b43a67aa65b2a47e3741a67c243131f74848e55f7215a20416c1a636703aa7f95af7d4270eda9818253f7ea2b3c5f86a26980 + checksum: c6e20e04b33e5b37e55a3d378add22c36970c9c92b6d692003acc5cfaff10282ead6ff775b1fa152ead66e451bc3f0cc518730c6f0ed68a7ecfbcd4098d59f32 languageName: node linkType: hard @@ -16549,6 +16797,19 @@ __metadata: languageName: node linkType: hard +"@snyk/github-codeowners@npm:1.1.0": + version: 1.1.0 + resolution: "@snyk/github-codeowners@npm:1.1.0" + dependencies: + commander: ^4.1.1 + ignore: ^5.1.8 + p-map: ^4.0.0 + bin: + github-codeowners: dist/cli.js + checksum: 133f867fa968f96229ebce724d8aedaa124218e20add96a3a7d39ea45e52007fee50cc90c39e406c9e662483d003da9326e00dc4d612afa5c2ca069d1cdab9d7 + languageName: node + linkType: hard + "@spotify/eslint-config-base@npm:^14.0.0": version: 14.0.1 resolution: "@spotify/eslint-config-base@npm:14.0.1" @@ -17547,90 +17808,90 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-arm64@npm:1.3.107" +"@swc/core-darwin-arm64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-arm64@npm:1.4.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-darwin-x64@npm:1.3.107" +"@swc/core-darwin-x64@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-darwin-x64@npm:1.4.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.3.107" +"@swc/core-linux-arm-gnueabihf@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.4.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-gnu@npm:1.3.107" +"@swc/core-linux-arm64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-gnu@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-arm64-musl@npm:1.3.107" +"@swc/core-linux-arm64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-arm64-musl@npm:1.4.0" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-gnu@npm:1.3.107" +"@swc/core-linux-x64-gnu@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-gnu@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-linux-x64-musl@npm:1.3.107" +"@swc/core-linux-x64-musl@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-linux-x64-musl@npm:1.4.0" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-arm64-msvc@npm:1.3.107" +"@swc/core-win32-arm64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-arm64-msvc@npm:1.4.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-ia32-msvc@npm:1.3.107" +"@swc/core-win32-ia32-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-ia32-msvc@npm:1.4.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.3.107": - version: 1.3.107 - resolution: "@swc/core-win32-x64-msvc@npm:1.3.107" +"@swc/core-win32-x64-msvc@npm:1.4.0": + version: 1.4.0 + resolution: "@swc/core-win32-x64-msvc@npm:1.4.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@swc/core@npm:^1.3.46": - version: 1.3.107 - resolution: "@swc/core@npm:1.3.107" + version: 1.4.0 + resolution: "@swc/core@npm:1.4.0" dependencies: - "@swc/core-darwin-arm64": 1.3.107 - "@swc/core-darwin-x64": 1.3.107 - "@swc/core-linux-arm-gnueabihf": 1.3.107 - "@swc/core-linux-arm64-gnu": 1.3.107 - "@swc/core-linux-arm64-musl": 1.3.107 - "@swc/core-linux-x64-gnu": 1.3.107 - "@swc/core-linux-x64-musl": 1.3.107 - "@swc/core-win32-arm64-msvc": 1.3.107 - "@swc/core-win32-ia32-msvc": 1.3.107 - "@swc/core-win32-x64-msvc": 1.3.107 + "@swc/core-darwin-arm64": 1.4.0 + "@swc/core-darwin-x64": 1.4.0 + "@swc/core-linux-arm-gnueabihf": 1.4.0 + "@swc/core-linux-arm64-gnu": 1.4.0 + "@swc/core-linux-arm64-musl": 1.4.0 + "@swc/core-linux-x64-gnu": 1.4.0 + "@swc/core-linux-x64-musl": 1.4.0 + "@swc/core-win32-arm64-msvc": 1.4.0 + "@swc/core-win32-ia32-msvc": 1.4.0 + "@swc/core-win32-x64-msvc": 1.4.0 "@swc/counter": ^0.1.1 "@swc/types": ^0.1.5 peerDependencies: @@ -17659,35 +17920,36 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 0dccff50461fb8c0f4af053b70e555c91386cb07aa7657a7328d58e397d15640723587549416d8fa7dcc073ad11b39318146bd50ec4a82345ce2ce39c7ba4c00 + checksum: cef6459ba707362e88373f1c2c779c760a7fdf06c0123856be005bb012de91cb913b37fb49e485ac551494a1ee46fb6369c5aca9d453e1e5e391a8514c0db185 languageName: node linkType: hard -"@swc/counter@npm:^0.1.1": - version: 0.1.1 - resolution: "@swc/counter@npm:0.1.1" - checksum: bb974babd493ba01c0d4a95ab610c3fc15fbf609c08cb0342798e485f57ecc0950abbf84e07124e63c5fe610b492d9a8dd03701d3b9ef7329d9e8bf3cc44980f +"@swc/counter@npm:^0.1.1, @swc/counter@npm:^0.1.3": + version: 0.1.3 + resolution: "@swc/counter@npm:0.1.3" + checksum: df8f9cfba9904d3d60f511664c70d23bb323b3a0803ec9890f60133954173047ba9bdeabce28cd70ba89ccd3fd6c71c7b0bd58be85f611e1ffbe5d5c18616598 languageName: node linkType: hard "@swc/helpers@npm:^0.5.0": - version: 0.5.3 - resolution: "@swc/helpers@npm:0.5.3" + version: 0.5.6 + resolution: "@swc/helpers@npm:0.5.6" dependencies: tslib: ^2.4.0 - checksum: 61c3f7ccd47fc70ad91437df88be6b458cdc11e311cb331288827d7c50befffc72aa18fe913ec2a9e70fbf44e4b818bed38bfd7c329d689e1ff3c198d084cd02 + checksum: 45de57097e1f6f356f571c7a4f55c692a46b0404c8601e5d9552e152000dfe541ff529d3d01c8a4abf60799d6e7d0078936e40be0a203ca356299d5d6adea765 languageName: node linkType: hard "@swc/jest@npm:^0.2.22": - version: 0.2.34 - resolution: "@swc/jest@npm:0.2.34" + version: 0.2.36 + resolution: "@swc/jest@npm:0.2.36" dependencies: "@jest/create-cache-key-function": ^29.7.0 + "@swc/counter": ^0.1.3 jsonc-parser: ^3.2.0 peerDependencies: "@swc/core": "*" - checksum: 8f92f9f45661dd728876d6b9bb619e96b463c9d2940c9038ab7fb1cd48f04e4b1763da39a0d0473750fee0e825bb9a9e3653b9a884d928da8f40004e7ee9554f + checksum: 14f2e696ac093e23dae1e2e57d894bbcde4de6fe80341a26c8d0d8cbae5aae31832f8fa32dc698529f128d19a76aeedf2227f59480de6dab5eb3f30bfdf9b71a languageName: node linkType: hard @@ -17793,8 +18055,8 @@ __metadata: linkType: hard "@testing-library/jest-dom@npm:^6.0.0": - version: 6.3.0 - resolution: "@testing-library/jest-dom@npm:6.3.0" + version: 6.4.2 + resolution: "@testing-library/jest-dom@npm:6.4.2" dependencies: "@adobe/css-tools": ^4.3.2 "@babel/runtime": ^7.9.2 @@ -17821,7 +18083,7 @@ __metadata: optional: true vitest: optional: true - checksum: cea8aa17895cf4aff573fedee80e8a592611caf7bc724702fc70b3b7bfee94becd3a10873c818d931424018d6fdeeca9d1a2ea5f53b74092ad5e8e09f03dde90 + checksum: 631aeadbf4e738080ae095242cf1a29a0b4ee2f09c8bdd0d3f00a923707da64c1617e088ba9a961d098481afabdc1d19149fb7ef98edf15132348eb222f345ae languageName: node linkType: hard @@ -18451,7 +18713,7 @@ __metadata: languageName: node linkType: hard -"@types/dompurify@npm:^2.1.0, @types/dompurify@npm:^2.2.2, @types/dompurify@npm:^2.3.3": +"@types/dompurify@npm:^2.1.0": version: 2.4.0 resolution: "@types/dompurify@npm:2.4.0" dependencies: @@ -18460,6 +18722,15 @@ __metadata: languageName: node linkType: hard +"@types/dompurify@npm:^3.0.0": + version: 3.0.5 + resolution: "@types/dompurify@npm:3.0.5" + dependencies: + "@types/trusted-types": "*" + checksum: ffc34eca6a4536e1c8c16a47cce2623c5a118a9785492e71230052d92933ff096d14326ff449031e8dfaac509413222372d8f2b28786a13159de6241df716185 + languageName: node + linkType: hard + "@types/ejs@npm:^3.1.3": version: 3.1.5 resolution: "@types/ejs@npm:3.1.5" @@ -19203,6 +19474,13 @@ __metadata: languageName: node linkType: hard +"@types/picomatch@npm:2.3.3": + version: 2.3.3 + resolution: "@types/picomatch@npm:2.3.3" + checksum: 1bf1a1d80296a585d3310c97be87e67e16da6f5c168e01ce27eef835abfc5bcca8e395afd6ae8b2b73eb72540d1587da7a468e4dfe7277ea208cf43cae096854 + languageName: node + linkType: hard + "@types/ping@npm:^0.4.1": version: 0.4.4 resolution: "@types/ping@npm:0.4.4" @@ -19273,11 +19551,11 @@ __metadata: linkType: hard "@types/react-dom@npm:^18": - version: 18.2.18 - resolution: "@types/react-dom@npm:18.2.18" + version: 18.2.19 + resolution: "@types/react-dom@npm:18.2.19" dependencies: "@types/react": "*" - checksum: 8e3da404c980e2b2a76da3852f812ea6d8b9d0e7f5923fbaf3bfbbbfa1d59116ff91c129de8f68e9b7668a67ae34484fe9df74d5a7518cf8591ec07a0c4dad57 + checksum: 087a19d8e4c1c0900ec4ac5ddb749a811a38274b25683d233c11755d2895cc6e475e8bf9bea3dee36519769298e078d4c2feab9ab4bd13b26bc2a6170716437e languageName: node linkType: hard @@ -19375,13 +19653,13 @@ __metadata: linkType: hard "@types/react@npm:^18": - version: 18.2.52 - resolution: "@types/react@npm:18.2.52" + version: 18.2.55 + resolution: "@types/react@npm:18.2.55" dependencies: "@types/prop-types": "*" "@types/scheduler": "*" csstype: ^3.0.2 - checksum: 4abc9bd63879e57c3df43a9cacff54c079e21b61ef934d33801e0177c26f582aa7d1d88a0769a740a4fd273168e3b150ff61de23e0fa85d1070e82ddce2b7fd2 + checksum: a8eb4fa77f73831b9112d4f11a7006217dc0740361649b9b0da3fd441d151a9cd415d5d68b91c0af4e430e063424d301c77489e5edaddc9f711c4e46cf9818a5 languageName: node linkType: hard @@ -19475,11 +19753,11 @@ __metadata: linkType: hard "@types/sanitize-html@npm:^2.6.2": - version: 2.9.5 - resolution: "@types/sanitize-html@npm:2.9.5" + version: 2.11.0 + resolution: "@types/sanitize-html@npm:2.11.0" dependencies: htmlparser2: ^8.0.0 - checksum: fd0afee5dac91aa2c42391f0c8c9254204f4ee1f10b902aa04e8f7809043d785e28af2732f75277ef09e46838013ad60abedb02ba1424b6218264f3333437fb5 + checksum: a901d55d31cd946a7fce0130cc7cf6bcf56602af9c87291be77d8149c60e7afc47c83ca74c67c2d84e6ba029fe9bbd6f14f89a8cb30fbd185766eebc5722c251 languageName: node linkType: hard @@ -19894,14 +20172,14 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^6.12.0": - version: 6.20.0 - resolution: "@typescript-eslint/eslint-plugin@npm:6.20.0" + version: 6.21.0 + resolution: "@typescript-eslint/eslint-plugin@npm:6.21.0" dependencies: "@eslint-community/regexpp": ^4.5.1 - "@typescript-eslint/scope-manager": 6.20.0 - "@typescript-eslint/type-utils": 6.20.0 - "@typescript-eslint/utils": 6.20.0 - "@typescript-eslint/visitor-keys": 6.20.0 + "@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 graphemer: ^1.4.0 ignore: ^5.2.4 @@ -19914,25 +20192,25 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: d002cbe1a99aef5d5b1601702f08a9e3c060ab5355707b4428ec61854b88513e625e5a898dc9fded669a4b33bb71a216aa7799f0e0c58ee00150218c69e7959c + checksum: 5ef2c502255e643e98051e87eb682c2a257e87afd8ec3b9f6274277615e1c2caf3131b352244cfb1987b8b2c415645eeacb9113fa841fc4c9b2ac46e8aed6efd languageName: node linkType: hard "@typescript-eslint/parser@npm:^6.7.2": - version: 6.20.0 - resolution: "@typescript-eslint/parser@npm:6.20.0" + version: 6.21.0 + resolution: "@typescript-eslint/parser@npm:6.21.0" dependencies: - "@typescript-eslint/scope-manager": 6.20.0 - "@typescript-eslint/types": 6.20.0 - "@typescript-eslint/typescript-estree": 6.20.0 - "@typescript-eslint/visitor-keys": 6.20.0 + "@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 debug: ^4.3.4 peerDependencies: eslint: ^7.0.0 || ^8.0.0 peerDependenciesMeta: typescript: optional: true - checksum: 91c0a715e7a37a0386770b0c4c208d0732736828294a3f58901655f0edf9230d1211dbfb8ac0ea562993506130773131fc1ee241311f43d78007af959bd46b9a + checksum: 162fe3a867eeeffda7328bce32dae45b52283c68c8cb23258fb9f44971f761991af61f71b8c9fe1aa389e93dfe6386f8509c1273d870736c507d76dd40647b68 languageName: node linkType: hard @@ -19946,22 +20224,22 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:6.20.0": - version: 6.20.0 - resolution: "@typescript-eslint/scope-manager@npm:6.20.0" +"@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.20.0 - "@typescript-eslint/visitor-keys": 6.20.0 - checksum: 54a06c485d4be6ac95b283fe2e29c2cd8a9a0b159d0f38e5f670dd2e1265358e2ad7b4442a0c61870430b38a6d0bf640843caaaf4c7f122523455221bbb3b011 + "@typescript-eslint/types": 6.21.0 + "@typescript-eslint/visitor-keys": 6.21.0 + checksum: 71028b757da9694528c4c3294a96cc80bc7d396e383a405eab3bc224cda7341b88e0fc292120b35d3f31f47beac69f7083196c70616434072fbcd3d3e62d3376 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:6.20.0": - version: 6.20.0 - resolution: "@typescript-eslint/type-utils@npm:6.20.0" +"@typescript-eslint/type-utils@npm:6.21.0": + version: 6.21.0 + resolution: "@typescript-eslint/type-utils@npm:6.21.0" dependencies: - "@typescript-eslint/typescript-estree": 6.20.0 - "@typescript-eslint/utils": 6.20.0 + "@typescript-eslint/typescript-estree": 6.21.0 + "@typescript-eslint/utils": 6.21.0 debug: ^4.3.4 ts-api-utils: ^1.0.1 peerDependencies: @@ -19969,7 +20247,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 438702c626706cb62f0fcbbb3e3c5c8946ade84f170c182eaebb43604716d2dbf05fac105bdbcb968f3d3375e8076bed8bf095ab65dc891666c91d9174bced6f + checksum: 77025473f4d80acf1fafcce99c5c283e557686a61861febeba9c9913331f8a41e930bf5cd8b7a54db502a57b6eb8ea6d155cbd4f41349ed00e3d7aeb1f477ddc languageName: node linkType: hard @@ -19980,10 +20258,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:6.20.0": - version: 6.20.0 - resolution: "@typescript-eslint/types@npm:6.20.0" - checksum: a4551ce9ce40119c2401a70d5a0f9fd16eec4771d076933983fd5fd4a42c0d9a1ac883dfa7640ddec0459057005d4ef4fd19d681b14b8cef89b094283a117f5f +"@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 @@ -20005,12 +20283,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:6.20.0": - version: 6.20.0 - resolution: "@typescript-eslint/typescript-estree@npm:6.20.0" +"@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.20.0 - "@typescript-eslint/visitor-keys": 6.20.0 + "@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 @@ -20020,24 +20298,24 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 256cdeae8c9c365f23ab1cefb29b9bc20451fc7b879651f47fd388e13976b62ecd0da56bf5b7a5d7050de1160b0e05fc841c4e5b0e91d8b03728a52d76e8caf9 + checksum: dec02dc107c4a541e14fb0c96148f3764b92117c3b635db3a577b5a56fc48df7a556fa853fb82b07c0663b4bf2c484c9f245c28ba3e17e5cb0918ea4cab2ea21 languageName: node linkType: hard -"@typescript-eslint/utils@npm:6.20.0": - version: 6.20.0 - resolution: "@typescript-eslint/utils@npm:6.20.0" +"@typescript-eslint/utils@npm:6.21.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.20.0 - "@typescript-eslint/types": 6.20.0 - "@typescript-eslint/typescript-estree": 6.20.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: 1c248ce34b612e922796c3bbb323d05994f4bca5d49a200ff14f2d7522c9ca5bdf08613c4f2187c9242f67d73f9c2ec5d07b05c5af7034a2e57843b99230b0b0 + checksum: b129b3a4aebec8468259f4589985cb59ea808afbfdb9c54f02fad11e17d185e2bf72bb332f7c36ec3c09b31f18fc41368678b076323e6e019d06f74ee93f7bf2 languageName: node linkType: hard @@ -20069,13 +20347,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:6.20.0": - version: 6.20.0 - resolution: "@typescript-eslint/visitor-keys@npm:6.20.0" +"@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.20.0 + "@typescript-eslint/types": 6.21.0 eslint-visitor-keys: ^3.4.1 - checksum: 6a360f16b7b28d3cbb539252d17c6ac8519fd26e5f27f895cd7d400e9ec428b67ecda131f2bd2d57144c0436dcdb15022749b163a46c61e62af2312e8e3be488 + checksum: 67c7e6003d5af042d8703d11538fca9d76899f0119130b373402819ae43f0bc90d18656aa7add25a24427ccf1a0efd0804157ba83b0d4e145f06107d7d1b7433 languageName: node linkType: hard @@ -20550,6 +20828,22 @@ __metadata: languageName: node linkType: hard +"@zkochan/retry@npm:^0.2.0": + version: 0.2.0 + resolution: "@zkochan/retry@npm:0.2.0" + checksum: 268e77e4f2254e608fdb79396ab6947e7c302ebe3df90696ad6cda4f09417845ca13ad4e6bfe813fab1839f1e66b14294ceb5591fb4dacd0999927aa6fe55826 + languageName: node + linkType: hard + +"@zkochan/rimraf@npm:^2.1.2": + version: 2.1.3 + resolution: "@zkochan/rimraf@npm:2.1.3" + dependencies: + rimraf: ^3.0.2 + checksum: 81cf488065b3b3fcb49980d35dc49a59f8961887c7ed589250ea233f7b91a30c3b9d3ec0b7700829062e7c514c5f07afdcf5f811a4f1a06227daa69c0638f32a + languageName: node + linkType: hard + "@zxing/text-encoding@npm:0.9.0": version: 0.9.0 resolution: "@zxing/text-encoding@npm:0.9.0" @@ -21147,6 +21441,13 @@ __metadata: languageName: node linkType: hard +"arity-n@npm:^1.0.4": + version: 1.0.4 + resolution: "arity-n@npm:1.0.4" + checksum: 3d76e16907f7b8a9452690c1efc301d0fbecea457365797eccfbade9b8d1653175b2c38343201bf26fdcbf0bcbb31eab6d912e7c008c6d19042301dc0be80a73 + languageName: node + linkType: hard + "array-buffer-byte-length@npm:^1.0.0": version: 1.0.0 resolution: "array-buffer-byte-length@npm:1.0.0" @@ -21191,6 +21492,15 @@ __metadata: languageName: node linkType: hard +"array-last@npm:^1.1.1": + version: 1.3.0 + resolution: "array-last@npm:1.3.0" + dependencies: + is-number: ^4.0.0 + checksum: 7631c7df9b44ea26f49e2f6eeb7a7d4d95b3798586b917e1efae4a321b6362e449e00b011e88eb0260959fbfc940fbdfce1d2a35765ea080de6d71e3fc3cf1dd + languageName: node + linkType: hard + "array-union@npm:^2.1.0": version: 2.1.0 resolution: "array-union@npm:2.1.0" @@ -21809,6 +22119,15 @@ __metadata: languageName: node linkType: hard +"babylon@npm:^6.9.1": + version: 6.18.0 + resolution: "babylon@npm:6.18.0" + bin: + babylon: ./bin/babylon.js + checksum: 0777ae0c735ce1cbfc856d627589ed9aae212b84fb0c03c368b55e6c5d3507841780052808d0ad46e18a2ba516e93d55eeed8cd967f3b2938822dfeccfb2a16d + languageName: node + linkType: hard + "backo2@npm:^1.0.2": version: 1.0.2 resolution: "backo2@npm:1.0.2" @@ -22118,6 +22437,16 @@ __metadata: languageName: node linkType: hard +"bole@npm:^5.0.0": + version: 5.0.11 + resolution: "bole@npm:5.0.11" + dependencies: + fast-safe-stringify: ^2.0.7 + individual: ^3.0.0 + checksum: de8d478613d032db781652942055b29e9daeb57be1df06067e2e840d5ce4f3d2cbabfbc01b6f8698f3e054564569f2910b8f5b1161387f031517d4b064d2ea01 + languageName: node + linkType: hard + "bonjour-service@npm:^1.0.11": version: 1.0.11 resolution: "bonjour-service@npm:1.0.11" @@ -22455,6 +22784,15 @@ __metadata: languageName: node linkType: hard +"builtins@npm:^5.0.0": + version: 5.0.1 + resolution: "builtins@npm:5.0.1" + dependencies: + semver: ^7.0.0 + checksum: 66d204657fe36522822a95b288943ad11b58f5eaede235b11d8c4edaa28ce4800087d44a2681524c340494aadb120a0068011acabe99d30e8f11a7d826d83515 + languageName: node + linkType: hard + "busboy@npm:^1.0.0, busboy@npm:^1.6.0": version: 1.6.0 resolution: "busboy@npm:1.6.0" @@ -22852,8 +23190,8 @@ __metadata: linkType: hard "chokidar@npm:^3.3.1, chokidar@npm:^3.4.2, chokidar@npm:^3.5.2, chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" dependencies: anymatch: ~3.1.2 braces: ~3.0.2 @@ -22866,7 +23204,7 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d languageName: node linkType: hard @@ -23452,7 +23790,7 @@ __metadata: languageName: node linkType: hard -"commander@npm:^4.0.0": +"commander@npm:^4.0.0, commander@npm:^4.1.1": version: 4.1.1 resolution: "commander@npm:4.1.1" checksum: d7b9913ff92cae20cb577a4ac6fcc121bd6223319e54a40f51a14740a681ad5c574fd29a57da478a5f234a6fa6c52cbf0b7c641353e03c648b1ae85ba670b977 @@ -23543,6 +23881,15 @@ __metadata: languageName: node linkType: hard +"compose-function@npm:^3.0.3": + version: 3.0.3 + resolution: "compose-function@npm:3.0.3" + dependencies: + arity-n: ^1.0.4 + checksum: 9f17d431e3ee4797c844f2870e13494079882ac3dbc54c143b7d99967b371908e0ce7ceb71c6aed61e2ecddbcd7bb437d91428a3d0e6569aee17a87fcbc7918f + languageName: node + linkType: hard + "compress-commons@npm:^4.1.0": version: 4.1.0 resolution: "compress-commons@npm:4.1.0" @@ -24127,11 +24474,11 @@ __metadata: linkType: hard "cronstrue@npm:^2.2.0, cronstrue@npm:^2.32.0": - version: 2.47.0 - resolution: "cronstrue@npm:2.47.0" + version: 2.48.0 + resolution: "cronstrue@npm:2.48.0" bin: cronstrue: bin/cli.js - checksum: a6752c8873fec30cabab4c5b92abde3a625cb5ef1797d9360f762b9e0bb9c0607a09744340faccdbf5b97eaeb5df0ebe9b5c424043fdba9b39799c82404076ec + checksum: d767d0f2cc1e286256bf6a92f555aacd1da103e97efd3dfc057a6f836f449b34302ace9fc00fdd28732fa5f8be1a1e940cef1a222b23dff90a419f33b3ff45aa languageName: node linkType: hard @@ -24772,6 +25119,13 @@ __metadata: languageName: node linkType: hard +"data-uri-to-buffer@npm:^3.0.1": + version: 3.0.1 + resolution: "data-uri-to-buffer@npm:3.0.1" + checksum: c59c3009686a78c071806b72f4810856ec28222f0f4e252aa495ec027ed9732298ceea99c50328cf59b151dd34cbc3ad6150bbb43e41fc56fa19f48c99e9fc30 + languageName: node + linkType: hard + "data-uri-to-buffer@npm:^6.0.0": version: 6.0.1 resolution: "data-uri-to-buffer@npm:6.0.1" @@ -25009,6 +25363,13 @@ __metadata: languageName: node linkType: hard +"deep-freeze@npm:0.0.1": + version: 0.0.1 + resolution: "deep-freeze@npm:0.0.1" + checksum: 1e43c98e44c7849382d9f896e679d48a1b5bf40993f7cc858e3730ef4e2ba387b9b7b7fe722cac34febe7f6a564cd242c27bbc319e8df793c2a287f21e5ba038 + languageName: node + linkType: hard + "deep-is@npm:^0.1.3, deep-is@npm:~0.1.3": version: 0.1.3 resolution: "deep-is@npm:0.1.3" @@ -25521,14 +25882,14 @@ __metadata: languageName: node linkType: hard -"dompurify@npm:=3.0.8": +"dompurify@npm:=3.0.8, dompurify@npm:^3.0.0": version: 3.0.8 resolution: "dompurify@npm:3.0.8" checksum: cac660ccae15a9603f06a85344da868a4c3732d8b57f7998de0f421eb4b9e67d916be52e9bb2a57b2f95b49e994cc50bcd06bb87f2cb2849cf058bdf15266237 languageName: node linkType: hard -"dompurify@npm:^2.2.7, dompurify@npm:^2.2.9, dompurify@npm:^2.3.6": +"dompurify@npm:^2.2.7": version: 2.4.7 resolution: "dompurify@npm:2.4.7" checksum: 13c047e772a1998348191554dda403950d45ef2ec75fa0b9915cc179ccea0a39ef780d283109bd72cf83a2a085af6c77664281d4d0106a737bc5f39906364efe @@ -25706,6 +26067,19 @@ __metadata: languageName: node linkType: hard +"easy-table@npm:1.2.0": + version: 1.2.0 + resolution: "easy-table@npm:1.2.0" + dependencies: + ansi-regex: ^5.0.1 + wcwidth: ^1.0.1 + dependenciesMeta: + wcwidth: + optional: true + checksum: 66961b19751a68d2d30ce9b74ef750c374cc3112bbcac3d1ed5a939e43c035ecf6b1954098df2d5b05f1e853ab2b67de893794390dcbf0abe1f157fddeb52174 + languageName: node + linkType: hard + "ebnf@npm:^1.9.1": version: 1.9.1 resolution: "ebnf@npm:1.9.1" @@ -25832,6 +26206,15 @@ __metadata: languageName: node linkType: hard +"encode-registry@npm:^3.0.1": + version: 3.0.1 + resolution: "encode-registry@npm:3.0.1" + dependencies: + mem: ^8.0.0 + checksum: 4e7cb234704782ef3e9e0c1941cb90de9b2421da8b87a21c968609e59b931c0316b15ea0e9b5280338a831dcb8e91362f8a54f712b10c70e28598f2dfb97da4a + languageName: node + linkType: hard + "encodeurl@npm:~1.0.2": version: 1.0.2 resolution: "encodeurl@npm:1.0.2" @@ -27715,7 +28098,7 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": +"fast-glob@npm:3.3.2, fast-glob@npm:^3.2.11, fast-glob@npm:^3.2.12, fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": version: 3.3.2 resolution: "fast-glob@npm:3.3.2" dependencies: @@ -27845,12 +28228,12 @@ __metadata: languageName: node linkType: hard -"fastq@npm:^1.6.0": - version: 1.6.1 - resolution: "fastq@npm:1.6.1" +"fastq@npm:^1.15.0, fastq@npm:^1.6.0": + version: 1.17.1 + resolution: "fastq@npm:1.17.1" dependencies: reusify: ^1.0.4 - checksum: e9940b30758a6a6bb3595d965accb4c86b85c7b594c3387788c480a83ac5e43d933eccb6b41f510d0c944aa17af340f432b4efe791f0d0bbe0e3e06dfdcda610 + checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 languageName: node linkType: hard @@ -27943,6 +28326,16 @@ __metadata: languageName: node linkType: hard +"fetch-blob@npm:^2.1.1": + version: 2.1.2 + resolution: "fetch-blob@npm:2.1.2" + peerDependenciesMeta: + domexception: + optional: true + checksum: 22d4487ce78ea4e52b432b0057d8d42922d5d93c0374b0bc2692cebdcb11bf8fac4f6d141b31f1633db1e9212effd38385adbd765a2c7412a621307058499214 + languageName: node + linkType: hard + "fflate@npm:^0.4.4": version: 0.4.8 resolution: "fflate@npm:0.4.8" @@ -28025,6 +28418,13 @@ __metadata: languageName: node linkType: hard +"filter-iterator@npm:0.0.1": + version: 0.0.1 + resolution: "filter-iterator@npm:0.0.1" + checksum: 1dd34e0728183b3cc69d45c57ec58cbdd21c5160d53e70592e2db049ed4da81ba551b7bfaccb11731011ce5b07ee09961b09fa4573fe906145ce63d9a1813db0 + languageName: node + linkType: hard + "filter-obj@npm:^1.1.0": version: 1.1.0 resolution: "filter-obj@npm:1.1.0" @@ -29170,10 +29570,10 @@ __metadata: languageName: node linkType: hard -"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": - version: 4.2.10 - resolution: "graceful-fs@npm:4.2.10" - checksum: 3f109d70ae123951905d85032ebeae3c2a5a7a997430df00ea30df0e3a6c60cf6689b109654d6fdacd28810a053348c4d14642da1d075049e6be1ba5216218da +"graceful-fs@npm:^4.1.11, graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.2, graceful-fs@npm:^4.1.5, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.10, graceful-fs@npm:^4.2.11, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6, graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 languageName: node linkType: hard @@ -29484,6 +29884,13 @@ __metadata: languageName: node linkType: hard +"has-own-property@npm:^0.1.0": + version: 0.1.0 + resolution: "has-own-property@npm:0.1.0" + checksum: 4754f42e8a54860ea1a397c231843937ba890f3aa556698c9a2160df5f9b1a02ddb321ef0528294aec3aaa3139d17744da048027aa7129a631cb6554b6faed6f + languageName: node + linkType: hard + "has-property-descriptors@npm:^1.0.0": version: 1.0.0 resolution: "has-property-descriptors@npm:1.0.0" @@ -29712,6 +30119,15 @@ __metadata: languageName: node linkType: hard +"hosted-git-info@npm:^7.0.0": + version: 7.0.1 + resolution: "hosted-git-info@npm:7.0.1" + dependencies: + lru-cache: ^10.0.1 + checksum: be5280f0a20d6153b47e1ab578e09f5ae8ad734301b3ed7e547dc88a6814d7347a4888db1b4f9635cc738e3c0ef1fbff02272aba7d07c75d4c5a50ff8d618db6 + languageName: node + linkType: hard + "hpack.js@npm:^2.1.6": version: 2.1.6 resolution: "hpack.js@npm:2.1.6" @@ -30111,6 +30527,13 @@ __metadata: languageName: node linkType: hard +"identity-function@npm:^1.0.0": + version: 1.0.0 + resolution: "identity-function@npm:1.0.0" + checksum: 0ec311050c69679334b12479f53226f67ca41bc3ba7283ede3dacfb80802ec07643868d16b274ab823ceb2e81291697f01b07e32c7796f92255bd81452b7ea15 + languageName: node + linkType: hard + "identity-obj-proxy@npm:3.0.0": version: 3.0.0 resolution: "identity-obj-proxy@npm:3.0.0" @@ -30152,10 +30575,10 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.1.4, ignore@npm:^5.2.0, ignore@npm:^5.2.4": - version: 5.2.4 - resolution: "ignore@npm:5.2.4" - checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef +"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 languageName: node linkType: hard @@ -30271,6 +30694,13 @@ __metadata: languageName: node linkType: hard +"individual@npm:^3.0.0": + version: 3.0.0 + resolution: "individual@npm:3.0.0" + checksum: 49f69cff2791f09d1364b39723cc03d8d48ae425b15b23c8f618ac81f8d76160dae9c2abde5fb885a6bfbce939017ba2a5c84cf3d8051d0804fca0ee79138aa2 + languageName: node + linkType: hard + "infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" @@ -30622,7 +31052,7 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.9.0": +"is-core-module@npm:^2.1.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1, is-core-module@npm:^2.8.1, is-core-module@npm:^2.9.0": version: 2.13.1 resolution: "is-core-module@npm:2.13.1" dependencies: @@ -30775,6 +31205,13 @@ __metadata: languageName: node linkType: hard +"is-iterable@npm:^1.1.0": + version: 1.1.1 + resolution: "is-iterable@npm:1.1.1" + checksum: d059aaf00899cf351cdf4d71ea6b4e8912107c47b31b554d28205199b306420f3b5d30a419efa6b807f466f675fd945822f1651fd6d1fd45469a578573da671e + languageName: node + linkType: hard + "is-lambda@npm:^1.0.1": version: 1.0.1 resolution: "is-lambda@npm:1.0.1" @@ -30836,6 +31273,13 @@ __metadata: languageName: node linkType: hard +"is-number@npm:^4.0.0": + version: 4.0.0 + resolution: "is-number@npm:4.0.0" + checksum: e71962a5ae97400211e6be5946eff2b81d3fa85154dad498bfe2704999e63ac6b3f8591fdb7971a121122cc6e25915c2cfe882ff7b77e243d51b92ca6961267e + languageName: node + linkType: hard + "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -31365,6 +31809,13 @@ __metadata: languageName: node linkType: hard +"iterable-lookahead@npm:^1.0.0": + version: 1.0.0 + resolution: "iterable-lookahead@npm:1.0.0" + checksum: 9d849bfbfafcaf83c6eec2835192088b1f7d1aadf9f33ec4e1d117664af2d47acb742e130179c35a6eec01d0e3ec2750ea8347ba6796e47e329b015455076e67 + languageName: node + linkType: hard + "iterall@npm:^1.2.1, iterall@npm:^1.3.0": version: 1.3.0 resolution: "iterall@npm:1.3.0" @@ -32030,7 +32481,7 @@ __metadata: languageName: node linkType: hard -"jiti@npm:^1.18.2": +"jiti@npm:1.21.0, jiti@npm:^1.18.2": version: 1.21.0 resolution: "jiti@npm:1.21.0" bin: @@ -32109,7 +32560,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": +"js-yaml@npm:4.1.0, js-yaml@npm:=4.1.0, js-yaml@npm:^4.0.0, js-yaml@npm:^4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: @@ -32342,6 +32793,13 @@ __metadata: languageName: node linkType: hard +"json-parse-even-better-errors@npm:^3.0.0": + version: 3.0.1 + resolution: "json-parse-even-better-errors@npm:3.0.1" + checksum: bf74fa3f715e56699ccd68b80a7d20908de432a3fae2d5aa2ed530a148e9d9ccdf8e6983b93d9966a553aa70dcf003ce3a7ffec2c0ce74d2a6173e3691a426f0 + languageName: node + linkType: hard + "json-pointer@npm:0.6.2": version: 0.6.2 resolution: "json-pointer@npm:0.6.2" @@ -32954,6 +33412,41 @@ __metadata: languageName: node linkType: hard +"knip@npm:^4.3.1": + version: 4.4.0 + resolution: "knip@npm:4.4.0" + dependencies: + "@ericcornelissen/bash-parser": 0.5.2 + "@nodelib/fs.walk": 2.0.0 + "@npmcli/map-workspaces": 3.0.4 + "@npmcli/package-json": 5.0.0 + "@pnpm/logger": 5.0.0 + "@pnpm/workspace.pkgs-graph": ^2.0.14 + "@snyk/github-codeowners": 1.1.0 + "@types/picomatch": 2.3.3 + easy-table: 1.2.0 + fast-glob: 3.3.2 + jiti: 1.21.0 + js-yaml: 4.1.0 + micromatch: 4.0.5 + minimist: 1.2.8 + picocolors: 1.0.0 + picomatch: 3.0.1 + pretty-ms: 9.0.0 + smol-toml: 1.1.4 + strip-json-comments: 5.0.1 + summary: 2.1.0 + zod: 3.22.4 + zod-validation-error: 3.0.0 + peerDependencies: + "@types/node": ">=18" + typescript: ">=5.0.4" + bin: + knip: bin/knip.js + checksum: 02ce0c03f732eeee73c76028569baf8105355ad58702af485201eb3d2e65e0cafbeb65c8d40be4e43b2abc29f4d8cf46d10ed6da8660103f1acd0e7beb2707eb + languageName: node + linkType: hard + "kubernetes-models@npm:^4.1.0, kubernetes-models@npm:^4.3.1": version: 4.3.1 resolution: "kubernetes-models@npm:4.3.1" @@ -33204,8 +33697,8 @@ __metadata: linkType: hard "lint-staged@npm:^15.0.0": - version: 15.2.1 - resolution: "lint-staged@npm:15.2.1" + version: 15.2.2 + resolution: "lint-staged@npm:15.2.2" dependencies: chalk: 5.3.0 commander: 11.1.0 @@ -33219,7 +33712,7 @@ __metadata: yaml: 2.3.4 bin: lint-staged: bin/lint-staged.js - checksum: d2b0361b311cb3384e58a5d4bfd5d34e6ff6ad41e5ea5dcc87c65379ea6e280c84f0a037df147355963dcf4d3dc1487795e3132c38e1bc5511b25889f405e189 + checksum: 031718ad3f839475fb1d41bda34bab4330f25814175808169daa2686ff026e5a667a25c95fdf3cd46dac72f9af2c98852565bb62d920992f5e2d3f730c279760 languageName: node linkType: hard @@ -33244,6 +33737,18 @@ __metadata: languageName: node linkType: hard +"load-json-file@npm:^6.2.0": + version: 6.2.0 + resolution: "load-json-file@npm:6.2.0" + dependencies: + graceful-fs: ^4.1.15 + parse-json: ^5.0.0 + strip-bom: ^4.0.0 + type-fest: ^0.6.0 + checksum: 4429e430ebb99375fc7cd936348e4f7ba729486080ced4272091c1e386a7f5f738ea3337d8ffd4b01c2f5bc3ddde92f2c780045b66838fe98bdb79f901884643 + languageName: node + linkType: hard + "load-yaml-file@npm:^0.2.0": version: 0.2.0 resolution: "load-yaml-file@npm:0.2.0" @@ -33348,7 +33853,7 @@ __metadata: languageName: node linkType: hard -"lodash.curry@npm:^4.0.1": +"lodash.curry@npm:^4.0.1, lodash.curry@npm:^4.1.1": version: 4.1.1 resolution: "lodash.curry@npm:4.1.1" checksum: 9192b70fe7df4d1ff780c0260bee271afa9168c93fe4fa24bc861900240531b59781b5fdaadf4644fea8f4fbcd96f0700539ab294b579ffc1022c6c15dcc462a @@ -33707,10 +34212,10 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.1.0 - resolution: "lru-cache@npm:10.1.0" - checksum: 58056d33e2500fbedce92f8c542e7c11b50d7d086578f14b7074d8c241422004af0718e08a6eaae8705cee09c77e39a61c1c79e9370ba689b7010c152e6a76ab +"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.0.2, lru-cache@npm:^9.1.1 || ^10.0.0": + version: 10.2.0 + resolution: "lru-cache@npm:10.2.0" + checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db languageName: node linkType: hard @@ -33809,6 +34314,15 @@ __metadata: languageName: node linkType: hard +"magic-string@npm:^0.16.0": + version: 0.16.0 + resolution: "magic-string@npm:0.16.0" + dependencies: + vlq: ^0.2.1 + checksum: f97e225062b600212e95fc8ed1948410bee3cb5248e03ed14fc45f12bb61a43960fdc0525f4aaaf62d6e79165526c9f8274ec225a92d421980cfcfcb8063be98 + languageName: node + linkType: hard + "magic-string@npm:^0.25.7": version: 0.25.7 resolution: "magic-string@npm:0.25.7" @@ -33938,6 +34452,15 @@ __metadata: languageName: node linkType: hard +"map-age-cleaner@npm:^0.1.3": + version: 0.1.3 + resolution: "map-age-cleaner@npm:0.1.3" + dependencies: + p-defer: ^1.0.0 + checksum: cb2804a5bcb3cbdfe4b59066ea6d19f5e7c8c196cd55795ea4c28f792b192e4c442426ae52524e5e1acbccf393d3bddacefc3d41f803e66453f6c4eda3650bc1 + languageName: node + linkType: hard + "map-age-cleaner@npm:^0.2.0": version: 0.2.0 resolution: "map-age-cleaner@npm:0.2.0" @@ -33954,6 +34477,13 @@ __metadata: languageName: node linkType: hard +"map-obj@npm:^2.0.0": + version: 2.0.0 + resolution: "map-obj@npm:2.0.0" + checksum: 77d2b7b03398a71c84bd7df8ab7be2139e5459fc1e18dbb5f15055fe7284bec0fc37fe410185b5f8ca2e3c3e01fd0fd1f946c579607878adb26cad1cd75314aa + languageName: node + linkType: hard + "map-obj@npm:^4.0.0": version: 4.3.0 resolution: "map-obj@npm:4.3.0" @@ -33983,12 +34513,12 @@ __metadata: languageName: node linkType: hard -"markdown-to-jsx@npm:^7.4.0": - version: 7.4.0 - resolution: "markdown-to-jsx@npm:7.4.0" +"markdown-to-jsx@npm:^7.4.1": + version: 7.4.1 + resolution: "markdown-to-jsx@npm:7.4.1" peerDependencies: react: ">= 0.14.0" - checksum: 59959d14d7927ed8a97e42d39771e2b445b90fa098477fb6ab040f044d230517dc4a95ba38a4f924cfc965a96b32211d93def150a6184f0e51d2cefdc8cb415d + checksum: 2888cb2389cb810ab35454a59d0623474a60a78e28f281ae0081f87053f6c59b033232a2cd269cc383a5edcaa1eab8ca4b3cf639fe4e1aa3fb418648d14bcc7d languageName: node linkType: hard @@ -34272,6 +34802,26 @@ __metadata: languageName: node linkType: hard +"mem@npm:^6.0.1": + version: 6.1.1 + resolution: "mem@npm:6.1.1" + dependencies: + map-age-cleaner: ^0.1.3 + mimic-fn: ^3.0.0 + checksum: 59a54b66838f074354fd2ae32cca5064996761ded870e74fa1e098bb3e5d48fc033ebeacf6809d4b2ad3036f7a6fb7538858821bbd4f1cfb7ef8966c0ab9b753 + languageName: node + linkType: hard + +"mem@npm:^8.0.0": + version: 8.1.1 + resolution: "mem@npm:8.1.1" + dependencies: + map-age-cleaner: ^0.1.3 + mimic-fn: ^3.1.0 + checksum: c41bc97f6f82b91899206058989e34bcb1543af40413c2ab59e5a8e97e4f8f2188d62e7bd95b2d575d5b0d823d5034a0f274a0676f6d11a0e0b973898b06c8b1 + languageName: node + linkType: hard + "memfs@npm:^3.1.2, memfs@npm:^3.4.1": version: 3.4.1 resolution: "memfs@npm:3.4.1" @@ -34795,7 +35345,7 @@ __metadata: languageName: node linkType: hard -"mimic-fn@npm:^3.0.0": +"mimic-fn@npm:^3.0.0, mimic-fn@npm:^3.1.0": version: 3.1.0 resolution: "mimic-fn@npm:3.1.0" checksum: f7b167f9115b8bbdf2c3ee55dce9149d14be9e54b237259c4bc1d8d0512ea60f25a1b323f814eb1fe8f5a541662804bcfcfff3202ca58df143edb986849d58db @@ -34881,7 +35431,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:9.0.3, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": +"minimatch@npm:9.0.3, minimatch@npm:^9.0.0, minimatch@npm:^9.0.1, minimatch@npm:^9.0.3": version: 9.0.3 resolution: "minimatch@npm:9.0.3" dependencies: @@ -34928,7 +35478,7 @@ __metadata: languageName: node linkType: hard -"minimist@npm:>=1.2.2, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": +"minimist@npm:1.2.8, minimist@npm:>=1.2.2, minimist@npm:^1.2.0, minimist@npm:^1.2.3, minimist@npm:^1.2.5, minimist@npm:^1.2.6": version: 1.2.8 resolution: "minimist@npm:1.2.8" checksum: 75a6d645fb122dad29c06a7597bddea977258957ed88d7a6df59b5cd3fe4a527e253e9bbf2e783e4b73657f9098b96a5fe96ab8a113655d4109108577ecf85b0 @@ -35291,13 +35841,13 @@ __metadata: linkType: hard "msw@npm:^2.0.0, msw@npm:^2.0.8": - version: 2.1.5 - resolution: "msw@npm:2.1.5" + version: 2.1.7 + resolution: "msw@npm:2.1.7" dependencies: "@bundled-es-modules/cookie": ^2.0.0 "@bundled-es-modules/statuses": ^1.0.1 "@mswjs/cookies": ^1.1.0 - "@mswjs/interceptors": ^0.25.15 + "@mswjs/interceptors": ^0.25.16 "@open-draft/until": ^2.1.0 "@types/cookie": ^0.6.0 "@types/statuses": ^2.0.4 @@ -35319,7 +35869,7 @@ __metadata: optional: true bin: msw: cli/index.js - checksum: 19a54a25baa584d1bafa219e1c2245073688eeed6ea5330f27c868a2f279390ee4fbd8a13d64cf0a056149d7e2faa300f901959bab8854e010f29368524d7c4f + checksum: 5a6e35433fb734f6e14c9e2446ea966c24777eae36adc6533af9a2f11837bbbd476401e9cbddad3cfec46c7712b89653549d62dc86c47df6aea163021a013314 languageName: node linkType: hard @@ -35645,6 +36195,16 @@ __metadata: languageName: node linkType: hard +"node-fetch@npm:3.0.0-beta.9": + version: 3.0.0-beta.9 + resolution: "node-fetch@npm:3.0.0-beta.9" + dependencies: + data-uri-to-buffer: ^3.0.1 + fetch-blob: ^2.1.1 + checksum: 586af0910649cb62f1c044ddac41e71c0b0f48133fba406ad5e0fab51baff18f22cd187ea65ef690ceed7386a71910e904348105dc8eae55f907fa94df7e76ca + languageName: node + linkType: hard + "node-fetch@npm:^1.0.1": version: 1.7.3 resolution: "node-fetch@npm:1.7.3" @@ -35907,6 +36467,18 @@ __metadata: languageName: node linkType: hard +"normalize-package-data@npm:^6.0.0": + version: 6.0.0 + resolution: "normalize-package-data@npm:6.0.0" + dependencies: + hosted-git-info: ^7.0.0 + is-core-module: ^2.8.1 + semver: ^7.3.5 + validate-npm-package-license: ^3.0.4 + checksum: 741211a4354ba6d618caffa98f64e0e5ec9e5575bf3aefe47f4b68e662d65f9ba1b6b2d10640c16254763ed0879288155566138b5ffe384172352f6e969c1752 + languageName: node + linkType: hard + "normalize-path@npm:^2.1.1": version: 2.1.1 resolution: "normalize-path@npm:2.1.1" @@ -35971,6 +36543,15 @@ __metadata: languageName: node linkType: hard +"npm-install-checks@npm:^6.0.0": + version: 6.3.0 + resolution: "npm-install-checks@npm:6.3.0" + dependencies: + semver: ^7.1.1 + checksum: 6c20dadb878a0d2f1f777405217b6b63af1299d0b43e556af9363ee6eefaa98a17dfb7b612a473a473e96faf7e789c58b221e0d8ffdc1d34903c4f71618df3b4 + languageName: node + linkType: hard + "npm-normalize-package-bin@npm:^1.0.0, npm-normalize-package-bin@npm:^1.0.1": version: 1.0.1 resolution: "npm-normalize-package-bin@npm:1.0.1" @@ -35985,6 +36566,25 @@ __metadata: languageName: node linkType: hard +"npm-normalize-package-bin@npm:^3.0.0": + version: 3.0.1 + resolution: "npm-normalize-package-bin@npm:3.0.1" + checksum: de416d720ab22137a36292ff8a333af499ea0933ef2320a8c6f56a73b0f0448227fec4db5c890d702e26d21d04f271415eab6580b5546456861cc0c19498a4bf + languageName: node + linkType: hard + +"npm-package-arg@npm:^11.0.0": + version: 11.0.1 + resolution: "npm-package-arg@npm:11.0.1" + dependencies: + hosted-git-info: ^7.0.0 + proc-log: ^3.0.0 + semver: ^7.3.5 + validate-npm-package-name: ^5.0.0 + checksum: 60364504e04e34fc20b47ad192efc9181922bce0cb41fa81871b1b75748d8551725f61b2f9a2e3dffb1782d749a35313f5dc02c18c3987653990d486f223adf2 + languageName: node + linkType: hard + "npm-package-arg@npm:^8.0.1, npm-package-arg@npm:^8.1.2, npm-package-arg@npm:^8.1.5": version: 8.1.5 resolution: "npm-package-arg@npm:8.1.5" @@ -36036,6 +36636,18 @@ __metadata: languageName: node linkType: hard +"npm-pick-manifest@npm:^9.0.0": + version: 9.0.0 + resolution: "npm-pick-manifest@npm:9.0.0" + dependencies: + npm-install-checks: ^6.0.0 + npm-normalize-package-bin: ^3.0.0 + npm-package-arg: ^11.0.0 + semver: ^7.3.5 + checksum: a6f102f9e9e8feea69be3a65e492fef6319084a85fc4e40dc88a277a3aa675089cef13ab0436ed7916e97c7bbba8315633d818eb15402c3abfb0bddc1af08cc7 + languageName: node + linkType: hard + "npm-registry-fetch@npm:^12.0.0, npm-registry-fetch@npm:^12.0.1": version: 12.0.2 resolution: "npm-registry-fetch@npm:12.0.2" @@ -36201,6 +36813,20 @@ __metadata: languageName: node linkType: hard +"object-pairs@npm:^0.1.0": + version: 0.1.0 + resolution: "object-pairs@npm:0.1.0" + checksum: 8bde82dda701c84a27ba5bcf5e014283c6defbdab6df189af0b6582541711ed86ba2f0cce0a300a2220ba27b54ee11128c508982a191fa04f81770a7695b23d9 + languageName: node + linkType: hard + +"object-values@npm:^1.0.0": + version: 1.0.0 + resolution: "object-values@npm:1.0.0" + checksum: b86e7ef56349de1444e45b00f4aac7dcb76f2973f3e2cd5836cf86815b1ea4b2b3827bb2320cd5d1a50c78dd3068ce23cbcb5a1f024abe12296af8cf50d17a22 + languageName: node + linkType: hard + "object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" @@ -36654,6 +37280,16 @@ __metadata: languageName: node linkType: hard +"p-memoize@npm:4.0.1": + version: 4.0.1 + resolution: "p-memoize@npm:4.0.1" + dependencies: + mem: ^6.0.1 + mimic-fn: ^3.0.0 + checksum: 322294f7d8c6112cc961cf48f3e08eadc5fa0da7bc457db1a3f6f6c72d9745ae098255584d67a62367707551c514825917c86773e60c27cc341eabc9636d0a0d + languageName: node + linkType: hard + "p-queue@npm:^6.6.2": version: 6.6.2 resolution: "p-queue@npm:6.6.2" @@ -36881,6 +37517,13 @@ __metadata: languageName: node linkType: hard +"parse-ms@npm:^4.0.0": + version: 4.0.0 + resolution: "parse-ms@npm:4.0.0" + checksum: 673c801d9f957ff79962d71ed5a24850163f4181a90dd30c4e3666b3a804f53b77f1f0556792e8b2adbb5d58757907d1aa51d7d7dc75997c2a56d72937cbc8b7 + languageName: node + linkType: hard + "parse-multipart-data@npm:^1.4.0": version: 1.5.0 resolution: "parse-multipart-data@npm:1.5.0" @@ -36888,6 +37531,15 @@ __metadata: languageName: node linkType: hard +"parse-npm-tarball-url@npm:^3.0.0": + version: 3.0.0 + resolution: "parse-npm-tarball-url@npm:3.0.0" + dependencies: + semver: ^6.1.0 + checksum: 4a6c1048a86465570fe128d69aa4d5a4a9916cbdf86ac39e43fca3fea16554905cafa4b351bf6274ce131e698412fd89157b372abed29dfd8e6aea9e67b3a717 + languageName: node + linkType: hard + "parse-path@npm:^7.0.0": version: 7.0.0 resolution: "parse-path@npm:7.0.0" @@ -37205,6 +37857,15 @@ __metadata: languageName: node linkType: hard +"path-temp@npm:^2.1.0": + version: 2.1.0 + resolution: "path-temp@npm:2.1.0" + dependencies: + unique-string: ^2.0.0 + checksum: ad28022a9c807d17d729c3ee265cd51a36f2d0283c9b1daee02dfd84fa2e4944b93e0a8d07bd5c2ed678c3c6c048d011c1817a181f6a3f03cd3a9648faef1b7d + languageName: node + linkType: hard + "path-to-regexp@npm:0.1.7": version: 0.1.7 resolution: "path-to-regexp@npm:0.1.7" @@ -37430,7 +38091,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": +"picocolors@npm:1.0.0, picocolors@npm:^1.0.0": version: 1.0.0 resolution: "picocolors@npm:1.0.0" checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 @@ -37444,6 +38105,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:3.0.1": + version: 3.0.1 + resolution: "picomatch@npm:3.0.1" + checksum: b7fe18174bcc05bbf0ea09cc85623ae395676b3e6bc25636d4c20db79a948586237e429905453bf1ba385bc7a7aa5b56f1b351680e650d2b5c305ceb98dfc914 + languageName: node + linkType: hard + "picomatch@npm:^2.0.4, picomatch@npm:^2.2.1, picomatch@npm:^2.2.2, picomatch@npm:^2.2.3, picomatch@npm:^2.3.0, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" @@ -38075,13 +38743,13 @@ __metadata: linkType: hard "postcss@npm:^8.1.0, postcss@npm:^8.4.27, postcss@npm:^8.4.33": - version: 8.4.33 - resolution: "postcss@npm:8.4.33" + version: 8.4.34 + resolution: "postcss@npm:8.4.34" dependencies: nanoid: ^3.3.7 picocolors: ^1.0.0 source-map-js: ^1.0.2 - checksum: 6f98b2af4b76632a3de20c4f47bf0e984a1ce1a531cf11adcb0b1d63a6cbda0aae4165e578b66c32ca4879038e3eaad386a6be725a8fb4429c78e3c1ab858fe9 + checksum: 46c32b51810a23060288c86fdb5195237c497f952c674167fd1cbb3f0c628389a3fd48ae0b289447e5368b4abbc95f81e2d318bfdc5554063b2a7e8192e1a540 languageName: node linkType: hard @@ -38302,6 +38970,15 @@ __metadata: languageName: node linkType: hard +"pretty-ms@npm:9.0.0": + version: 9.0.0 + resolution: "pretty-ms@npm:9.0.0" + dependencies: + parse-ms: ^4.0.0 + checksum: 072b17547e09cb232e8e4c7be0281e256b6d8acd18dfb2fdd715d50330d1689fdaa877f53cf90c62ed419ef842f0f5fb94a2cd8ed1aa6d7608ad48834219435d + languageName: node + linkType: hard + "printj@npm:~1.1.0": version: 1.1.2 resolution: "printj@npm:1.1.2" @@ -38662,6 +39339,13 @@ __metadata: languageName: node linkType: hard +"queue-microtask@npm:^1.2.2": + version: 1.2.3 + resolution: "queue-microtask@npm:1.2.3" + checksum: b676f8c040cdc5b12723ad2f91414d267605b26419d5c821ff03befa817ddd10e238d22b25d604920340fd73efd8ba795465a0377c4adf45a4a41e4234e42dc4 + languageName: node + linkType: hard + "queue-tick@npm:^1.0.1": version: 1.0.1 resolution: "queue-tick@npm:1.0.1" @@ -38713,6 +39397,13 @@ __metadata: languageName: node linkType: hard +"ramda@npm:@pnpm/ramda@0.28.1": + version: 0.28.1 + resolution: "@pnpm/ramda@npm:0.28.1" + checksum: e45e41ceab4f9a0a08fec9c7809a7b79cf3b3220998588f76567addb7533167b591112e0ea1a34b9d99f97ab7511a5bedb1cbb3d49c424c7dc0cdc060ffc2aae + languageName: node + linkType: hard + "ramda@npm:~0.29.1": version: 0.29.1 resolution: "ramda@npm:0.29.1" @@ -39073,11 +39764,11 @@ __metadata: linkType: hard "react-hook-form@npm:^7.12.2, react-hook-form@npm:^7.13.0": - version: 7.49.3 - resolution: "react-hook-form@npm:7.49.3" + version: 7.50.1 + resolution: "react-hook-form@npm:7.50.1" peerDependencies: react: ^16.8.0 || ^17 || ^18 - checksum: 9769845e2749f5c9d1d033be3819bc572ffa67f19ec2e567c61a58d0d060107facdf8425aab253c2e667c00853b7706a50bd6739fca6228c284c9313420ca26f + checksum: 40dcb64d2ff631f6da76db2c5788957da3429f07649a6f3aed76545c616fae8eee557a6b06d0d0842be1f80ac8244f44d87f4d8d83fddabec76d7ab9921f8781 languageName: node linkType: hard @@ -39337,15 +40028,15 @@ __metadata: linkType: hard "react-router-dom@npm:^6.3.0": - version: 6.21.3 - resolution: "react-router-dom@npm:6.21.3" + version: 6.22.0 + resolution: "react-router-dom@npm:6.22.0" dependencies: - "@remix-run/router": 1.14.2 - react-router: 6.21.3 + "@remix-run/router": 1.15.0 + react-router: 6.22.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: bcf668aa1428ca3048d7675f1ae3fe983c8792357a0ed59a1414cb1d682227727aad7c44c4222c6774b8d01bf352478845f7f3f668ebfcaa177208ef64e10bdc + checksum: 21cbdda0070dffb50845a97e2688648a9925c7ebabd1f9335523a1f8ae66048c1d9d06442f1b0ec35a266d1c63ed3b56b437db70807f73440a185f3e2d3c632f languageName: node linkType: hard @@ -39360,14 +40051,14 @@ __metadata: languageName: node linkType: hard -"react-router@npm:6.21.3, react-router@npm:^6.3.0": - version: 6.21.3 - resolution: "react-router@npm:6.21.3" +"react-router@npm:6.22.0, react-router@npm:^6.3.0": + version: 6.22.0 + resolution: "react-router@npm:6.22.0" dependencies: - "@remix-run/router": 1.14.2 + "@remix-run/router": 1.15.0 peerDependencies: react: ">=16.8" - checksum: 7e6297d5b67ae07d2e8564e036dbb15ebd706b41c22238940f47eee9b21ffb76d41336803c3b33435f1ebe210226577e32df3838bcbf2cd7c813fa357c0a4fac + checksum: 94f382f3fa6fcb8525c143d83d4c3a3b010979f417cac0bbe7a63f906b3809e2bb56e8c329b9b3fd3212a498670ab278aea72893e921b827dcf00024c3d115dd languageName: node linkType: hard @@ -39591,6 +40282,16 @@ __metadata: languageName: node linkType: hard +"read-package-json-fast@npm:^3.0.0": + version: 3.0.2 + resolution: "read-package-json-fast@npm:3.0.2" + dependencies: + json-parse-even-better-errors: ^3.0.0 + npm-normalize-package-bin: ^3.0.0 + checksum: 8d406869f045f1d76e2a99865a8fd1c1af9c1dc06200b94d2b07eef87ed734b22703a8d72e1cd36ea36cc48e22020bdd187f88243c7dd0563f72114d38c17072 + languageName: node + linkType: hard + "read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -40068,6 +40769,16 @@ __metadata: languageName: node linkType: hard +"rename-overwrite@npm:^5.0.0": + version: 5.0.0 + resolution: "rename-overwrite@npm:5.0.0" + dependencies: + "@zkochan/rimraf": ^2.1.2 + fs-extra: 10.1.0 + checksum: eaac7b36302b6f184dcff91c625776e3a3b46b234550adcf70434695ef9c7dd28bd9c5b2945c4a7fbcd09649bd31efce26aae39166becdc05ca9213524d2c3b8 + languageName: node + linkType: hard + "renderkid@npm:^3.0.0": version: 3.0.0 resolution: "renderkid@npm:3.0.0" @@ -40379,6 +41090,13 @@ __metadata: languageName: node linkType: hard +"reverse-arguments@npm:^1.0.0": + version: 1.0.0 + resolution: "reverse-arguments@npm:1.0.0" + checksum: 4dc725066adb35bccdee90545bab7e3ddd07e61c3622afa22a6a17cc84cf22166f9355f8f206c89d344f0afc78a53ae6a8d43a710ca9774a676e3632a5a3d9a1 + languageName: node + linkType: hard + "rfc4648@npm:^1.3.0": version: 1.4.0 resolution: "rfc4648@npm:1.4.0" @@ -40622,6 +41340,7 @@ __metadata: eslint-plugin-testing-library: ^6.0.0 fs-extra: 10.1.0 husky: ^9.0.0 + knip: ^4.3.1 lint-staged: ^15.0.0 minimist: ^1.2.5 node-gyp: ^10.0.0 @@ -40684,10 +41403,12 @@ __metadata: languageName: node linkType: hard -"run-parallel@npm:^1.1.9": - version: 1.1.9 - resolution: "run-parallel@npm:1.1.9" - checksum: 8bbeda89c2c1dbfeaa0cdb9f17e93a011ac58ef77339ef1e61a62208b67c8e7b661891df677bb7c5be84b8792e27061177368d500b3c731bb019b0c71e667591 +"run-parallel@npm:^1.1.9, run-parallel@npm:^1.2.0": + version: 1.2.0 + resolution: "run-parallel@npm:1.2.0" + dependencies: + queue-microtask: ^1.2.2 + checksum: cb4f97ad25a75ebc11a8ef4e33bb962f8af8516bb2001082ceabd8902e15b98f4b84b4f8a9b222e5d57fc3bd1379c483886ed4619367a7680dad65316993021d languageName: node linkType: hard @@ -40963,7 +41684,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.5.4, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:~7.5.4": +"semver@npm:7.5.4, semver@npm:~7.5.4": version: 7.5.4 resolution: "semver@npm:7.5.4" dependencies: @@ -40974,7 +41695,7 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": +"semver@npm:^6.0.0, semver@npm:^6.1.0, semver@npm:^6.2.0, semver@npm:^6.3.0, semver@npm:^6.3.1": version: 6.3.1 resolution: "semver@npm:6.3.1" bin: @@ -40983,6 +41704,17 @@ __metadata: languageName: node linkType: hard +"semver@npm:^7.0.0, semver@npm:^7.1.1, semver@npm:^7.1.3, semver@npm:^7.3.2, semver@npm:^7.3.4, semver@npm:^7.3.5, semver@npm:^7.3.7, semver@npm:^7.3.8, semver@npm:^7.4.0, semver@npm:^7.5.3, semver@npm:^7.5.4": + version: 7.6.0 + resolution: "semver@npm:7.6.0" + dependencies: + lru-cache: ^6.0.0 + bin: + semver: bin/semver.js + checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c + languageName: node + linkType: hard + "send@npm:0.18.0": version: 0.18.0 resolution: "send@npm:0.18.0" @@ -41216,6 +41948,13 @@ __metadata: languageName: node linkType: hard +"shell-quote-word@npm:^1.0.1": + version: 1.0.1 + resolution: "shell-quote-word@npm:1.0.1" + checksum: 05c5df92acba3e7920dbd987b235276871d38cf360d339074cbfabea49bbca8406a6f06a822cd1e84912c3150277d73de5194ca21c37ef95e108dfe45372526f + languageName: node + linkType: hard + "shell-quote@npm:^1.7.3, shell-quote@npm:^1.8.1": version: 1.8.1 resolution: "shell-quote@npm:1.8.1" @@ -41413,8 +42152,8 @@ __metadata: linkType: hard "sloc@npm:^0.3.1": - version: 0.3.1 - resolution: "sloc@npm:0.3.1" + version: 0.3.2 + resolution: "sloc@npm:0.3.2" dependencies: async: ^3.2.4 cli-table: ^0.3.11 @@ -41422,7 +42161,7 @@ __metadata: readdirp: ^3.3.0 bin: sloc: bin/sloc - checksum: 3075150912b4fbb90167c446b155fcfffa20351245d7ae2a7139b2c3ba5dd9fd01fe97fc11a917d5f6a66778c3a9ab4c6ceff0bcd234338f38942fb7238ab927 + checksum: ea3b0a0c5383086d5210f9a9be5df5cbd8aa0a5f6a1902ba776e9faf9bb816092929f5eb4c88c5cd3961700da4229e55eee5b3bc291892159dd947e3e838e0aa languageName: node linkType: hard @@ -41456,6 +42195,13 @@ __metadata: languageName: node linkType: hard +"smol-toml@npm:1.1.4": + version: 1.1.4 + resolution: "smol-toml@npm:1.1.4" + checksum: 71537b27c18172c819778d54b6328d438af9d16dd63f0722a9df9fd77c7084eb163274224910c89e6dec0369f130ab050bc3cf4bdba34a4dc134b4faa74749de + languageName: node + linkType: hard + "smtp-address-parser@npm:^1.0.3": version: 1.0.10 resolution: "smtp-address-parser@npm:1.0.10" @@ -41800,12 +42546,12 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.4 - resolution: "ssri@npm:10.0.4" +"ssri@npm:10.0.5, ssri@npm:^10.0.0": + version: 10.0.5 + resolution: "ssri@npm:10.0.5" dependencies: - minipass: ^5.0.0 - checksum: fb14da9f8a72b04eab163eb13a9dda11d5962cd2317f85457c4e0b575e9a6e0e3a6a87b5bf122c75cb36565830cd5f263fb457571bf6f1587eb5f95d095d6165 + minipass: ^7.0.3 + checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 languageName: node linkType: hard @@ -42135,6 +42881,13 @@ __metadata: languageName: node linkType: hard +"string.fromcodepoint@npm:^0.2.1": + version: 0.2.1 + resolution: "string.fromcodepoint@npm:0.2.1" + checksum: 6ba80f70c3e2a36dab87f5d68168936403295a73838564e701f5c861d397d77d9e97b0e2aa0f3c163a25a96c785dcc2145452b220753fb7b3e6c6fe431c9c411 + languageName: node + linkType: hard + "string.prototype.matchall@npm:^4.0.8": version: 4.0.8 resolution: "string.prototype.matchall@npm:4.0.8" @@ -42308,6 +43061,13 @@ __metadata: languageName: node linkType: hard +"strip-json-comments@npm:5.0.1": + version: 5.0.1 + resolution: "strip-json-comments@npm:5.0.1" + checksum: b314af70c6666a71133e309a571bdb87687fc878d9fd8b38ebed393a77b89835b92f191aa6b0bc10dfd028ba99eed6b6365985001d64c5aef32a4a82456a156b + languageName: node + linkType: hard + "strip-json-comments@npm:^3.1.1, strip-json-comments@npm:~3.1.1": version: 3.1.1 resolution: "strip-json-comments@npm:3.1.1" @@ -42469,6 +43229,13 @@ __metadata: languageName: node linkType: hard +"summary@npm:2.1.0": + version: 2.1.0 + resolution: "summary@npm:2.1.0" + checksum: 10ac12ce12c013b56ad44c37cfac206961f0993d98867b33b1b03a27b38a1cf8dd2db0b788883356c5335bbbb37d953772ef4a381d6fc8f408faf99f2bc54af5 + languageName: node + linkType: hard + "superagent@npm:^8.1.2": version: 8.1.2 resolution: "superagent@npm:8.1.2" @@ -42596,8 +43363,8 @@ __metadata: linkType: hard "swagger-ui-react@npm:^5.0.0": - version: 5.11.2 - resolution: "swagger-ui-react@npm:5.11.2" + version: 5.11.3 + resolution: "swagger-ui-react@npm:5.11.3" dependencies: "@babel/runtime-corejs3": ^7.23.8 "@braintree/sanitize-url": =7.0.0 @@ -42636,17 +43403,19 @@ __metadata: peerDependencies: react: ">=16.8.0 <19" react-dom: ">=16.8.0 <19" - checksum: 741780967d82cebb12754c1d085f182a2e19e8015aa80b04f9f8c985671a9a447ef7db7f1cf79a2c2a32078d6ababd3436262d81d9e531e5c74f74f1cb392b11 + checksum: 44b6693cb3285c83ef54ea3484a5b2d3285517d77b3a7ba9cd8dfb7a2b25a25242f99ae04c0c0a5786841d490e2a0e1c4021c4d69012caf6983096fc8ead70dd languageName: node linkType: hard "swc-loader@npm:^0.2.3": - version: 0.2.4 - resolution: "swc-loader@npm:0.2.4" + version: 0.2.6 + resolution: "swc-loader@npm:0.2.6" + dependencies: + "@swc/counter": ^0.1.3 peerDependencies: "@swc/core": ^1.2.147 webpack: ">=2" - checksum: f23bfe8900b35abdcb9910a2749f3c9d66edf5c660afc67fcf7983647eaec322e024d1edd3bd9fd48bd3191eea0616f67b5f8b5f923e3a648fa5b448683c3213 + checksum: fe90948c02a51bb8ffcff1ce3590e01dc12860b0bb7c9e22052b14fa846ed437781ae265614a5e14344bea22001108780f00a6e350e28c0b3499bc4cd11335fb languageName: node linkType: hard @@ -43064,6 +43833,22 @@ __metadata: languageName: node linkType: hard +"to-no-case@npm:^1.0.0": + version: 1.0.2 + resolution: "to-no-case@npm:1.0.2" + checksum: 1d85326eeb89f9f3a805bf5b395bcabb8556e882350164c1faa10846076732f4cec02ac95b016e7d6bb2f55e448ce5dd227c7699ec43e387c705a5b2b1ee2963 + languageName: node + linkType: hard + +"to-pascal-case@npm:^1.0.0": + version: 1.0.0 + resolution: "to-pascal-case@npm:1.0.0" + dependencies: + to-space-case: ^1.0.0 + checksum: 3956e209defc6df9de98c5db24a16fb2a1a11f711350ea3bdd9466240a04ab889fa09f1bd005e26fc31343c1cca341981daf2d80d4ec3f2d0706a557978f8b91 + languageName: node + linkType: hard + "to-readable-stream@npm:^1.0.0": version: 1.0.0 resolution: "to-readable-stream@npm:1.0.0" @@ -43080,6 +43865,15 @@ __metadata: languageName: node linkType: hard +"to-space-case@npm:^1.0.0": + version: 1.0.0 + resolution: "to-space-case@npm:1.0.0" + dependencies: + to-no-case: ^1.0.0 + checksum: 157cebe3e98e7cb465fe1978cf26450cc8ea8e637a01039854fac7ed60ad074e5e18b32333cc5f30df81b81ca374d63df768cd4c1fa0fe672605f965376227f4 + languageName: node + linkType: hard + "toggle-selection@npm:^1.0.6": version: 1.0.6 resolution: "toggle-selection@npm:1.0.6" @@ -43830,6 +44624,15 @@ __metadata: languageName: node linkType: hard +"unescape-js@npm:^1.0.5": + version: 1.1.4 + resolution: "unescape-js@npm:1.1.4" + dependencies: + string.fromcodepoint: ^0.2.1 + checksum: 97acf60a8f6c170f8a66b48b71f5c56bda728c2ff6b08c3443c5f21635bf5fa38a4265bcfcf46d17cb6ac9bbb8b913a34b1abc5cfe8db5d7cc5c8eecb1817472 + languageName: node + linkType: hard + "uni-global@npm:^1.0.0": version: 1.0.0 resolution: "uni-global@npm:1.0.0" @@ -44440,7 +45243,7 @@ __metadata: languageName: node linkType: hard -"validate-npm-package-license@npm:^3.0.1": +"validate-npm-package-license@npm:^3.0.1, validate-npm-package-license@npm:^3.0.4": version: 3.0.4 resolution: "validate-npm-package-license@npm:3.0.4" dependencies: @@ -44459,6 +45262,24 @@ __metadata: languageName: node linkType: hard +"validate-npm-package-name@npm:^4.0.0": + version: 4.0.0 + resolution: "validate-npm-package-name@npm:4.0.0" + dependencies: + builtins: ^5.0.0 + checksum: a32fd537bad17fcb59cfd58ae95a414d443866020d448ec3b22e8d40550cb585026582a57efbe1f132b882eea4da8ac38ee35f7be0dd72988a3cb55d305a20c1 + languageName: node + linkType: hard + +"validate-npm-package-name@npm:^5.0.0": + version: 5.0.0 + resolution: "validate-npm-package-name@npm:5.0.0" + dependencies: + builtins: ^5.0.0 + checksum: 5342a994986199b3c28e53a8452a14b2bb5085727691ea7aa0d284a6606b127c371e0925ae99b3f1ef7cc7d2c9de75f52eb61a3d1cc45e39bca1e3a9444cbb4e + languageName: node + linkType: hard + "validate.io-array@npm:^1.0.3": version: 1.0.6 resolution: "validate.io-array@npm:1.0.6" @@ -44547,6 +45368,15 @@ __metadata: languageName: node linkType: hard +"version-selector-type@npm:^3.0.0": + version: 3.0.0 + resolution: "version-selector-type@npm:3.0.0" + dependencies: + semver: ^7.3.2 + checksum: e97968054ad3bd2ff25a1c8e55273d34db5601e573f1ebca144b145d6a984925390358959859e77aca526082a64483e776e3f15178b0d8e2b3f1deb64932a7aa + languageName: node + linkType: hard + "vfile-message@npm:^3.0.0": version: 3.0.2 resolution: "vfile-message@npm:3.0.2" @@ -44699,6 +45529,13 @@ __metadata: languageName: node linkType: hard +"vlq@npm:^0.2.1": + version: 0.2.3 + resolution: "vlq@npm:0.2.3" + checksum: 2231d8caeb5b2c1a438677ab029e9a94aa6fb61ab05819c72691b792aea0456dab29576aff5ae29309ee45bad0a309e832dc45173119bca1393f3b87709d8f8d + languageName: node + linkType: hard + "vm-browserify@npm:^1.0.1": version: 1.1.2 resolution: "vm-browserify@npm:1.1.2" @@ -45879,7 +46716,16 @@ __metadata: languageName: node linkType: hard -"zod@npm:^3.22.4": +"zod-validation-error@npm:3.0.0": + version: 3.0.0 + resolution: "zod-validation-error@npm:3.0.0" + peerDependencies: + zod: ^3.18.0 + checksum: a1492268847aa69a160a50ad04dcce3d65454520c56a63680c1e6382f07a66a98463f5fbc0d58ee536651ec189fd0464d6ce657dddbdc37700cc8f7fc6e9c292 + languageName: node + linkType: hard + +"zod@npm:3.22.4, zod@npm:^3.22.4": version: 3.22.4 resolution: "zod@npm:3.22.4" checksum: 80bfd7f8039b24fddeb0718a2ec7c02aa9856e4838d6aa4864335a047b6b37a3273b191ef335bf0b2002e5c514ef261ffcda5a589fb084a48c336ffc4cdbab7f