diff --git a/.github/renovate.json b/.github/renovate.json index 83ec8dc6fb..3048d9445b 100644 --- a/.github/renovate.json +++ b/.github/renovate.json @@ -197,51 +197,7 @@ }, { "matchFileNames": [ - "plugins/*matomo*/**", - "plugins/analytics-module-matomo*/**" - ], - "additionalBranchPrefix": "devex ", - "addLabels": ["team/devex"], - "matchUpdateTypes": ["minor", "patch"], - "matchDepTypes": ["dependencies", "peerDependencies"], - "groupName": "Devex Dependencies (non-major)" - }, - { - "matchFileNames": [ - "plugins/*matomo*/**", - "plugins/analytics-module-matomo*/**" - ], - "additionalBranchPrefix": "devex ", - "addLabels": ["team/devex"], - "matchUpdateTypes": ["major"], - "matchDepTypes": ["dependencies", "peerDependencies"], - "groupName": "Devex Dependencies " - }, - { - "matchFileNames": [ - "plugins/tekton*/**" - ], - "additionalBranchPrefix": "rhtap ", - "addLabels": ["team/rhtap"], - "matchUpdateTypes": ["minor", "patch"], - "matchDepTypes": ["dependencies", "peerDependencies"], - "groupName": "RHTAP Dependencies (non-major) " - }, - { - "matchFileNames": [ - "plugins/tekton*/**" - ], - "additionalBranchPrefix": "rhtap ", - "addLabels": ["team/rhtap"], - "matchUpdateTypes": ["major"], - "matchDepTypes": ["dependencies", "peerDependencies"], - "groupName": "RHTAP Dependencies " - }, - { - "matchFileNames": [ - "plugins/analytics-provider-segment*/**", "plugins/audit-log*/**", - "plugins/quay-actions*/**", "plugins/scaffolder-annotator-action*/**", "plugins/shared-react*/**", "packages/**", @@ -255,9 +211,7 @@ }, { "matchFileNames": [ - "plugins/analytics-provider-segment*/**", "plugins/audit-log*/**", - "plugins/quay-actions*/**", "plugins/scaffolder-annotator-action*/**", "plugins/shared-react*/**", "packages/**", diff --git a/catalog-info.yaml b/catalog-info.yaml index a562e50cff..00f4185525 100644 --- a/catalog-info.yaml +++ b/catalog-info.yaml @@ -39,21 +39,15 @@ metadata: spec: targets: - ./plugins/aap-backend/catalog-info.yaml - - ./plugins/analytics-module-matomo/catalog-info.yaml - - ./plugins/analytics-provider-segment/catalog-info.yaml - ./plugins/audit-log-node/catalog-info.yaml - ./plugins/kiali/catalog-info.yaml - ./plugins/kiali-backend/catalog-info.yaml - ./plugins/kubernetes-actions/catalog-info.yaml - - ./plugins/matomo/catalog-info.yaml - - ./plugins/matomo-backend/catalog-info.yaml - ./plugins/orchestrator/catalog-info.yaml - ./plugins/orchestrator-backend/catalog-info.yaml - ./plugins/orchestrator-common/catalog-info.yaml - ./plugins/quay-actions/catalog-info.yaml - ./plugins/scaffolder-annotator-action/catalog-info.yaml - ./plugins/shared-react/catalog-info.yaml - - ./plugins/tekton/catalog-info.yaml - - ./plugins/tekton-common/catalog-info.yaml - ./plugins/web-terminal/catalog-info.yaml - ./packages/cli/catalog-info.yaml diff --git a/plugins/analytics-module-matomo/.eslintignore b/plugins/analytics-module-matomo/.eslintignore deleted file mode 100644 index 55289f4a23..0000000000 --- a/plugins/analytics-module-matomo/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist-dynamic -dist-scalprum diff --git a/plugins/analytics-module-matomo/.eslintrc.js b/plugins/analytics-module-matomo/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/analytics-module-matomo/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/analytics-module-matomo/.lintstagedrc.json b/plugins/analytics-module-matomo/.lintstagedrc.json deleted file mode 100644 index 14b2263def..0000000000 --- a/plugins/analytics-module-matomo/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*": "prettier --ignore-unknown --write", - "*.{js,jsx,ts,tsx,mjs,cjs}": "backstage-cli package lint --fix" -} diff --git a/plugins/analytics-module-matomo/.prettierignore b/plugins/analytics-module-matomo/.prettierignore deleted file mode 100644 index fc8357d99e..0000000000 --- a/plugins/analytics-module-matomo/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -dist-types -coverage -.vscode -CHANGELOG.md -generated -templates -*.hbs -renovate.json -dist-dynamic -dist-scalprum -playwright-report diff --git a/plugins/analytics-module-matomo/.prettierrc.js b/plugins/analytics-module-matomo/.prettierrc.js deleted file mode 100644 index 84cbac65b5..0000000000 --- a/plugins/analytics-module-matomo/.prettierrc.js +++ /dev/null @@ -1,20 +0,0 @@ -// @ts-check - -/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ -module.exports = { - ...require('@spotify/prettier-config'), - plugins: ['@ianvs/prettier-plugin-sort-imports'], - importOrder: [ - '^react(.*)$', - '', - '^@backstage/(.*)$', - '', - '', - '', - '^@janus-idp/(.*)$', - '', - '', - '', - '^[.]', - ], -}; diff --git a/plugins/analytics-module-matomo/.versionhistory.md b/plugins/analytics-module-matomo/.versionhistory.md deleted file mode 100644 index 2e864bc06d..0000000000 --- a/plugins/analytics-module-matomo/.versionhistory.md +++ /dev/null @@ -1 +0,0 @@ -- Bumped to 1.6.0 in main branch for next release 1.3.0 diff --git a/plugins/analytics-module-matomo/CHANGELOG.md b/plugins/analytics-module-matomo/CHANGELOG.md deleted file mode 100644 index 4bdf653f9b..0000000000 --- a/plugins/analytics-module-matomo/CHANGELOG.md +++ /dev/null @@ -1,253 +0,0 @@ -### Dependencies - -## 1.8.1 - -### Patch Changes - -- 0e6bfd3: feat: update Backstage to the latest version - - Update to Backstage 1.32.5 - -## 1.8.0 - -### Minor Changes - -- 8244f28: chore(deps): update to backstage 1.32 - -## 1.7.1 - -### Patch Changes - -- 7342e9b: chore: remove @janus-idp/cli dep and relink local packages - - This update removes `@janus-idp/cli` from all plugins, as it’s no longer necessary. Additionally, packages are now correctly linked with a specified version. - -## 1.7.0 - -### Minor Changes - -- d9551ae: feat(deps): update to backstage 1.31 - -### Patch Changes - -- d9551ae: Change local package references to a `*` -- d9551ae: pin the @janus-idp/cli package -- d9551ae: upgrade to yarn v3 - -* **@janus-idp/cli:** upgraded to 1.15.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.1 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.14.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.1 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.4.0...@janus-idp/backstage-plugin-analytics-module-matomo@1.5.0) (2024-07-25) - -### Features - -- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.0 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.3.1...@janus-idp/backstage-plugin-analytics-module-matomo@1.4.0) (2024-07-23) - -### Features - -- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5)) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.3.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.3.0...@janus-idp/backstage-plugin-analytics-module-matomo@1.3.1) (2024-06-19) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.1 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.11...@janus-idp/backstage-plugin-analytics-module-matomo@1.3.0) (2024-06-13) - -### Features - -- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.0 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.10...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.11) (2024-06-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.1 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.9...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.10) (2024-06-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.0 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.8...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.9) (2024-06-04) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.7...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.8) (2024-06-04) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.6...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.7) (2024-06-03) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.9.0 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.5...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.6) (2024-05-31) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.4...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.5) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.10 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.3...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.4) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.9 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.2...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.3) (2024-05-28) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.8 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.1...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.2) (2024-05-16) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.2.0...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.1) (2024-05-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.7 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.13...@janus-idp/backstage-plugin-analytics-module-matomo@1.2.0) (2024-05-14) - -### Features - -- **deps:** use RHDH themes in the backstage app and dev pages ([#1480](https://github.com/janus-idp/backstage-plugins/issues/1480)) ([8263bf0](https://github.com/janus-idp/backstage-plugins/commit/8263bf099736cbb0d0f2316082d338ba81fa6927)) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.12...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.13) (2024-05-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.6 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.11...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.12) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.5 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.10...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.11) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.4 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.9...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.10) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.3 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.8...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.9) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.2 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.7...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.8) (2024-04-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.1 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.6...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.7) (2024-04-15) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.0 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.5...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.6) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.10 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.4...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.5) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.9 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.3...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.4) (2024-04-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.8 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.2...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.3) (2024-04-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.7 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.1...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.2) (2024-03-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.6 - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.1.0...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.1) (2024-03-15) - -### Bug Fixes - -- **matomo-analytics:** event trigger on load ([#1341](https://github.com/janus-idp/backstage-plugins/issues/1341)) ([3bc11f3](https://github.com/janus-idp/backstage-plugins/commit/3bc11f318d012d7a2aa43b4928891c138ee2a5d9)) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.0.4...@janus-idp/backstage-plugin-analytics-module-matomo@1.1.0) (2024-03-15) - -### Features - -- **matomo-analytics:** export apifactory for dynamic plugin ([#1329](https://github.com/janus-idp/backstage-plugins/issues/1329)) ([c687617](https://github.com/janus-idp/backstage-plugins/commit/c6876177f062878801e798ea0193126a28f9fa08)) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.0.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.0.3...@janus-idp/backstage-plugin-analytics-module-matomo@1.0.4) (2024-02-22) - -### Documentation - -- **matomo-plugin:** fix config example and replace GA with Matomo ([#991](https://github.com/janus-idp/backstage-plugins/issues/991)) ([55d6048](https://github.com/janus-idp/backstage-plugins/commit/55d6048c3490dfc6db9a3ebc4103ed505eeaaaf4)) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.0.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.0.2...@janus-idp/backstage-plugin-analytics-module-matomo@1.0.3) (2024-02-21) - -## @janus-idp/backstage-plugin-analytics-module-matomo 1.0.0 (2023-10-30) - -### Features - -- **matomo:** analytics module plugin for matomo ([#837](https://github.com/janus-idp/backstage-plugins/issues/837)) ([8c497fc](https://github.com/janus-idp/backstage-plugins/commit/8c497fcd588c492f4d21bb686bcdd796691f0c90)) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.0.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.0.1...@janus-idp/backstage-plugin-analytics-module-matomo@1.0.2) (2023-10-19) - -## @janus-idp/backstage-plugin-analytics-module-matomo [1.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-module-matomo@1.0.0...@janus-idp/backstage-plugin-analytics-module-matomo@1.0.1) (2023-10-19) - -## @janus-idp/backstage-plugin-analytics-module-matomo 1.0.0 (2023-10-17) - -### Features - -- **matomo:** analytics module plugin for matomo ([#837](https://github.com/janus-idp/backstage-plugins/issues/837)) ([8c497fc](https://github.com/janus-idp/backstage-plugins/commit/8c497fcd588c492f4d21bb686bcdd796691f0c90)) diff --git a/plugins/analytics-module-matomo/README.md b/plugins/analytics-module-matomo/README.md index eee886b3f5..7967b0b138 100644 --- a/plugins/analytics-module-matomo/README.md +++ b/plugins/analytics-module-matomo/README.md @@ -1,64 +1,3 @@ -# Analytics Module: Matomo Analytics +# Deprecated -This plugin provides an opinionated implementation of the Backstage Analytics -API for Matomo Analytics. Once installed and configured, analytics events will -be sent to Matomo as your users navigate and use your Backstage instance. - -This module is made to work with backstage's built-in analytics plugin. The usage guide to start tracking analytics for your plugins can be found here: https://backstage.io/docs/plugins/analytics/ - -## Installation - -1. Install the plugin package in your Backstage app: - -```sh -# From your Backstage root directory -yarn add --cwd packages/app @janus-idp/backstage-plugin-analytics-module-matomo -``` - -2. Wire up the API implementation to your App: - -```tsx -// packages/app/src/apis.ts -import { - analyticsApiRef, - configApiRef, - identityApiRef, -} from '@backstage/core-plugin-api'; - -import { MatomoAnalytics } from '@janus-idp/backstage-plugin-analytics-module-matomo'; - -export const apis: AnyApiFactory[] = [ - // Instantiate and register the Matomo Analytics API Implementation. - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef }, - factory: ({ configApi }) => MatomoAnalytics.fromConfig(configApi), - }), -]; -``` - -3. Configure the plugin in your `app-config.yaml`: - -The following is the minimum configuration required to start sending analytics -events to Matomo. All that's needed is your Matomo Host and Site Id: - -```yaml -# app-config.yaml -app: - analytics: - matomo: - host: ${ANALYTICS_MATOMO_INSTANCE_URL} - siteId: ${ANALYTICS_MATOMO_SITE_ID} -``` - -4. Update CSP in your `app-config.yaml`:(optional) - -The following is the minimal content security policy required to load scripts from your Matomo Instance. - -```yaml -backend: - csp: - connect-src: ["'self'", 'http:', 'https:'] - # Add these two lines below - script-src: ["'self'", "'unsafe-eval'", ''] -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-analytics-module-matomo` instead. \ No newline at end of file diff --git a/plugins/analytics-module-matomo/app-config.janus-idp.yaml b/plugins/analytics-module-matomo/app-config.janus-idp.yaml deleted file mode 100644 index 7e9d0c5569..0000000000 --- a/plugins/analytics-module-matomo/app-config.janus-idp.yaml +++ /dev/null @@ -1,5 +0,0 @@ -app: - analytics: - matomo: - host: ${ANALYTICS_MATOMO_INSTANCE_URL} - siteId: ${ANALYTICS_MATOMO_SITE_ID} diff --git a/plugins/analytics-module-matomo/catalog-info.yaml b/plugins/analytics-module-matomo/catalog-info.yaml deleted file mode 100644 index 47264d0862..0000000000 --- a/plugins/analytics-module-matomo/catalog-info.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-analytics-matomo - title: 'Analytics Module: Matomo' - description: 'Analytics Module: Matomo Analytics' - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-module-matomo - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/analytics-module-matomo/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/maintainers-plugins - sonarqube.org/project-key: janus-idp_backstage-plugins - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-module-matomo - title: GitHub Source - icon: source - type: source -spec: - type: backstage-plugin - lifecycle: production - owner: rhdh-team - system: rhdh - subcomponentOf: janus-idp-backstage-plugins ---- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-analytics-module-matomo - title: '@janus-idp/backstage-plugin-analytics-module-matomo' - description: 'Analytics Module: Matomo Analytics' - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-module-matomo - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-module-matomo/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/analytics-module-matomo/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/maintainers-plugins - sonarqube.org/project-key: janus-idp_backstage-plugins - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-module-matomo - title: GitHub Source - icon: source - type: source -spec: - type: backstage-frontend-plugin-module - lifecycle: production - owner: rhdh-team - system: rhdh - subcomponentOf: janus-idp-analytics-matomo diff --git a/plugins/analytics-module-matomo/config.d.ts b/plugins/analytics-module-matomo/config.d.ts deleted file mode 100644 index 4da13ea752..0000000000 --- a/plugins/analytics-module-matomo/config.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -export interface Config { - app?: { - analytics: { - matomo: { - /** - * Matomo host URL - * @visibility frontend - */ - host: string; - - /** - * Matomo siteId for the Backstage Website - * @visibility frontend - */ - siteId: string; - }; - }; - }; -} diff --git a/plugins/analytics-module-matomo/dev/Playground.tsx b/plugins/analytics-module-matomo/dev/Playground.tsx deleted file mode 100644 index 9bd1c00750..0000000000 --- a/plugins/analytics-module-matomo/dev/Playground.tsx +++ /dev/null @@ -1,9 +0,0 @@ -import React from 'react'; - -export const Playground = () => { - return ( - <> - Click Here - - ); -}; diff --git a/plugins/analytics-module-matomo/dev/index.tsx b/plugins/analytics-module-matomo/dev/index.tsx deleted file mode 100644 index 35413c53f6..0000000000 --- a/plugins/analytics-module-matomo/dev/index.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import React from 'react'; - -import { createDevApp } from '@backstage/dev-utils'; - -import { getAllThemes } from '@redhat-developer/red-hat-developer-hub-theme'; - -import { analyticsModuleMatomoPlugin } from '../src'; -import { Playground } from './Playground'; - -createDevApp() - .registerPlugin(analyticsModuleMatomoPlugin) - .addThemes(getAllThemes()) - .addPage({ - title: 'Matomo Analytics Playground', - path: '/analytics-module-matomo', - element: , - }) - .render(); diff --git a/plugins/analytics-module-matomo/package.json b/plugins/analytics-module-matomo/package.json deleted file mode 100644 index 7b322e595b..0000000000 --- a/plugins/analytics-module-matomo/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "@janus-idp/backstage-plugin-analytics-module-matomo", - "version": "1.8.1", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public", - "main": "dist/index.esm.js", - "types": "dist/index.d.ts" - }, - "backstage": { - "role": "frontend-plugin", - "supported-versions": "1.32.5", - "pluginId": "analytics-module-matomo", - "pluginPackage": "@janus-idp/backstage-plugin-analytics-module-matomo", - "pluginPackages": [ - "@janus-idp/backstage-plugin-analytics-module-matomo" - ] - }, - "sideEffects": false, - "scripts": { - "start": "backstage-cli package start", - "build": "backstage-cli package build", - "tsc": "tsc", - "prettier:check": "prettier --ignore-unknown --check .", - "prettier:fix": "prettier --ignore-unknown --write .", - "lint:check": "backstage-cli package lint", - "lint:fix": "backstage-cli package lint --fix", - "test": "backstage-cli package test --passWithNoTests --coverage", - "clean": "backstage-cli package clean", - "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack" - }, - "dependencies": { - "@backstage/core-plugin-api": "^1.10.0" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0" - }, - "devDependencies": { - "@backstage/cli": "0.28.2", - "@backstage/core-app-api": "1.15.1", - "@backstage/dev-utils": "1.1.2", - "@backstage/test-utils": "1.7.0", - "@redhat-developer/red-hat-developer-hub-theme": "0.4.0", - "@testing-library/jest-dom": "6.4.8", - "@testing-library/react": "14.3.1", - "@testing-library/user-event": "14.5.2", - "@types/node": "18.19.33", - "cross-fetch": "4.0.0", - "msw": "1.3.3", - "prettier": "3.3.3" - }, - "files": [ - "dist", - "dist-scalprum", - "config.d.ts", - "app-config.janus-idp.yaml" - ], - "configSchema": "config.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/janus-idp/backstage-plugins", - "directory": "plugins/analytics-module-matomo" - }, - "maintainers": [ - "@janus-idp/maintainers-plugins", - "@janus-idp/devex-uxe" - ], - "author": "The Backstage Community", - "homepage": "https://red.ht/rhdh", - "bugs": "https://github.com/janus-idp/backstage-plugins/issues", - "keywords": [ - "support:tech-preview", - "lifecycle:active" - ] -} diff --git a/plugins/analytics-module-matomo/src/api/Matomo.ts b/plugins/analytics-module-matomo/src/api/Matomo.ts deleted file mode 100644 index 0195a93057..0000000000 --- a/plugins/analytics-module-matomo/src/api/Matomo.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { AnalyticsEvent, ConfigApi } from '@backstage/core-plugin-api'; - -import { loadMatomo } from './loadMatomo'; - -declare const window: Window & - typeof globalThis & { - _paq: any[]; - }; - -type AnalyticsAPI = {}; - -type Options = { - configApi: ConfigApi; -}; - -export class MatomoAnalytics implements AnalyticsAPI { - private readonly configApi: ConfigApi; - - private constructor(options: Options) { - this.configApi = options.configApi; - const matomoUrl = this.configApi.getString('app.analytics.matomo.host'); - const matomoSiteId = this.configApi.getNumber( - 'app.analytics.matomo.siteId', - ); - loadMatomo(matomoUrl, matomoSiteId); - } - - static fromConfig(config: ConfigApi) { - return new MatomoAnalytics({ configApi: config }); - } - - captureEvent(event: AnalyticsEvent) { - const { context, action, subject, value } = event; - // REF: https://github.com/backstage/backstage/blob/master/plugins/analytics-module-ga/src/apis/implementations/AnalyticsApi/GoogleAnalytics.ts#L160 - // REF: https://matomo.org/faq/reports/implement-event-tracking-with-matomo/ - window._paq.push([ - 'trackEvent', - context.extension || 'App', - action, - subject, - value, - ]); - } -} diff --git a/plugins/analytics-module-matomo/src/api/index.ts b/plugins/analytics-module-matomo/src/api/index.ts deleted file mode 100644 index 09c0a7c203..0000000000 --- a/plugins/analytics-module-matomo/src/api/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { - analyticsApiRef, - configApiRef, - createApiFactory, -} from '@backstage/core-plugin-api'; - -import { MatomoAnalytics } from './Matomo'; - -export { MatomoAnalytics } from './Matomo'; - -export const MatomoAnalyticsApi = createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef }, - factory: ({ configApi }) => MatomoAnalytics.fromConfig(configApi), -}); diff --git a/plugins/analytics-module-matomo/src/api/loadMatomo.ts b/plugins/analytics-module-matomo/src/api/loadMatomo.ts deleted file mode 100644 index d45192c99c..0000000000 --- a/plugins/analytics-module-matomo/src/api/loadMatomo.ts +++ /dev/null @@ -1,23 +0,0 @@ -let isInitialized = false; -export const loadMatomo = (matomoUrl: string, siteId: number) => { - /* Only initialize matomo tracker if it's not loaded */ - if (isInitialized) return; - - const _paq = ((window as any)._paq = (window as any)._paq || []); - /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ - _paq.push(['trackPageView']); - _paq.push(['enableLinkTracking']); - (() => { - const u = `//${matomoUrl}/`; - _paq.push(['setTrackerUrl', `${u}matomo.php`]); - _paq.push(['setSiteId', siteId]); - const d = document; - const g = d.createElement('script'); - const s = d.getElementsByTagName('script')[0]; - g.async = true; - g.src = `${u}matomo.js`; - s.parentNode?.insertBefore(g, s); - })(); - - isInitialized = true; -}; diff --git a/plugins/analytics-module-matomo/src/index.ts b/plugins/analytics-module-matomo/src/index.ts deleted file mode 100644 index 263681420c..0000000000 --- a/plugins/analytics-module-matomo/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { analyticsModuleMatomoPlugin } from './plugin'; -export * from './api'; diff --git a/plugins/analytics-module-matomo/src/plugin.test.ts b/plugins/analytics-module-matomo/src/plugin.test.ts deleted file mode 100644 index de2bffa9bd..0000000000 --- a/plugins/analytics-module-matomo/src/plugin.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { analyticsModuleMatomoPlugin } from './plugin'; - -describe('matomo', () => { - it('should export plugin', () => { - expect(analyticsModuleMatomoPlugin).toBeDefined(); - }); -}); diff --git a/plugins/analytics-module-matomo/src/plugin.ts b/plugins/analytics-module-matomo/src/plugin.ts deleted file mode 100644 index 2e00ba0d43..0000000000 --- a/plugins/analytics-module-matomo/src/plugin.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createPlugin } from '@backstage/core-plugin-api'; - -export const analyticsModuleMatomoPlugin = createPlugin({ - id: 'analytics-module-matomo', -}); diff --git a/plugins/analytics-module-matomo/src/routes.ts b/plugins/analytics-module-matomo/src/routes.ts deleted file mode 100644 index ed98de1fc3..0000000000 --- a/plugins/analytics-module-matomo/src/routes.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createRouteRef } from '@backstage/core-plugin-api'; - -export const rootRouteRef = createRouteRef({ - id: 'analytics-module-matomo', -}); diff --git a/plugins/analytics-module-matomo/src/setupTests.ts b/plugins/analytics-module-matomo/src/setupTests.ts deleted file mode 100644 index 48c09b5346..0000000000 --- a/plugins/analytics-module-matomo/src/setupTests.ts +++ /dev/null @@ -1,2 +0,0 @@ -import '@testing-library/jest-dom'; -import 'cross-fetch/polyfill'; diff --git a/plugins/analytics-module-matomo/tsconfig.json b/plugins/analytics-module-matomo/tsconfig.json deleted file mode 100644 index 0ffcd61ad4..0000000000 --- a/plugins/analytics-module-matomo/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": ["src", "dev"], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "../../dist-types/plugins/analytics-module-matomo", - "rootDir": "." - } -} diff --git a/plugins/analytics-module-matomo/turbo.json b/plugins/analytics-module-matomo/turbo.json deleted file mode 100644 index f662d2b011..0000000000 --- a/plugins/analytics-module-matomo/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "tsc": { - "outputs": ["../../dist-types/plugins/analytics-module-matomo/**"] - } - } -} diff --git a/plugins/analytics-provider-segment/.eslintignore b/plugins/analytics-provider-segment/.eslintignore deleted file mode 100644 index 55289f4a23..0000000000 --- a/plugins/analytics-provider-segment/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist-dynamic -dist-scalprum diff --git a/plugins/analytics-provider-segment/.eslintrc.js b/plugins/analytics-provider-segment/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/analytics-provider-segment/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/analytics-provider-segment/.lintstagedrc.json b/plugins/analytics-provider-segment/.lintstagedrc.json deleted file mode 100644 index 14b2263def..0000000000 --- a/plugins/analytics-provider-segment/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*": "prettier --ignore-unknown --write", - "*.{js,jsx,ts,tsx,mjs,cjs}": "backstage-cli package lint --fix" -} diff --git a/plugins/analytics-provider-segment/.prettierignore b/plugins/analytics-provider-segment/.prettierignore deleted file mode 100644 index fc8357d99e..0000000000 --- a/plugins/analytics-provider-segment/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -dist-types -coverage -.vscode -CHANGELOG.md -generated -templates -*.hbs -renovate.json -dist-dynamic -dist-scalprum -playwright-report diff --git a/plugins/analytics-provider-segment/.prettierrc.js b/plugins/analytics-provider-segment/.prettierrc.js deleted file mode 100644 index 84cbac65b5..0000000000 --- a/plugins/analytics-provider-segment/.prettierrc.js +++ /dev/null @@ -1,20 +0,0 @@ -// @ts-check - -/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ -module.exports = { - ...require('@spotify/prettier-config'), - plugins: ['@ianvs/prettier-plugin-sort-imports'], - importOrder: [ - '^react(.*)$', - '', - '^@backstage/(.*)$', - '', - '', - '', - '^@janus-idp/(.*)$', - '', - '', - '', - '^[.]', - ], -}; diff --git a/plugins/analytics-provider-segment/.versionhistory.md b/plugins/analytics-provider-segment/.versionhistory.md deleted file mode 100644 index 237de4f3c7..0000000000 --- a/plugins/analytics-provider-segment/.versionhistory.md +++ /dev/null @@ -1,2 +0,0 @@ -- Bumped to 1.3.0 in main branch for next release 1.2.0 -- Bumped to 1.8.0 in main branch for next release 1.3.0 diff --git a/plugins/analytics-provider-segment/CHANGELOG.md b/plugins/analytics-provider-segment/CHANGELOG.md deleted file mode 100644 index 9403375e59..0000000000 --- a/plugins/analytics-provider-segment/CHANGELOG.md +++ /dev/null @@ -1,358 +0,0 @@ -### Dependencies - -## 1.10.1 - -### Patch Changes - -- 0e6bfd3: feat: update Backstage to the latest version - - Update to Backstage 1.32.5 - -## 1.10.0 - -### Minor Changes - -- 8244f28: chore(deps): update to backstage 1.32 - -## 1.9.1 - -### Patch Changes - -- 7342e9b: chore: remove @janus-idp/cli dep and relink local packages - - This update removes `@janus-idp/cli` from all plugins, as it’s no longer necessary. Additionally, packages are now correctly linked with a specified version. - -## 1.9.0 - -### Minor Changes - -- d9551ae: feat(deps): update to backstage 1.31 - -### Patch Changes - -- d9551ae: Change local package references to a `*` -- d9551ae: pin the @janus-idp/cli package -- d9551ae: upgrade to yarn v3 - -* **@janus-idp/cli:** upgraded to 1.15.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.1 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.14.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.1 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.7.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.6.0...@janus-idp/backstage-plugin-analytics-provider-segment@1.7.0) (2024-07-25) - -### Features - -- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.6.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.5.1...@janus-idp/backstage-plugin-analytics-provider-segment@1.6.0) (2024-07-23) - -### Features - -- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.5.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.5.0...@janus-idp/backstage-plugin-analytics-provider-segment@1.5.1) (2024-06-19) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.1 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.10...@janus-idp/backstage-plugin-analytics-provider-segment@1.5.0) (2024-06-13) - -### Features - -- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.9...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.10) (2024-06-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.1 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.8...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.9) (2024-06-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.7...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.8) (2024-06-04) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.6...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.7) (2024-06-03) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.9.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.5...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.6) (2024-05-31) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.4...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.5) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.10 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.3...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.4) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.9 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.2...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.3) (2024-05-28) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.8 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.1...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.2) (2024-05-16) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.4.0...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.1) (2024-05-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.7 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.3.6...@janus-idp/backstage-plugin-analytics-provider-segment@1.4.0) (2024-05-14) - -### Features - -- **deps:** use RHDH themes in the backstage app and dev pages ([#1480](https://github.com/janus-idp/backstage-plugins/issues/1480)) ([8263bf0](https://github.com/janus-idp/backstage-plugins/commit/8263bf099736cbb0d0f2316082d338ba81fa6927)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.3.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.3.5...@janus-idp/backstage-plugin-analytics-provider-segment@1.3.6) (2024-05-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.6 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.3.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.3.4...@janus-idp/backstage-plugin-analytics-provider-segment@1.3.5) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.5 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.3.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.3.3...@janus-idp/backstage-plugin-analytics-provider-segment@1.3.4) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.4 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.3.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.3.2...@janus-idp/backstage-plugin-analytics-provider-segment@1.3.3) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.3 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.3.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.3.1...@janus-idp/backstage-plugin-analytics-provider-segment@1.3.2) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.2 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.3.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.3.0...@janus-idp/backstage-plugin-analytics-provider-segment@1.3.1) (2024-04-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.1 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.16...@janus-idp/backstage-plugin-analytics-provider-segment@1.3.0) (2024-04-15) - -### Features - -- checkPluginVersion.sh bump plugins for 1.2.0 release ([#1511](https://github.com/janus-idp/backstage-plugins/issues/1511)) ([73c6588](https://github.com/janus-idp/backstage-plugins/commit/73c6588adb7e8c20907b06f2a8ef248cfd4332e4)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.16](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.15...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.16) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.10 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.15](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.14...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.15) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.9 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.14](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.13...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.14) (2024-04-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.8 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.12...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.13) (2024-04-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.7 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.11...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.12) (2024-03-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.6 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.10...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.11) (2024-03-04) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.5 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.9...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.10) (2024-02-27) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.4 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.8...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.9) (2024-02-26) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.3 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.7...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.8) (2024-02-21) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.2 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.6...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.7) (2024-02-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.1 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.5...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.6) (2024-01-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.4...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.5) (2024-01-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.6.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.3...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.4) (2024-01-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.5.0 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.2...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.3) (2023-12-07) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.7 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.1...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.2) (2023-11-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.6 - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.2.0...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.1) (2023-11-23) - -### Bug Fixes - -- add config partials for dynamic frontend plugins ([#965](https://github.com/janus-idp/backstage-plugins/issues/965)) ([b01e55e](https://github.com/janus-idp/backstage-plugins/commit/b01e55e877278afc5de8d28a4c687a6989566bdc)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.1.4...@janus-idp/backstage-plugin-analytics-provider-segment@1.2.0) (2023-11-22) - -### Features - -- **segment:** expose plugin also as a dynamic ([#955](https://github.com/janus-idp/backstage-plugins/issues/955)) ([7b80a40](https://github.com/janus-idp/backstage-plugins/commit/7b80a4088b91c2d38af64fe9338c0815225dd1d4)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.1.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.1.3...@janus-idp/backstage-plugin-analytics-provider-segment@1.1.4) (2023-11-22) - -### Bug Fixes - -- segment config schema visibility typo ([#964](https://github.com/janus-idp/backstage-plugins/issues/964)) ([836c58c](https://github.com/janus-idp/backstage-plugins/commit/836c58c9be4bbac1033979151b2be0ea6de4bf37)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.1.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.1.2...@janus-idp/backstage-plugin-analytics-provider-segment@1.1.3) (2023-10-19) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.1.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.1.1...@janus-idp/backstage-plugin-analytics-provider-segment@1.1.2) (2023-09-22) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.1.0...@janus-idp/backstage-plugin-analytics-provider-segment@1.1.1) (2023-08-23) - -### Bug Fixes - -- **config types:** inline types in config.d.ts ([#664](https://github.com/janus-idp/backstage-plugins/issues/664)) ([ae1aea1](https://github.com/janus-idp/backstage-plugins/commit/ae1aea1f4890c0034d1c2602223d59463c61206b)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.7...@janus-idp/backstage-plugin-analytics-provider-segment@1.1.0) (2023-08-14) - -### Features - -- **ts:** transpile each plugin separately ([#634](https://github.com/janus-idp/backstage-plugins/issues/634)) ([b94c4dc](https://github.com/janus-idp/backstage-plugins/commit/b94c4dc50ada328e5ce1bed5fb7c76f64607e1ee)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.0.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.6...@janus-idp/backstage-plugin-analytics-provider-segment@1.0.7) (2023-07-25) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.0.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.5...@janus-idp/backstage-plugin-analytics-provider-segment@1.0.6) (2023-06-14) - -### Other changes - -- reorder imports via prettier ([#419](https://github.com/janus-idp/backstage-plugins/issues/419)) ([17f1e6a](https://github.com/janus-idp/backstage-plugins/commit/17f1e6a689bd793a619ec5e42e5cdda0998f78a5)) - -### Documentation - -- update plugin README formatting ([#396](https://github.com/janus-idp/backstage-plugins/issues/396)) ([9b39056](https://github.com/janus-idp/backstage-plugins/commit/9b39056f6c66e9a6a0a5d0c4059420dff66db263)), closes [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369) [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.0.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.4...@janus-idp/backstage-plugin-analytics-provider-segment@1.0.5) (2023-05-30) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.0.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.3...@janus-idp/backstage-plugin-analytics-provider-segment@1.0.4) (2023-05-30) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.0.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.2...@janus-idp/backstage-plugin-analytics-provider-segment@1.0.3) (2023-05-18) - -### Documentation - -- update plugin READMEs ([#373](https://github.com/janus-idp/backstage-plugins/issues/373)) ([478560e](https://github.com/janus-idp/backstage-plugins/commit/478560e38cceaa40d976bccf4785956ed58b5221)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.0.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.1...@janus-idp/backstage-plugin-analytics-provider-segment@1.0.2) (2023-05-17) - -### Bug Fixes - -- **deps:** update all non-major dependencies ([#358](https://github.com/janus-idp/backstage-plugins/issues/358)) ([086a9ed](https://github.com/janus-idp/backstage-plugins/commit/086a9ed839f3a6dd1460f0f87b71453a7ed62ea3)) - -## @janus-idp/backstage-plugin-analytics-provider-segment [1.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-analytics-provider-segment@1.0.0...@janus-idp/backstage-plugin-analytics-provider-segment@1.0.1) (2023-05-16) - -### Bug Fixes - -- **segment:** fixes the config for optional parameters ([#363](https://github.com/janus-idp/backstage-plugins/issues/363)) ([4857f5d](https://github.com/janus-idp/backstage-plugins/commit/4857f5d6f0b028e32e492f07e5d033381b467386)) - -### Documentation - -- fix segment README ([#364](https://github.com/janus-idp/backstage-plugins/issues/364)) ([9f6ed93](https://github.com/janus-idp/backstage-plugins/commit/9f6ed9303297977864f0a3624552c454a1af64dd)) -- update Segment README.md ([#362](https://github.com/janus-idp/backstage-plugins/issues/362)) ([a75d30a](https://github.com/janus-idp/backstage-plugins/commit/a75d30a376a03b44f17cb7b410c30b3817581c43)) - -## @janus-idp/backstage-plugin-analytics-provider-segment 1.0.0 (2023-05-15) - -### Features - -- **segment:** analytics plugin for Segment ([#321](https://github.com/janus-idp/backstage-plugins/issues/321)) ([a60e047](https://github.com/janus-idp/backstage-plugins/commit/a60e04760bf45efd1005edb9ddb6d77c30911d30)) diff --git a/plugins/analytics-provider-segment/CONTRIBUTING.md b/plugins/analytics-provider-segment/CONTRIBUTING.md deleted file mode 100644 index f1ff31dc7a..0000000000 --- a/plugins/analytics-provider-segment/CONTRIBUTING.md +++ /dev/null @@ -1,17 +0,0 @@ -# Setting up the development environment for Analytics Provider Segment plugin - -If you would like to contribute improvements to this plugin, the easiest way to -make and test changes is to do the following: - -> 1. Clone the main Backstage monorepo `git clone git@github.com:janus-idp/backstage-plugins.git` -> 2. Install all dependencies `yarn install` -> 3. If one does not exist, create an `app-config.local.yaml` file in the root of -> the monorepo and add config for this plugin (see below) -> 4. Enter this plugin's working directory: `cd plugins/analytics-provider-segment` -> 5. Start the plugin in isolation: `yarn start` -> 6. Navigate to the playground page at `http://localhost:3000/segment` -> 7. Open the web console to see events fire when you navigate or when you -> interact with instrumented components. - -Code for the isolated version of the plugin can be found inside the `./dev` -directory. Changes to the plugin are hot-reloaded. diff --git a/plugins/analytics-provider-segment/README.md b/plugins/analytics-provider-segment/README.md index 21fb65e1cc..1b6b8e5491 100644 --- a/plugins/analytics-provider-segment/README.md +++ b/plugins/analytics-provider-segment/README.md @@ -1,76 +1,3 @@ -# Analytics Module: Segment +# Deprecated -This plugin provides an implementation of the Backstage Analytics API for -Segment. Once installed and configured, analytics events will be sent to -Segment as your users navigate and use your Backstage instance. - -This plugin contains no other functionality. - -## Installation - -1. Install the plugin package in your Backstage app: - - ```console - yarn workspace app add @janus-idp/backstage-plugin-analytics-provider-segment - ``` - -## Configuration - -1. Wire up the API implementation to your App in `packages/app/src/apis.ts`: - - ```tsx title="packages/app/src/apis.ts" - /* highlight-add-start */ - import { - analyticsApiRef, - configApiRef, - identityApiRef, - } from '@backstage/core-plugin-api'; - - import { SegmentAnalytics } from '@janus-idp/backstage-plugin-analytics-provider-segment'; - - /* highlight-add-end */ - - export const apis: AnyApiFactory[] = [ - // Other APIs... - // Instantiate and register the GA Analytics API Implementation. - /* highlight-add-start */ - createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - SegmentAnalytics.fromConfig(configApi, identityApi), - }), - /* highlight-add-end */ - ]; - ``` - -2. Configure the plugin in your `app-config.yaml`: - -The following is the minimum configuration required to start sending analytics -events to Segment. All that's needed is your Segment Write Key - -```yaml title="app-config.yaml" -app: - analytics: - segment: - # highlight-start - writeKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx - maskIP: true # prevents IP addresses from being sent if true - # highlight-end -``` - -## Debugging and Testing - -In pre-production environments, you may wish to set additional configurations -to turn off reporting to Analytics. You can do so like this: - -```yaml title="app-config.yaml" -app: - analytics: - segment: - # highlight-next-line - testMode: true # prevents data from being sent if true -``` - -You might commonly set the above in an `app-config.local.yaml` file, which is -normally `gitignore`'d but loaded and merged in when Backstage is bootstrapped. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-analytics-provider-segment` instead. \ No newline at end of file diff --git a/plugins/analytics-provider-segment/api-report.md b/plugins/analytics-provider-segment/api-report.md deleted file mode 100644 index 05eea30ab9..0000000000 --- a/plugins/analytics-provider-segment/api-report.md +++ /dev/null @@ -1,22 +0,0 @@ -## API Report File for "@internal/analytics-module-segment" - -> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). - -```ts -import { AnalyticsApi } from '@backstage/core-plugin-api'; -import { AnalyticsEvent } from '@backstage/core-plugin-api'; -import { BackstagePlugin } from '@backstage/core-plugin-api'; -import { Config } from '@backstage/config'; - -// @public @deprecated (undocumented) -export const analyticsModuleSegment: BackstagePlugin<{}, {}, {}>; - -// @public -export class SegmentAnalytics implements AnalyticsApi { - // (undocumented) - captureEvent(event: AnalyticsEvent): Promise; - static fromConfig(config: Config): SegmentAnalytics; -} - -// (No @packageDocumentation comment for this package) -``` diff --git a/plugins/analytics-provider-segment/app-config.janus-idp.yaml b/plugins/analytics-provider-segment/app-config.janus-idp.yaml deleted file mode 100644 index 127c2a448d..0000000000 --- a/plugins/analytics-provider-segment/app-config.janus-idp.yaml +++ /dev/null @@ -1,6 +0,0 @@ -app: - analytics: - segment: - writeKey: ${SEGMENT_WRITE_KEY} - maskIP: true # prevents IP addresses from being sent if true - testMode: false # prevents data from being sent if true diff --git a/plugins/analytics-provider-segment/catalog-info.yaml b/plugins/analytics-provider-segment/catalog-info.yaml deleted file mode 100644 index 0cd70064d3..0000000000 --- a/plugins/analytics-provider-segment/catalog-info.yaml +++ /dev/null @@ -1,51 +0,0 @@ -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-analytics-segment - title: 'Analytics Module: Segment' - description: 'Analytics Module: Segment' - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-provider-segment - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-provider-segment/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/analytics-provider-segment/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/maintainers-plugins - sonarqube.org/project-key: janus-idp_backstage-plugins - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-provider-segment - title: GitHub Source - icon: source - type: source -spec: - type: backstage-plugin - lifecycle: production - owner: rhdh-team - system: rhdh - subcomponentOf: janus-idp-backstage-plugins ---- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-analytics-provider-segment - title: '@janus-idp/backstage-plugin-analytics-provider-segment' - description: 'Analytics Module: Segment' - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-provider-segment - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/analytics-provider-segment/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/analytics-provider-segment/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/maintainers-plugins - sonarqube.org/project-key: janus-idp_backstage-plugins - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/analytics-provider-segment - title: GitHub Source - icon: source - type: source -spec: - type: backstage-frontend-plugin-module - lifecycle: production - owner: rhdh-team - system: rhdh - subcomponentOf: janus-idp-analytics-segment diff --git a/plugins/analytics-provider-segment/config.d.ts b/plugins/analytics-provider-segment/config.d.ts deleted file mode 100644 index 2c0bb3998c..0000000000 --- a/plugins/analytics-provider-segment/config.d.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export interface Config { - app: { - // TODO: Only marked as optional because backstage-cli config:check in the - // context of the monorepo is too strict. Ideally, this would be marked as - // required. - analytics?: { - segment: - | { - /** - * The Segment write key. - * @visibility frontend - */ - writeKey?: string; - - /** - * Prevents events from actually being sent when set to true. Defaults - * to false. - * @visibility frontend - */ - testMode: true; - - /** - * Prevents IP address to be sent as when set to true. Defaults to false - * @visibility frontend - */ - maskIP?: boolean; - } - | { - /** - * The Segment write key. - * @visibility frontend - */ - writeKey: string; - - /** - * Prevents events from actually being sent when set to true. Defaults - * to false. - * @visibility frontend - */ - testMode?: false; - - /** - * Prevents IP address to be sent as when set to true. Defaults to false - * @visibility frontend - */ - maskIP?: boolean; - }; - }; - }; -} diff --git a/plugins/analytics-provider-segment/dev/Playground.tsx b/plugins/analytics-provider-segment/dev/Playground.tsx deleted file mode 100644 index 9ece76a492..0000000000 --- a/plugins/analytics-provider-segment/dev/Playground.tsx +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; - -import { Link } from '@backstage/core-components'; - -export const Playground = () => { - return ( - <> - Click Here - - ); -}; diff --git a/plugins/analytics-provider-segment/dev/index.tsx b/plugins/analytics-provider-segment/dev/index.tsx deleted file mode 100644 index 400440ec09..0000000000 --- a/plugins/analytics-provider-segment/dev/index.tsx +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import React from 'react'; - -import { createDevApp } from '@backstage/dev-utils'; - -import { getAllThemes } from '@redhat-developer/red-hat-developer-hub-theme'; - -import { analyticsModuleSegment } from '../src'; -import { Playground } from './Playground'; - -createDevApp() - .registerPlugin(analyticsModuleSegment) - .addThemes(getAllThemes()) - .addPage({ - path: '/segment', - title: 'Segment Playground', - element: , - }) - .render(); diff --git a/plugins/analytics-provider-segment/package.json b/plugins/analytics-provider-segment/package.json deleted file mode 100644 index 401c2ba863..0000000000 --- a/plugins/analytics-provider-segment/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "name": "@janus-idp/backstage-plugin-analytics-provider-segment", - "version": "1.10.1", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public", - "main": "dist/index.esm.js", - "types": "dist/index.d.ts" - }, - "backstage": { - "role": "frontend-plugin", - "supported-versions": "1.32.5", - "pluginId": "analytics-provider-segment", - "pluginPackage": "@janus-idp/backstage-plugin-analytics-provider-segment", - "pluginPackages": [ - "@janus-idp/backstage-plugin-analytics-provider-segment" - ] - }, - "sideEffects": false, - "scripts": { - "start": "backstage-cli package start", - "build": "backstage-cli package build", - "tsc": "tsc", - "prettier:check": "prettier --ignore-unknown --check .", - "prettier:fix": "prettier --ignore-unknown --write .", - "lint:check": "backstage-cli package lint", - "lint:fix": "backstage-cli package lint --fix", - "test": "backstage-cli package test --passWithNoTests --coverage", - "clean": "backstage-cli package clean", - "prepack": "backstage-cli package prepack", - "postpack": "backstage-cli package postpack" - }, - "dependencies": { - "@backstage/config": "^1.2.0", - "@backstage/core-components": "^0.15.1", - "@backstage/core-plugin-api": "^1.10.0", - "@backstage/theme": "^0.6.0", - "@material-ui/core": "^4.9.13", - "@material-ui/icons": "^4.11.3", - "@material-ui/lab": "4.0.0-alpha.61", - "@segment/analytics-next": "^1.58.0", - "prop-types": "^15.8.1", - "react-use": "^17.4.0" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "^6.0.0" - }, - "devDependencies": { - "@backstage/cli": "0.28.2", - "@backstage/core-app-api": "1.15.1", - "@backstage/dev-utils": "1.1.2", - "@backstage/test-utils": "1.7.0", - "@redhat-developer/red-hat-developer-hub-theme": "0.4.0", - "@testing-library/dom": "9.3.4", - "@testing-library/jest-dom": "6.4.8", - "@testing-library/react": "14.3.1", - "@testing-library/user-event": "14.5.2", - "@types/node": "18.19.34", - "@types/react": "18.3.3", - "cross-fetch": "4.0.0", - "msw": "1.3.3", - "prettier": "3.3.3" - }, - "files": [ - "dist", - "dist-scalprum", - "config.d.ts", - "app-config.janus-idp.yaml" - ], - "configSchema": "config.d.ts", - "repository": { - "type": "git", - "url": "https://github.com/janus-idp/backstage-plugins", - "directory": "plugins/analytics-provider-segment" - }, - "maintainers": [ - "@janus-idp/maintainers-plugins" - ], - "author": "Red Hat", - "homepage": "https://red.ht/rhdh", - "bugs": "https://github.com/janus-idp/backstage-plugins/issues", - "keywords": [ - "support:production", - "lifecycle:active" - ] -} diff --git a/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/Segment.test.ts b/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/Segment.test.ts deleted file mode 100644 index 3787e149a0..0000000000 --- a/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/Segment.test.ts +++ /dev/null @@ -1,207 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { ConfigReader } from '@backstage/config'; -import { IdentityApi } from '@backstage/core-plugin-api'; - -import { SegmentAnalytics } from './Segment'; - -const mockIdentify = jest.fn(); -const mockPage = jest.fn(); -const mockTrack = jest.fn(); -const mockLoad = jest.fn(); -jest.mock('@segment/analytics-next', () => { - return { - AnalyticsBrowser: function constructor() { - return { - identify: mockIdentify, - page: mockPage, - track: mockTrack, - load: mockLoad, - }; - }, - }; -}); - -describe('SegmentAnalytics', () => { - const context = { - extension: 'App', - pluginId: 'some-plugin', - routeRef: 'unknown', - releaseNum: 1337, - }; - const writeKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; - const basicValidConfig = new ConfigReader({ - app: { - analytics: { segment: { writeKey, testMode: false, maskIP: false } }, - }, - }); - - afterEach(() => { - jest.clearAllMocks(); - }); - - describe('fromConfig', () => { - it('throws when missing writeKey', () => { - const config = new ConfigReader({ app: { analytics: { segment: {} } } }); - expect(() => SegmentAnalytics.fromConfig(config)).toThrow( - /Missing required config value/, - ); - }); - - it('returns implementation', () => { - const api = SegmentAnalytics.fromConfig(basicValidConfig); - expect(api.captureEvent).toBeDefined(); - }); - }); - - describe('integration', () => { - const maskedIPConfig = new ConfigReader({ - app: { - analytics: { segment: { writeKey, testMode: false, maskIP: true } }, - }, - }); - - it('track identify calls', async () => { - const api = SegmentAnalytics.fromConfig(basicValidConfig); - await api.captureEvent({ - action: 'identify', - subject: 'jdoe', - context, - }); - - expect(mockIdentify).toHaveBeenCalledTimes(1); - expect(mockIdentify).toHaveBeenCalledWith( - /* hashed id */ '6a646f65', - {}, - {}, - ); - }); - - it('track identify with maskedIP', async () => { - const api = SegmentAnalytics.fromConfig(maskedIPConfig); - await api.captureEvent({ - action: 'identify', - subject: 'jdoe', - context, - }); - - expect(mockIdentify).toHaveBeenCalledTimes(1); - expect(mockIdentify).toHaveBeenCalledWith( - /* hashed id */ '6a646f65', - {}, - { ip: '0.0.0.0' }, - ); - }); - - it('tracks basic pageview', async () => { - const api = SegmentAnalytics.fromConfig(basicValidConfig); - await api.captureEvent({ - action: 'navigate', - subject: '/', - context, - }); - - expect(mockPage).toHaveBeenCalledTimes(1); - expect(mockPage).toHaveBeenCalledWith(context.pluginId, '/', context, {}); - }); - - it('tracks pageview with maskedIP', async () => { - const api = SegmentAnalytics.fromConfig(maskedIPConfig); - await api.captureEvent({ - action: 'navigate', - subject: '/', - context, - }); - expect(mockPage).toHaveBeenCalledTimes(1); - expect(mockPage).toHaveBeenCalledWith(context.pluginId, '/', context, { - ip: '0.0.0.0', - }); - }); - - it('tracks basic event', async () => { - const api = SegmentAnalytics.fromConfig(basicValidConfig); - - const expectedAction = 'click'; - const expectedLabel = 'on something'; - const expectedValue = 42; - await api.captureEvent({ - action: expectedAction, - subject: expectedLabel, - value: expectedValue, - context, - }); - - expect(mockTrack).toHaveBeenCalledTimes(1); - expect(mockTrack).toHaveBeenCalledWith( - expectedAction, - { - subject: expectedLabel, - context: context, - attributes: undefined, - }, - {}, - ); - }); - - it('tracks event with MaskedIP', async () => { - const api = SegmentAnalytics.fromConfig(maskedIPConfig); - - const expectedAction = 'click'; - const expectedLabel = 'on something'; - const expectedValue = 42; - await api.captureEvent({ - action: expectedAction, - subject: expectedLabel, - value: expectedValue, - context, - }); - - expect(mockTrack).toHaveBeenCalledTimes(1); - expect(mockTrack).toHaveBeenCalledWith( - expectedAction, - { - subject: expectedLabel, - context: context, - attributes: undefined, - }, - { ip: '0.0.0.0' }, - ); - }); - }); - - describe('identityApi', () => { - const identityApi = { - getBackstageIdentity: jest.fn().mockResolvedValue({ - userEntityRef: 'User:default/someone', - }), - } as unknown as IdentityApi; - it('track identify calls', async () => { - const api = SegmentAnalytics.fromConfig(basicValidConfig, identityApi); - await api.captureEvent({ - action: 'identify', - subject: 'jdoe', - context, - }); - - expect(mockIdentify).toHaveBeenCalledTimes(1); - expect(mockIdentify).toHaveBeenCalledWith( - /* hashed id */ '557365723a64656661756c742f736f6d656f6e65', - {}, - {}, - ); - }); - }); -}); diff --git a/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/Segment.ts b/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/Segment.ts deleted file mode 100644 index fa558e37b1..0000000000 --- a/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/Segment.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { Config } from '@backstage/config'; -import { - AnalyticsApi, - AnalyticsEvent, - IdentityApi, -} from '@backstage/core-plugin-api'; - -import { AnalyticsBrowser } from '@segment/analytics-next'; - -/** - * Segment provider for the Backstage Analytics API. - * @public - */ -export class SegmentAnalytics implements AnalyticsApi { - private readonly analytics: AnalyticsBrowser; - private readonly testMode: boolean; - private readonly maskIP: boolean; - private readonly identityApi: IdentityApi | undefined; - - /** - * Instantiate the implementation and initialize Segment client. - */ - private constructor( - options: { writeKey: string; testMode: boolean; maskIP: boolean }, - identityApi?: IdentityApi, - ) { - const { writeKey, testMode, maskIP } = options; - this.identityApi = identityApi; - this.testMode = testMode; - this.maskIP = maskIP; - this.analytics = new AnalyticsBrowser(); - this.analytics.load({ writeKey: writeKey }); - } - - /** - * Instantiate a fully configured Segment API implementation. - */ - static fromConfig(config: Config, identityApi?: IdentityApi) { - const testMode = - config.getOptionalBoolean('app.analytics.segment.testMode') ?? false; - const writeKey = testMode - ? '' - : config.getString('app.analytics.segment.writeKey'); - const maskIP = - config.getOptionalBoolean('app.analytics.segment.maskIP') ?? false; - - return new SegmentAnalytics( - { - writeKey, - testMode, - maskIP, - }, - identityApi, - ); - } - - async captureEvent(event: AnalyticsEvent) { - // Don't capture events in test mode. - if (this.testMode) { - return; - } - const analyticsOpts = this.maskIP ? { ip: '0.0.0.0' } : {}; - const { action, subject, context, attributes } = event; - - // Identify users. - if (action === 'identify') { - let userId = ''; - if (this.identityApi) { - const { userEntityRef } = await this.identityApi.getBackstageIdentity(); - userId = await this.getPIIFreeUserID(userEntityRef); - } else { - userId = await this.getPIIFreeUserID(subject); - } - await this.analytics.identify(userId, {}, analyticsOpts); - return; - } - - // Track page views. - if (action === 'navigate') { - await this.analytics.page( - context.pluginId, - subject, - context, - analyticsOpts, - ); - return; - } - - // Track other events. - await this.analytics.track( - action, - { - subject: subject, - context: context, - attributes: attributes, - }, - analyticsOpts, - ); - } - - private async getPIIFreeUserID(userId: string): Promise { - return this.hash(userId); - } - - private async hash(value: string): Promise { - if (!value) return value; - const digest = await window.crypto.subtle.digest( - 'sha-256', - new TextEncoder().encode(value), - ); - const hashArray = Array.from(new Uint8Array(digest)); - return hashArray.map(b => b.toString(16).padStart(2, '0')).join(''); - } -} diff --git a/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/index.ts b/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/index.ts deleted file mode 100644 index ab0e27d12c..0000000000 --- a/plugins/analytics-provider-segment/src/apis/implementations/AnalyticsApi/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -export { SegmentAnalytics } from './Segment'; diff --git a/plugins/analytics-provider-segment/src/index.ts b/plugins/analytics-provider-segment/src/index.ts deleted file mode 100644 index 8c282718a5..0000000000 --- a/plugins/analytics-provider-segment/src/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { - analyticsApiRef, - configApiRef, - createApiFactory, - identityApiRef, -} from '@backstage/core-plugin-api'; - -import { SegmentAnalytics } from './apis/implementations/AnalyticsApi'; - -export { analyticsModuleSegment } from './plugin'; -export * from './apis/implementations/AnalyticsApi'; -export const SegmentAnalyticsApi = createApiFactory({ - api: analyticsApiRef, - deps: { configApi: configApiRef, identityApi: identityApiRef }, - factory: ({ configApi, identityApi }) => - SegmentAnalytics.fromConfig(configApi, identityApi), -}); diff --git a/plugins/analytics-provider-segment/src/plugin.test.ts b/plugins/analytics-provider-segment/src/plugin.test.ts deleted file mode 100644 index ea59e669bf..0000000000 --- a/plugins/analytics-provider-segment/src/plugin.test.ts +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { analyticsModuleSegment } from './plugin'; - -describe('analytics-module-segment', () => { - it('should export plugin', () => { - expect(analyticsModuleSegment).toBeDefined(); - }); -}); diff --git a/plugins/analytics-provider-segment/src/plugin.ts b/plugins/analytics-provider-segment/src/plugin.ts deleted file mode 100644 index 4e7f6cfec2..0000000000 --- a/plugins/analytics-provider-segment/src/plugin.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import { createPlugin } from '@backstage/core-plugin-api'; - -/** - * - * @public Importing and including this plugin in an app has no effect. - */ -export const analyticsModuleSegment = createPlugin({ - id: 'analytics-provider-segment', -}); diff --git a/plugins/analytics-provider-segment/src/setupTests.ts b/plugins/analytics-provider-segment/src/setupTests.ts deleted file mode 100644 index 35af37896d..0000000000 --- a/plugins/analytics-provider-segment/src/setupTests.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2022 The Backstage Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -import '@testing-library/jest-dom'; -import 'cross-fetch/polyfill'; - -// eslint-disable-next-line no-restricted-imports -import { TextEncoder } from 'util'; - -// Mock browser crypto.subtle.digest method for sha-256 hashing. -Object.defineProperty(global.self, 'crypto', { - value: { - subtle: { - digest: (_algo: string, data: Uint8Array): ArrayBuffer => data.buffer, - }, - }, -}); - -// Also used in browser-based APIs for hashing. -Object.defineProperty(global.self, 'TextEncoder', { - value: TextEncoder, -}); diff --git a/plugins/analytics-provider-segment/tsconfig.json b/plugins/analytics-provider-segment/tsconfig.json deleted file mode 100644 index f111d39822..0000000000 --- a/plugins/analytics-provider-segment/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": ["src", "dev", "migrations"], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "../../dist-types/plugins/analytics-provider-segment", - "rootDir": "." - } -} diff --git a/plugins/analytics-provider-segment/turbo.json b/plugins/analytics-provider-segment/turbo.json deleted file mode 100644 index 842f9064e6..0000000000 --- a/plugins/analytics-provider-segment/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "tsc": { - "outputs": ["../../dist-types/plugins/analytics-provider-segment/**"] - } - } -} diff --git a/plugins/matomo-backend/.eslintignore b/plugins/matomo-backend/.eslintignore deleted file mode 100644 index 55289f4a23..0000000000 --- a/plugins/matomo-backend/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist-dynamic -dist-scalprum diff --git a/plugins/matomo-backend/.eslintrc.js b/plugins/matomo-backend/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/matomo-backend/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/matomo-backend/.lintstagedrc.json b/plugins/matomo-backend/.lintstagedrc.json deleted file mode 100644 index 14b2263def..0000000000 --- a/plugins/matomo-backend/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*": "prettier --ignore-unknown --write", - "*.{js,jsx,ts,tsx,mjs,cjs}": "backstage-cli package lint --fix" -} diff --git a/plugins/matomo-backend/.prettierignore b/plugins/matomo-backend/.prettierignore deleted file mode 100644 index fc8357d99e..0000000000 --- a/plugins/matomo-backend/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -dist-types -coverage -.vscode -CHANGELOG.md -generated -templates -*.hbs -renovate.json -dist-dynamic -dist-scalprum -playwright-report diff --git a/plugins/matomo-backend/.prettierrc.js b/plugins/matomo-backend/.prettierrc.js deleted file mode 100644 index 84cbac65b5..0000000000 --- a/plugins/matomo-backend/.prettierrc.js +++ /dev/null @@ -1,20 +0,0 @@ -// @ts-check - -/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ -module.exports = { - ...require('@spotify/prettier-config'), - plugins: ['@ianvs/prettier-plugin-sort-imports'], - importOrder: [ - '^react(.*)$', - '', - '^@backstage/(.*)$', - '', - '', - '', - '^@janus-idp/(.*)$', - '', - '', - '', - '^[.]', - ], -}; diff --git a/plugins/matomo-backend/.versionhistory.md b/plugins/matomo-backend/.versionhistory.md deleted file mode 100644 index 161a6cfa3e..0000000000 --- a/plugins/matomo-backend/.versionhistory.md +++ /dev/null @@ -1,2 +0,0 @@ -- Bumped to 1.4.0 in main branch for next release 1.2.0 -- Bumped to 1.8.0 in main branch for next release 1.3.0 diff --git a/plugins/matomo-backend/CHANGELOG.md b/plugins/matomo-backend/CHANGELOG.md deleted file mode 100644 index 17192269ca..0000000000 --- a/plugins/matomo-backend/CHANGELOG.md +++ /dev/null @@ -1,328 +0,0 @@ -### Dependencies - -## 1.11.1 - -### Patch Changes - -- 0e6bfd3: feat: update Backstage to the latest version - - Update to Backstage 1.32.5 - -## 1.11.0 - -### Minor Changes - -- 8244f28: chore(deps): update to backstage 1.32 - -## 1.10.1 - -### Patch Changes - -- 7342e9b: chore: remove @janus-idp/cli dep and relink local packages - - This update removes `@janus-idp/cli` from all plugins, as it’s no longer necessary. Additionally, packages are now correctly linked with a specified version. - -## 1.10.0 - -### Minor Changes - -- d9551ae: feat(deps): update to backstage 1.31 - -### Patch Changes - -- d9551ae: Change local package references to a `*` -- d9551ae: pin the @janus-idp/cli package -- d9551ae: upgrade to yarn v3 -- d9551ae: Change the export-dynamic script to no longer use any flags and remove the tracking of the dist-dynamic folder - -* **@janus-idp/cli:** upgraded to 1.15.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.1 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.14.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.1 - -## @janus-idp/backstage-plugin-matomo-backend [1.7.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.6.0...@janus-idp/backstage-plugin-matomo-backend@1.7.0) (2024-07-26) - -### Features - -- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802)) - -## @janus-idp/backstage-plugin-matomo-backend [1.6.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.5.1...@janus-idp/backstage-plugin-matomo-backend@1.6.0) (2024-07-24) - -### Features - -- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5)) - -## @janus-idp/backstage-plugin-matomo-backend [1.5.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.5.0...@janus-idp/backstage-plugin-matomo-backend@1.5.1) (2024-06-19) - -### Bug Fixes - -- **matomo:** add default export for new backend system ([#1822](https://github.com/janus-idp/backstage-plugins/issues/1822)) ([5e72920](https://github.com/janus-idp/backstage-plugins/commit/5e72920209589535d503bb28e77f54175a0bd946)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.1 - -## @janus-idp/backstage-plugin-matomo-backend [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.15...@janus-idp/backstage-plugin-matomo-backend@1.5.0) (2024-06-13) - -### Features - -- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.0 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.15](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.14...@janus-idp/backstage-plugin-matomo-backend@1.4.15) (2024-06-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.1 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.14](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.13...@janus-idp/backstage-plugin-matomo-backend@1.4.14) (2024-06-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.0 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.12...@janus-idp/backstage-plugin-matomo-backend@1.4.13) (2024-06-04) - -## @janus-idp/backstage-plugin-matomo-backend [1.4.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.11...@janus-idp/backstage-plugin-matomo-backend@1.4.12) (2024-06-04) - -## @janus-idp/backstage-plugin-matomo-backend [1.4.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.10...@janus-idp/backstage-plugin-matomo-backend@1.4.11) (2024-06-03) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.9.0 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.9...@janus-idp/backstage-plugin-matomo-backend@1.4.10) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.10 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.8...@janus-idp/backstage-plugin-matomo-backend@1.4.9) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.9 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.7...@janus-idp/backstage-plugin-matomo-backend@1.4.8) (2024-05-23) - -### Bug Fixes - -- **deps:** upgrade devex plugins to mui v5 ([#1696](https://github.com/janus-idp/backstage-plugins/issues/1696)) ([06d9cf0](https://github.com/janus-idp/backstage-plugins/commit/06d9cf0d8c134212329eb691ac21eb78ae155c09)) - -## @janus-idp/backstage-plugin-matomo-backend [1.4.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.6...@janus-idp/backstage-plugin-matomo-backend@1.4.7) (2024-05-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.7 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.5...@janus-idp/backstage-plugin-matomo-backend@1.4.6) (2024-05-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.6 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.4...@janus-idp/backstage-plugin-matomo-backend@1.4.5) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.5 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.3...@janus-idp/backstage-plugin-matomo-backend@1.4.4) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.4 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.2...@janus-idp/backstage-plugin-matomo-backend@1.4.3) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.3 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.1...@janus-idp/backstage-plugin-matomo-backend@1.4.2) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.2 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.4.0...@janus-idp/backstage-plugin-matomo-backend@1.4.1) (2024-04-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.1 - -## @janus-idp/backstage-plugin-matomo-backend [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.10...@janus-idp/backstage-plugin-matomo-backend@1.4.0) (2024-04-15) - -### Features - -- checkPluginVersion.sh bump plugins for 1.2.0 release ([#1511](https://github.com/janus-idp/backstage-plugins/issues/1511)) ([73c6588](https://github.com/janus-idp/backstage-plugins/commit/73c6588adb7e8c20907b06f2a8ef248cfd4332e4)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.0 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.9...@janus-idp/backstage-plugin-matomo-backend@1.3.10) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.10 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.8...@janus-idp/backstage-plugin-matomo-backend@1.3.9) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.9 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.7...@janus-idp/backstage-plugin-matomo-backend@1.3.8) (2024-04-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.8 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.6...@janus-idp/backstage-plugin-matomo-backend@1.3.7) (2024-04-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.7 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.5...@janus-idp/backstage-plugin-matomo-backend@1.3.6) (2024-03-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.6 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.4...@janus-idp/backstage-plugin-matomo-backend@1.3.5) (2024-03-04) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.5 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.3...@janus-idp/backstage-plugin-matomo-backend@1.3.4) (2024-02-27) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.4 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.2...@janus-idp/backstage-plugin-matomo-backend@1.3.3) (2024-02-26) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.3 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.1...@janus-idp/backstage-plugin-matomo-backend@1.3.2) (2024-02-21) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.2 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.3.0...@janus-idp/backstage-plugin-matomo-backend@1.3.1) (2024-02-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.1 - -## @janus-idp/backstage-plugin-matomo-backend [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.8...@janus-idp/backstage-plugin-matomo-backend@1.3.0) (2024-01-30) - -### Features - -- add new backend system support for existing backend plugins that have not been migrated over yet ([#1132](https://github.com/janus-idp/backstage-plugins/issues/1132)) ([06e16fd](https://github.com/janus-idp/backstage-plugins/commit/06e16fdcf64257dd08297cb727445d9a8a23c522)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.0 - -## @janus-idp/backstage-plugin-matomo-backend [1.2.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.7...@janus-idp/backstage-plugin-matomo-backend@1.2.8) (2024-01-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.6.0 - -## @janus-idp/backstage-plugin-matomo-backend [1.2.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.6...@janus-idp/backstage-plugin-matomo-backend@1.2.7) (2024-01-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.5.0 - -## @janus-idp/backstage-plugin-matomo-backend [1.2.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.5...@janus-idp/backstage-plugin-matomo-backend@1.2.6) (2023-12-07) - -### Bug Fixes - -- attempt to force a bump of backend plugins ([#1007](https://github.com/janus-idp/backstage-plugins/issues/1007)) ([7a37225](https://github.com/janus-idp/backstage-plugins/commit/7a372254fb7e8107aa794f7900a6511eee096677)) - -## @janus-idp/backstage-plugin-matomo-backend [1.2.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.4...@janus-idp/backstage-plugin-matomo-backend@1.2.5) (2023-12-07) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.7 - -## @janus-idp/backstage-plugin-matomo-backend [1.2.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.3...@janus-idp/backstage-plugin-matomo-backend@1.2.4) (2023-11-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.6 - -## @janus-idp/backstage-plugin-matomo-backend [1.2.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.2...@janus-idp/backstage-plugin-matomo-backend@1.2.3) (2023-11-23) - -### Bug Fixes - -- add config partials for dynamic frontend plugins ([#965](https://github.com/janus-idp/backstage-plugins/issues/965)) ([b01e55e](https://github.com/janus-idp/backstage-plugins/commit/b01e55e877278afc5de8d28a4c687a6989566bdc)) - -## @janus-idp/backstage-plugin-matomo-backend [1.2.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.1...@janus-idp/backstage-plugin-matomo-backend@1.2.2) (2023-11-22) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.5 - -## @janus-idp/backstage-plugin-matomo-backend [1.2.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.2.0...@janus-idp/backstage-plugin-matomo-backend@1.2.1) (2023-11-21) - -### Bug Fixes - -- sync versions in dynamic assets and publish derived packages as additional packages ([#963](https://github.com/janus-idp/backstage-plugins/issues/963)) ([7d0a386](https://github.com/janus-idp/backstage-plugins/commit/7d0a38609b4a18b54c75378a150e8b5c3ba8ff43)) - -## @janus-idp/backstage-plugin-matomo-backend [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.1.2...@janus-idp/backstage-plugin-matomo-backend@1.2.0) (2023-11-21) - -### Features - -- make all backend plugins dynamic ([#954](https://github.com/janus-idp/backstage-plugins/issues/954)) ([1b4338a](https://github.com/janus-idp/backstage-plugins/commit/1b4338a45c3b92f5607391b2bfc17c4d29050ce3)) - -## @janus-idp/backstage-plugin-matomo-backend [1.1.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.1.1...@janus-idp/backstage-plugin-matomo-backend@1.1.2) (2023-11-20) - -### Bug Fixes - -- **aap+3scale+ocm:** don't log sensitive data from errors ([#945](https://github.com/janus-idp/backstage-plugins/issues/945)) ([7a5e7b8](https://github.com/janus-idp/backstage-plugins/commit/7a5e7b8a57c9841003d9b16e1a65fb62e101fbf1)) - -## @janus-idp/backstage-plugin-matomo-backend [1.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.1.0...@janus-idp/backstage-plugin-matomo-backend@1.1.1) (2023-11-13) - -## @janus-idp/backstage-plugin-matomo-backend [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.0.1...@janus-idp/backstage-plugin-matomo-backend@1.1.0) (2023-10-23) - -### Features - -- **cli:** add frontend dynamic plugins base build config ([#747](https://github.com/janus-idp/backstage-plugins/issues/747)) ([91e06da](https://github.com/janus-idp/backstage-plugins/commit/91e06da8ab108c17fd2a6531f25e01c7a7350276)), closes [#831](https://github.com/janus-idp/backstage-plugins/issues/831) - -## @janus-idp/backstage-plugin-matomo-backend [1.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo-backend@1.0.0...@janus-idp/backstage-plugin-matomo-backend@1.0.1) (2023-10-19) - -## @janus-idp/backstage-plugin-matomo-backend 1.0.0 (2023-09-22) - -### Features - -- **#360:** implemented matomo plugin ([#370](https://github.com/janus-idp/backstage-plugins/issues/370)) ([1112a7e](https://github.com/janus-idp/backstage-plugins/commit/1112a7ee0e99e3f9959a8ec05554fde2d459452d)), closes [#360](https://github.com/janus-idp/backstage-plugins/issues/360) [#360](https://github.com/janus-idp/backstage-plugins/issues/360) diff --git a/plugins/matomo-backend/README.md b/plugins/matomo-backend/README.md index a1f3b0752d..77649c0c82 100644 --- a/plugins/matomo-backend/README.md +++ b/plugins/matomo-backend/README.md @@ -1,44 +1,3 @@ -# Matomo Backend +# Deprecated -This is the matomo backend plugin that act as a proxy with matomo instance. - -Plugin will inject the auth token and ensure that the request are only read only operations. - -Matomo API cannot be used as proxy layer due to the token auth it follows. Thus this plugin will act as proxy layer - -## Getting Started - -### Installing the NPM package - -```bash -yarn add --cwd packages/backend @janus-idp/plugin-matomo-backend -``` - -### Installing the plugin - -#### Adding the plugin to the new backend - -Add the following to your `packages/backend/src/index.ts` file: - -```ts title="packages/backend/src/index.ts" -const backend = createBackend(); - -// Add the following line -backend.add(import('@janus-idp/backstage-plugin-matomo-backend')); - -backend.start(); -``` - -### Plugin Configurations - -Add the following configurations into your `app-config.yaml` file: - -```yaml -matomo: - apiToken: ${MATOMO_API_TOKEN} - - apiUrl: ${MATOMO_API_URL} - - # (OPTIONAL) Set to false if you get SSL certificate error - secure: ${MATOMO_SECURE_FLAG} -``` +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-matomo-backend` instead. \ No newline at end of file diff --git a/plugins/matomo-backend/app-config.janus-idp.yaml b/plugins/matomo-backend/app-config.janus-idp.yaml deleted file mode 100644 index 4d698dd24d..0000000000 --- a/plugins/matomo-backend/app-config.janus-idp.yaml +++ /dev/null @@ -1,5 +0,0 @@ -matomo: - apiToken: ${MATOMO_API_TOKEN} - apiUrl: ${MATOMO_API_URL} - # Set to false if you get SSL certificate error - secure: ${MATOMO_SECURE_FLAG} diff --git a/plugins/matomo-backend/catalog-info.yaml b/plugins/matomo-backend/catalog-info.yaml deleted file mode 100644 index 27ee60f26d..0000000000 --- a/plugins/matomo-backend/catalog-info.yaml +++ /dev/null @@ -1,25 +0,0 @@ -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-matomo-backend - title: '@janus-idp/backstage-plugin-matomo-backend' - description: Matomo backend plugin - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/matomo-backend - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/matomo-backend/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/matomo-backend/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/maintainers-plugins - sonarqube.org/project-key: janus-idp_backstage-plugins - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/matomo-backend - title: GitHub Source - icon: source - type: source -spec: - type: backstage-backend-plugin - lifecycle: production - owner: rhdh-team - system: rhdh - subcomponentOf: janus-idp-matomo diff --git a/plugins/matomo-backend/config.d.ts b/plugins/matomo-backend/config.d.ts deleted file mode 100644 index 15af7acee2..0000000000 --- a/plugins/matomo-backend/config.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -export interface Config { - matomo: { - /** - * @visibility backend - */ - apiToken: string; - /** - * @visibility backend - */ - apiUrl: string; - /** - * Set to false if you get SSL certificate error - * @visibility backend - */ - secure: boolean; - }; -} diff --git a/plugins/matomo-backend/dev/index.ts b/plugins/matomo-backend/dev/index.ts deleted file mode 100644 index 37f804fdd7..0000000000 --- a/plugins/matomo-backend/dev/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { createBackend } from '@backstage/backend-defaults'; - -import matomoBackendPlugin from '../src'; - -const backend = createBackend(); - -backend.add(matomoBackendPlugin); - -backend.start(); diff --git a/plugins/matomo-backend/package.json b/plugins/matomo-backend/package.json deleted file mode 100644 index 5164ebc60e..0000000000 --- a/plugins/matomo-backend/package.json +++ /dev/null @@ -1,87 +0,0 @@ -{ - "name": "@janus-idp/backstage-plugin-matomo-backend", - "version": "1.11.1", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public" - }, - "configSchema": "config.d.ts", - "backstage": { - "role": "backend-plugin", - "supported-versions": "1.32.5", - "pluginId": "matomo", - "pluginPackages": [ - "@janus-idp/backstage-plugin-matomo", - "@janus-idp/backstage-plugin-matomo-backend" - ] - }, - "exports": { - ".": "./src/index.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "package.json": [ - "package.json" - ] - } - }, - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint:check": "backstage-cli package lint", - "lint:fix": "backstage-cli package lint --fix", - "postpack": "backstage-cli package postpack", - "prepack": "backstage-cli package prepack", - "start": "backstage-cli package start", - "test": "backstage-cli package test --passWithNoTests --coverage", - "tsc": "tsc", - "prettier:check": "prettier --ignore-unknown --check .", - "prettier:fix": "prettier --ignore-unknown --write ." - }, - "dependencies": { - "@backstage/backend-defaults": "^0.5.2", - "@backstage/backend-plugin-api": "^1.0.1", - "@backstage/config": "^1.2.0", - "@types/express": "4.17.20", - "express": "^4.18.2", - "http-proxy-middleware": "^2.0.6", - "node-fetch": "^3.3.2", - "yn": "^4.0.0" - }, - "devDependencies": { - "@backstage/cli": "0.28.2", - "@types/supertest": "2.0.16", - "msw": "1.3.3", - "prettier": "3.3.3", - "supertest": "6.3.4" - }, - "files": [ - "dist", - "config.d.ts", - "dist-dynamic/*.*", - "dist-dynamic/dist/**", - "dist-dynamic/alpha/*", - "app-config.janus-idp.yaml" - ], - "repository": { - "type": "git", - "url": "https://github.com/janus-idp/backstage-plugins", - "directory": "plugins/matomo-backend" - }, - "keywords": [ - "support:tech-preview", - "lifecycle:active", - "backstage", - "plugin" - ], - "homepage": "https://red.ht/rhdh", - "bugs": "https://github.com/janus-idp/backstage-plugins/issues", - "maintainers": [ - "@janus-idp/maintainers-plugins", - "@janus-idp/devex-uxe" - ], - "author": "The Backstage Community" -} diff --git a/plugins/matomo-backend/src/index.ts b/plugins/matomo-backend/src/index.ts deleted file mode 100644 index 11ba5f745f..0000000000 --- a/plugins/matomo-backend/src/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './service/router'; -export { matomoBackendPlugin as default } from './plugin'; diff --git a/plugins/matomo-backend/src/plugin.ts b/plugins/matomo-backend/src/plugin.ts deleted file mode 100644 index 1e03649f8c..0000000000 --- a/plugins/matomo-backend/src/plugin.ts +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright 2024 The Janus IDP 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 { - coreServices, - createBackendPlugin, -} from '@backstage/backend-plugin-api'; - -import { createRouter } from './service/router'; - -export const matomoBackendPlugin = createBackendPlugin({ - pluginId: 'matomo', - register(env) { - env.registerInit({ - deps: { - http: coreServices.httpRouter, - logger: coreServices.logger, - config: coreServices.rootConfig, - }, - async init({ http, logger, config }) { - logger.info('Matomo plugin is running'); - const router = await createRouter({ - config, - logger, - }); - http.use(router); - }, - }); - }, -}); diff --git a/plugins/matomo-backend/src/service/router.ts b/plugins/matomo-backend/src/service/router.ts deleted file mode 100644 index 4eac9f04c8..0000000000 --- a/plugins/matomo-backend/src/service/router.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter'; -import type { LoggerService } from '@backstage/backend-plugin-api'; -import { Config } from '@backstage/config'; - -import express, { Router } from 'express'; -import { createProxyMiddleware } from 'http-proxy-middleware'; - -export interface RouterOptions { - logger: LoggerService; - config: Config; -} - -export async function createRouter(options: RouterOptions): Promise { - const { logger, config } = options; - - const matomoToken = config.getString('matomo.apiToken'); - const matomoApiUrl = config.getString('matomo.apiUrl'); - const isSecure = config.getOptionalBoolean('matomo.secure'); - if (!matomoToken || !matomoApiUrl) { - throw new Error( - 'Missing matomo config in app-config.yaml. Add matomo.apiToken and matomo.apiUrl in config', - ); - } - - const router = Router(); - router.use(express.urlencoded({ extended: false })); - router.use((req, res, next) => { - if (req.method === 'POST' && req.body) { - const params = new URLSearchParams(req.body); - const method = params.get('method'); - if (!method?.includes('.get')) { - res.status(400).json({ message: 'read only operation' }); - return; - } - params.set('token_auth', matomoToken); - req.body = params.toString(); - } - next(); - }); - - router.use( - '/', - createProxyMiddleware({ - target: matomoApiUrl, - changeOrigin: true, - secure: isSecure ?? true, - onProxyReq: (proxyReq, req) => { - proxyReq.setHeader('Content-Type', 'application/x-www-form-urlencoded'); - proxyReq.setHeader('Content-Length', Buffer.byteLength(req.body)); - proxyReq.write(req.body); - }, - pathRewrite: { - ['/api/matomo']: '/', - }, - }), - ); - - const middleware = MiddlewareFactory.create({ logger, config }); - - router.use(middleware.error()); - return router; -} diff --git a/plugins/matomo-backend/src/setupTests.ts b/plugins/matomo-backend/src/setupTests.ts deleted file mode 100644 index cb0ff5c3b5..0000000000 --- a/plugins/matomo-backend/src/setupTests.ts +++ /dev/null @@ -1 +0,0 @@ -export {}; diff --git a/plugins/matomo-backend/tsconfig.json b/plugins/matomo-backend/tsconfig.json deleted file mode 100644 index 9a78c37bc0..0000000000 --- a/plugins/matomo-backend/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": ["src", "dev", "migrations"], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "../../dist-types/plugins/matomo-backend", - "rootDir": "." - } -} diff --git a/plugins/matomo-backend/turbo.json b/plugins/matomo-backend/turbo.json deleted file mode 100644 index 35c360b0bc..0000000000 --- a/plugins/matomo-backend/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "tsc": { - "outputs": ["../../dist-types/plugins/matomo-backend/**"] - } - } -} diff --git a/plugins/matomo/.eslintignore b/plugins/matomo/.eslintignore deleted file mode 100644 index 55289f4a23..0000000000 --- a/plugins/matomo/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist-dynamic -dist-scalprum diff --git a/plugins/matomo/.eslintrc.js b/plugins/matomo/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/matomo/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/matomo/.lintstagedrc.json b/plugins/matomo/.lintstagedrc.json deleted file mode 100644 index 14b2263def..0000000000 --- a/plugins/matomo/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*": "prettier --ignore-unknown --write", - "*.{js,jsx,ts,tsx,mjs,cjs}": "backstage-cli package lint --fix" -} diff --git a/plugins/matomo/.prettierignore b/plugins/matomo/.prettierignore deleted file mode 100644 index fc8357d99e..0000000000 --- a/plugins/matomo/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -dist-types -coverage -.vscode -CHANGELOG.md -generated -templates -*.hbs -renovate.json -dist-dynamic -dist-scalprum -playwright-report diff --git a/plugins/matomo/.prettierrc.js b/plugins/matomo/.prettierrc.js deleted file mode 100644 index 84cbac65b5..0000000000 --- a/plugins/matomo/.prettierrc.js +++ /dev/null @@ -1,20 +0,0 @@ -// @ts-check - -/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ -module.exports = { - ...require('@spotify/prettier-config'), - plugins: ['@ianvs/prettier-plugin-sort-imports'], - importOrder: [ - '^react(.*)$', - '', - '^@backstage/(.*)$', - '', - '', - '', - '^@janus-idp/(.*)$', - '', - '', - '', - '^[.]', - ], -}; diff --git a/plugins/matomo/.versionhistory.md b/plugins/matomo/.versionhistory.md deleted file mode 100644 index 237de4f3c7..0000000000 --- a/plugins/matomo/.versionhistory.md +++ /dev/null @@ -1,2 +0,0 @@ -- Bumped to 1.3.0 in main branch for next release 1.2.0 -- Bumped to 1.8.0 in main branch for next release 1.3.0 diff --git a/plugins/matomo/CHANGELOG.md b/plugins/matomo/CHANGELOG.md deleted file mode 100644 index bba893b4b9..0000000000 --- a/plugins/matomo/CHANGELOG.md +++ /dev/null @@ -1,365 +0,0 @@ -### Dependencies - -## 1.10.1 - -### Patch Changes - -- 0e6bfd3: feat: update Backstage to the latest version - - Update to Backstage 1.32.5 - -## 1.10.0 - -### Minor Changes - -- 8244f28: chore(deps): update to backstage 1.32 - -## 1.9.1 - -### Patch Changes - -- 7342e9b: chore: remove @janus-idp/cli dep and relink local packages - - This update removes `@janus-idp/cli` from all plugins, as it’s no longer necessary. Additionally, packages are now correctly linked with a specified version. - -## 1.9.0 - -### Minor Changes - -- d9551ae: feat(deps): update to backstage 1.31 - -### Patch Changes - -- d9551ae: Change local package references to a `*` -- d9551ae: pin the @janus-idp/cli package -- d9551ae: upgrade to yarn v3 - -* **@janus-idp/cli:** upgraded to 1.15.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.1 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.14.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.1 - -## @janus-idp/backstage-plugin-matomo [1.7.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.6.0...@janus-idp/backstage-plugin-matomo@1.7.0) (2024-07-26) - -### Features - -- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802)) - -## @janus-idp/backstage-plugin-matomo [1.6.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.5.1...@janus-idp/backstage-plugin-matomo@1.6.0) (2024-07-24) - -### Features - -- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5)) - -## @janus-idp/backstage-plugin-matomo [1.5.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.5.0...@janus-idp/backstage-plugin-matomo@1.5.1) (2024-06-19) - -### Bug Fixes - -- **matomo:** add default export for new backend system ([#1822](https://github.com/janus-idp/backstage-plugins/issues/1822)) ([5e72920](https://github.com/janus-idp/backstage-plugins/commit/5e72920209589535d503bb28e77f54175a0bd946)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.1 - -## @janus-idp/backstage-plugin-matomo [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.11...@janus-idp/backstage-plugin-matomo@1.5.0) (2024-06-13) - -### Features - -- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.0 - -## @janus-idp/backstage-plugin-matomo [1.4.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.10...@janus-idp/backstage-plugin-matomo@1.4.11) (2024-06-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.1 - -## @janus-idp/backstage-plugin-matomo [1.4.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.9...@janus-idp/backstage-plugin-matomo@1.4.10) (2024-06-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.0 - -## @janus-idp/backstage-plugin-matomo [1.4.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.8...@janus-idp/backstage-plugin-matomo@1.4.9) (2024-06-04) - -## @janus-idp/backstage-plugin-matomo [1.4.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.7...@janus-idp/backstage-plugin-matomo@1.4.8) (2024-06-04) - -## @janus-idp/backstage-plugin-matomo [1.4.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.6...@janus-idp/backstage-plugin-matomo@1.4.7) (2024-06-03) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.9.0 - -## @janus-idp/backstage-plugin-matomo [1.4.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.5...@janus-idp/backstage-plugin-matomo@1.4.6) (2024-05-31) - -## @janus-idp/backstage-plugin-matomo [1.4.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.4...@janus-idp/backstage-plugin-matomo@1.4.5) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.10 - -## @janus-idp/backstage-plugin-matomo [1.4.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.3...@janus-idp/backstage-plugin-matomo@1.4.4) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.9 - -## @janus-idp/backstage-plugin-matomo [1.4.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.2...@janus-idp/backstage-plugin-matomo@1.4.3) (2024-05-28) - -### Bug Fixes - -- **deps:** upgrade devex plugins to mui v5 ([#1696](https://github.com/janus-idp/backstage-plugins/issues/1696)) ([06d9cf0](https://github.com/janus-idp/backstage-plugins/commit/06d9cf0d8c134212329eb691ac21eb78ae155c09)) - -## @janus-idp/backstage-plugin-matomo [1.4.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.1...@janus-idp/backstage-plugin-matomo@1.4.2) (2024-05-16) - -## @janus-idp/backstage-plugin-matomo [1.4.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.4.0...@janus-idp/backstage-plugin-matomo@1.4.1) (2024-05-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.7 - -## @janus-idp/backstage-plugin-matomo [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.3.6...@janus-idp/backstage-plugin-matomo@1.4.0) (2024-05-14) - -### Features - -- **deps:** use RHDH themes in the backstage app and dev pages ([#1480](https://github.com/janus-idp/backstage-plugins/issues/1480)) ([8263bf0](https://github.com/janus-idp/backstage-plugins/commit/8263bf099736cbb0d0f2316082d338ba81fa6927)) - -## @janus-idp/backstage-plugin-matomo [1.3.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.3.5...@janus-idp/backstage-plugin-matomo@1.3.6) (2024-05-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.6 - -## @janus-idp/backstage-plugin-matomo [1.3.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.3.4...@janus-idp/backstage-plugin-matomo@1.3.5) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.5 - -## @janus-idp/backstage-plugin-matomo [1.3.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.3.3...@janus-idp/backstage-plugin-matomo@1.3.4) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.4 - -## @janus-idp/backstage-plugin-matomo [1.3.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.3.2...@janus-idp/backstage-plugin-matomo@1.3.3) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.3 - -## @janus-idp/backstage-plugin-matomo [1.3.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.3.1...@janus-idp/backstage-plugin-matomo@1.3.2) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.2 - -## @janus-idp/backstage-plugin-matomo [1.3.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.3.0...@janus-idp/backstage-plugin-matomo@1.3.1) (2024-04-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.1 - -## @janus-idp/backstage-plugin-matomo [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.12...@janus-idp/backstage-plugin-matomo@1.3.0) (2024-04-15) - -### Features - -- checkPluginVersion.sh bump plugins for 1.2.0 release ([#1511](https://github.com/janus-idp/backstage-plugins/issues/1511)) ([73c6588](https://github.com/janus-idp/backstage-plugins/commit/73c6588adb7e8c20907b06f2a8ef248cfd4332e4)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.0 - -## @janus-idp/backstage-plugin-matomo [1.2.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.11...@janus-idp/backstage-plugin-matomo@1.2.12) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.10 - -## @janus-idp/backstage-plugin-matomo [1.2.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.10...@janus-idp/backstage-plugin-matomo@1.2.11) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.9 - -## @janus-idp/backstage-plugin-matomo [1.2.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.9...@janus-idp/backstage-plugin-matomo@1.2.10) (2024-04-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.8 - -## @janus-idp/backstage-plugin-matomo [1.2.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.8...@janus-idp/backstage-plugin-matomo@1.2.9) (2024-04-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.7 - -## @janus-idp/backstage-plugin-matomo [1.2.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.7...@janus-idp/backstage-plugin-matomo@1.2.8) (2024-03-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.6 - -## @janus-idp/backstage-plugin-matomo [1.2.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.6...@janus-idp/backstage-plugin-matomo@1.2.7) (2024-03-04) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.5 - -## @janus-idp/backstage-plugin-matomo [1.2.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.5...@janus-idp/backstage-plugin-matomo@1.2.6) (2024-02-27) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.4 - -## @janus-idp/backstage-plugin-matomo [1.2.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.4...@janus-idp/backstage-plugin-matomo@1.2.5) (2024-02-26) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.3 - -## @janus-idp/backstage-plugin-matomo [1.2.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.3...@janus-idp/backstage-plugin-matomo@1.2.4) (2024-02-21) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.2 - -## @janus-idp/backstage-plugin-matomo [1.2.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.2...@janus-idp/backstage-plugin-matomo@1.2.3) (2024-02-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.1 - -## @janus-idp/backstage-plugin-matomo [1.2.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.1...@janus-idp/backstage-plugin-matomo@1.2.2) (2024-01-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.0 - -## @janus-idp/backstage-plugin-matomo [1.2.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.2.0...@janus-idp/backstage-plugin-matomo@1.2.1) (2024-01-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.6.0 - -## @janus-idp/backstage-plugin-matomo [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.13...@janus-idp/backstage-plugin-matomo@1.2.0) (2024-01-16) - -### Features - -- **Notifications:** new notifications FE plugin, API and backend ([#933](https://github.com/janus-idp/backstage-plugins/issues/933)) ([4d4cb78](https://github.com/janus-idp/backstage-plugins/commit/4d4cb781ca9fc331a2c621583e9203f9e4585ee7)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.5.0 - -## @janus-idp/backstage-plugin-matomo [1.1.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.12...@janus-idp/backstage-plugin-matomo@1.1.13) (2023-12-07) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.7 - -## @janus-idp/backstage-plugin-matomo [1.1.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.11...@janus-idp/backstage-plugin-matomo@1.1.12) (2023-11-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.6 - -## @janus-idp/backstage-plugin-matomo [1.1.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.10...@janus-idp/backstage-plugin-matomo@1.1.11) (2023-11-23) - -### Bug Fixes - -- add config partials for dynamic frontend plugins ([#965](https://github.com/janus-idp/backstage-plugins/issues/965)) ([b01e55e](https://github.com/janus-idp/backstage-plugins/commit/b01e55e877278afc5de8d28a4c687a6989566bdc)) - -## @janus-idp/backstage-plugin-matomo [1.1.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.9...@janus-idp/backstage-plugin-matomo@1.1.10) (2023-11-22) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.5 - -## @janus-idp/backstage-plugin-matomo [1.1.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.8...@janus-idp/backstage-plugin-matomo@1.1.9) (2023-11-21) - -### Bug Fixes - -- sync versions in dynamic assets and publish derived packages as additional packages ([#963](https://github.com/janus-idp/backstage-plugins/issues/963)) ([7d0a386](https://github.com/janus-idp/backstage-plugins/commit/7d0a38609b4a18b54c75378a150e8b5c3ba8ff43)) - -## @janus-idp/backstage-plugin-matomo [1.1.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.7...@janus-idp/backstage-plugin-matomo@1.1.8) (2023-11-20) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.4 - -## @janus-idp/backstage-plugin-matomo [1.1.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.6...@janus-idp/backstage-plugin-matomo@1.1.7) (2023-11-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.3 - -## @janus-idp/backstage-plugin-matomo [1.1.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.5...@janus-idp/backstage-plugin-matomo@1.1.6) (2023-11-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.2 - -## @janus-idp/backstage-plugin-matomo [1.1.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.4...@janus-idp/backstage-plugin-matomo@1.1.5) (2023-11-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.1 - -## @janus-idp/backstage-plugin-matomo [1.1.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.3...@janus-idp/backstage-plugin-matomo@1.1.4) (2023-11-13) - -## @janus-idp/backstage-plugin-matomo [1.1.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.2...@janus-idp/backstage-plugin-matomo@1.1.3) (2023-11-07) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.0 - -## @janus-idp/backstage-plugin-matomo [1.1.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.1...@janus-idp/backstage-plugin-matomo@1.1.2) (2023-11-06) - -### Bug Fixes - -- **cli:** add default scalprum config ([#909](https://github.com/janus-idp/backstage-plugins/issues/909)) ([d74fc72](https://github.com/janus-idp/backstage-plugins/commit/d74fc72ab7e0a843da047c7b6570d8a6fbc068e1)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.3.3 - -## @janus-idp/backstage-plugin-matomo [1.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.1.0...@janus-idp/backstage-plugin-matomo@1.1.1) (2023-11-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.3.2 - -## @janus-idp/backstage-plugin-matomo [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.0.1...@janus-idp/backstage-plugin-matomo@1.1.0) (2023-11-01) - -### Features - -- **dynamic-plugins:** publish dynamic assets for all frontend plugins ([#896](https://github.com/janus-idp/backstage-plugins/issues/896)) ([dcfb0ac](https://github.com/janus-idp/backstage-plugins/commit/dcfb0ac56769c82f6b8b2cef2726251e0b60c375)) - -## @janus-idp/backstage-plugin-matomo [1.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-matomo@1.0.0...@janus-idp/backstage-plugin-matomo@1.0.1) (2023-10-19) - -## @janus-idp/backstage-plugin-matomo 1.0.0 (2023-09-22) - -### Features - -- **#360:** implemented matomo plugin ([#370](https://github.com/janus-idp/backstage-plugins/issues/370)) ([1112a7e](https://github.com/janus-idp/backstage-plugins/commit/1112a7ee0e99e3f9959a8ec05554fde2d459452d)), closes [#360](https://github.com/janus-idp/backstage-plugins/issues/360) [#360](https://github.com/janus-idp/backstage-plugins/issues/360) diff --git a/plugins/matomo/README.md b/plugins/matomo/README.md index 9ad5f56b63..b92e69b54d 100644 --- a/plugins/matomo/README.md +++ b/plugins/matomo/README.md @@ -1,49 +1,3 @@ -# Matomo Plugin +# Deprecated -The matomo plugin shows the basic analytics from [Matomo](https://matomo.org/) - -![Matomo tab](./docs/matomo-tab.png) - -## Getting started - -1. Install the plugin - -```bash -yarn workspace app add @janus-idp/backstage-plugin-matomo -``` - -2. Make sure the [Matomo backend plugin](../matomo-backend/README.md) is installed and configured - -### Entity Pages - -1. Add the plugin as a tab to website entity pages - -```ts -// In packages/app/src/components/catalog/EntityPage.tsx -import { MatomoPage } from '@janus-idp/plugin-matomo'; - -const websiteEntityPage = ( - - - - - -); -``` - -2. Add `matomo.io/site-id`annotation to `catalog-info-yaml` - -```yaml -metadata: - name: matomo-website - annotations: - matomo.io/site-id: ', - title: 'Root Page', - path: '/matomo', - }) - .render(); diff --git a/plugins/matomo/docs/matomo-tab.png b/plugins/matomo/docs/matomo-tab.png deleted file mode 100644 index 667a82a3cd..0000000000 Binary files a/plugins/matomo/docs/matomo-tab.png and /dev/null differ diff --git a/plugins/matomo/package.json b/plugins/matomo/package.json deleted file mode 100644 index 5444ddd051..0000000000 --- a/plugins/matomo/package.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "name": "@janus-idp/backstage-plugin-matomo", - "version": "1.10.1", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public", - "main": "dist/index.esm.js", - "types": "dist/index.d.ts" - }, - "configSchema": "config.d.ts", - "backstage": { - "role": "frontend-plugin", - "supported-versions": "1.32.5", - "pluginId": "matomo", - "pluginPackages": [ - "@janus-idp/backstage-plugin-matomo", - "@janus-idp/backstage-plugin-matomo-backend" - ] - }, - "sideEffects": false, - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint:check": "backstage-cli package lint", - "lint:fix": "backstage-cli package lint --fix", - "postpack": "backstage-cli package postpack", - "prepack": "backstage-cli package prepack", - "start": "backstage-cli package start", - "test": "backstage-cli package test --passWithNoTests --coverage", - "tsc": "tsc", - "prettier:check": "prettier --ignore-unknown --check .", - "prettier:fix": "prettier --ignore-unknown --write ." - }, - "dependencies": { - "@backstage/catalog-model": "^1.7.0", - "@backstage/core-components": "^0.15.1", - "@backstage/core-plugin-api": "^1.10.0", - "@backstage/plugin-catalog-react": "^1.14.0", - "@backstage/theme": "^0.6.0", - "@mui/icons-material": "^5.15.18", - "@mui/material": "^5.15.18", - "@tanstack/react-query": "^4.36.1", - "axios": "^1.7.4", - "react-use": "^17.4.0", - "recharts": "^2.9.0" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0" - }, - "devDependencies": { - "@backstage/cli": "0.28.2", - "@backstage/core-app-api": "1.15.1", - "@backstage/dev-utils": "1.1.2", - "@backstage/test-utils": "1.7.0", - "@redhat-developer/red-hat-developer-hub-theme": "0.4.0", - "@testing-library/jest-dom": "6.4.8", - "@testing-library/react": "14.3.1", - "@testing-library/user-event": "14.5.2", - "@types/node": "18.19.33", - "cross-fetch": "4.0.0", - "msw": "1.3.3", - "prettier": "3.3.3" - }, - "files": [ - "dist", - "dist-scalprum", - "config.d.ts", - "app-config.janus-idp.yaml" - ], - "repository": { - "type": "git", - "url": "https://github.com/janus-idp/backstage-plugins", - "directory": "plugins/matomo" - }, - "keywords": [ - "support:tech-preview", - "lifecycle:active", - "backstage", - "plugin" - ], - "homepage": "https://red.ht/rhdh", - "bugs": "https://github.com/janus-idp/backstage-plugins/issues", - "maintainers": [ - "@janus-idp/maintainers-plugins", - "@janus-idp/devex-uxe" - ], - "author": "The Backstage Community" -} diff --git a/plugins/matomo/src/api/index.ts b/plugins/matomo/src/api/index.ts deleted file mode 100644 index e8648da672..0000000000 --- a/plugins/matomo/src/api/index.ts +++ /dev/null @@ -1,238 +0,0 @@ -import { ConfigApi, createApiRef, FetchApi } from '@backstage/core-plugin-api'; - -import { - TActionByPageURLMetrics, - TActionMetrics, - TDeviceMetrics, - TGeoMetrics, - TUserVisitMetrics, - TUserVisitReportData, -} from './types'; - -type Metric = { value: number; metric: string }; - -export type MatomoAPI = { - getUserVisitMetrics: ( - idSite: string, - period: string, - date: string, - ) => Promise; - getUserGeoMetrics: ( - idSite: string, - period: string, - date: string, - ) => Promise; - getUserDeviceMetrics: ( - idSite: string, - period: string, - date: string, - ) => Promise; - getUserActionByPageURL: ( - idSite: string, - period: string, - date: string, - ) => Promise< - Array< - Omit & { - avg_time_on_page: number; - } - > - >; - getUserActionMetrics: ( - idSite: string, - period: string, - date: string, - ) => Promise; -}; - -type Options = { - configApi: ConfigApi; - fetchApi: FetchApi; -}; - -export const matomoApiRef = createApiRef({ - id: 'plugin.matomo.service', -}); - -export const transformVisitByTime = ( - reportData: TUserVisitMetrics['reportData'], -) => { - const data: { name: string; visitors: number; uniqVisitors: number }[] = []; - Object.keys(reportData).forEach(key => { - data.push({ - name: key, - visitors: - (reportData[key as keyof TUserVisitReportData] as TUserVisitReportData) - .nb_visits || 0, - uniqVisitors: - (reportData[key as keyof TUserVisitReportData] as TUserVisitReportData) - .nb_uniq_visitors || 0, - }); - }); - return data.sort( - (a, b) => new Date(a.name).valueOf() - new Date(b.name).valueOf(), - ); -}; - -export class MatomoApiClient implements MatomoAPI { - private readonly configApi: ConfigApi; - private readonly fetchApi: FetchApi; - - constructor(options: Options) { - this.configApi = options.configApi; - this.fetchApi = options.fetchApi; - } - - async getUserVisitMetrics( - idSite: string, - period: string, - date: string, - ): Promise { - const backendUrl = this.configApi.getString('backend.baseUrl'); - const res = await this.fetchApi.fetch( - `${backendUrl}/api/matomo?module=API&format=json`, - { - method: 'POST', - body: new URLSearchParams({ - idSite, - method: 'API.getProcessedReport', - period, - date, - apiModule: 'VisitsSummary', - apiAction: 'get', - }).toString(), - headers: { - 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', - }, - }, - ); - return res.json(); - } - - async getUserGeoMetrics( - idSite: string, - period: string, - date: string, - ): Promise { - const backendUrl = this.configApi.getString('backend.baseUrl'); - const res = await this.fetchApi.fetch( - `${backendUrl}/api/matomo?module=API&format=json`, - { - method: 'POST', - body: new URLSearchParams({ - idSite, - method: 'API.getProcessedReport', - period, - date, - apiModule: 'UserCountry', - apiAction: 'getCountry', - }).toString(), - headers: { - 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', - }, - }, - ); - return res.json(); - } - - async getUserDeviceMetrics( - idSite: string, - period: string, - date: string, - ): Promise { - const backendUrl = this.configApi.getString('backend.baseUrl'); - const res = await this.fetchApi.fetch( - `${backendUrl}/api/matomo?module=API&format=json`, - { - method: 'POST', - body: new URLSearchParams({ - idSite, - method: 'API.getProcessedReport', - period, - date, - apiModule: 'DevicesDetection', - apiAction: 'getType', - }).toString(), - headers: { - 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', - }, - }, - ); - return res.json(); - } - - async getUserActionByPageURL( - idSite: string, - period: string, - date: string, - ): Promise< - Array< - Omit & { - avg_time_on_page: number; - } - > - > { - const backendUrl = this.configApi.getString('backend.baseUrl'); - const res = await this.fetchApi.fetch( - `${backendUrl}/api/matomo?module=API&format=json`, - { - method: 'POST', - body: new URLSearchParams({ - idSite, - method: 'API.getProcessedReport', - period, - date, - apiModule: 'Actions', - apiAction: 'getPageUrls', - }).toString(), - headers: { - 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', - }, - }, - ); - const data = (await res.json()) as TActionByPageURLMetrics; - return data.reportData.map(({ bounce_rate, avg_time_on_page, ...el }) => { - const avgTimeStr = avg_time_on_page.split(':'); - const avgTime = - parseInt(avgTimeStr[0], 10) * 3600 + - parseInt(avgTimeStr[1], 10) * 60 + - parseInt(avgTimeStr[2], 10); - - return { - ...el, - bounce_rate: bounce_rate.slice(0, -1), - avg_time_on_page: avgTime, - }; - }); - } - - async getUserActionMetrics( - idSite: string, - period: string, - date: string, - ): Promise { - const backendUrl = this.configApi.getString('backend.baseUrl'); - const res = await this.fetchApi.fetch( - `${backendUrl}/api/matomo?module=API&format=json`, - { - method: 'POST', - body: new URLSearchParams({ - idSite, - method: 'API.getProcessedReport', - period, - date, - apiModule: 'Actions', - apiAction: 'get', - }).toString(), - headers: { - 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', - }, - }, - ); - const { reportData, columns } = (await res.json()) as TActionMetrics; - return Object.keys(columns).map(metric => ({ - metric: columns[metric as keyof TActionMetrics['reportData']], - value: reportData?.[metric as keyof TActionMetrics['reportData']], - })); - } -} diff --git a/plugins/matomo/src/api/types.ts b/plugins/matomo/src/api/types.ts deleted file mode 100644 index 3cfc6edfe8..0000000000 --- a/plugins/matomo/src/api/types.ts +++ /dev/null @@ -1,60 +0,0 @@ -export type TUserVisitMetrics = { - columns: Record; - reportData: TUserVisitReportData | Record; -}; - -export type TUserVisitReportData = { - nb_uniq_visitors: number; - nb_visits: number; - nb_actions: number; - max_actions: number; - nb_actions_per_visit: number; - avg_time_on_site: string; - bounce_rate: string; -}; - -export type TGeoMetrics = { - columns: Record; - reportData: Array; -}; - -export type TDeviceMetrics = { - columns: Record; - reportData: Array; -}; - -export type TActionMetrics = { - columns: Record; - reportData: { - nb_pageviews: number; - nb_uniq_pageviews: number; - nb_downloads: number; - nb_uniq_downloads: number; - nb_outlinks: number; - nb_uniq_outlinks: number; - nb_searches: number; - nb_keywords: number; - }; -}; - -type TVisitorReport = { - label: string; - nb_uniq_visitors: number; - nb_visits: number; - nb_actions: number; - nb_actions_per_visit: number; - avg_time_on_site: string; - bounce_rate: string; - revenue: string; -}; - -export type TActionByPageURLMetrics = { - reportData: Array<{ - label: string; - nb_visits: number; - nb_hits: number; - bounce_rate: string; - avg_time_on_page: string; - exit_rate: string; - }>; -}; diff --git a/plugins/matomo/src/components/MatomoPage/MatomoPage.tsx b/plugins/matomo/src/components/MatomoPage/MatomoPage.tsx deleted file mode 100644 index 167009cd1c..0000000000 --- a/plugins/matomo/src/components/MatomoPage/MatomoPage.tsx +++ /dev/null @@ -1,516 +0,0 @@ -/* eslint-disable no-nested-ternary */ -import React, { ReactNode, useState } from 'react'; -import useAsync from 'react-use/lib/useAsync'; - -import { Entity } from '@backstage/catalog-model'; -import { - InfoCard, - MissingAnnotationEmptyState, - Table, - TableColumn, -} from '@backstage/core-components'; -import { configApiRef, useApi } from '@backstage/core-plugin-api'; -import { useEntity } from '@backstage/plugin-catalog-react'; - -import Assessment from '@mui/icons-material/Assessment'; -import ContactMail from '@mui/icons-material/ContactMail'; -import Box from '@mui/material/Box'; -import Card from '@mui/material/Card'; -import CardContent from '@mui/material/CardContent'; -import CircularProgress from '@mui/material/CircularProgress'; -import FormControl from '@mui/material/FormControl'; -import Grid from '@mui/material/Grid'; -import InputLabel from '@mui/material/InputLabel'; -import MenuItem from '@mui/material/MenuItem'; -import Select from '@mui/material/Select'; -import MuiTooltip from '@mui/material/Tooltip'; -import Typography from '@mui/material/Typography'; -import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; -import { - CartesianGrid, - Cell, - Legend, - Line, - LineChart, - Pie, - PieChart, - ResponsiveContainer, - Tooltip, - XAxis, - YAxis, -} from 'recharts'; - -import { matomoApiRef, transformVisitByTime } from '../../api'; -import { StatsCard } from './StatsCard'; - -const visitColumns: TableColumn[] = [ - { - title: 'Type', - field: 'metric', - }, - { - title: 'Value', - field: 'value', - }, -]; - -const geoColumns: TableColumn[] = [ - { - title: 'Country', - field: 'label', - }, - { - title: 'Avg. Site Time', - field: 'avg_time_on_site', - }, - { - title: 'Bounce Rate', - field: 'bounce_rate', - }, - { - title: 'Actions', - field: 'nb_actions', - }, - { - title: 'Actions/Visit', - field: 'nb_actions_per_visit', - }, - { - title: 'Visitors', - field: 'nb_visits', - }, - { - title: 'Unique Visitors', - field: 'nb_uniq_visitors', - }, -]; - -const Center = ({ children }: { children: ReactNode }) => ( -
- {children} -
-); - -const EmptyState = () => ( - - N/A - -); - -const getMatomoConfig = (entity: Entity) => - entity.metadata.annotations?.['matomo.io/site-id']; - -export const MatomoHomePage = () => { - const [period, setPeriod] = useState('day'); - const [range, setRange] = useState('today'); - const [lineGraphRange, setLineGraphRange] = useState('last10'); - - const { entity } = useEntity(); - const config = useApi(configApiRef); - const matomoApi = useApi(matomoApiRef); - const matomoSiteId = getMatomoConfig(entity); - - const matomoContact = config.getOptionalString('matomo.contactUsLink'); - const matomoInstanceUrl = config.getOptionalString('matomo.frontendBaseUrl'); - const isMatomoConfigured = Boolean(matomoSiteId); - - // visitor data - const { loading: isVisitSummaryLoading, value: visitSummary } = - useAsync(async () => { - if (matomoSiteId) { - return await matomoApi.getUserVisitMetrics(matomoSiteId, period, range); - } - return undefined; - }, [matomoSiteId, period, range]); - - const { loading: isVisitByTimeLoading, value: visitByTime } = - useAsync(async () => { - if (matomoSiteId) { - const data = await matomoApi.getUserVisitMetrics( - matomoSiteId, - period, - lineGraphRange, - ); - return transformVisitByTime(data.reportData); - } - return undefined; - }, [matomoSiteId, period, lineGraphRange]); - - const { loading: isGeoMetricsLoading, value: geoMetrics } = - useAsync(async () => { - if (matomoSiteId) { - return await matomoApi.getUserGeoMetrics(matomoSiteId, period, range); - } - return undefined; - }, [matomoSiteId, period, range]); - - const { loading: isDeviceMetricsLoading, value: deviceMetrics } = - useAsync(async () => { - if (matomoSiteId) { - return await matomoApi.getUserDeviceMetrics( - matomoSiteId, - period, - range, - ); - } - return undefined; - }, [matomoSiteId, period, range]); - - const { loading: isActionMetricsLoading, value: actionMetrics } = - useAsync(async () => { - if (matomoSiteId) { - return await matomoApi.getUserActionMetrics( - matomoSiteId, - period, - range, - ); - } - return undefined; - }, [matomoSiteId, period, range]); - - const { loading: isActionByPageUrlLoading, value: actionByPageURL } = - useAsync(async () => { - if (matomoSiteId) { - return await matomoApi.getUserActionByPageURL( - matomoSiteId, - period, - range, - ); - } - return undefined; - }, [matomoSiteId, period, range]); - - const visitPieChart = [ - { name: 'visitors', value: visitSummary?.reportData?.nb_visits }, - { - name: 'unique visitors', - value: visitSummary?.reportData?.nb_uniq_visitors, - }, - ]; - - if (!isMatomoConfigured) { - return ; - } - - return ( - <> - - - - - Matomo Site ID: {matomoSiteId} - - - {Boolean(matomoContact) && ( - - - - - - - - )} - {Boolean(matomoInstanceUrl) && ( - - - - - - - - )} - - - -
- - Period - - -
-
- - Range - - -
-
-
-
- - - - - - Visit Summary - - {isVisitSummaryLoading ? ( -
- -
- ) : Boolean(visitSummary?.reportData?.nb_visits) ? ( - - - - - - - - - - - ) : ( -
- -
- )} -
-
-
- - - -
- - Visits Over Time - -
- - Range - - -
-
- {isVisitByTimeLoading ? ( -
- -
- ) : Boolean(visitByTime) ? ( - - - - - - - - - - - - ) : ( -
- -
- )} -
-
-
- - - - - - - - - - - - - - - - - - - Visit By Page URL - - {isActionByPageUrlLoading ? ( -
- -
- ) : Boolean(actionByPageURL?.length) ? ( - - - - - - - - - - - - ) : ( -
- -
- )} -
-
-
- - - - - Time By Page URL - - {isActionByPageUrlLoading ? ( -
- -
- ) : Boolean(actionByPageURL?.length) ? ( - - - - - - - - - - - - ) : ( -
- -
- )} -
-
-
-
- - -
- - -
- - - - ); -}; - -const queryClient = new QueryClient(); - -export const MatomoPage = () => ( - - - -); diff --git a/plugins/matomo/src/components/MatomoPage/StatsCard.tsx b/plugins/matomo/src/components/MatomoPage/StatsCard.tsx deleted file mode 100644 index e5ee4df667..0000000000 --- a/plugins/matomo/src/components/MatomoPage/StatsCard.tsx +++ /dev/null @@ -1,48 +0,0 @@ -import React, { ReactNode } from 'react'; - -import Card from '@mui/material/Card'; -import CardContent from '@mui/material/CardContent'; -import CircularProgress from '@mui/material/CircularProgress'; -import Typography from '@mui/material/Typography'; - -type Props = { - title: string; - subTitle?: ReactNode; - isLoading?: boolean; -}; - -export const StatsCard = ({ title, subTitle, isLoading }: Props) => { - return ( - - - {isLoading ? ( - - ) : ( - <> - - {title} - - - {subTitle || 'N/A'} - - - )} - - - ); -}; diff --git a/plugins/matomo/src/components/MatomoPage/index.tsx b/plugins/matomo/src/components/MatomoPage/index.tsx deleted file mode 100644 index 709d410861..0000000000 --- a/plugins/matomo/src/components/MatomoPage/index.tsx +++ /dev/null @@ -1 +0,0 @@ -export { MatomoPage } from './MatomoPage'; diff --git a/plugins/matomo/src/index.ts b/plugins/matomo/src/index.ts deleted file mode 100644 index a13126b81f..0000000000 --- a/plugins/matomo/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { matomoPlugin, MatomoPage } from './plugin'; diff --git a/plugins/matomo/src/plugin.test.ts b/plugins/matomo/src/plugin.test.ts deleted file mode 100644 index f101d39bc4..0000000000 --- a/plugins/matomo/src/plugin.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { matomoPlugin } from './plugin'; - -describe('matomo', () => { - it('should export plugin', () => { - expect(matomoPlugin).toBeDefined(); - }); -}); diff --git a/plugins/matomo/src/plugin.ts b/plugins/matomo/src/plugin.ts deleted file mode 100644 index 1bc9c6ffff..0000000000 --- a/plugins/matomo/src/plugin.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { - configApiRef, - createApiFactory, - createPlugin, - createRoutableExtension, - fetchApiRef, -} from '@backstage/core-plugin-api'; - -import { MatomoApiClient, matomoApiRef } from './api'; -import { rootRouteRef } from './routes'; - -export const matomoPlugin = createPlugin({ - id: 'matomo', - routes: { - root: rootRouteRef, - }, - apis: [ - createApiFactory({ - api: matomoApiRef, - deps: { - configApi: configApiRef, - fetchApi: fetchApiRef, - }, - factory: ({ configApi, fetchApi }) => - new MatomoApiClient({ configApi, fetchApi }), - }), - ], -}); - -export const MatomoPage = matomoPlugin.provide( - createRoutableExtension({ - name: 'MatomoPage', - component: () => import('./components/MatomoPage').then(m => m.MatomoPage), - mountPoint: rootRouteRef, - }), -); diff --git a/plugins/matomo/src/routes.ts b/plugins/matomo/src/routes.ts deleted file mode 100644 index 3fe9f8fa14..0000000000 --- a/plugins/matomo/src/routes.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createRouteRef } from '@backstage/core-plugin-api'; - -export const rootRouteRef = createRouteRef({ - id: 'matomo', -}); diff --git a/plugins/matomo/src/setupTests.ts b/plugins/matomo/src/setupTests.ts deleted file mode 100644 index 48c09b5346..0000000000 --- a/plugins/matomo/src/setupTests.ts +++ /dev/null @@ -1,2 +0,0 @@ -import '@testing-library/jest-dom'; -import 'cross-fetch/polyfill'; diff --git a/plugins/matomo/tsconfig.json b/plugins/matomo/tsconfig.json deleted file mode 100644 index 8bbeccfd36..0000000000 --- a/plugins/matomo/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": ["src", "dev", "migrations"], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "../../dist-types/plugins/matomo", - "rootDir": "." - } -} diff --git a/plugins/matomo/turbo.json b/plugins/matomo/turbo.json deleted file mode 100644 index e9962c9914..0000000000 --- a/plugins/matomo/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "tsc": { - "outputs": ["../../dist-types/plugins/matomo/**"] - } - } -} diff --git a/plugins/quay-actions/.eslintignore b/plugins/quay-actions/.eslintignore deleted file mode 100644 index 55289f4a23..0000000000 --- a/plugins/quay-actions/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist-dynamic -dist-scalprum diff --git a/plugins/quay-actions/.eslintrc.js b/plugins/quay-actions/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/quay-actions/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/quay-actions/.lintstagedrc.json b/plugins/quay-actions/.lintstagedrc.json deleted file mode 100644 index 14b2263def..0000000000 --- a/plugins/quay-actions/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*": "prettier --ignore-unknown --write", - "*.{js,jsx,ts,tsx,mjs,cjs}": "backstage-cli package lint --fix" -} diff --git a/plugins/quay-actions/.prettierignore b/plugins/quay-actions/.prettierignore deleted file mode 100644 index fc8357d99e..0000000000 --- a/plugins/quay-actions/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -dist-types -coverage -.vscode -CHANGELOG.md -generated -templates -*.hbs -renovate.json -dist-dynamic -dist-scalprum -playwright-report diff --git a/plugins/quay-actions/.prettierrc.js b/plugins/quay-actions/.prettierrc.js deleted file mode 100644 index 84cbac65b5..0000000000 --- a/plugins/quay-actions/.prettierrc.js +++ /dev/null @@ -1,20 +0,0 @@ -// @ts-check - -/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ -module.exports = { - ...require('@spotify/prettier-config'), - plugins: ['@ianvs/prettier-plugin-sort-imports'], - importOrder: [ - '^react(.*)$', - '', - '^@backstage/(.*)$', - '', - '', - '', - '^@janus-idp/(.*)$', - '', - '', - '', - '^[.]', - ], -}; diff --git a/plugins/quay-actions/.versionhistory.md b/plugins/quay-actions/.versionhistory.md deleted file mode 100644 index 161a6cfa3e..0000000000 --- a/plugins/quay-actions/.versionhistory.md +++ /dev/null @@ -1,2 +0,0 @@ -- Bumped to 1.4.0 in main branch for next release 1.2.0 -- Bumped to 1.8.0 in main branch for next release 1.3.0 diff --git a/plugins/quay-actions/CHANGELOG.md b/plugins/quay-actions/CHANGELOG.md deleted file mode 100644 index d225d6d309..0000000000 --- a/plugins/quay-actions/CHANGELOG.md +++ /dev/null @@ -1,320 +0,0 @@ -### Dependencies - -## 2.2.1 - -### Patch Changes - -- 0e6bfd3: feat: update Backstage to the latest version - - Update to Backstage 1.32.5 - -## 2.2.0 - -### Minor Changes - -- 8244f28: chore(deps): update to backstage 1.32 - -## 2.1.1 - -### Patch Changes - -- 7342e9b: chore: remove @janus-idp/cli dep and relink local packages - - This update removes `@janus-idp/cli` from all plugins, as it’s no longer necessary. Additionally, packages are now correctly linked with a specified version. - -## 2.1.0 - -### Minor Changes - -- d9551ae: feat(deps): update to backstage 1.31 - -### Patch Changes - -- d9551ae: Change local package references to a `*` -- d9551ae: pin the @janus-idp/cli package -- d9551ae: upgrade to yarn v3 -- d9551ae: Change the export-dynamic script to no longer use any flags and remove the tracking of the dist-dynamic folder - -* **@janus-idp/cli:** upgraded to 1.15.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.1 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.14.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.1 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.7.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.6.0...@janus-idp/backstage-scaffolder-backend-module-quay@1.7.0) (2024-07-26) - -### Features - -- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802)) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.6.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.5.1...@janus-idp/backstage-scaffolder-backend-module-quay@1.6.0) (2024-07-24) - -### Features - -- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5)) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.5.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.5.0...@janus-idp/backstage-scaffolder-backend-module-quay@1.5.1) (2024-06-19) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.1 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.13...@janus-idp/backstage-scaffolder-backend-module-quay@1.5.0) (2024-06-13) - -### Features - -- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.11.0 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.12...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.13) (2024-06-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.1 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.11...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.12) (2024-06-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.0 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.10...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.11) (2024-06-04) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.9...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.10) (2024-06-03) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.9.0 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.8...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.9) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.10 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.7...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.8) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.9 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.6...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.7) (2024-05-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.7 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.5...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.6) (2024-05-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.6 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.4...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.5) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.5 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.3...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.4) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.4 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.2...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.3) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.3 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.1...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.2) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.2 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.4.0...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.1) (2024-04-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.1 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.10...@janus-idp/backstage-scaffolder-backend-module-quay@1.4.0) (2024-04-15) - -### Features - -- checkPluginVersion.sh bump plugins for 1.2.0 release ([#1511](https://github.com/janus-idp/backstage-plugins/issues/1511)) ([73c6588](https://github.com/janus-idp/backstage-plugins/commit/73c6588adb7e8c20907b06f2a8ef248cfd4332e4)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.0 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.9...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.10) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.10 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.8...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.9) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.9 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.7...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.8) (2024-04-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.8 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.6...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.7) (2024-04-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.7 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.5...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.6) (2024-03-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.6 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.4...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.5) (2024-03-04) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.5 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.3...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.4) (2024-02-27) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.4 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.2...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.3) (2024-02-26) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.3 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.1...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.2) (2024-02-21) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.2 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.3.0...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.1) (2024-02-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.1 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.7...@janus-idp/backstage-scaffolder-backend-module-quay@1.3.0) (2024-01-30) - -### Features - -- add new backend system support for existing backend plugins that have not been migrated over yet ([#1132](https://github.com/janus-idp/backstage-plugins/issues/1132)) ([06e16fd](https://github.com/janus-idp/backstage-plugins/commit/06e16fdcf64257dd08297cb727445d9a8a23c522)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.0 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.6...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.7) (2024-01-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.6.0 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.5...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.6) (2024-01-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.5.0 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.4...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.5) (2023-12-07) - -### Bug Fixes - -- attempt to force a bump of backend plugins ([#1007](https://github.com/janus-idp/backstage-plugins/issues/1007)) ([7a37225](https://github.com/janus-idp/backstage-plugins/commit/7a372254fb7e8107aa794f7900a6511eee096677)) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.3...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.4) (2023-12-07) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.7 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.2...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.3) (2023-11-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.6 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.1...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.2) (2023-11-22) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.5 - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.2.0...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.1) (2023-11-21) - -### Bug Fixes - -- sync versions in dynamic assets and publish derived packages as additional packages ([#963](https://github.com/janus-idp/backstage-plugins/issues/963)) ([7d0a386](https://github.com/janus-idp/backstage-plugins/commit/7d0a38609b4a18b54c75378a150e8b5c3ba8ff43)) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.1.1...@janus-idp/backstage-scaffolder-backend-module-quay@1.2.0) (2023-11-21) - -### Features - -- make all backend plugins dynamic ([#954](https://github.com/janus-idp/backstage-plugins/issues/954)) ([1b4338a](https://github.com/janus-idp/backstage-plugins/commit/1b4338a45c3b92f5607391b2bfc17c4d29050ce3)) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.1.0...@janus-idp/backstage-scaffolder-backend-module-quay@1.1.1) (2023-10-19) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.0.3...@janus-idp/backstage-scaffolder-backend-module-quay@1.1.0) (2023-08-14) - -### Features - -- **ts:** transpile each plugin separately ([#634](https://github.com/janus-idp/backstage-plugins/issues/634)) ([b94c4dc](https://github.com/janus-idp/backstage-plugins/commit/b94c4dc50ada328e5ce1bed5fb7c76f64607e1ee)) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.0.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.0.2...@janus-idp/backstage-scaffolder-backend-module-quay@1.0.3) (2023-07-25) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.0.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.0.1...@janus-idp/backstage-scaffolder-backend-module-quay@1.0.2) (2023-06-14) - -### Documentation - -- update plugin README formatting ([#396](https://github.com/janus-idp/backstage-plugins/issues/396)) ([9b39056](https://github.com/janus-idp/backstage-plugins/commit/9b39056f6c66e9a6a0a5d0c4059420dff66db263)), closes [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369) [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369) - -## @janus-idp/backstage-scaffolder-backend-module-quay [1.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-scaffolder-backend-module-quay@1.0.0...@janus-idp/backstage-scaffolder-backend-module-quay@1.0.1) (2023-06-08) - -### Bug Fixes - -- **monorepo:** update test script ([#436](https://github.com/janus-idp/backstage-plugins/issues/436)) ([0f1f3ff](https://github.com/janus-idp/backstage-plugins/commit/0f1f3ff25176225076a112f90412d5dcd6f28a75)) - -### Other changes - -- reorder imports via prettier ([#419](https://github.com/janus-idp/backstage-plugins/issues/419)) ([17f1e6a](https://github.com/janus-idp/backstage-plugins/commit/17f1e6a689bd793a619ec5e42e5cdda0998f78a5)) - -## @janus-idp/backstage-scaffolder-backend-module-quay 1.0.0 (2023-05-31) - -### Features - -- **quay-actions:** create action to create quay repository ([#244](https://github.com/janus-idp/backstage-plugins/issues/244)) ([0fcd8b4](https://github.com/janus-idp/backstage-plugins/commit/0fcd8b4ed1924280048f7ec8c8571e10af711cd9)) diff --git a/plugins/quay-actions/CONTRIBUTING.md b/plugins/quay-actions/CONTRIBUTING.md deleted file mode 100644 index 3b41fe34bf..0000000000 --- a/plugins/quay-actions/CONTRIBUTING.md +++ /dev/null @@ -1,24 +0,0 @@ -# Setting up the development environment for Quay actions - -1. Add the local package dependency to the Backstage instance - - ```shell - yarn workspace backend add file:./plugins/quay-actions - ``` - -2. [Register](./README.md#configuration) the Quay actions in your Backstage project -3. **Optional**: You can use the sample template from this repository and add it as `locations` in your `app-config.yaml` file - - ```yaml - --- - catalog: - locations: - - type: file - target: ../../plugins/quay-actions/examples/templates/01-quay-template.yaml - rules: - - allow: [Template] - ``` - -4. Run `yarn dev` -5. If you don't have a Quay account created yet you can create one for free on the [quay](https://quay.io) website -6. Start using the Quay actions in your templates diff --git a/plugins/quay-actions/README.md b/plugins/quay-actions/README.md index e29083f6c9..584c6e4a01 100644 --- a/plugins/quay-actions/README.md +++ b/plugins/quay-actions/README.md @@ -1,68 +1,3 @@ -# Quay actions for Backstage +# Deprecated -This module provides [Backstage](https://backstage.io/) template [actions](https://backstage.io/docs/features/software-templates/builtin-actions) for [Quay](https://docs.quay.io/). - -The following actions are currently supported in this module: - -- Create a Quay repository - -## Installation - -Run the following command to install the action package in your Backstage project - -```bash -yarn workspace backend add @janus-idp/backstage-scaffolder-backend-module-quay -``` - -### Installing the action on the new backend - -Add the following to your `packages/backend/src/index.ts` file: - -```ts title="packages/backend/src/index.ts" -const backend = createBackend(); - -// Add the following line -backend.add(import('@janus-idp/backstage-scaffolder-backend-module-quay')); - -backend.start(); -``` - -## Configuration - -Add the Quay actions to your templates, see the [example](./examples/templates/01-quay-template.yaml) file in this repository for complete usage examples - -```yaml -action: quay:create-repository -id: create-quay-repo -name: Create quay repo -input: - baseUrl: https://quay.io - token: UW1dLVdCTj8uZWNuIW97K1k0XiBkSmppVU9MYzFT - name: foo - visibility: public - description: This is a foo repository - namespace: bar - repoKind: image -``` - -## Usage - -### Action: quay:create-repository - -#### Input - -| Parameter Name | Type | Required | Description | Example | -| -------------- | :----: | :------: | --------------------------------------------------------------------------------- | ---------------------------------------- | -| name | string | Yes | Quay repository name | foo | -| visibility | string | Yes | Visibility setting for the created repository, either public or private | public | -| description | string | Yes | Description for the created repository | This if foo repository | -| token | string | Yes | Authentication token, see [docs](https://docs.quay.io/api/) | UW1dLVdCTj8uZWNuIW97K1k0XiBkSmppVU9MYzFT | -| baseUrl | string | No | Base url of a quay instance, defaults to | | -| namespace | string | No | Namespace to create repository in, defaults to the namespace the token belongs to | bar | -| repoKind | string | No | Created repository kind, either image or application, if empty defaults to image | image | - -#### Output - -| Name | Type | Description | -| ------------- | :----: | ------------------------------------------ | -| repositoryUrl | string | Quay repository URL created by this action | +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-scaffolder-backend-module-quay` instead. \ No newline at end of file diff --git a/plugins/quay-actions/catalog-info.yaml b/plugins/quay-actions/catalog-info.yaml deleted file mode 100644 index aa8c9b1c12..0000000000 --- a/plugins/quay-actions/catalog-info.yaml +++ /dev/null @@ -1,59 +0,0 @@ -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-quay-actions - title: Quay scaffolder actions - description: Quay actions for Backstage - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/quay-actions - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/quay-actions/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/quay-actions/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/maintainers-plugins - sonarqube.org/project-key: janus-idp_backstage-plugins - tags: - - quay - - scaffolder - - actions - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/quay-actions - title: GitHub Source - icon: source - type: source -spec: - type: backstage-plugin - lifecycle: production - owner: rhdh-team - system: rhdh - subcomponentOf: janus-idp-backstage-plugins ---- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-quay-actions-module - title: '@janus-idp/backstage-scaffolder-backend-module-quay' - description: Quay actions for Backstage - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/quay-actions - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/quay-actions/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/quay-actions/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/maintainers-plugins - sonarqube.org/project-key: janus-idp_backstage-plugins - tags: - - quay - - scaffolder - - actions - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/quay-actions - title: GitHub Source - icon: source - type: source -spec: - type: backstage-frontend-plugin-module - lifecycle: production - owner: rhdh-team - system: rhdh - subcomponentOf: janus-idp-quay-actions diff --git a/plugins/quay-actions/examples/templates/01-quay-template.yaml b/plugins/quay-actions/examples/templates/01-quay-template.yaml deleted file mode 100644 index 29eaf7c96b..0000000000 --- a/plugins/quay-actions/examples/templates/01-quay-template.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: scaffolder.backstage.io/v1beta3 -kind: Template -metadata: - name: create-quay-repo - title: Create a Quay repository - description: Create a Quay repository - -spec: - type: service - parameters: - - title: Repository information - required: ['name', 'visibility', 'description', 'token'] - properties: - name: - title: Repository name - type: string - description: Name of the repository to be created - token: - title: Token - type: string - description: Bearer token used for authorization - ui:widget: password - visibility: - title: Visiblity - type: string - description: Visibility setting for the created repository, either public or private - ui:widget: select - enum: ['public', 'private'] - repoKind: - title: Repository kind - type: string - description: The created repository kind either image, application or none - ui:widget: select - enum: ['image', 'application'] - description: - title: Description - type: string - description: The repository desription - namespace: - title: Namespace - type: string - description: The users namespace is used by default - baseUrl: - title: Base URL - type: string - description: URL of your quay instance, set to "https://quay.io" by default - - steps: - - id: create-quay-repo - name: Create quay repo - action: quay:create-repository - input: - baseUrl: ${{ parameters.baseUrl }} - token: ${{ parameters.token }} - name: ${{ parameters.name }} - visibility: ${{ parameters.visibility }} - description: ${{ parameters.description }} - namespace: ${{ parameters.namespace }} - repoKind: ${{ parameters.repoKind }} - - output: - links: - - title: Quay repository link - url: ${{ steps['create-quay-repo'].output.repositoryUrl }} diff --git a/plugins/quay-actions/package.json b/plugins/quay-actions/package.json deleted file mode 100644 index 8da20d6b41..0000000000 --- a/plugins/quay-actions/package.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "name": "@janus-idp/backstage-scaffolder-backend-module-quay", - "description": "The quay-actions module for @backstage/plugin-scaffolder-backend", - "version": "2.2.1", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public" - }, - "backstage": { - "role": "backend-plugin-module", - "supported-versions": "1.32.5", - "pluginId": "scaffolder", - "pluginPackage": "@backstage/plugin-scaffolder-backend" - }, - "exports": { - ".": "./src/index.ts", - "./package.json": "./package.json" - }, - "typesVersions": { - "*": { - "package.json": [ - "package.json" - ] - } - }, - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint:check": "backstage-cli package lint", - "lint:fix": "backstage-cli package lint --fix", - "postpack": "backstage-cli package postpack", - "prepack": "backstage-cli package prepack", - "start": "backstage-cli package start", - "test": "backstage-cli package test --passWithNoTests --coverage", - "tsc": "tsc", - "prettier:check": "prettier --ignore-unknown --check .", - "prettier:fix": "prettier --ignore-unknown --write ." - }, - "dependencies": { - "@backstage/backend-plugin-api": "^1.0.1", - "@backstage/plugin-scaffolder-node": "^0.5.0" - }, - "devDependencies": { - "@backstage/cli": "0.28.2", - "@backstage/plugin-scaffolder-node-test-utils": "0.1.14", - "prettier": "3.3.3" - }, - "files": [ - "dist", - "dist-dynamic/*.*", - "dist-dynamic/dist/**" - ], - "repository": { - "type": "git", - "url": "https://github.com/janus-idp/backstage-plugins", - "directory": "plugins/quay-actions" - }, - "maintainers": [ - "@janus-idp/maintainers-plugins" - ], - "author": "Red Hat", - "homepage": "https://red.ht/rhdh", - "bugs": "https://github.com/janus-idp/backstage-plugins/issues", - "keywords": [ - "support:production", - "lifecycle:active" - ] -} diff --git a/plugins/quay-actions/src/actions/createQuayRepository.test.ts b/plugins/quay-actions/src/actions/createQuayRepository.test.ts deleted file mode 100644 index af3406882e..0000000000 --- a/plugins/quay-actions/src/actions/createQuayRepository.test.ts +++ /dev/null @@ -1,166 +0,0 @@ -import { createMockActionContext } from '@backstage/plugin-scaffolder-node-test-utils'; - -import { - createQuayRepositoryAction, - ResponseBody, - ResponseErrorBody, -} from './createQuayRepository'; - -describe('quay:create-repository', () => { - const action = createQuayRepositoryAction(); - - beforeEach(() => { - jest.resetAllMocks(); - }); - - const mockContext = createMockActionContext(); - - it('should create a quay repository', async () => { - const body: ResponseBody = { - name: 'foo', - kind: 'image', - namespace: 'bar', - }; - const fetchMock = jest.spyOn(global, 'fetch').mockImplementationOnce(() => - Promise.resolve( - new Response(new Blob([JSON.stringify(body)]), { - status: 200, - }), - ), - ); - - await action.handler({ - ...mockContext, - input: { - baseUrl: 'http://localhost:9090', - token: 'TOKEN', - name: 'foo', - visibility: 'public', - description: 'bar', - }, - }); - - expect(fetchMock).toHaveBeenCalledTimes(1); - expect(mockContext.output).toHaveBeenCalledWith( - 'repositoryUrl', - 'http://localhost:9090/repository/bar/foo', - ); - }); - - it("should use the default url if it isn't provider", async () => { - const fetchMock = jest.spyOn(global, 'fetch').mockImplementationOnce(() => - Promise.resolve( - new Response(new Blob(['{}']), { - status: 200, - }), - ), - ); - - await action.handler({ - ...mockContext, - input: { - token: 'TOKEN', - name: 'foo', - visibility: 'public', - description: 'bar', - }, - }); - - expect(fetchMock).toHaveBeenCalledWith( - 'https://quay.io/api/v1/repository', - { - body: '{"description":"bar","repository":"foo","visibility":"public"}', - headers: { - Accept: 'application/json', - Authorization: 'Bearer TOKEN', - 'Content-Type': 'application/json', - }, - method: 'POST', - }, - ); - }); - - it('should handle and format errors correctly', async () => { - const body: ResponseErrorBody = { - detail: 'Repository already exists', - error_message: 'Repository already exists', - error_type: 'invalid_request', - status: 400, - title: 'invalid_request', - type: 'https://quay.io/api/v1/error/invalid_request', - }; - - const fetchMock = jest.spyOn(global, 'fetch').mockImplementationOnce(() => - Promise.resolve( - new Response(new Blob([JSON.stringify(body)]), { - status: 400, - }), - ), - ); - - await expect(async () => { - await action.handler({ - ...mockContext, - input: { - baseUrl: 'http://localhost:9090', - token: 'TOKEN', - name: 'foo', - visibility: 'public', - description: 'bar', - }, - }); - }).rejects.toThrow( - 'Failed to create Quay repository, 400 -- Repository already exists', - ); - expect(fetchMock).toHaveBeenCalledTimes(1); - }); - - it.each([ - { - input: { - baseUrl: 'baz', - token: 'TOKEN', - name: 'foo', - visibility: 'public', - description: 'bar', - }, - error: '"baseUrl" is invalid', - name: 'url', - }, - { - input: { - baseUrl: 'http://example.com', - token: 'TOKEN', - name: 'foo', - visibility: 'baz', - description: 'bar', - }, - error: - 'For the "visibility" parameter "baz" is not a valid option, available options are: public, private', - name: 'visibility', - }, - { - input: { - baseUrl: 'http://example.com', - token: 'TOKEN', - name: 'foo', - visibility: 'public', - description: 'bar', - repoKind: 'baz', - }, - error: - 'For the "repository kind" parameter "baz" is not a valid option, available options are: application, image, none', - name: 'repoKind', - }, - ])( - 'should throw an error on invalid $name input', - async ({ input, error }) => { - await expect(async () => { - await action.handler({ - ...mockContext, - input, - }); - }).rejects.toThrow(error); - }, - ); -}); diff --git a/plugins/quay-actions/src/actions/createQuayRepository.ts b/plugins/quay-actions/src/actions/createQuayRepository.ts deleted file mode 100644 index 1fd19c0942..0000000000 --- a/plugins/quay-actions/src/actions/createQuayRepository.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { createTemplateAction } from '@backstage/plugin-scaffolder-node'; - -export interface ResponseBody { - namespace: string; - name: string; - kind: string; -} -export interface ResponseErrorBody { - detail: string; - error_message: string; - error_type: string; - title: string; - type: string; - status: number; -} -interface RequestBody { - repository: string; - visibility: string; - namespace?: string; - description: string; - repo_kind?: string; -} - -type TemplateActionParameters = { - name: string; - visibility: string; - description: string; - token: string; - baseUrl?: string; - namespace?: string; - repoKind?: string; -}; - -const getUrl = (url: string | undefined): string => { - if (!url) { - return 'https://quay.io'; - } - try { - // eslint-disable-next-line no-new - new URL(url); - } catch (error) { - throw new Error('"baseUrl" is invalid'); - } - return url; -}; - -const isValueValid = ( - value: string | undefined, - valueName: string, - valueOpts: Array, -) => { - if (valueOpts.includes(value)) { - return; - } - throw new Error( - `For the "${valueName}" parameter "${value}" is not a valid option,` + - ` available options are: ${valueOpts.map(v => v || 'none').join(', ')}`, - ); -}; - -export function createQuayRepositoryAction() { - return createTemplateAction({ - id: 'quay:create-repository', - description: 'Create an quay image repository', - schema: { - input: { - type: 'object', - required: ['name', 'visibility', 'description', 'token'], - properties: { - name: { - title: 'Repository name', - description: 'Name of the repository to be created', - type: 'string', - }, - visibility: { - title: 'Visibility setting', - description: - 'Visibility setting for the created repository, either public or private', - type: 'string', - }, - description: { - title: 'Repository description', - description: 'The repository desription', - type: 'string', - }, - token: { - title: 'Token', - description: 'Bearer token used for authorization', - type: 'string', - }, - baseUrl: { - title: 'Base URL', - description: - 'URL of your quay instance, set to "https://quay.io" by default', - type: 'string', - }, - namespace: { - title: 'Namespace', - description: - 'Namespace in which to create the repository, by default the users namespace', - type: 'string', - }, - repoKind: { - title: 'Repository kind', - description: - 'The crated repository type either image or an application, if empty image will be used', - type: 'string', - }, - }, - }, - output: { - type: 'object', - properties: { - repositoryUrl: { - title: 'Quay image repository URL', - type: 'string', - description: 'Created repository URL link', - }, - }, - }, - }, - async handler(ctx) { - const { token, name, visibility, namespace, description, repoKind } = - ctx.input; - const baseUrl = getUrl(ctx.input.baseUrl); - isValueValid(visibility, 'visibility', ['public', 'private']); - isValueValid(repoKind, 'repository kind', [ - 'application', - 'image', - undefined, - ]); - - const params: RequestBody = { - description, - repository: name, - visibility, - namespace, - repo_kind: repoKind, - }; - - const uri = encodeURI(`${baseUrl}/api/v1/repository`); - const response = await fetch(uri, { - headers: { - 'Content-Type': 'application/json', - Accept: 'application/json', - Authorization: `Bearer ${token}`, - }, - body: JSON.stringify(params), - method: 'POST', - }); - - if (!response.ok) { - const errorBody = (await response.json()) as ResponseErrorBody; - const errorStatus = errorBody.status || response.status; - // Some error responses don't have the structure defined in ResponseErrorBody - const errorMsg = errorBody.detail || (errorBody as any).error; - throw new Error( - `Failed to create Quay repository, ${errorStatus} -- ${errorMsg}`, - ); - } - - const body = (await response.json()) as ResponseBody; - ctx.output( - 'repositoryUrl', - `${baseUrl}/repository/${body.namespace}/${body.name}`, - ); - }, - }); -} diff --git a/plugins/quay-actions/src/actions/index.ts b/plugins/quay-actions/src/actions/index.ts deleted file mode 100644 index c94d9084f4..0000000000 --- a/plugins/quay-actions/src/actions/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { createQuayRepositoryAction } from './createQuayRepository'; diff --git a/plugins/quay-actions/src/index.ts b/plugins/quay-actions/src/index.ts deleted file mode 100644 index c0d0c5161a..0000000000 --- a/plugins/quay-actions/src/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -/***/ -/** - * The quay-actions module for @backstage/plugin-scaffolder-backend. - * - * @packageDocumentation - */ - -export * from './actions'; -export { scaffolderModuleQuayAction as default } from './module'; diff --git a/plugins/quay-actions/src/module.ts b/plugins/quay-actions/src/module.ts deleted file mode 100644 index b857a829fc..0000000000 --- a/plugins/quay-actions/src/module.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { createBackendModule } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; - -import { createQuayRepositoryAction } from './actions'; - -export const scaffolderModuleQuayAction = createBackendModule({ - moduleId: 'scaffolder-backend-quay', - pluginId: 'scaffolder', - register(env) { - env.registerInit({ - deps: { - scaffolder: scaffolderActionsExtensionPoint, - }, - async init({ scaffolder }) { - scaffolder.addActions(createQuayRepositoryAction()); - }, - }); - }, -}); diff --git a/plugins/quay-actions/tsconfig.json b/plugins/quay-actions/tsconfig.json deleted file mode 100644 index d6ae37b25e..0000000000 --- a/plugins/quay-actions/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": ["src", "dev", "migrations"], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "../../dist-types/plugins/quay-actions", - "rootDir": "." - } -} diff --git a/plugins/quay-actions/turbo.json b/plugins/quay-actions/turbo.json deleted file mode 100644 index 64f535df58..0000000000 --- a/plugins/quay-actions/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "tsc": { - "outputs": ["../../dist-types/plugins/quay-actions/**"] - } - } -} diff --git a/plugins/tekton-common/.eslintignore b/plugins/tekton-common/.eslintignore deleted file mode 100644 index 55289f4a23..0000000000 --- a/plugins/tekton-common/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist-dynamic -dist-scalprum diff --git a/plugins/tekton-common/.eslintrc.js b/plugins/tekton-common/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/tekton-common/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/tekton-common/.lintstagedrc.json b/plugins/tekton-common/.lintstagedrc.json deleted file mode 100644 index 14b2263def..0000000000 --- a/plugins/tekton-common/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*": "prettier --ignore-unknown --write", - "*.{js,jsx,ts,tsx,mjs,cjs}": "backstage-cli package lint --fix" -} diff --git a/plugins/tekton-common/.prettierignore b/plugins/tekton-common/.prettierignore deleted file mode 100644 index fc8357d99e..0000000000 --- a/plugins/tekton-common/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -dist-types -coverage -.vscode -CHANGELOG.md -generated -templates -*.hbs -renovate.json -dist-dynamic -dist-scalprum -playwright-report diff --git a/plugins/tekton-common/.prettierrc.js b/plugins/tekton-common/.prettierrc.js deleted file mode 100644 index 84cbac65b5..0000000000 --- a/plugins/tekton-common/.prettierrc.js +++ /dev/null @@ -1,20 +0,0 @@ -// @ts-check - -/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ -module.exports = { - ...require('@spotify/prettier-config'), - plugins: ['@ianvs/prettier-plugin-sort-imports'], - importOrder: [ - '^react(.*)$', - '', - '^@backstage/(.*)$', - '', - '', - '', - '^@janus-idp/(.*)$', - '', - '', - '', - '^[.]', - ], -}; diff --git a/plugins/tekton-common/.versionhistory.md b/plugins/tekton-common/.versionhistory.md deleted file mode 100644 index b17e69831a..0000000000 --- a/plugins/tekton-common/.versionhistory.md +++ /dev/null @@ -1 +0,0 @@ -- Bumped to 1.1.0 in main branch for next release 1.3.0 diff --git a/plugins/tekton-common/CHANGELOG.md b/plugins/tekton-common/CHANGELOG.md deleted file mode 100644 index 63ee379ddc..0000000000 --- a/plugins/tekton-common/CHANGELOG.md +++ /dev/null @@ -1,26 +0,0 @@ -# @janus-idp/backstage-plugin-tekton-common - -## 1.3.1 - -### Patch Changes - -- 0e6bfd3: feat: update Backstage to the latest version - - Update to Backstage 1.32.5 - -## 1.3.0 - -### Minor Changes - -- 8244f28: chore(deps): update to backstage 1.32 - -## 1.2.0 - -### Minor Changes - -- d9551ae: feat(deps): update to backstage 1.31 - -### Patch Changes - -- d9551ae: change deps to peer deps in common packages -- d9551ae: upgrade to yarn v3 diff --git a/plugins/tekton-common/README.md b/plugins/tekton-common/README.md index 91d9152729..53e0db6dce 100644 --- a/plugins/tekton-common/README.md +++ b/plugins/tekton-common/README.md @@ -1,11 +1,3 @@ -# Tekton Common plugin +# Deprecated -Welcome to the tekton-common plugin! - -This plugin contains common utilities for the tekton plugin. - -# Tekton plugin for Backstage - -The Tekton plugin enables you to visualize the `PipelineRun` resources available on the Kubernetes cluster. - -For more information about Tekton plugin, see the [Tekton plugin documentation](https://github.com/janus-idp/backstage-plugins/tree/main/plugins/tekton) on GitHub. +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tekton-common` instead. diff --git a/plugins/tekton-common/catalog-info.yaml b/plugins/tekton-common/catalog-info.yaml deleted file mode 100644 index 9a5a6d5c99..0000000000 --- a/plugins/tekton-common/catalog-info.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-tekton-common - title: '@janus-idp/backstage-plugin-tekton-common' - description: Tekton Common plugin - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/tekton-common - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/tekton-common/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/tekton-common/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/rhtap - sonarqube.org/project-key: janus-idp_backstage-plugins - tags: - - kubernetes - - openshift - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/tekton-common - title: GitHub Source - icon: source - type: source -spec: - type: backstage-common-library - lifecycle: production - owner: rhtap-team - system: rhdh - subcomponentOf: janus-idp-tekton diff --git a/plugins/tekton-common/package.json b/plugins/tekton-common/package.json deleted file mode 100644 index 23099c61ef..0000000000 --- a/plugins/tekton-common/package.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "name": "@janus-idp/backstage-plugin-tekton-common", - "version": "1.3.1", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public", - "main": "dist/index.cjs.js", - "module": "dist/index.esm.js", - "types": "dist/index.d.ts" - }, - "backstage": { - "role": "common-library", - "supported-versions": "1.32.5", - "pluginId": "tekton", - "pluginPackage": "@janus-idp/backstage-plugin-tekton-common", - "pluginPackages": [ - "@janus-idp/backstage-plugin-tekton", - "@janus-idp/backstage-plugin-tekton-common" - ] - }, - "sideEffects": false, - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint:check": "backstage-cli package lint", - "lint:fix": "backstage-cli package lint --fix", - "postpack": "backstage-cli package postpack", - "prepack": "backstage-cli package prepack", - "test": "backstage-cli package test --passWithNoTests --coverage", - "tsc": "tsc", - "prettier:check": "prettier --ignore-unknown --check .", - "prettier:fix": "prettier --ignore-unknown --write ." - }, - "peerDependencies": { - "@backstage/plugin-permission-common": "^0.8.1" - }, - "devDependencies": { - "@backstage/cli": "0.28.2", - "prettier": "3.3.3" - }, - "files": [ - "dist" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/janus-idp/backstage-plugins.git", - "directory": "plugins/tekton-common" - }, - "keywords": [ - "support:production", - "lifecycle:active", - "backstage", - "plugin" - ], - "homepage": "https://red.ht/rhdh", - "bugs": "https://github.com/janus-idp/backstage-plugins/issues", - "maintainers": [ - "@janus-idp/rhtap" - ], - "author": "Red Hat" -} diff --git a/plugins/tekton-common/src/index.ts b/plugins/tekton-common/src/index.ts deleted file mode 100644 index b8170324a8..0000000000 --- a/plugins/tekton-common/src/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Common functionalities for the tekton plugin. - * - * @packageDocumentation - */ - -export * from './permissions'; diff --git a/plugins/tekton-common/src/permissions.ts b/plugins/tekton-common/src/permissions.ts deleted file mode 100644 index caece05842..0000000000 --- a/plugins/tekton-common/src/permissions.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { createPermission } from '@backstage/plugin-permission-common'; - -export const tektonViewPermission = createPermission({ - name: 'tekton.view.read', - attributes: { - action: 'read', - }, -}); - -/** - * List of all permissions on permission polices. - */ -export const tektonPermissions = [tektonViewPermission]; diff --git a/plugins/tekton-common/tsconfig.json b/plugins/tekton-common/tsconfig.json deleted file mode 100644 index eb4f3f81ea..0000000000 --- a/plugins/tekton-common/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": ["src", "dev"], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "../../dist-types/plugins/tekton-common", - "rootDir": "." - } -} diff --git a/plugins/tekton-common/turbo.json b/plugins/tekton-common/turbo.json deleted file mode 100644 index e051f8d934..0000000000 --- a/plugins/tekton-common/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "tsc": { - "outputs": ["../../dist-types/plugins/tekton-common/**"] - } - } -} diff --git a/plugins/tekton/.eslintignore b/plugins/tekton/.eslintignore deleted file mode 100644 index 55289f4a23..0000000000 --- a/plugins/tekton/.eslintignore +++ /dev/null @@ -1,2 +0,0 @@ -dist-dynamic -dist-scalprum diff --git a/plugins/tekton/.eslintrc.js b/plugins/tekton/.eslintrc.js deleted file mode 100644 index e2a53a6ad2..0000000000 --- a/plugins/tekton/.eslintrc.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('@backstage/cli/config/eslint-factory')(__dirname); diff --git a/plugins/tekton/.lintstagedrc.json b/plugins/tekton/.lintstagedrc.json deleted file mode 100644 index 14b2263def..0000000000 --- a/plugins/tekton/.lintstagedrc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "*": "prettier --ignore-unknown --write", - "*.{js,jsx,ts,tsx,mjs,cjs}": "backstage-cli package lint --fix" -} diff --git a/plugins/tekton/.prettierignore b/plugins/tekton/.prettierignore deleted file mode 100644 index fc8357d99e..0000000000 --- a/plugins/tekton/.prettierignore +++ /dev/null @@ -1,12 +0,0 @@ -dist -dist-types -coverage -.vscode -CHANGELOG.md -generated -templates -*.hbs -renovate.json -dist-dynamic -dist-scalprum -playwright-report diff --git a/plugins/tekton/.prettierrc.js b/plugins/tekton/.prettierrc.js deleted file mode 100644 index 84cbac65b5..0000000000 --- a/plugins/tekton/.prettierrc.js +++ /dev/null @@ -1,20 +0,0 @@ -// @ts-check - -/** @type {import("@ianvs/prettier-plugin-sort-imports").PrettierConfig} */ -module.exports = { - ...require('@spotify/prettier-config'), - plugins: ['@ianvs/prettier-plugin-sort-imports'], - importOrder: [ - '^react(.*)$', - '', - '^@backstage/(.*)$', - '', - '', - '', - '^@janus-idp/(.*)$', - '', - '', - '', - '^[.]', - ], -}; diff --git a/plugins/tekton/.versionhistory.md b/plugins/tekton/.versionhistory.md deleted file mode 100644 index 4966372c52..0000000000 --- a/plugins/tekton/.versionhistory.md +++ /dev/null @@ -1,2 +0,0 @@ -- Bumped to 3.6.0 in main branch for next release 1.2.0 -- Bumped to 3.13.0 in main branch for next release 1.3.0 diff --git a/plugins/tekton/CHANGELOG.md b/plugins/tekton/CHANGELOG.md deleted file mode 100644 index d52be1ecd9..0000000000 --- a/plugins/tekton/CHANGELOG.md +++ /dev/null @@ -1,786 +0,0 @@ -### Dependencies - -## 3.15.1 - -### Patch Changes - -- 0e6bfd3: feat: update Backstage to the latest version - - Update to Backstage 1.32.5 - -- Updated dependencies [0e6bfd3] - - @janus-idp/backstage-plugin-tekton-common@1.3.1 - - @janus-idp/shared-react@2.13.1 - -## 3.15.0 - -### Minor Changes - -- 8244f28: chore(deps): update to backstage 1.32 - -### Patch Changes - -- Updated dependencies [8244f28] - - @janus-idp/backstage-plugin-tekton-common@1.3.0 - - @janus-idp/shared-react@2.13.0 - -## 3.14.2 - -### Patch Changes - -- 7342e9b: chore: remove @janus-idp/cli dep and relink local packages - - This update removes `@janus-idp/cli` from all plugins, as it’s no longer necessary. Additionally, packages are now correctly linked with a specified version. - -## 3.14.1 - -### Patch Changes - -- ffe2546: Fix CVE-2024-21534 by upgrading @kubernetes/client-node package to 0.22.1 -- Updated dependencies [ffe2546] - - @janus-idp/shared-react@2.12.1 - -## 3.14.0 - -### Minor Changes - -- d9551ae: feat(deps): update to backstage 1.31 - -### Patch Changes - -- d9551ae: Change local package references to a `*` -- d9551ae: pin the @janus-idp/cli package -- d9551ae: upgrade to yarn v3 -- Updated dependencies [d9551ae] -- Updated dependencies [d9551ae] -- Updated dependencies [d9551ae] -- Updated dependencies [d9551ae] - - @janus-idp/shared-react@2.12.0 - - @janus-idp/backstage-plugin-tekton-common@1.2.0 - -* **@janus-idp/cli:** upgraded to 1.15.2 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.15.1 - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.11.1 -- **@janus-idp/cli:** upgraded to 1.15.0 - -### Dependencies - -- **@janus-idp/backstage-plugin-tekton-common:** upgraded to 1.1.0 -- **@janus-idp/shared-react:** upgraded to 2.11.0 -- **@janus-idp/cli:** upgraded to 1.14.0 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.2 - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.10.3 - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.10.2 - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.10.1 - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.13.1 - -## @janus-idp/backstage-plugin-tekton [3.12.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.11.0...@janus-idp/backstage-plugin-tekton@3.12.0) (2024-08-02) - -### Features - -- **topology:** remove usage of k8s plugin from topology & tekton plugins ([#1869](https://github.com/janus-idp/backstage-plugins/issues/1869)) ([ae7d8ee](https://github.com/janus-idp/backstage-plugins/commit/ae7d8ee7014c109a5f5265967590559fc778eec7)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.10.0 -- **@janus-idp/backstage-plugin-tekton-common:** upgraded to 1.0.0 - -## @janus-idp/backstage-plugin-tekton [3.11.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.10.0...@janus-idp/backstage-plugin-tekton@3.11.0) (2024-07-26) - -### Features - -- **tekton:** add permissions support for tekton plugin ([#1854](https://github.com/janus-idp/backstage-plugins/issues/1854)) ([f744896](https://github.com/janus-idp/backstage-plugins/commit/f7448963c252574e0309a091563c19e1ed9a58fd)) - -## @janus-idp/backstage-plugin-tekton [3.10.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.9.0...@janus-idp/backstage-plugin-tekton@3.10.0) (2024-07-26) - -### Features - -- **deps:** update to backstage 1.29 ([#1900](https://github.com/janus-idp/backstage-plugins/issues/1900)) ([f53677f](https://github.com/janus-idp/backstage-plugins/commit/f53677fb02d6df43a9de98c43a9f101a6db76802)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.9.0 - -## @janus-idp/backstage-plugin-tekton [3.9.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.8.1...@janus-idp/backstage-plugin-tekton@3.9.0) (2024-07-24) - -### Features - -- **deps:** update to backstage 1.28 ([#1891](https://github.com/janus-idp/backstage-plugins/issues/1891)) ([1ba1108](https://github.com/janus-idp/backstage-plugins/commit/1ba11088e0de60e90d138944267b83600dc446e5)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.8.0 - -## @janus-idp/backstage-plugin-tekton [3.8.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.8.0...@janus-idp/backstage-plugin-tekton@3.8.1) (2024-06-19) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.7.1 -- **@janus-idp/cli:** upgraded to 1.11.1 - -## @janus-idp/backstage-plugin-tekton [3.8.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.9...@janus-idp/backstage-plugin-tekton@3.8.0) (2024-06-13) - -### Features - -- **deps:** update to backstage 1.27 ([#1683](https://github.com/janus-idp/backstage-plugins/issues/1683)) ([a14869c](https://github.com/janus-idp/backstage-plugins/commit/a14869c3f4177049cb8d6552b36c3ffd17e7997d)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.7.0 -- **@janus-idp/cli:** upgraded to 1.11.0 - -## @janus-idp/backstage-plugin-tekton [3.7.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.8...@janus-idp/backstage-plugin-tekton@3.7.9) (2024-06-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.1 - -## @janus-idp/backstage-plugin-tekton [3.7.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.7...@janus-idp/backstage-plugin-tekton@3.7.8) (2024-06-10) - -## @janus-idp/backstage-plugin-tekton [3.7.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.6...@janus-idp/backstage-plugin-tekton@3.7.7) (2024-06-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.10.0 - -## @janus-idp/backstage-plugin-tekton [3.7.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.5...@janus-idp/backstage-plugin-tekton@3.7.6) (2024-06-04) - -## @janus-idp/backstage-plugin-tekton [3.7.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.4...@janus-idp/backstage-plugin-tekton@3.7.5) (2024-06-03) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.9.0 - -## @janus-idp/backstage-plugin-tekton [3.7.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.3...@janus-idp/backstage-plugin-tekton@3.7.4) (2024-05-31) - -## @janus-idp/backstage-plugin-tekton [3.7.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.2...@janus-idp/backstage-plugin-tekton@3.7.3) (2024-05-29) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.10 - -## @janus-idp/backstage-plugin-tekton [3.7.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.1...@janus-idp/backstage-plugin-tekton@3.7.2) (2024-05-29) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.6.3 -- **@janus-idp/cli:** upgraded to 1.8.9 - -## @janus-idp/backstage-plugin-tekton [3.7.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.7.0...@janus-idp/backstage-plugin-tekton@3.7.1) (2024-05-16) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.6.2 -- **@janus-idp/cli:** upgraded to 1.8.7 - -## @janus-idp/backstage-plugin-tekton [3.7.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.6.5...@janus-idp/backstage-plugin-tekton@3.7.0) (2024-05-14) - -### Features - -- **deps:** use RHDH themes in the backstage app and dev pages ([#1480](https://github.com/janus-idp/backstage-plugins/issues/1480)) ([8263bf0](https://github.com/janus-idp/backstage-plugins/commit/8263bf099736cbb0d0f2316082d338ba81fa6927)) - -## @janus-idp/backstage-plugin-tekton [3.6.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.6.4...@janus-idp/backstage-plugin-tekton@3.6.5) (2024-05-09) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.6.1 -- **@janus-idp/cli:** upgraded to 1.8.6 - -## @janus-idp/backstage-plugin-tekton [3.6.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.6.3...@janus-idp/backstage-plugin-tekton@3.6.4) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.5 - -## @janus-idp/backstage-plugin-tekton [3.6.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.6.2...@janus-idp/backstage-plugin-tekton@3.6.3) (2024-05-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.4 - -## @janus-idp/backstage-plugin-tekton [3.6.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.6.1...@janus-idp/backstage-plugin-tekton@3.6.2) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.3 - -## @janus-idp/backstage-plugin-tekton [3.6.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.6.0...@janus-idp/backstage-plugin-tekton@3.6.1) (2024-04-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.8.2 - -## @janus-idp/backstage-plugin-tekton [3.6.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.18...@janus-idp/backstage-plugin-tekton@3.6.0) (2024-04-15) - -### Features - -- checkPluginVersion.sh bump plugins for 1.2.0 release ([#1511](https://github.com/janus-idp/backstage-plugins/issues/1511)) ([73c6588](https://github.com/janus-idp/backstage-plugins/commit/73c6588adb7e8c20907b06f2a8ef248cfd4332e4)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.6.0 -- **@janus-idp/cli:** upgraded to 1.8.0 - -## @janus-idp/backstage-plugin-tekton [3.5.18](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.17...@janus-idp/backstage-plugin-tekton@3.5.18) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.10 - -## @janus-idp/backstage-plugin-tekton [3.5.17](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.16...@janus-idp/backstage-plugin-tekton@3.5.17) (2024-04-09) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.5.5 - -## @janus-idp/backstage-plugin-tekton [3.5.16](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.15...@janus-idp/backstage-plugin-tekton@3.5.16) (2024-04-09) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.9 - -## @janus-idp/backstage-plugin-tekton [3.5.15](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.14...@janus-idp/backstage-plugin-tekton@3.5.15) (2024-04-08) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.5.4 - -## @janus-idp/backstage-plugin-tekton [3.5.14](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.13...@janus-idp/backstage-plugin-tekton@3.5.14) (2024-04-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.7 - -## @janus-idp/backstage-plugin-tekton [3.5.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.12...@janus-idp/backstage-plugin-tekton@3.5.13) (2024-03-29) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.5.3 -- **@janus-idp/cli:** upgraded to 1.7.6 - -## @janus-idp/backstage-plugin-tekton [3.5.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.11...@janus-idp/backstage-plugin-tekton@3.5.12) (2024-03-25) - -### Bug Fixes - -- **tekton:** bump aonic-ui/pipelines package to fix acs table crashing issue ([#1382](https://github.com/janus-idp/backstage-plugins/issues/1382)) ([b37cc94](https://github.com/janus-idp/backstage-plugins/commit/b37cc94ad140be43896bbd3bc48dd7af582eb7ff)) - -## @janus-idp/backstage-plugin-tekton [3.5.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.10...@janus-idp/backstage-plugin-tekton@3.5.11) (2024-03-19) - -### Bug Fixes - -- **tekton:** fix low vulnerability tooltip text ([#1347](https://github.com/janus-idp/backstage-plugins/issues/1347)) ([47640a5](https://github.com/janus-idp/backstage-plugins/commit/47640a5c3a7ad33ad6ae6b190f2ca3d861970d94)) - -## @janus-idp/backstage-plugin-tekton [3.5.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.9...@janus-idp/backstage-plugin-tekton@3.5.10) (2024-03-04) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.5 - -## @janus-idp/backstage-plugin-tekton [3.5.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.8...@janus-idp/backstage-plugin-tekton@3.5.9) (2024-02-27) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.4 - -## @janus-idp/backstage-plugin-tekton [3.5.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.7...@janus-idp/backstage-plugin-tekton@3.5.8) (2024-02-26) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.3 - -## @janus-idp/backstage-plugin-tekton [3.5.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.6...@janus-idp/backstage-plugin-tekton@3.5.7) (2024-02-21) - -### Other changes - -- **tekton:** add playwright tests for the plugin ([#1228](https://github.com/janus-idp/backstage-plugins/issues/1228)) ([705afc2](https://github.com/janus-idp/backstage-plugins/commit/705afc2892839f39a8cbad39f51c959aa3ac4c8a)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.5.2 -- **@janus-idp/cli:** upgraded to 1.7.2 - -## @janus-idp/backstage-plugin-tekton [3.5.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.5...@janus-idp/backstage-plugin-tekton@3.5.6) (2024-02-16) - -### Bug Fixes - -- **tekton:** upgrade to use latest @aonic-ui/pipelines package ([#1212](https://github.com/janus-idp/backstage-plugins/issues/1212)) ([0ae37f7](https://github.com/janus-idp/backstage-plugins/commit/0ae37f7a6c56df374e0e4e326397617ccd46aca8)) - -## @janus-idp/backstage-plugin-tekton [3.5.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.4...@janus-idp/backstage-plugin-tekton@3.5.5) (2024-02-07) - -### Bug Fixes - -- **topology/tekton:** stop polling after log streaming completes ([#1122](https://github.com/janus-idp/backstage-plugins/issues/1122)) ([191bac2](https://github.com/janus-idp/backstage-plugins/commit/191bac2d21259b4fdc42193c6cf436987968eb88)) - -## @janus-idp/backstage-plugin-tekton [3.5.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.3...@janus-idp/backstage-plugin-tekton@3.5.4) (2024-02-05) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.1 - -## @janus-idp/backstage-plugin-tekton [3.5.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.2...@janus-idp/backstage-plugin-tekton@3.5.3) (2024-02-02) - -### Bug Fixes - -- **tekton:** external sbom view action should not open logs modal ([#1152](https://github.com/janus-idp/backstage-plugins/issues/1152)) ([714ac5d](https://github.com/janus-idp/backstage-plugins/commit/714ac5d10a5b878232dc1468ebfa03a7a52aa656)) -- **tekton:** fix [#947](https://github.com/janus-idp/backstage-plugins/issues/947): Reset pagination when changing any filter ([#1140](https://github.com/janus-idp/backstage-plugins/issues/1140)) ([5a1a2f4](https://github.com/janus-idp/backstage-plugins/commit/5a1a2f442e2c5957bd725e57066448e5b67d8807)) - -### Documentation - -- **tekton:** add tekton plugin documentation to enable UI elements ([#1148](https://github.com/janus-idp/backstage-plugins/issues/1148)) ([91742e8](https://github.com/janus-idp/backstage-plugins/commit/91742e8c524a8b4f87fe9a6cb0d1f5006661b4d2)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.5.1 - -## @janus-idp/backstage-plugin-tekton [3.5.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.1...@janus-idp/backstage-plugin-tekton@3.5.2) (2024-01-31) - -### Bug Fixes - -- **tekton:** fix [#922](https://github.com/janus-idp/backstage-plugins/issues/922) and [#962](https://github.com/janus-idp/backstage-plugins/issues/962) by using full width for pipeline visualization ([#1145](https://github.com/janus-idp/backstage-plugins/issues/1145)) ([1ea9f01](https://github.com/janus-idp/backstage-plugins/commit/1ea9f01c3487035f8495bb98fce30c6c34396510)) - -## @janus-idp/backstage-plugin-tekton [3.5.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.5.0...@janus-idp/backstage-plugin-tekton@3.5.1) (2024-01-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.7.0 - -## @janus-idp/backstage-plugin-tekton [3.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.4.2...@janus-idp/backstage-plugin-tekton@3.5.0) (2024-01-30) - -### Features - -- **tekton:** add view output action in pipelinerun list view ([#1128](https://github.com/janus-idp/backstage-plugins/issues/1128)) ([ad50c44](https://github.com/janus-idp/backstage-plugins/commit/ad50c44233332b0f1325cef5a41d82ba79c538fb)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.5.0 - -## @janus-idp/backstage-plugin-tekton [3.4.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.4.1...@janus-idp/backstage-plugin-tekton@3.4.2) (2024-01-25) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.6.0 - -## @janus-idp/backstage-plugin-tekton [3.4.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.4.0...@janus-idp/backstage-plugin-tekton@3.4.1) (2024-01-17) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.4.0 - -## @janus-idp/backstage-plugin-tekton [3.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.3.0...@janus-idp/backstage-plugin-tekton@3.4.0) (2023-12-22) - -### Features - -- **tekton:** add CVE summary and signed badge ([#1028](https://github.com/janus-idp/backstage-plugins/issues/1028)) ([effdef0](https://github.com/janus-idp/backstage-plugins/commit/effdef085deaeea78a819d1bde960f83820ec705)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.3.0 - -## @janus-idp/backstage-plugin-tekton [3.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.2.0...@janus-idp/backstage-plugin-tekton@3.3.0) (2023-12-20) - -### Features - -- **tekton:** add view logs and view sbom actions in the pipelineRun list ([#1003](https://github.com/janus-idp/backstage-plugins/issues/1003)) ([c7eff5f](https://github.com/janus-idp/backstage-plugins/commit/c7eff5f33daef8eaba58df7e987b44f09c7a8ff9)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.2.0 - -## @janus-idp/backstage-plugin-tekton [3.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.14...@janus-idp/backstage-plugin-tekton@3.2.0) (2023-12-14) - -### Features - -- **tekton:** add support for downloading task and pipelinerun logs ([#1014](https://github.com/janus-idp/backstage-plugins/issues/1014)) ([f588292](https://github.com/janus-idp/backstage-plugins/commit/f5882921756a7aa6d5a74d8fdb6bfc52a7c0c209)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.1.0 - -## @janus-idp/backstage-plugin-tekton [3.1.14](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.13...@janus-idp/backstage-plugin-tekton@3.1.14) (2023-12-07) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.7 - -## @janus-idp/backstage-plugin-tekton [3.1.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.12...@janus-idp/backstage-plugin-tekton@3.1.13) (2023-12-07) - -### Bug Fixes - -- **tekton:** fix expand collapse with sorting of PLR list table ([#980](https://github.com/janus-idp/backstage-plugins/issues/980)) ([d5fc710](https://github.com/janus-idp/backstage-plugins/commit/d5fc710c09e272583e27dbf5beaa3694d18100fe)) - -## @janus-idp/backstage-plugin-tekton [3.1.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.11...@janus-idp/backstage-plugin-tekton@3.1.12) (2023-11-30) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.6 - -## @janus-idp/backstage-plugin-tekton [3.1.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.10...@janus-idp/backstage-plugin-tekton@3.1.11) (2023-11-23) - -### Bug Fixes - -- add config partials for dynamic frontend plugins ([#965](https://github.com/janus-idp/backstage-plugins/issues/965)) ([b01e55e](https://github.com/janus-idp/backstage-plugins/commit/b01e55e877278afc5de8d28a4c687a6989566bdc)) - -## @janus-idp/backstage-plugin-tekton [3.1.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.9...@janus-idp/backstage-plugin-tekton@3.1.10) (2023-11-23) - -### Bug Fixes - -- **tekton:** update tekton version in the documentation ([#958](https://github.com/janus-idp/backstage-plugins/issues/958)) ([51cc924](https://github.com/janus-idp/backstage-plugins/commit/51cc924b1341d04aa75a1713713c8a6700b2c0a3)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.0.1 - -## @janus-idp/backstage-plugin-tekton [3.1.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.8...@janus-idp/backstage-plugin-tekton@3.1.9) (2023-11-22) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.5 - -## @janus-idp/backstage-plugin-tekton [3.1.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.7...@janus-idp/backstage-plugin-tekton@3.1.8) (2023-11-21) - -### Bug Fixes - -- sync versions in dynamic assets and publish derived packages as additional packages ([#963](https://github.com/janus-idp/backstage-plugins/issues/963)) ([7d0a386](https://github.com/janus-idp/backstage-plugins/commit/7d0a38609b4a18b54c75378a150e8b5c3ba8ff43)) -- **tekton:** fix sorting for pipeline run durations ([#952](https://github.com/janus-idp/backstage-plugins/issues/952)) ([dc711dd](https://github.com/janus-idp/backstage-plugins/commit/dc711dd24b267a8ba7671e5380d84179e65f4995)) - -## @janus-idp/backstage-plugin-tekton [3.1.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.6...@janus-idp/backstage-plugin-tekton@3.1.7) (2023-11-20) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.4 - -## @janus-idp/backstage-plugin-tekton [3.1.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.5...@janus-idp/backstage-plugin-tekton@3.1.6) (2023-11-16) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.3 - -## @janus-idp/backstage-plugin-tekton [3.1.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.4...@janus-idp/backstage-plugin-tekton@3.1.5) (2023-11-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.2 - -## @janus-idp/backstage-plugin-tekton [3.1.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.3...@janus-idp/backstage-plugin-tekton@3.1.4) (2023-11-13) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.1 - -## @janus-idp/backstage-plugin-tekton [3.1.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.2...@janus-idp/backstage-plugin-tekton@3.1.3) (2023-11-07) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.4.0 - -## @janus-idp/backstage-plugin-tekton [3.1.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.1...@janus-idp/backstage-plugin-tekton@3.1.2) (2023-11-06) - -### Bug Fixes - -- **cli:** add default scalprum config ([#909](https://github.com/janus-idp/backstage-plugins/issues/909)) ([d74fc72](https://github.com/janus-idp/backstage-plugins/commit/d74fc72ab7e0a843da047c7b6570d8a6fbc068e1)) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.3.3 - -## @janus-idp/backstage-plugin-tekton [3.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.1.0...@janus-idp/backstage-plugin-tekton@3.1.1) (2023-11-02) - -### Dependencies - -- **@janus-idp/cli:** upgraded to 1.3.2 - -## @janus-idp/backstage-plugin-tekton [3.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.0.2...@janus-idp/backstage-plugin-tekton@3.1.0) (2023-11-01) - -### Features - -- **dynamic-plugins:** publish dynamic assets for all frontend plugins ([#896](https://github.com/janus-idp/backstage-plugins/issues/896)) ([dcfb0ac](https://github.com/janus-idp/backstage-plugins/commit/dcfb0ac56769c82f6b8b2cef2726251e0b60c375)) - -## @janus-idp/backstage-plugin-tekton [3.0.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.0.1...@janus-idp/backstage-plugin-tekton@3.0.2) (2023-10-27) - -### Bug Fixes - -- **tekton:** handle flaky cluster error gracefully ([#887](https://github.com/janus-idp/backstage-plugins/issues/887)) ([10ed80e](https://github.com/janus-idp/backstage-plugins/commit/10ed80e4882d473eaee8319a9b1643b14f99a203)) - -## @janus-idp/backstage-plugin-tekton [3.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@3.0.0...@janus-idp/backstage-plugin-tekton@3.0.1) (2023-10-26) - -### Bug Fixes - -- **tekton:** update README and cleanup ([#881](https://github.com/janus-idp/backstage-plugins/issues/881)) ([c495515](https://github.com/janus-idp/backstage-plugins/commit/c495515bc146dfb9e2b64ec8df50d2e5fe01a6c7)) - -## @janus-idp/backstage-plugin-tekton [3.0.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@2.0.2...@janus-idp/backstage-plugin-tekton@3.0.0) (2023-10-23) - -### ⚠ BREAKING CHANGES - -- **tekton:** update tekton UX (#839) - -### Features - -- **tekton:** update tekton UX ([#839](https://github.com/janus-idp/backstage-plugins/issues/839)) ([789c945](https://github.com/janus-idp/backstage-plugins/commit/789c945580b8f82349a5c62b98c77d5dbf4781f1)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 2.0.0 - -## @janus-idp/backstage-plugin-tekton [2.0.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@2.0.1...@janus-idp/backstage-plugin-tekton@2.0.2) (2023-10-19) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.3.3 - -## @janus-idp/backstage-plugin-tekton [2.0.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@2.0.0...@janus-idp/backstage-plugin-tekton@2.0.1) (2023-10-16) - -### Bug Fixes - -- **tekton:** fix pipelinerun status icon color ([#734](https://github.com/janus-idp/backstage-plugins/issues/734)) ([c800f98](https://github.com/janus-idp/backstage-plugins/commit/c800f987afc9a96bec93c13295d8fdb0c5964a93)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.3.2 - -## @janus-idp/backstage-plugin-tekton [2.0.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.9.6...@janus-idp/backstage-plugin-tekton@2.0.0) (2023-10-09) - -### ⚠ BREAKING CHANGES - -- **tekton:** enable tekton related features when the tekton annotation is present (#741) - -### Features - -- **tekton:** enable tekton related features when the tekton annotation is present ([#741](https://github.com/janus-idp/backstage-plugins/issues/741)) ([474d3f0](https://github.com/janus-idp/backstage-plugins/commit/474d3f01bb312a668bc8b39dc4c78f6f52b5cf87)) - -## @janus-idp/backstage-plugin-tekton [1.9.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.9.5...@janus-idp/backstage-plugin-tekton@1.9.6) (2023-09-22) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.3.1 - -## @janus-idp/backstage-plugin-tekton [1.9.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.9.4...@janus-idp/backstage-plugin-tekton@1.9.5) (2023-09-11) - -## @janus-idp/backstage-plugin-tekton [1.9.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.9.3...@janus-idp/backstage-plugin-tekton@1.9.4) (2023-09-05) - -### Documentation - -- **tekton:** minor changes in tekton documentation ([#691](https://github.com/janus-idp/backstage-plugins/issues/691)) ([02a18fb](https://github.com/janus-idp/backstage-plugins/commit/02a18fb75a31fbbd221385ac18e5c05cecec0d7d)) - -## @janus-idp/backstage-plugin-tekton [1.9.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.9.2...@janus-idp/backstage-plugin-tekton@1.9.3) (2023-08-28) - -### Documentation - -- **tekton:** updated images ([#606](https://github.com/janus-idp/backstage-plugins/issues/606)) ([b138c64](https://github.com/janus-idp/backstage-plugins/commit/b138c64b5476216eac38a5553b05751e3df736f1)) - -## @janus-idp/backstage-plugin-tekton [1.9.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.9.1...@janus-idp/backstage-plugin-tekton@1.9.2) (2023-08-24) - -### Documentation - -- update tekton and topology documentation with pod log permissions ([#668](https://github.com/janus-idp/backstage-plugins/issues/668)) ([5b0a9f7](https://github.com/janus-idp/backstage-plugins/commit/5b0a9f77448d624c50f58e19d7f439700bef9cfe)) - -## @janus-idp/backstage-plugin-tekton [1.9.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.9.0...@janus-idp/backstage-plugin-tekton@1.9.1) (2023-08-22) - -### Bug Fixes - -- **tekton:** fix code smells ([#632](https://github.com/janus-idp/backstage-plugins/issues/632)) ([2ad13da](https://github.com/janus-idp/backstage-plugins/commit/2ad13dac8ae27959d74d45c91da01c95e7b80e20)) - -## @janus-idp/backstage-plugin-tekton [1.9.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.8.3...@janus-idp/backstage-plugin-tekton@1.9.0) (2023-08-14) - -### Features - -- **ts:** transpile each plugin separately ([#634](https://github.com/janus-idp/backstage-plugins/issues/634)) ([b94c4dc](https://github.com/janus-idp/backstage-plugins/commit/b94c4dc50ada328e5ce1bed5fb7c76f64607e1ee)) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.3.0 - -## @janus-idp/backstage-plugin-tekton [1.8.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.8.2...@janus-idp/backstage-plugin-tekton@1.8.3) (2023-08-14) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.2.2 - -## @janus-idp/backstage-plugin-tekton [1.8.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.8.1...@janus-idp/backstage-plugin-tekton@1.8.2) (2023-08-14) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.2.1 - -## @janus-idp/backstage-plugin-tekton [1.8.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.8.0...@janus-idp/backstage-plugin-tekton@1.8.1) (2023-08-11) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.2.0 - -## @janus-idp/backstage-plugin-tekton [1.8.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.7.2...@janus-idp/backstage-plugin-tekton@1.8.0) (2023-08-10) - -### Features - -- **tekton:** visualize pipelinerun logs ([#553](https://github.com/janus-idp/backstage-plugins/issues/553)) ([540a105](https://github.com/janus-idp/backstage-plugins/commit/540a105287ee557de724f44389e9c571405d0a3d)) - -## @janus-idp/backstage-plugin-tekton [1.7.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.7.1...@janus-idp/backstage-plugin-tekton@1.7.2) (2023-08-10) - -### Dependencies - -- **@janus-idp/shared-react:** upgraded to 1.1.1 - -## @janus-idp/backstage-plugin-tekton [1.7.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.7.0...@janus-idp/backstage-plugin-tekton@1.7.1) (2023-08-09) - -### Bug Fixes - -- **tekton:** use shared-react package ([#623](https://github.com/janus-idp/backstage-plugins/issues/623)) ([57672c0](https://github.com/janus-idp/backstage-plugins/commit/57672c0d7f5549360e2cef19421648f3fea1f332)) - -## @janus-idp/backstage-plugin-tekton [1.7.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.6.0...@janus-idp/backstage-plugin-tekton@1.7.0) (2023-07-25) - -### Features - -- **tekton:** view pipelinerun visualization on click of pipelinerun ([#506](https://github.com/janus-idp/backstage-plugins/issues/506)) ([092d2bd](https://github.com/janus-idp/backstage-plugins/commit/092d2bd55d69171f9d3c290c9346c7d13dafcf97)) - -## @janus-idp/backstage-plugin-tekton [1.6.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.5.2...@janus-idp/backstage-plugin-tekton@1.6.0) (2023-07-10) - -### Features - -- **tekton:** create paginated table using Backstage core components ([#503](https://github.com/janus-idp/backstage-plugins/issues/503)) ([5cc47c1](https://github.com/janus-idp/backstage-plugins/commit/5cc47c1a346a4f006adf88ad15c942be5151b913)) - -## @janus-idp/backstage-plugin-tekton [1.5.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.5.1...@janus-idp/backstage-plugin-tekton@1.5.2) (2023-06-30) - -### Bug Fixes - -- **tekton:** fix pipelinerun task status info ([#491](https://github.com/janus-idp/backstage-plugins/issues/491)) ([191ba44](https://github.com/janus-idp/backstage-plugins/commit/191ba44fd3e5c7e092a5b0231325427300383a0e)) - -## @janus-idp/backstage-plugin-tekton [1.5.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.5.0...@janus-idp/backstage-plugin-tekton@1.5.1) (2023-06-14) - -### Other changes - -- reorder imports via prettier ([#419](https://github.com/janus-idp/backstage-plugins/issues/419)) ([17f1e6a](https://github.com/janus-idp/backstage-plugins/commit/17f1e6a689bd793a619ec5e42e5cdda0998f78a5)) - -### Documentation - -- update plugin README formatting ([#396](https://github.com/janus-idp/backstage-plugins/issues/396)) ([9b39056](https://github.com/janus-idp/backstage-plugins/commit/9b39056f6c66e9a6a0a5d0c4059420dff66db263)), closes [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369) [#295](https://github.com/janus-idp/backstage-plugins/issues/295) [#369](https://github.com/janus-idp/backstage-plugins/issues/369) - -## @janus-idp/backstage-plugin-tekton [1.5.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.14...@janus-idp/backstage-plugin-tekton@1.5.0) (2023-05-31) - -### Features - -- **tekton:** show cluster label before the select dropdown ([#345](https://github.com/janus-idp/backstage-plugins/issues/345)) ([582586e](https://github.com/janus-idp/backstage-plugins/commit/582586eca35af76fa931ace6d823e74dd4012215)) - -## @janus-idp/backstage-plugin-tekton [1.4.14](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.13...@janus-idp/backstage-plugin-tekton@1.4.14) (2023-05-30) - -## @janus-idp/backstage-plugin-tekton [1.4.13](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.12...@janus-idp/backstage-plugin-tekton@1.4.13) (2023-05-30) - -## @janus-idp/backstage-plugin-tekton [1.4.12](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.11...@janus-idp/backstage-plugin-tekton@1.4.12) (2023-05-30) - -### Bug Fixes - -- **tekton:** in case of bad configuration show empty state for tekton plugin and no cluster selector ([#390](https://github.com/janus-idp/backstage-plugins/issues/390)) ([83e47df](https://github.com/janus-idp/backstage-plugins/commit/83e47df6247cf9dccc0842eec1380b37e58bea47)) - -## @janus-idp/backstage-plugin-tekton [1.4.11](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.10...@janus-idp/backstage-plugin-tekton@1.4.11) (2023-05-29) - -### Bug Fixes - -- **tekton:** handles unnecessary rerenders on tekton ([#391](https://github.com/janus-idp/backstage-plugins/issues/391)) ([86c1700](https://github.com/janus-idp/backstage-plugins/commit/86c1700a89db238dda0efca23ada72c94a2ee72b)) - -## @janus-idp/backstage-plugin-tekton [1.4.10](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.9...@janus-idp/backstage-plugin-tekton@1.4.10) (2023-05-22) - -### Documentation - -- **tekton:** add user docs ([#365](https://github.com/janus-idp/backstage-plugins/issues/365)) ([4dc7e1a](https://github.com/janus-idp/backstage-plugins/commit/4dc7e1a2a81676642a24905d720967cfb78f4194)) - -## @janus-idp/backstage-plugin-tekton [1.4.9](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.8...@janus-idp/backstage-plugin-tekton@1.4.9) (2023-05-18) - -### Documentation - -- update plugin READMEs ([#373](https://github.com/janus-idp/backstage-plugins/issues/373)) ([478560e](https://github.com/janus-idp/backstage-plugins/commit/478560e38cceaa40d976bccf4785956ed58b5221)) - -## @janus-idp/backstage-plugin-tekton [1.4.8](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.7...@janus-idp/backstage-plugin-tekton@1.4.8) (2023-05-17) - -### Bug Fixes - -- **deps:** update all non-major dependencies ([#358](https://github.com/janus-idp/backstage-plugins/issues/358)) ([086a9ed](https://github.com/janus-idp/backstage-plugins/commit/086a9ed839f3a6dd1460f0f87b71453a7ed62ea3)) - -## @janus-idp/backstage-plugin-tekton [1.4.7](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.6...@janus-idp/backstage-plugin-tekton@1.4.7) (2023-05-15) - -## @janus-idp/backstage-plugin-tekton [1.4.6](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.5...@janus-idp/backstage-plugin-tekton@1.4.6) (2023-05-15) - -## @janus-idp/backstage-plugin-tekton [1.4.5](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.4...@janus-idp/backstage-plugin-tekton@1.4.5) (2023-05-11) - -### Bug Fixes - -- **deps:** update all non-major dependencies ([#339](https://github.com/janus-idp/backstage-plugins/issues/339)) ([d19d96d](https://github.com/janus-idp/backstage-plugins/commit/d19d96de7b55c205e0f77528e476104c0685aad2)) - -## @janus-idp/backstage-plugin-tekton [1.4.4](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.3...@janus-idp/backstage-plugin-tekton@1.4.4) (2023-05-09) - -### Bug Fixes - -- **plugins:** remove React.FC types ([#335](https://github.com/janus-idp/backstage-plugins/issues/335)) ([f3d40af](https://github.com/janus-idp/backstage-plugins/commit/f3d40af9c6e55e5699ed78d07ae6617e25b33c18)) - -## @janus-idp/backstage-plugin-tekton [1.4.3](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.2...@janus-idp/backstage-plugin-tekton@1.4.3) (2023-05-09) - -### Other changes - -- **deps:** update all non-major dependencies ([#333](https://github.com/janus-idp/backstage-plugins/issues/333)) ([dce0ea4](https://github.com/janus-idp/backstage-plugins/commit/dce0ea4a9b9f517bd864d39f0b364c68e6a2e143)) -- **plugins:** remove react namespace import ([#336](https://github.com/janus-idp/backstage-plugins/issues/336)) ([01ab4aa](https://github.com/janus-idp/backstage-plugins/commit/01ab4aaf9c88c58c955903372b556f33e2e6461e)) - -## @janus-idp/backstage-plugin-tekton [1.4.2](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.1...@janus-idp/backstage-plugin-tekton@1.4.2) (2023-05-04) - -### Other changes - -- **deps:** update all non-major dependencies ([#127](https://github.com/janus-idp/backstage-plugins/issues/127)) ([a9d359f](https://github.com/janus-idp/backstage-plugins/commit/a9d359f01448d1b9b4b4d3d9b087052fb6ff16b3)) - -## @janus-idp/backstage-plugin-tekton [1.4.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.4.0...@janus-idp/backstage-plugin-tekton@1.4.1) (2023-05-02) - -### Bug Fixes - -- **tekton:** fix task node status ([#320](https://github.com/janus-idp/backstage-plugins/issues/320)) ([22b0b1e](https://github.com/janus-idp/backstage-plugins/commit/22b0b1ece1b0da5e3ac49949b6ac57dd116f564b)) - -## @janus-idp/backstage-plugin-tekton [1.4.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.3.0...@janus-idp/backstage-plugin-tekton@1.4.0) (2023-04-28) - -### Features - -- **tekton:** add cluster selector in the pipeline vis card ([#308](https://github.com/janus-idp/backstage-plugins/issues/308)) ([e321ba9](https://github.com/janus-idp/backstage-plugins/commit/e321ba9a18a8e72af86abe1df7d8ea47d429e3a5)) - -## @janus-idp/backstage-plugin-tekton [1.3.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.2.0...@janus-idp/backstage-plugin-tekton@1.3.0) (2023-04-28) - -### Features - -- **tekton:** tekton pipeline run list sort ([#253](https://github.com/janus-idp/backstage-plugins/issues/253)) ([356f637](https://github.com/janus-idp/backstage-plugins/commit/356f637d183eaa58e27be383db5834167f13c058)) - -## @janus-idp/backstage-plugin-tekton [1.2.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.1.1...@janus-idp/backstage-plugin-tekton@1.2.0) (2023-04-25) - -### Features - -- **tekton:** add latest pipelineRun visualization ([#242](https://github.com/janus-idp/backstage-plugins/issues/242)) ([87f7f5c](https://github.com/janus-idp/backstage-plugins/commit/87f7f5c3753c100dfd50fe8e6359e22651cfb3ae)) - -## @janus-idp/backstage-plugin-tekton [1.1.1](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.1.0...@janus-idp/backstage-plugin-tekton@1.1.1) (2023-04-19) - -### Bug Fixes - -- **tekton:** updates pf react-topology to standalone release ([#263](https://github.com/janus-idp/backstage-plugins/issues/263)) ([e739463](https://github.com/janus-idp/backstage-plugins/commit/e73946309fecfb3785419cf3543feefff4f54111)) - -## @janus-idp/backstage-plugin-tekton [1.1.0](https://github.com/janus-idp/backstage-plugins/compare/@janus-idp/backstage-plugin-tekton@1.0.0...@janus-idp/backstage-plugin-tekton@1.1.0) (2023-04-17) - -### Features - -- **tekton:** tekton pipeline run list page ([#236](https://github.com/janus-idp/backstage-plugins/issues/236)) ([864941f](https://github.com/janus-idp/backstage-plugins/commit/864941f96a0a733dc20914cc6127c39a9e3ebfb2)) - -## @janus-idp/backstage-plugin-tekton 1.0.0 (2023-04-03) - -### Features - -- **tekton:** tekton plugin init with backstage k8s plugin ([#214](https://github.com/janus-idp/backstage-plugins/issues/214)) ([eb2f6d8](https://github.com/janus-idp/backstage-plugins/commit/eb2f6d8dd3056e9be84051dbb8bba09de1455eb2)) diff --git a/plugins/tekton/CONTRIBUTING.md b/plugins/tekton/CONTRIBUTING.md deleted file mode 100644 index f26271984a..0000000000 --- a/plugins/tekton/CONTRIBUTING.md +++ /dev/null @@ -1,7 +0,0 @@ -# Setting up the development environment for Tekton plugin - -In [Backstage plugin terminology](https://backstage.io/docs/local-dev/cli-build-system#package-roles), the Tekton plugin is a front-end plugin. You can start a live development session from the repository root using the following command: - -```console -yarn workspace @janus-idp/backstage-plugin-tekton run start -``` diff --git a/plugins/tekton/README.md b/plugins/tekton/README.md index f61cd8526d..af6428986a 100644 --- a/plugins/tekton/README.md +++ b/plugins/tekton/README.md @@ -1,369 +1,3 @@ -# Tekton plugin for Backstage +# Deprecated -The Tekton plugin enables you to visualize the `PipelineRun` resources available on the Kubernetes cluster. - -## For administrators - -### Setting up the Tekton plugin - -#### Prerequisites - -- The Kubernetes backend plugin `@backstage/plugin-kubernetes-backend` is installed and configured by following the [installation](https://backstage.io/docs/features/kubernetes/installation) and [configuration](https://backstage.io/docs/features/kubernetes/configuration) guides. - -- The following `customResources` component is added in the [`app-config.yaml`](https://backstage.io/docs/features/kubernetes/configuration#configuring-kubernetes-clusters) file: - ```yaml - kubernetes: - ... - customResources: - - group: 'tekton.dev' - apiVersion: 'v1' - plural: 'pipelineruns' - - group: 'tekton.dev' - apiVersion: 'v1' - plural: 'taskruns' - ``` -- The Kubernetes plugin is configured and connects to the cluster using a `ServiceAccount`. -- The [`ClusterRole`](https://backstage.io/docs/features/kubernetes/configuration#role-based-access-control) must be granted for custom resources (PipelineRuns and TaskRuns) to `ServiceAccount` accessing the cluster. -- To view the pod logs, you have granted permissions for `pods/log`. -- If you have the Backstage Kubernetes Plugin configured, then the `ClusterRole` is already granted. - - You can use the following code to grant the `ClusterRole` for custom resources and pod logs: - - ```yaml - ... - apiVersion: rbac.authorization.k8s.io/v1 - kind: ClusterRole - metadata: - name: backstage-read-only - rules: - - apiGroups: - - "" - resources: - - pods/log - verbs: - - get - - list - - watch - ... - - apiGroups: - - tekton.dev - resources: - - pipelineruns - - taskruns - verbs: - - get - - list - - ``` - - > Tip: You can use the [prepared manifest for a read-only `ClusterRole`](https://raw.githubusercontent.com/janus-idp/backstage-plugins/main/plugins/tekton/manifests/clusterrole.yaml), which provides access for both Kubernetes plugin and Tekton plugin. - -- The following annotation is added to the entity's `catalog-info.yaml` file to identify whether an entity contains the Kubernetes resources: - - ```yaml - annotations: - ... - - backstage.io/kubernetes-id: - ``` - - You can also add the `backstage.io/kubernetes-namespace` annotation to identify the Kubernetes resources using the defined namespace. - - ```yaml - annotations: - ... - - backstage.io/kubernetes-namespace: - ``` - -- The following annotation is added to the `catalog-info.yaml` file of the entity to enable the Tekton related features in Backstage. The value of the annotation identifies the name of the Backstage entity: - - ```yaml - annotations: - ... - - janus-idp.io/tekton : - ``` - -- A custom label selector can be added, which Backstage uses to find the Kubernetes resources. The label selector takes precedence over the ID annotations. - - ```yaml - annotations: - ... - - backstage.io/kubernetes-label-selector: 'app=my-app,component=front-end' - ``` - -- The following label is added to the resources so that the Kubernetes plugin gets the Kubernetes resources from the requested entity: - - ```yaml - labels: - ... - - backstage.io/kubernetes-id: ` - ``` - - *** - - **NOTE** - - When using the label selector, the mentioned labels must be present on the resource. - - *** - -#### Procedure - -1. Install the Tekton plugin using the following command: - - ```console - yarn workspace app add @janus-idp/backstage-plugin-tekton - ``` - -1. To enable the PipelineRun list in the **CI/CD** tab on the entity view page, add the following snippet in the `packages/app/src/components/catalog/EntityPage.tsx`. - - ```tsx title="packages/app/src/components/catalog/EntityPage.tsx" - /* highlight-add-next-line */ - import { - isTektonCIAvailable, - TektonCI, - } from '@janus-idp/backstage-plugin-tekton'; - - const cicdContent = ( - - {/* ... */} - {/* highlight-add-start */} - - - - {/* highlight-add-end */} - - ); - ``` - -## For users - -### Using the Tekton plugin in Backstage - -Tekton is a front-end plugin that enables you to view the `PipelineRun` resources. - -#### Prerequisites - -- Your Backstage application is installed and running. -- You have installed the Tekton plugin. For the installation process, see [Installation](#setting-up-the-tekton-plugin). - -#### Procedure - -1. Open your Backstage application and select a component from the **Catalog** page. - -1. Go to the **CI/CD** tab. - - The **CI/CD** tab displays the list of PipelineRun resources associated with a Kubernetes cluster. The list contains pipeline run details, such as **NAME**, **STATUS**, **TASK STATUS**, **STARTED**, and **DURATION**. - - ![ci-cd-tab-tekton](./images/tekton-plugin-user4.png) - -1. Click on expand row button besides PipelineRun name in the list to view the PipelineRun visualization. The pipeline run resource include tasks to complete. When you hover the mouse pointer on a task card, you can view the steps to complete that particular task. - - ![pipelinerun-view](./images/tekton-plugin-user5.png) - -## Enabling UI elements - -### Vulnerabilites Column - -`Vulnerabilities` column provides a visual representation of identified vulnerabilities in the OCI image produced by the pipelinerun. The Author of the pipeline scanner task would provide the CVE summary data using the below format that the UI can interpret. - -The result of the scanner task should be emitted back to the pipelinerun and it should contain a result that ends with `SCAN_OUTPUT` string. - -## Format: - -Result name: `_SCAN_OUTPUT` -eg: `SCAN_OUTPUT`, `MY_ACS_SCAN_OUTPUT` - -Result value: `'{"vulnerabilities":{"critical": 0,"high": 9,"medium": 2,"low": 13,"unknown": 0}, - "unpatched_vulnerabilities": {"critical": 0,"high": 1,"medium": 0,"low":1}}'` - ---- - -Example PipelineRun: - -``` - ... - status: - results: - - name: 'MY_SCAN_OUTPUT' - value: - '{"vulnerabilities":{"critical": 0,"high": 9,"medium": 2,"low": 13,"unknown": 0}, - "unpatched_vulnerabilities": {"critical": 0,"high": 1,"medium": 0,"low":1}}' -``` - -![tekton-vulnerabilites](./images/tekton-plugin-vulnerabilities.png) - ---- - -## Action buttons - -### SBOM - -Link to SBOM action will be enabled if there is a SBOM task in the pipelinerun and it should contain required annotations and emit the below result - -## Format: - -annotations: - -``` - task.output.location: results - task.results.format: application/text - task.results.type: external-link # Optional: This will redirect to external page - task.results.key: LINK_TO_SBOM - -``` - -results.name: `LINK_T0_SBOM` - -results.value: `` - ---- - -Example: - -## Task: [Optional] - -``` -apiVersion: tekton.dev/v1 -kind: Task -metadata: - name: export-sbom-task - annotations: - task.output.location: results - task.results.format: application/text - task.results.type: external-link # Optional: This will redirect to external page - task.results.key: LINK_TO_SBOM -spec: … - steps: - - image: registry.access.redhat.com/ubi8/ubi-minimal - name: export-sbom - script: | - #!/bin/sh - ## sbom image generation script goes here - echo 'quay.io/repo/image:build-8e536-1692702836' | tee $(results.LINK_TO_SBOM.path) -``` - -_Note: Absence of the below annotation will open SBOM taskrun logs modal._ - -``` -task.results.type: external-link # This will redirect to external page -``` - -### Output: - -Output action will be enabled when the pipelinerun emits some results and/or contains taskruns with supported annotations and emits report data in pod logs. - -This action opens a modal where it will render the reports for Enterprise contract and Advanced cluster security. The report data should be exposed via pod logs and the taskruns should contain the following annotations. - -Examples: - -list of supported report tasks with correct annotations are listed below: - -## Enterprise contract Task [Optional]: - -``` -apiVersion: tekton.dev/v1 -kind: Task -metadata: - name: enterprise-contract-task - annotations: - task.results.format: application/json - task.results.type: ec - task.output.location: logs - task.results.container: step-report-json -spec: … - steps: - - name: report-json - image: quay.io/enterprise-contract/ec-cli:snapshot@sha256:33be4031a3316a46db3559a4d8566bc22f9d4d491d262d699614f32f35b45b67 - command: [cat] - args: - - "$(params.HOMEDIR)/report-json.json" - -``` - -![tekton-ec-report](./images/tekton-plugin-ec-output.png) - ---- - -## ACS Image scan Task [Optional]: - -``` -apiVersion: tekton.dev/v1 -kind: Task -metadata: - name: acs-image-scan - annotations: - task.results.format: application/json - task.results.type: roxctl-image-scan - task.results.key: SCAN_OUTPUT - task.output.location: logs - task.results.container: step-report -spec: … - steps: - - name: report - image: 'quay.io/lrangine/crda-maven:11.0' - script: | - #!/bin/sh - cat $(workspaces.reports.path)/image-scan - -``` - -## ACS Image check Task [Optional]: - -``` -apiVersion: tekton.dev/v1 -kind: Task -metadata: - name: acs-image-check - annotations: - task.results.format: application/json - task.results.type: roxctl-image-check - task.results.key: SCAN_OUTPUT - task.output.location: logs - task.results.container: step-report -spec: … - steps: - - name: report - image: 'quay.io/lrangine/crda-maven:11.0' - script: | - #!/bin/sh - cat $(workspaces.reports.path)/image-check - -``` - -## ACS Deployment check Task [Optional]: - -``` -apiVersion: tekton.dev/v1 -kind: Task -metadata: - name: acs-deployment-check - annotations: - task.results.format: application/json - task.results.type: roxctl-deployment-check - task.results.key: SCAN_OUTPUT - task.output.location: logs - task.results.container: step-report -spec: … - steps: - - name: report - image: 'quay.io/lrangine/crda-maven:11.0' - script: | - #!/bin/sh - cat $(workspaces.reports.path)/deployment-check - -``` - -![tekton-acs-report](./images/tekton-plugin-acs-output.png) - ---- - -## Pipelinerun results - -The results emitted in the pipelinerun resource will be available in the Others section in the output modal. - -![tekton-pipelinerun-report](./images/tekton-plugin-pipelinerun-output.png) +This package has been moved to the [backstage-community/plugins](https://github.com/backstage/community-plugins) repository. Migrate to using `@backstage-community/plugin-tekton` instead. \ No newline at end of file diff --git a/plugins/tekton/app-config.janus-idp.yaml b/plugins/tekton/app-config.janus-idp.yaml deleted file mode 100644 index 65affeda61..0000000000 --- a/plugins/tekton/app-config.janus-idp.yaml +++ /dev/null @@ -1,12 +0,0 @@ -dynamicPlugins: - frontend: - janus-idp.backstage-plugin-tekton: - mountPoints: - - mountPoint: entity.page.ci/cards - importName: TektonCI - config: - layout: - gridColumn: '1 / -1' - if: - allOf: - - isTektonCIAvailable diff --git a/plugins/tekton/catalog-info.yaml b/plugins/tekton/catalog-info.yaml deleted file mode 100644 index f4495c41e1..0000000000 --- a/plugins/tekton/catalog-info.yaml +++ /dev/null @@ -1,57 +0,0 @@ -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-tekton - title: Tekton plugin - description: Tekton plugin for Backstage - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/tekton - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/tekton/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/tekton/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/rhtap - sonarqube.org/project-key: janus-idp_backstage-plugins - tags: - - kubernetes - - openshift - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/tekton - title: GitHub Source - icon: source - type: source -spec: - type: backstage-plugin - lifecycle: production - owner: rhtap-team - system: rhdh - subcomponentOf: janus-idp-backstage-plugins ---- -# https://backstage.io/docs/features/software-catalog/descriptor-format#kind-component -apiVersion: backstage.io/v1alpha1 -kind: Component -metadata: - name: janus-idp-tekton-frontend - title: '@janus-idp/backstage-plugin-tekton' - description: Tekton plugin for Backstage - annotations: - backstage.io/source-location: url:https://github.com/janus-idp/backstage-plugins/tree/main/plugins/tekton - backstage.io/view-url: https://github.com/janus-idp/backstage-plugins/blob/main/plugins/tekton/catalog-info.yaml - backstage.io/edit-url: https://github.com/janus-idp/backstage-plugins/edit/main/plugins/tekton/catalog-info.yaml - github.com/project-slug: janus-idp/backstage-plugins - github.com/team-slug: janus-idp/rhtap - sonarqube.org/project-key: janus-idp_backstage-plugins - tags: - - kubernetes - - openshift - links: - - url: https://github.com/janus-idp/backstage-plugins/tree/main/plugins/tekton - title: GitHub Source - icon: source - type: source -spec: - type: backstage-frontend-plugin - lifecycle: production - owner: rhtap-team - system: rhdh - subcomponentOf: janus-idp-tekton diff --git a/plugins/tekton/dev/index.tsx b/plugins/tekton/dev/index.tsx deleted file mode 100644 index b85b67ca40..0000000000 --- a/plugins/tekton/dev/index.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import React from 'react'; - -import { Entity } from '@backstage/catalog-model'; -import { createDevApp } from '@backstage/dev-utils'; -import { EntityProvider } from '@backstage/plugin-catalog-react'; -import { - KubernetesApi, - KubernetesProxyApi, -} from '@backstage/plugin-kubernetes-react'; -import { permissionApiRef } from '@backstage/plugin-permission-react'; -import { MockPermissionApi, TestApiProvider } from '@backstage/test-utils'; - -import { getAllThemes } from '@redhat-developer/red-hat-developer-hub-theme'; - -import { mockKubernetesPlrResponse } from '../src/__fixtures__/1-pipelinesData'; -import { - acsDeploymentCheck, - acsImageCheckResults, - acsImageScanResult, -} from '../src/__fixtures__/advancedClusterSecurityData'; -import { enterpriseContractResult } from '../src/__fixtures__/enterpriseContractData'; -import { TektonCI, tektonPlugin } from '../src/plugin'; -import { - kubernetesApiRef, - kubernetesAuthProvidersApiRef, - kubernetesProxyApiRef, -} from '../src/types/types'; - -const mockEntity: Entity = { - apiVersion: 'backstage.io/v1alpha1', - kind: 'Component', - metadata: { - name: 'backstage', - description: 'backstage.io', - annotations: { - 'backstage.io/kubernetes-id': 'backstage', - 'janus-idp.io/tekton': 'app', - }, - }, - spec: { - lifecycle: 'production', - type: 'service', - owner: 'user:guest', - }, -}; - -const mockPermissionApi = new MockPermissionApi(); -class MockKubernetesProxyApi implements KubernetesProxyApi { - async getPodLogs(_request: any): Promise { - const delayedResponse = (data: string, ms: number) => - new Promise(resolve => { - setTimeout(() => { - resolve({ - text: data, - }); - }, ms); - }); - - if (_request.podName.includes('ec-task')) { - return delayedResponse(JSON.stringify(enterpriseContractResult), 100); - } - - if (_request.podName.includes('image-scan-task')) { - return delayedResponse(JSON.stringify(acsImageScanResult), 200); - } - - if (_request.podName.includes('image-check-task')) { - return delayedResponse(JSON.stringify(acsImageCheckResults), 300); - } - - if (_request.podName.includes('deployment-check-task')) { - return delayedResponse(JSON.stringify(acsDeploymentCheck), 400); - } - - const response = `\nstreaming logs from container: ${_request.containerName} \n...`; - return delayedResponse(response, 500); - } - - async getEventsByInvolvedObjectName(): Promise { - return {}; - } -} -class MockKubernetesClient implements KubernetesApi { - readonly resources; - - constructor(fixtureData: { [resourceType: string]: any[] }) { - this.resources = Object.entries(fixtureData).flatMap( - ([type, resources]) => { - if (type === 'pipelineruns' && resources[0]?.kind === 'PipelineRun') { - return { - type: 'customresources', - resources, - }; - } else if (type === 'taskruns' && resources[0]?.kind === 'TaskRun') { - return { - type: 'customresources', - resources, - }; - } - return { - type: type.toLocaleLowerCase('en-US'), - resources, - }; - }, - ); - } - - async getWorkloadsByEntity(_request: any): Promise { - return { - items: [ - { - cluster: { name: 'mock-cluster' }, - resources: this.resources, - podMetrics: [], - errors: [], - }, - ], - }; - } - async getCustomObjectsByEntity(_request: any): Promise { - return { - items: [ - { - cluster: { name: 'mock-cluster' }, - resources: this.resources, - podMetrics: [], - errors: [], - }, - ], - }; - } - - async getObjectsByEntity(): Promise { - return { - items: [ - { - cluster: { name: 'mock-cluster' }, - resources: this.resources, - podMetrics: [], - errors: [], - }, - ], - }; - } - - async getClusters(): Promise<{ name: string; authProvider: string }[]> { - return [{ name: 'mock-cluster', authProvider: 'serviceAccount' }]; - } - - async getCluster(_clusterName: string): Promise< - | { - name: string; - authProvider: string; - oidcTokenProvider?: string; - dashboardUrl?: string; - } - | undefined - > { - return { name: 'mock-cluster', authProvider: 'serviceAccount' }; - } - - async proxy(_options: { clusterName: String; path: String }): Promise { - return { - kind: 'Namespace', - apiVersion: 'v1', - metadata: { - name: 'mock-ns', - }, - }; - } -} - -const mockKubernetesAuthProviderApiRef = { - decorateRequestBodyForAuth: async () => { - return { - entity: { - apiVersion: 'v1', - kind: 'xyz', - metadata: { name: 'hey' }, - }, - }; - }, - getCredentials: async () => { - return {}; - }, -}; - -createDevApp() - .addThemes(getAllThemes()) - .addPage({ - element: ( - - - - - - ), - title: 'Tekton CI', - path: '/tekton', - }) - .registerPlugin(tektonPlugin) - .render(); diff --git a/plugins/tekton/images/tekton-plugin-acs-output.png b/plugins/tekton/images/tekton-plugin-acs-output.png deleted file mode 100644 index 263ee4f4b4..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-acs-output.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-ec-output.png b/plugins/tekton/images/tekton-plugin-ec-output.png deleted file mode 100644 index 3dc5b01b23..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-ec-output.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-pipelinerun-output.png b/plugins/tekton/images/tekton-plugin-pipelinerun-output.png deleted file mode 100644 index b10d9e4b30..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-pipelinerun-output.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-user1.png b/plugins/tekton/images/tekton-plugin-user1.png deleted file mode 100644 index e9c60c2f14..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-user1.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-user2.png b/plugins/tekton/images/tekton-plugin-user2.png deleted file mode 100644 index 6eae95ffa9..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-user2.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-user3.png b/plugins/tekton/images/tekton-plugin-user3.png deleted file mode 100644 index cbe6aabde6..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-user3.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-user4.png b/plugins/tekton/images/tekton-plugin-user4.png deleted file mode 100644 index 6703ccc776..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-user4.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-user5.png b/plugins/tekton/images/tekton-plugin-user5.png deleted file mode 100644 index e3f701c237..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-user5.png and /dev/null differ diff --git a/plugins/tekton/images/tekton-plugin-vulnerabilities.png b/plugins/tekton/images/tekton-plugin-vulnerabilities.png deleted file mode 100644 index 8d1b287448..0000000000 Binary files a/plugins/tekton/images/tekton-plugin-vulnerabilities.png and /dev/null differ diff --git a/plugins/tekton/manifests/clusterrole.yaml b/plugins/tekton/manifests/clusterrole.yaml deleted file mode 100644 index 61586fd5d4..0000000000 --- a/plugins/tekton/manifests/clusterrole.yaml +++ /dev/null @@ -1,71 +0,0 @@ -kind: ClusterRole -apiVersion: rbac.authorization.k8s.io/v1 -metadata: - name: janus-idp-tekton-plugin -rules: - # Base for Kubernetes plugin - - apiGroups: - - '' - resources: - - pods/log - - pods - - services - - configmaps - - limitranges - verbs: - - get - - watch - - list - - apiGroups: - - metrics.k8s.io - resources: - - pods - verbs: - - get - - watch - - list - - apiGroups: - - apps - resources: - - daemonsets - - deployments - - replicasets - - statefulsets - verbs: - - get - - watch - - list - - apiGroups: - - autoscaling - resources: - - horizontalpodautoscalers - verbs: - - get - - watch - - list - - apiGroups: - - networking.k8s.io - resources: - - ingresses - verbs: - - get - - watch - - list - - apiGroups: - - batch - resources: - - jobs - - cronjobs - verbs: - - get - - watch - - list - # Additional permissions for the @janus-idp/backstage-plugin-tekton - - apiGroups: - - tekton.dev - resources: - - pipelineruns - - taskruns - verbs: - - get - - list diff --git a/plugins/tekton/package.json b/plugins/tekton/package.json deleted file mode 100644 index 07493cb19f..0000000000 --- a/plugins/tekton/package.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "name": "@janus-idp/backstage-plugin-tekton", - "version": "3.15.1", - "main": "src/index.ts", - "types": "src/index.ts", - "license": "Apache-2.0", - "publishConfig": { - "access": "public", - "main": "dist/index.esm.js", - "types": "dist/index.d.ts" - }, - "backstage": { - "role": "frontend-plugin", - "supported-versions": "1.32.5", - "pluginId": "tekton", - "pluginPackage": "@janus-idp/backstage-plugin-tekton", - "pluginPackages": [ - "@janus-idp/backstage-plugin-tekton", - "@janus-idp/backstage-plugin-tekton-common" - ] - }, - "sideEffects": [ - "./**/*.css" - ], - "scripts": { - "build": "backstage-cli package build", - "clean": "backstage-cli package clean", - "lint:check": "backstage-cli package lint", - "lint:fix": "backstage-cli package lint --fix", - "postpack": "backstage-cli package postpack", - "prepack": "backstage-cli package prepack", - "start": "backstage-cli package start", - "test": "backstage-cli package test --passWithNoTests --coverage", - "tsc": "tsc", - "prettier:check": "prettier --ignore-unknown --check .", - "prettier:fix": "prettier --ignore-unknown --write .", - "ui-test": "start-server-and-test start localhost:3000 'playwright test'" - }, - "dependencies": { - "@aonic-ui/pipelines": "^1.1.1", - "@backstage/catalog-model": "^1.7.0", - "@backstage/core-components": "^0.15.1", - "@backstage/core-plugin-api": "^1.10.0", - "@backstage/plugin-catalog-react": "^1.14.0", - "@backstage/plugin-kubernetes": "^0.11.16", - "@backstage/plugin-kubernetes-common": "^0.8.3", - "@backstage/plugin-kubernetes-react": "^0.4.4", - "@backstage/plugin-permission-react": "^0.4.27", - "@backstage/theme": "^0.6.0", - "@janus-idp/backstage-plugin-tekton-common": "^1.3.1", - "@janus-idp/shared-react": "^2.13.1", - "@kubernetes/client-node": "^0.22.1", - "@material-ui/core": "^4.9.13", - "@material-ui/icons": "^4.11.3", - "@material-ui/lab": "^4.0.0-alpha.45", - "@mui/icons-material": "5.15.17", - "@patternfly/patternfly": "^5.1.0", - "@patternfly/react-charts": "^7.1.1", - "@patternfly/react-core": "^5.1.2", - "@patternfly/react-tokens": "^5.1.2", - "@patternfly/react-topology": "^5.1.0", - "classnames": "^2.3.2", - "dagre": "^0.8.5", - "lodash": "^4.17.21", - "react-measure": "^2.5.2", - "react-use": "^17.4.0" - }, - "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-router-dom": "^6.0.0" - }, - "devDependencies": { - "@backstage/cli": "0.28.2", - "@backstage/core-app-api": "1.15.1", - "@backstage/dev-utils": "1.1.2", - "@backstage/test-utils": "1.7.0", - "@playwright/test": "1.45.3", - "@redhat-developer/red-hat-developer-hub-theme": "0.4.0", - "@testing-library/jest-dom": "6.4.8", - "@testing-library/react": "14.3.1", - "@testing-library/react-hooks": "8.0.1", - "@testing-library/user-event": "14.5.2", - "@types/node": "18.19.34", - "cross-fetch": "4.0.0", - "msw": "1.3.3", - "prettier": "3.3.3", - "start-server-and-test": "2.0.8" - }, - "files": [ - "dist", - "dist-scalprum", - "app-config.janus-idp.yaml" - ], - "repository": { - "type": "git", - "url": "https://github.com/janus-idp/backstage-plugins", - "directory": "plugins/tekton" - }, - "keywords": [ - "support:production", - "lifecycle:active", - "backstage", - "plugin" - ], - "homepage": "https://red.ht/rhdh", - "bugs": "https://github.com/janus-idp/backstage-plugins/issues", - "maintainers": [ - "@janus-idp/rhtap" - ], - "author": "Red Hat" -} diff --git a/plugins/tekton/playwright.config.ts b/plugins/tekton/playwright.config.ts deleted file mode 100644 index 0802a5e45d..0000000000 --- a/plugins/tekton/playwright.config.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { defineConfig, devices } from '@playwright/test'; - -/** - * See https://playwright.dev/docs/test-configuration. - */ -export default defineConfig({ - testDir: './tests', - /* Run tests in files in parallel */ - fullyParallel: true, - /* Fail the build on CI if you accidentally left test.only in the source code. */ - forbidOnly: !!process.env.CI, - /* Retry on CI only */ - retries: process.env.CI ? 2 : 0, - /* Run tests in sequence. */ - workers: 1, - /* Reporter to use. See https://playwright.dev/docs/test-reporters */ - reporter: process.env.CI ? 'github' : 'list', - /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ - use: { - baseURL: process.env.PLUGIN_BASE_URL || 'http://localhost:3000', - /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ - trace: 'on-first-retry', - screenshot: 'only-on-failure', - video: 'retain-on-failure', - }, - - /* Configure projects for major browsers */ - projects: [ - { - name: 'chromium', - use: { ...devices['Desktop Chrome'] }, - }, - ], -}); diff --git a/plugins/tekton/src/__fixtures__/1-pipelinesData.ts b/plugins/tekton/src/__fixtures__/1-pipelinesData.ts deleted file mode 100644 index 17335fd502..0000000000 --- a/plugins/tekton/src/__fixtures__/1-pipelinesData.ts +++ /dev/null @@ -1,1243 +0,0 @@ -import { - acsDeploymentCheckTaskRun, - acsImageCheckTaskRun, - acsImageScanTaskRun, - enterpriseContractTaskRun, - taskRunWithSBOMResult, - taskRunWithSBOMResultExternalLink, -} from './taskRunData'; - -export const mockKubernetesPlrResponse = { - pods: [ - { - metadata: { - name: 'pipeline-test-wbvtlk-tkn-pod', - namespace: 'karthik', - uid: 'bd868fde-1b37-4168-a780-f1772c5924e3', - resourceVersion: '379524', - labels: { - 'app.kubernetes.io/managed-by': 'tekton-pipelines', - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/clusterTask': 'tkn', - 'tekton.dev/memberOf': 'tasks', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'pipeline-test-wbvtlk', - 'tekton.dev/pipelineTask': 'tkn', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-task1', - }, - }, - spec: { - volumes: [ - { - name: 'tekton-internal-workspace', - emptyDir: {}, - }, - ], - containers: [ - { - name: 'step-tkn', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - startTime: new Date('2023-12-08T12:19:29Z'), - }, - }, - { - metadata: { - name: 'ruby-ex-git-xf45fo-build-pod', - generateName: 'ruby-ex-git-66d547b559-', - namespace: 'jai-test', - uid: 'cec5c859-3557-49aa-89db-d287f94d1ad8', - resourceVersion: '87565', - creationTimestamp: new Date('2023-03-30T07:04:54Z'), - labels: { - app: 'ruby-ex-git', - 'backstage.io/kubernetes-id': 'backstage', - deployment: 'ruby-ex-git', - 'pod-template-hash': '66d547b559', - 'tekton.dev/pipelineRun': 'ruby-ex-git-xf45fo', - 'tekton.dev/pipelineTask': 'build', - }, - ownerReferences: [ - { - apiVersion: 'apps/v1', - kind: 'ReplicaSet', - name: 'ruby-ex-git-66d547b559', - uid: '8a781d94-c73d-4f07-8d1f-b797db949e4a', - controller: true, - blockOwnerDeletion: true, - }, - ], - }, - spec: { - volumes: [ - { - name: 'kube-api-access-hzpnl', - projected: { - sources: [ - { - serviceAccountToken: { - expirationSeconds: 3607, - path: 'token', - }, - }, - { - configMap: { - name: 'kube-root-ca.crt', - items: [ - { - key: 'ca.crt', - path: 'ca.crt', - }, - ], - }, - }, - { - downwardAPI: { - items: [ - { - path: 'namespace', - fieldRef: { - apiVersion: 'v1', - fieldPath: 'metadata.namespace', - }, - }, - ], - }, - }, - { - configMap: { - name: 'openshift-service-ca.crt', - items: [ - { - key: 'service-ca.crt', - path: 'service-ca.crt', - }, - ], - }, - }, - ], - defaultMode: 420, - }, - }, - ], - containers: [ - { - name: 'ruby-ex-git', - image: - 'image-registry.openshift-image-registry.svc:5000/jai-test/ruby-ex-git@sha256:ade428dd4cb303a2ab9f1e0d5a6a86d6c035655d14f989e856f11bf3baef9bf2', - ports: [ - { - containerPort: 8080, - protocol: 'TCP', - }, - ], - resources: {}, - volumeMounts: [ - { - name: 'kube-api-access-hzpnl', - readOnly: true, - mountPath: '/var/run/secrets/kubernetes.io/serviceaccount', - }, - ], - terminationMessagePath: '/dev/termination-log', - terminationMessagePolicy: 'File', - imagePullPolicy: 'Always', - securityContext: { - capabilities: { - drop: ['ALL'], - }, - runAsUser: 1000690000, - runAsNonRoot: true, - allowPrivilegeEscalation: false, - }, - }, - ], - restartPolicy: 'Always', - terminationGracePeriodSeconds: 30, - dnsPolicy: 'ClusterFirst', - serviceAccountName: 'default', - serviceAccount: 'default', - nodeName: 'ip-10-0-170-221.us-east-2.compute.internal', - securityContext: { - seLinuxOptions: { - level: 's0:c26,c20', - }, - fsGroup: 1000690000, - seccompProfile: { - type: 'RuntimeDefault', - }, - }, - imagePullSecrets: [ - { - name: 'default-dockercfg-wtjl6', - }, - ], - schedulerName: 'default-scheduler', - tolerations: [ - { - key: 'node.kubernetes.io/not-ready', - operator: 'Exists', - effect: 'NoExecute', - tolerationSeconds: 300, - }, - { - key: 'node.kubernetes.io/unreachable', - operator: 'Exists', - effect: 'NoExecute', - tolerationSeconds: 300, - }, - ], - priority: 0, - enableServiceLinks: true, - preemptionPolicy: 'PreemptLowerPriority', - }, - status: { - phase: 'Running', - conditions: [ - { - type: 'Initialized', - status: 'True', - lastProbeTime: null, - lastTransitionTime: '2023-03-30T07:04:54Z', - }, - { - type: 'Ready', - status: 'True', - lastProbeTime: null, - lastTransitionTime: '2023-03-30T07:05:12Z', - }, - { - type: 'ContainersReady', - status: 'True', - lastProbeTime: null, - lastTransitionTime: '2023-03-30T07:05:12Z', - }, - { - type: 'PodScheduled', - status: 'True', - lastProbeTime: null, - lastTransitionTime: '2023-03-30T07:04:54Z', - }, - ], - startTime: '2023-03-30T07:04:54Z', - containerStatuses: [ - { - name: 'ruby-ex-git', - state: { - running: { - startedAt: '2023-03-30T07:05:11Z', - }, - }, - lastState: {}, - ready: true, - restartCount: 0, - image: - 'image-registry.openshift-image-registry.svc:5000/jai-test/ruby-ex-git@sha256:ade428dd4cb303a2ab9f1e0d5a6a86d6c035655d14f989e856f11bf3baef9bf2', - imageID: - 'image-registry.openshift-image-registry.svc:5000/jai-test/ruby-ex-git@sha256:ade428dd4cb303a2ab9f1e0d5a6a86d6c035655d14f989e856f11bf3baef9bf2', - containerID: - 'cri-o://85af7fd408b95c3800ea83349541f10bf888903d0a1e19378489724b9a718607', - started: true, - }, - ], - qosClass: 'BestEffort', - }, - }, - { - metadata: { - name: 'pipelineRun-ec-task-t237ev-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-three', - 'tekton.dev/pipelineTask': 'scan-task', - 'tekton.dev/task': 'scan-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-scan-task', - }, - }, - spec: { - containers: [ - { - name: 'step-ec-report', - }, - ], - }, - status: { - phase: 'Running', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - { - metadata: { - name: 'pipelineRun-ec-task-t237ev-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-8e09zm', - 'tekton.dev/pipelineTask': 'sbom-task', - 'tekton.dev/task': 'sbom-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-ec-report', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - { - metadata: { - name: 'pipelineRun-image-scan-task-t237ev-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-8e09zm', - 'tekton.dev/pipelineTask': 'sbom-task', - 'tekton.dev/task': 'sbom-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-print-scan-results', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - { - metadata: { - name: 'pipelineRun-image-check-task-t237ev-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-8e09zm', - 'tekton.dev/pipelineTask': 'sbom-task', - 'tekton.dev/task': 'sbom-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-print-scan-results', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - { - metadata: { - name: 'pipelineRun-deployment-check-task-t237ev-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-8e09zm', - 'tekton.dev/pipelineTask': 'sbom-task', - 'tekton.dev/task': 'sbom-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-print-scan-results', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - { - metadata: { - name: 'pipelinerun-with-sbom-task-t237ev-sbom-task-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'pipelinerun-with-sbom-task', - 'tekton.dev/pipelineTask': 'sbom-task', - 'tekton.dev/task': 'sbom-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-print-sbom-results', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - { - metadata: { - name: 'pipelinerun-with-sbom-task-with-external-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'pipelinerun-with-external-sbom-task', - 'tekton.dev/pipelineTask': 'sbom-task-with-external-link', - 'tekton.dev/task': 'sbom-task-with-external-link', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-print-sbom-results', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - ], - pipelineruns: [ - { - apiVersion: 'tekton.dev/v1', - kind: 'PipelineRun', - metadata: { - annotations: { - 'chains.tekton.dev/signed': 'true', - 'pipeline.openshift.io/started-by': 'kube:admin', - }, - creationTimestamp: new Date('2023-03-30T07:03:04Z'), - generation: 1, - labels: { - 'app.kubernetes.io/instance': 'ruby-ex-git', - 'app.kubernetes.io/name': 'ruby-ex-git', - 'backstage.io/kubernetes-id': 'backstage', - 'operator.tekton.dev/operand-name': 'openshift-pipelines-addons', - 'pipeline.openshift.io/runtime': 'ruby', - 'pipeline.openshift.io/runtime-version': '3.0-ubi7', - 'pipeline.openshift.io/type': 'kubernetes', - 'tekton.dev/pipeline': 'ruby-ex-git', - }, - name: 'ruby-ex-git-xf45fo', - namespace: 'jai-test', - resourceVersion: '87613', - uid: 'b7584993-146c-4d4d-ba39-8619237e940b', - }, - spec: { - params: [], - pipelineRef: { - name: 'ruby-ex-git', - }, - serviceAccountName: 'pipeline', - timeout: '1h0m0s', - workspaces: [], - }, - status: { - completionTime: '2023-03-30T07:05:13Z', - conditions: [ - { - lastTransitionTime: '2023-03-30T07:05:13Z', - message: 'Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0', - status: 'Unknown', - type: 'Succeeded', - }, - ], - pipelineSpec: { - params: [], - tasks: [ - { - name: 'fetch-repository', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'git-clone', - }, - workspaces: [], - }, - { - name: 'build', - params: [], - runAfter: ['fetch-repository'], - taskRef: { - kind: 'ClusterTask', - name: 's2i-ruby', - }, - workspaces: [], - }, - { - name: 'deploy', - params: [], - runAfter: ['build'], - taskRef: { - kind: 'ClusterTask', - name: 'openshift-client', - }, - }, - ], - workspaces: [], - }, - startTime: '2023-03-30T07:03:04Z', - }, - }, - { - apiVersion: 'tekton.dev/v1', - kind: 'PipelineRun', - metadata: { - annotations: { - 'pipeline.openshift.io/started-by': 'kube-admin', - 'chains.tekton.dev/signed': 'false', - }, - labels: { - 'backstage.io/kubernetes-id': 'test-backstage', - 'tekton.dev/pipeline': 'pipeline-test', - 'app.kubernetes.io/instance': 'abs', - 'app.kubernetes.io/name': 'ghg', - 'operator.tekton.dev/operand-name': 'ytui', - 'pipeline.openshift.io/runtime-version': 'hjkhk', - 'pipeline.openshift.io/type': 'hhu', - 'pipeline.openshift.io/runtime': 'node', - }, - name: 'pipeline-test-wbvtlk', - namespace: 'deb-test', - resourceVersion: '117337', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a9a24', - creationTimestamp: new Date('2023-04-11T12:31:56Z'), - }, - spec: { - pipelineRef: { - name: 'pipeline-test', - }, - serviceAccountName: 'pipeline', - workspaces: [], - }, - status: { - completionTime: '2023-04-11T06:49:05Z', - conditions: [ - { - lastTransitionTime: '2023-04-11T06:49:05Z', - message: 'Tasks Completed: 4 (Failed: 3, Cancelled 0), Skipped: 0', - reason: 'Failed', - status: 'False', - type: 'Succeeded', - }, - ], - pipelineSpec: { - finally: [ - { - name: 'git-clone', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'git-clone', - }, - workspaces: [], - }, - ], - tasks: [ - { - name: 'buildah', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'buildah', - }, - workspaces: [], - }, - { - name: 'tkn', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'tkn', - }, - }, - { - name: 'argocd-task-sync-and-wait', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'argocd-task-sync-and-wait', - }, - }, - ], - workspaces: [], - startTime: '2023-04-11T06:48:50Z', - }, - startTime: '2023-04-11T05:49:05Z', - }, - }, - { - apiVersion: 'tekton.dev/v1', - kind: 'PipelineRun', - metadata: { - annotations: { - 'pipeline.openshift.io/started-by': 'kube-admin', - 'chains.tekton.dev/signed': 'false', - }, - labels: { - 'backstage.io/kubernetes-id': 'test-backstage', - 'tekton.dev/pipeline': 'pipeline-test', - 'app.kubernetes.io/instance': 'abs', - 'app.kubernetes.io/name': 'ghg', - 'operator.tekton.dev/operand-name': 'ytui', - 'pipeline.openshift.io/runtime-version': 'hjkhk', - 'pipeline.openshift.io/type': 'hhu', - 'pipeline.openshift.io/runtime': 'node', - }, - name: 'pipelinerun-with-scanner-task', - namespace: 'deb-test', - resourceVersion: '117337', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a9b14', - creationTimestamp: new Date('2023-04-11T12:31:56Z'), - }, - spec: { - pipelineRef: { - name: 'pipeline-test', - }, - serviceAccountName: 'pipeline', - workspaces: [], - }, - status: { - completionTime: '2023-04-11T06:49:05Z', - conditions: [ - { - lastTransitionTime: '2023-03-30T07:05:13Z', - message: 'Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - pipelineSpec: { - tasks: [ - { - name: 'scan-task', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'scan-task', - }, - workspaces: [], - }, - ], - workspaces: [], - startTime: '2023-04-11T06:48:50Z', - }, - results: [ - { - name: 'SCAN_OUTPUT', - value: - '{"vulnerabilities":{\n"critical": 13,\n"high": 29,\n"medium": 32,\n"low": 3,\n"unknown": 0},\n"unpatched_vulnerabilities": {\n"critical": 0,\n"high": 1,\n"medium": 0,\n"low":1}\n}\n', - }, - ], - startTime: '2023-04-11T05:49:05Z', - }, - }, - { - apiVersion: 'tekton.dev/v1', - kind: 'PipelineRun', - metadata: { - annotations: { - 'pipeline.openshift.io/started-by': 'kube-admin', - 'chains.tekton.dev/signed': 'false', - }, - labels: { - 'backstage.io/kubernetes-id': 'test-backstage', - 'tekton.dev/pipeline': 'pipeline-test', - 'app.kubernetes.io/instance': 'abs', - 'app.kubernetes.io/name': 'ghg', - 'operator.tekton.dev/operand-name': 'ytui', - 'pipeline.openshift.io/runtime-version': 'hjkhk', - 'pipeline.openshift.io/type': 'hhu', - 'pipeline.openshift.io/runtime': 'node', - }, - name: 'pipelinerun-with-sbom-task', - namespace: 'deb-test', - resourceVersion: '117337', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a8b24', - creationTimestamp: new Date('2023-04-11T12:31:56Z'), - }, - spec: { - pipelineRef: { - name: 'pipeline-test', - }, - serviceAccountName: 'pipeline', - workspaces: [], - }, - status: { - completionTime: '2023-04-11T06:49:05Z', - conditions: [ - { - lastTransitionTime: '2023-03-30T07:05:13Z', - message: 'Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - pipelineSpec: { - tasks: [ - { - name: 'sbom-task', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'sbom-task', - }, - workspaces: [], - }, - ], - workspaces: [], - startTime: '2023-04-11T06:48:50Z', - }, - startTime: '2023-04-11T05:49:05Z', - }, - }, - { - apiVersion: 'tekton.dev/v1', - kind: 'PipelineRun', - metadata: { - annotations: { - 'pipeline.openshift.io/started-by': 'kube-admin', - 'chains.tekton.dev/signed': 'false', - }, - labels: { - 'backstage.io/kubernetes-id': 'test-backstage', - 'tekton.dev/pipeline': 'pipeline-test', - 'app.kubernetes.io/instance': 'abs', - 'app.kubernetes.io/name': 'ghg', - 'operator.tekton.dev/operand-name': 'ytui', - 'pipeline.openshift.io/runtime-version': 'hjkhk', - 'pipeline.openshift.io/type': 'hhu', - 'pipeline.openshift.io/runtime': 'node', - }, - name: 'pipelinerun-with-external-sbom-task', - namespace: 'deb-test', - resourceVersion: '117337', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a9b26', - creationTimestamp: new Date('2023-04-11T12:31:56Z'), - }, - spec: { - pipelineRef: { - name: 'pipeline-test', - }, - serviceAccountName: 'pipeline', - workspaces: [], - }, - status: { - completionTime: '2023-04-11T06:49:05Z', - conditions: [ - { - lastTransitionTime: '2023-03-30T07:05:13Z', - message: 'Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - pipelineSpec: { - tasks: [ - { - name: 'sbom-task-with-external-link', - params: [], - taskRef: { - kind: 'ClusterTask', - name: 'sbom-task-with-external-link', - }, - workspaces: [], - }, - ], - workspaces: [], - startTime: '2023-04-11T06:48:50Z', - }, - pipelineResults: [ - { - name: 'MY_SCAN_OUTPUT', - value: - '{"vulnerabilities":{\n"critical": 1,\n"high": 9,\n"medium": 20,\n"low": 1,\n"unknown": 0},\n"unpatched_vulnerabilities": {\n"critical": 0,\n"high": 1,\n"medium": 0,\n"low":1}\n}\n', - }, - ], - startTime: '2023-04-11T05:49:05Z', - }, - }, - ], - taskruns: [ - { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - annotations: { - 'operator.tekton.dev/last-applied-hash': - '63911846cb698608618c9a280f25b886ea3ee59f84a4ef6da15738a699e09f0c', - 'pipeline.openshift.io/started-by': 'kube:admin', - 'pipeline.tekton.dev/release': '9ec444e', - 'tekton.dev/displayName': 's2i ruby', - 'tekton.dev/pipelines.minVersion': '0.19', - 'tekton.dev/tags': 's2i, ruby, workspace', - }, - creationTimestamp: new Date('2023-03-30T07:03:20Z'), - generation: 1, - labels: { - 'app.kubernetes.io/instance': 'ruby-ex-git', - 'app.kubernetes.io/managed-by': 'tekton-pipelines', - 'app.kubernetes.io/name': 'ruby-ex-git', - 'app.kubernetes.io/version': '0.1', - 'backstage.io/kubernetes-id': 'backstage', - 'operator.tekton.dev/operand-name': 'openshift-pipelines-addons', - 'operator.tekton.dev/provider-type': 'redhat', - 'pipeline.openshift.io/runtime': 'ruby', - 'pipeline.openshift.io/runtime-version': '3.0-ubi7', - 'pipeline.openshift.io/type': 'kubernetes', - 'tekton.dev/clusterTask': 's2i-ruby', - 'tekton.dev/memberOf': 'tasks', - 'tekton.dev/pipeline': 'ruby-ex-git', - 'tekton.dev/pipelineRun': 'ruby-ex-git-xf45fo', - 'tekton.dev/pipelineTask': 'build', - }, - name: 'ruby-ex-git-xf45fo-build', - namespace: 'jai-test', - ownerReferences: [ - { - apiVersion: 'tekton.dev/v1', - blockOwnerDeletion: true, - controller: true, - kind: 'PipelineRun', - name: 'ruby-ex-git-xf45fo', - uid: 'b7584993-146c-4d4d-ba39-8619237e940b', - }, - ], - resourceVersion: '87287', - uid: 'e8d42c4a-b9c7-4f56-9482-d17f2c861804', - }, - spec: { - params: [], - resources: [], - serviceAccountName: 'pipeline', - taskRef: { - kind: 'ClusterTask', - name: 's2i-ruby', - }, - timeout: '1h0m0s', - workspaces: [ - { - name: 'source', - persistentVolumeClaim: { - claimName: 'pvc-f7934bb0ae', - }, - }, - ], - }, - status: { - completionTime: '2023-03-30T07:04:55Z', - conditions: [ - { - lastTransitionTime: '2023-03-30T07:04:55Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'Unknown', - type: 'Succeeded', - }, - ], - podName: 'ruby-ex-git-xf45fo-build-pod', - startTime: '2023-03-30T07:03:20Z', - steps: [ - { - container: 'step-generate', - imageID: - 'registry.redhat.io/ocp-tools-4-tech-preview/source-to-image-rhel8@sha256:98d8cb3a255641ca6a1bce854e5e2460c20de9fb9b28e3cc67eb459f122873dd', - name: 'generate', - terminated: { - containerID: - 'cri-o://3b490fe8f5ed9310fa7b322961e2069b3548a6a8134693ef78c12c8c0760ea0c', - exitCode: 0, - finishedAt: '2023-03-30T07:03:30Z', - reason: 'Completed', - startedAt: '2023-03-30T07:03:30Z', - }, - }, - { - container: 'step-build-and-push', - imageID: - 'registry.redhat.io/rhel8/buildah@sha256:7678ad61e06e442b0093ab73faa73ce536721ae523015dd942f9196c4699a31d', - name: 'build-and-push', - terminated: { - containerID: - 'cri-o://90521ea2114ca3fc6b54216fe8cff26b679788d1c87dee40b98caa90f71e140e', - exitCode: 0, - finishedAt: '2023-03-30T07:04:54Z', - message: - '[{"key":"IMAGE_DIGEST","value":"sha256:14e0715ec241926c081124345cd45d325a44d914261cfd642b3b0969a49ffe02","type":1}]', - reason: 'Completed', - startedAt: '2023-03-30T07:03:30Z', - }, - }, - ], - taskResults: [ - { - name: 'IMAGE_DIGEST', - type: 'string', - value: - 'sha256:14e0715ec241926c081124345cd45d325a44d914261cfd642b3b0969a49ffe02', - }, - ], - taskSpec: { - description: - 's2i-ruby task clones a Git repository and builds and pushes a container image using S2I and a Ruby builder image.', - params: [], - results: [ - { - description: 'Digest of the image just built.', - name: 'IMAGE_DIGEST', - type: 'string', - }, - ], - steps: [ - { - env: [], - image: - 'registry.redhat.io/ocp-tools-4-tech-preview/source-to-image-rhel8@sha256:98d8cb3a255641ca6a1bce854e5e2460c20de9fb9b28e3cc67eb459f122873dd', - name: 'generate', - resources: {}, - script: 'echo', - volumeMounts: [ - { - mountPath: '/gen-source', - name: 'gen-source', - }, - { - mountPath: '/env-vars', - name: 'env-vars', - }, - ], - workingDir: '/workspace/source', - }, - { - image: - 'registry.redhat.io/rhel8/buildah@sha256:ac0b8714cc260c94435cab46fe41b3de0ccbc3d93e38c395fa9d52ac49e521fe', - name: 'build-and-push', - resources: {}, - script: 'echo', - securityContext: { - capabilities: { - add: ['SETFCAP'], - }, - }, - volumeMounts: [ - { - mountPath: '/var/lib/containers', - name: 'varlibcontainers', - }, - { - mountPath: '/gen-source', - name: 'gen-source', - }, - ], - workingDir: '/gen-source', - }, - ], - volumes: [ - { - emptyDir: {}, - name: 'varlibcontainers', - }, - { - emptyDir: {}, - name: 'gen-source', - }, - { - emptyDir: {}, - name: 'env-vars', - }, - ], - workspaces: [], - }, - }, - }, - { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - annotations: { - 'operator.tekton.dev/last-applied-hash': 'undefined', - 'pipeline.openshift.io/started-by': 'undefined', - 'pipeline.tekton.dev/release': 'undefined', - 'tekton.dev/displayName': 'undefined', - 'tekton.dev/pipelines.minVersion': 'undefined', - 'tekton.dev/tags': 'undefined', - }, - creationTimestamp: new Date('2023-04-11T06:48:50Z'), - generation: 1, - labels: { - 'app.kubernetes.io/managed-by': 'tekton-pipelines', - 'app.kubernetes.io/version': '0.4', - 'backstage.io/kubernetes-id': 'test-backstage', - 'operator.tekton.dev/operand-name': 'openshift-pipelines-addons', - 'operator.tekton.dev/provider-type': 'redhat', - 'tekton.dev/clusterTask': 'scan-task', - 'tekton.dev/memberOf': 'tasks', - 'tekton.dev/pipeline': 'pipeline-test', - 'tekton.dev/pipelineRun': 'pipelinerun-with-scanner-task', - 'tekton.dev/pipelineTask': 'scan-task', - 'app.kubernetes.io/instance': 'xyz', - 'app.kubernetes.io/name': 'xyz', - 'pipeline.openshift.io/runtime': 'node', - 'pipeline.openshift.io/runtime-version': 'gh', - 'pipeline.openshift.io/type': 'abc', - }, - name: 'pipeline-test-wbvtlk-scan-task', - namespace: 'deb-test', - ownerReferences: [ - { - apiVersion: 'tekton.dev/v1', - blockOwnerDeletion: true, - controller: true, - kind: 'PipelineRun', - name: 'pipelinerun-with-scanner-task', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a9t24', - }, - ], - resourceVersion: '117189', - uid: 'cb08cb7d-71fc-48a7-888f-4ad14a7277b9', - }, - spec: { - params: [], - resources: [], - serviceAccountName: 'pipeline', - taskRef: { - kind: 'ClusterTask', - name: 'scan-task', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-04-11T06:48:56Z', - conditions: [ - { - lastTransitionTime: '2023-04-11T06:48:56Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipelineRun-ec-task-t237ev-pod', - startTime: '2023-04-11T06:48:50Z', - steps: [ - { - container: 'step-tkn', - imageID: - 'registry.redhat.io/openshift-pipelines/pipelines-cli-tkn-rhel8@sha256:c73cefdd22522b2309f02dfa9858ed9079f1d5c94a3cd850f3f96dfbeafebc64', - name: 'tkn', - terminated: { - containerID: - 'cri-o://53fbddbb25c08e97d0061a3dd79021e8d411485bbc3f18cfcffd41ae3448c0d2', - exitCode: 0, - finishedAt: '2023-04-11T06:48:56Z', - reason: 'Completed', - startedAt: '2023-04-11T06:48:56Z', - }, - }, - ], - taskSpec: { - description: - 'This task performs operations on Tekton resources using tkn', - params: [], - steps: [ - { - args: ['--help'], - env: [], - image: - 'registry.redhat.io/openshift-pipelines/pipelines-cli-tkn-rhel8@sha256:c73cefdd22522b2309f02dfa9858ed9079f1d5c94a3cd850f3f96dfbeafebc64', - name: 'tkn', - resources: {}, - script: - 'if [ "false" = "true" ] && [ -e /kubeconfig ]; then\n export KUBECONFIG=""/kubeconfig\nfi\n\neval "tkn $@"\n', - securityContext: { - runAsNonRoot: true, - runAsUser: 65532, - }, - }, - ], - workspaces: [], - }, - }, - }, - { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - annotations: { - 'operator.tekton.dev/last-applied-hash': 'undefined', - 'pipeline.openshift.io/started-by': 'undefined', - 'pipeline.tekton.dev/release': 'undefined', - 'tekton.dev/displayName': 'undefined', - 'tekton.dev/pipelines.minVersion': 'undefined', - 'tekton.dev/tags': 'undefined', - }, - creationTimestamp: new Date('2023-04-11T06:48:50Z'), - generation: 1, - labels: { - 'app.kubernetes.io/managed-by': 'tekton-pipelines', - 'app.kubernetes.io/version': '0.4', - 'backstage.io/kubernetes-id': 'test-backstage', - 'operator.tekton.dev/operand-name': 'openshift-pipelines-addons', - 'operator.tekton.dev/provider-type': 'redhat', - 'tekton.dev/clusterTask': 'tkn', - 'tekton.dev/memberOf': 'tasks', - 'tekton.dev/pipeline': 'pipeline-test', - 'tekton.dev/pipelineRun': 'pipeline-test-wbvtlk', - 'tekton.dev/pipelineTask': 'tkn', - 'app.kubernetes.io/instance': 'xyz', - 'app.kubernetes.io/name': 'xyz', - 'pipeline.openshift.io/runtime': 'node', - 'pipeline.openshift.io/runtime-version': 'gh', - 'pipeline.openshift.io/type': 'abc', - }, - name: 'pipeline-test-wbvtlk-tkn', - namespace: 'deb-test', - ownerReferences: [ - { - apiVersion: 'tekton.dev/v1', - blockOwnerDeletion: true, - controller: true, - kind: 'PipelineRun', - name: 'pipeline-test-wbvtlk', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a9b24', - }, - ], - resourceVersion: '117189', - uid: 'cb08cb7d-71fc-48a7-888f-4ad14a7277b9', - }, - spec: { - params: [], - resources: [], - serviceAccountName: 'pipeline', - taskRef: { - kind: 'ClusterTask', - name: 'tkn', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-04-11T06:48:56Z', - conditions: [ - { - lastTransitionTime: '2023-04-11T06:48:56Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipeline-test-wbvtlk-tkn-pod', - startTime: '2023-04-11T06:48:50Z', - steps: [ - { - container: 'step-tkn', - imageID: - 'registry.redhat.io/openshift-pipelines/pipelines-cli-tkn-rhel8@sha256:c73cefdd22522b2309f02dfa9858ed9079f1d5c94a3cd850f3f96dfbeafebc64', - name: 'tkn', - terminated: { - containerID: - 'cri-o://53fbddbb25c08e97d0061a3dd79021e8d411485bbc3f18cfcffd41ae3448c0d2', - exitCode: 0, - finishedAt: '2023-04-11T06:48:56Z', - reason: 'Completed', - startedAt: '2023-04-11T06:48:56Z', - }, - }, - ], - taskSpec: { - description: - 'This task performs operations on Tekton resources using tkn', - params: [], - steps: [ - { - args: ['--help'], - env: [], - image: - 'registry.redhat.io/openshift-pipelines/pipelines-cli-tkn-rhel8@sha256:c73cefdd22522b2309f02dfa9858ed9079f1d5c94a3cd850f3f96dfbeafebc64', - name: 'tkn', - resources: {}, - script: - 'if [ "false" = "true" ] && [ -e /kubeconfig ]; then\n export KUBECONFIG=""/kubeconfig\nfi\n\neval "tkn $@"\n', - securityContext: { - runAsNonRoot: true, - runAsUser: 65532, - }, - }, - ], - workspaces: [], - }, - }, - }, - taskRunWithSBOMResult, - taskRunWithSBOMResultExternalLink, - enterpriseContractTaskRun, - acsImageScanTaskRun, - acsImageCheckTaskRun, - acsDeploymentCheckTaskRun, - ], -}; diff --git a/plugins/tekton/src/__fixtures__/advancedClusterSecurityData.ts b/plugins/tekton/src/__fixtures__/advancedClusterSecurityData.ts deleted file mode 100644 index 3b20b544a4..0000000000 --- a/plugins/tekton/src/__fixtures__/advancedClusterSecurityData.ts +++ /dev/null @@ -1,207 +0,0 @@ -import { - ACSCheckResults, - ACSImageScanResult, -} from '@aonic-ui/pipelines/dist/esm/types/components/Output/types'; - -export const acsImageScanResult: ACSImageScanResult = { - result: { - summary: { - CRITICAL: 0, - IMPORTANT: 1, - LOW: 4, - MODERATE: 4, - 'TOTAL-COMPONENTS': 6, - 'TOTAL-VULNERABILITIES': 9, - }, - vulnerabilities: [ - { - cveId: 'CVE-2005-2945', - cveSeverity: 'LOW', - cveInfo: 'https://nvd.nist.gov/vuln/detail/CVE-2005-2945', - componentName: 'arc', - componentVersion: '3.5.0', - componentFixedVersion: '2.3.1', - }, - { - cveId: 'CVE-2005-2992', - cveSeverity: 'LOW', - cveInfo: 'https://nvd.nist.gov/vuln/detail/CVE-2005-2992', - componentName: 'arc', - componentVersion: '3.5.0', - componentFixedVersion: '1.7.1', - }, - { - cveId: 'CVE-2021-3468', - cveSeverity: 'MODERATE', - cveInfo: 'https://access.redhat.com/security/cve/CVE-2021-3468', - componentName: 'avahi-libs', - componentVersion: '0.7-20.el8.aarch64', - componentFixedVersion: '', - }, - - { - cveId: 'RHSA-2023:7029', - cveSeverity: 'MODERATE', - cveInfo: 'https://access.redhat.com/errata/RHSA-2023:7029', - componentName: 'libX11', - componentVersion: '1.6.8-5.el8.aarch64', - componentFixedVersion: '0:1.6.8-6.el8', - }, - { - cveId: 'CVE-2022-3555', - cveSeverity: 'LOW', - cveInfo: 'https://access.redhat.com/security/cve/CVE-2022-3555', - componentName: 'libX11', - componentVersion: '1.6.8-5.el8.aarch64', - componentFixedVersion: '', - }, - { - cveId: 'CVE-2022-3554', - cveSeverity: 'MODERATE', - cveInfo: 'https://access.redhat.com/security/cve/CVE-2022-3554', - componentName: 'libX11-common', - componentVersion: '1.6.8-5.el8.noarch', - componentFixedVersion: '', - }, - { - cveId: 'CVE-2023-43785', - cveSeverity: 'MODERATE', - cveInfo: 'https://access.redhat.com/security/cve/CVE-2023-43785', - componentName: 'libX11-common', - componentVersion: '1.6.8-5.el8.noarch', - componentFixedVersion: '', - }, - { - cveId: 'CVE-2019-9923', - cveSeverity: 'LOW', - cveInfo: 'https://access.redhat.com/security/cve/CVE-2019-9923', - componentName: 'tar', - componentVersion: '2:1.30-9.el8.aarch64', - componentFixedVersion: '', - }, - { - cveId: 'CVE-2023-4586', - cveSeverity: 'IMPORTANT', - cveInfo: 'https://nvd.nist.gov/vuln/detail/CVE-2023-4586', - componentName: 'netty', - componentVersion: '4.1.100.final', - componentFixedVersion: '5.0.0', - }, - ], - }, -}; - -export const acsImageCheckResults: ACSCheckResults = { - results: [ - { - metadata: { - id: 'quay.io/bsutter/quarkus-demo:v2', - additionalInfo: { - name: 'quay.io/bsutter/quarkus-demo:v2', - type: 'image', - }, - }, - summary: { - CRITICAL: 0, - HIGH: 1, - LOW: 1, - MEDIUM: 0, - TOTAL: 2, - }, - violatedPolicies: [ - { - name: 'Fixable Severity at least Important', - severity: 'HIGH', - description: - 'Alert on deployments with fixable vulnerabilities with a Severity Rating at least Important', - violation: [ - "Fixable CVE-2023-6394 (CVSS 9.1) (severity Critical) found in component 'quarkus' (version 3.5.0), resolved by version 3.6.0", - ], - remediation: - 'Use your package manager to update to a fixed version in future builds or speak with your security team to mitigate the vulnerabilities.', - failingCheck: true, - }, - { - name: 'Red Hat Package Manager in Image', - severity: 'LOW', - description: - 'Alert on deployments with components of the Red Hat/Fedora/CentOS package management system.', - violation: [ - "Image includes component 'microdnf' (version 3.8.0-2.el8.aarch64)", - "Image includes component 'rpm' (version 4.14.3-26.el8.aarch64)", - ], - remediation: - "Run `rpm -e --nodeps $(rpm -qa '*rpm*' '*dnf*' '*libsolv*' '*hawkey*' 'yum*')` in the image build for production containers.", - failingCheck: false, - }, - ], - }, - ], - summary: { - CRITICAL: 0, - HIGH: 1, - LOW: 1, - MEDIUM: 0, - TOTAL: 2, - }, -}; - -export const acsDeploymentCheck: ACSCheckResults = { - results: [ - { - metadata: { - id: '2c4150a8-b7bf-46bb-89fc-84d09b345b2f', - additionalInfo: { - name: 'nodejs-ex', - namespace: 'test-namespace', - type: 'Deployment', - }, - }, - summary: { - CRITICAL: 0, - HIGH: 0, - LOW: 0, - MEDIUM: 2, - TOTAL: 2, - }, - violatedPolicies: [ - { - name: 'No resource requests or limits specified', - severity: 'MEDIUM', - description: - 'Alert on deployments that have containers without resource requests and limits', - violation: [ - "CPU limit set to 0 cores for container 'nodejs-ex'", - "CPU request set to 0 cores for container 'nodejs-ex'", - "Memory limit set to 0 MB for container 'nodejs-ex'", - "Memory request set to 0 MB for container 'nodejs-ex'", - ], - remediation: - 'Specify the requests and limits of CPU and Memory for your deployment.', - failingCheck: true, - }, - { - name: 'Pod Service Account Token Automatically Mounted', - severity: 'MEDIUM', - description: - 'Protect pod default service account tokens from compromise by minimizing the mounting of the default service account token to only those pods whose application requires interaction with the Kubernetes API.', - violation: [ - 'Deployment mounts the service account tokens.', - "Namespace has name 'prabhu'", - "Service Account is set to 'default'", - ], - remediation: - "Add `automountServiceAccountToken: false` or a value distinct from 'default' for the `serviceAccountName` key to the deployment's Pod configuration.", - failingCheck: false, - }, - ], - }, - ], - summary: { - CRITICAL: 0, - HIGH: 0, - LOW: 0, - MEDIUM: 2, - TOTAL: 2, - }, -}; diff --git a/plugins/tekton/src/__fixtures__/enterpriseContractData.ts b/plugins/tekton/src/__fixtures__/enterpriseContractData.ts deleted file mode 100644 index 7c8a57af5a..0000000000 --- a/plugins/tekton/src/__fixtures__/enterpriseContractData.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { EnterpriseContractResult } from '@aonic-ui/pipelines'; - -export const enterpriseContractResult: EnterpriseContractResult = { - success: false, - components: [ - { - name: 'Unnamed', - containerImage: - 'quay-q8tg2.apps.cluster-q8tg2.sandbox1329.opentlc.com/quayadmin/sbtestapp@sha256:bb1fcefb952b9f0b6c0c6fe9e84ea8a20fd828a2744dfbd1a9cb164d85507e12', - violations: [ - { - msg: - 'No image attestations found matching the given public key. Verify the correct public key was provided, and one or more attestations were created. Error: no matching attestations: no valid tlog entries found rekor log public key not found for payload. Check your TUF root (see cosign initialize) or set a custom key with env var SIGSTORE_REKOR_PUBLIC_KEY\n' + - ' no valid tlog entries found rekor log public key not found for payload. Check your TUF root (see cosign initialize) or set a custom key with env var SIGSTORE_REKOR_PUBLIC_KEY', - metadata: { - collections: [], - code: 'builtin.attestation.signature_check', - description: - 'The attestation signature matches available signing materials.', - title: 'Attestation signature check passed', - }, - }, - - { - msg: 'No image signatures found matching the given public key. Verify the correct public key was provided, and a signature was created. Error: no matching signatures: no valid tlog entries found rekor log public key not found for payload. Check your TUF root (see cosign initialize) or set a custom key with env var SIGSTORE_REKOR_PUBLIC_KEY', - metadata: { - collections: [], - code: 'builtin.image.signature_check', - description: - 'The image signature matches available signing materials.', - title: 'Image signature check passed', - }, - }, - ], - warnings: [ - { - msg: - 'No image attestations found matching the given public key. Verify the correct public key was provided, and one or more attestations were created. Error: no matching attestations: no valid tlog entries found rekor log public key not found for payload. Check your TUF root (see cosign initialize) or set a custom key with env var SIGSTORE_REKOR_PUBLIC_KEY\n' + - ' no valid tlog entries found rekor log public key not found for payload. Check your TUF root (see cosign initialize) or set a custom key with env var SIGSTORE_REKOR_PUBLIC_KEY', - metadata: { - collections: [], - code: 'builtin.attestation.signature_check', - description: - 'The attestation signature matches available signing materials.', - title: 'Attestation signature check passed', - }, - }, - ], - successes: [ - { - msg: - 'No image attestations found matching the given public key. Verify the correct public key was provided, and one or more attestations were created. Error: no matching attestations: no valid tlog entries found rekor log public key not found for payload. Check your TUF root (see cosign initialize) or set a custom key with env var SIGSTORE_REKOR_PUBLIC_KEY\n' + - ' no valid tlog entries found rekor log public key not found for payload. Check your TUF root (see cosign initialize) or set a custom key with env var SIGSTORE_REKOR_PUBLIC_KEY', - metadata: { - collections: [], - code: 'builtin.attestation.signature_check', - description: - 'The attestation signature matches available signing materials.', - title: 'Attestation signature check passed', - }, - }, - ], - success: false, - }, - ], - - key: - '-----BEGIN PUBLIC KEY-----\n' + - 'MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEufoDqiDhIyBmgFLdbgZugfk0qJSx\n' + - 'mF3EqQuuhU1gMlQiAs2kWVHEc/SKyp4/ktaG3ktLgAhids7RfqDm7iAgGg==\n' + - '-----END PUBLIC KEY-----\n' + - '', - policy: { - configuration: { - collections: [], - exclude: [], - }, - description: - 'Includes rules for levels 1, 2 & 3 of SLSA v0.1. This is the default config used for new RHTAP applications. Available collections are defined in https://redhat-appstudio.github.io/docs.stonesoup.io/ec-policies/release_policy.html#_available_rule_collections. If a different policy configuration is desired, this resource can serve as a starting point. See the docs on how to include and exclude rules https://redhat-appstudio.github.io/docs.stonesoup.io/ec-policies/policy_configuration.html#_including_and_excluding_rules.', - sources: [ - { - name: 'Default', - policy: [ - 'github.com/enterprise-contract/ec-policies//policy/lib', - 'github.com/enterprise-contract/ec-policies//policy/release', - ], - data: [ - 'oci::quay.io/redhat-appstudio-tekton-catalog/data-acceptable-bundles:latest', - 'github.com/release-engineering/rhtap-ec-policy//data', - ], - }, - ], - publicKey: '/workspace/cosign.pub', - }, -}; diff --git a/plugins/tekton/src/__fixtures__/kubernetesObject.ts b/plugins/tekton/src/__fixtures__/kubernetesObject.ts deleted file mode 100644 index 1891dcf9d3..0000000000 --- a/plugins/tekton/src/__fixtures__/kubernetesObject.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common'; - -import { mockKubernetesPlrResponse } from './1-pipelinesData'; - -export const kubernetesObjects: ObjectsByEntityResponse = { - items: [ - { - cluster: { - name: 'minikube', - }, - podMetrics: [], - resources: [ - { - type: 'pods', - resources: mockKubernetesPlrResponse.pods as any, - }, - { - type: 'customresources', - resources: mockKubernetesPlrResponse.pipelineruns, - }, - { - type: 'customresources', - resources: [], - }, - ], - errors: [], - }, - { - cluster: { - name: 'ocp', - }, - podMetrics: [], - resources: [ - { - type: 'customresources', - resources: [], - }, - { - type: 'customresources', - resources: [], - }, - ], - errors: [], - }, - ], -}; diff --git a/plugins/tekton/src/__fixtures__/kubernetesObjects.ts b/plugins/tekton/src/__fixtures__/kubernetesObjects.ts deleted file mode 100644 index 3a540bde50..0000000000 --- a/plugins/tekton/src/__fixtures__/kubernetesObjects.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { ObjectsByEntityResponse } from '@backstage/plugin-kubernetes-common'; - -import { mockKubernetesPlrResponse } from './1-pipelinesData'; - -export const kubernetesObjects: ObjectsByEntityResponse = { - items: [ - { - cluster: { - name: 'minikube', - }, - podMetrics: [], - resources: [ - { - type: 'customresources', - resources: mockKubernetesPlrResponse.pipelineruns, - }, - { - type: 'customresources', - resources: [], - }, - ], - errors: [], - }, - { - cluster: { - name: 'ocp', - }, - podMetrics: [], - resources: [ - { - type: 'customresources', - resources: [], - }, - { - type: 'customresources', - resources: [], - }, - ], - errors: [], - }, - ], -}; diff --git a/plugins/tekton/src/__fixtures__/pods-data.ts b/plugins/tekton/src/__fixtures__/pods-data.ts deleted file mode 100644 index 0160681212..0000000000 --- a/plugins/tekton/src/__fixtures__/pods-data.ts +++ /dev/null @@ -1,146 +0,0 @@ -import { V1Pod } from '@kubernetes/client-node'; - -import { PipelineRunKind } from '@janus-idp/shared-react'; - -export const testPipelineRun: PipelineRunKind = { - apiVersion: 'tekton.dev/v1', - kind: 'PipelineRun', - metadata: { - name: 'test-pipeline-8e09zm', - uid: '17080e46-1ff6-4f15-99e9-e32f603d7cc8', - creationTimestamp: new Date('2023-12-12T06:38:29Z'), - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/build-namespace': 'karthik', - 'tekton.dev/pipeline': 'new-pipeline', - }, - }, - spec: { - pipelineRef: { - name: 'new-pipeline', - }, - }, - status: { - completionTime: '2023-12-12T06:39:12Z', - pipelineSpec: { tasks: [] }, - conditions: [ - { - lastTransitionTime: '2023-12-12T06:39:12Z', - message: 'Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - startTime: '2023-12-12T06:38:29Z', - }, -}; - -export const testPods: V1Pod[] = [ - { - metadata: { - name: 'test-pipeline-8e09zm-task1-pod', - namespace: 'karthik', - uid: 'bd868fde-1b37-4168-a780-f1772c5924e3', - resourceVersion: '379524', - labels: { - 'app.kubernetes.io/managed-by': 'tekton-pipelines', - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/clusterTask': 'tkn', - 'tekton.dev/memberOf': 'tasks', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-8e09zm', - 'tekton.dev/pipelineTask': 'task1', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-task1', - }, - }, - spec: { - volumes: [ - { - name: 'tekton-internal-workspace', - emptyDir: {}, - }, - ], - containers: [ - { - name: 'step-tkn', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - startTime: new Date('2023-12-08T12:19:29Z'), - }, - }, - { - metadata: { - name: 'test-pipeline-8e09zm-sbom-task-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-8e09zm', - 'tekton.dev/pipelineTask': 'sbom-task', - 'tekton.dev/task': 'sbom-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-print-sbom-results', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, - { - metadata: { - name: 'pipelineRun-image-scan-task-t237ev-pod', - namespace: 'karthik', - uid: '055cc13a-bd3e-414e-9eb6-e6cb72870578', - resourceVersion: '379623', - labels: { - 'backstage.io/kubernetes-id': 'developer-portal', - 'janus-idp.io/tekton': 'developer-portal', - 'tekton.dev/pipeline': 'test-pipeline', - 'tekton.dev/pipelineRun': 'test-pipeline-8e09zm', - 'tekton.dev/pipelineTask': 'sbom-task', - 'tekton.dev/task': 'sbom-task', - 'tekton.dev/taskRun': 'test-pipeline-8e09zm-sbom-task', - }, - }, - spec: { - containers: [ - { - name: 'step-print-scan-results', - }, - ], - }, - status: { - phase: 'Succeeded', - conditions: [], - - startTime: new Date('2023-12-08T12:19:38Z'), - }, - }, -]; - -export const testPipelineRunPods: { - pipelineRun: PipelineRunKind; - pods: V1Pod[]; -} = { - pipelineRun: testPipelineRun, - pods: testPods, -}; diff --git a/plugins/tekton/src/__fixtures__/taskRunData.ts b/plugins/tekton/src/__fixtures__/taskRunData.ts deleted file mode 100644 index 5a557a6297..0000000000 --- a/plugins/tekton/src/__fixtures__/taskRunData.ts +++ /dev/null @@ -1,368 +0,0 @@ -import { TaskRunKind } from '@janus-idp/shared-react'; - -import { TEKTON_PIPELINE_RUN } from '../consts/tekton-const'; - -export const taskRunWithResults: TaskRunKind = { - apiVersion: 'tekton.dev/v1beta1', - kind: 'TaskRun', - metadata: { - name: 'test-tr', - namespace: 'test-ns', - labels: { - 'tekton.dev/pipelineRun': 'test-plr', - }, - }, - spec: { - params: [ - { - name: 'first', - value: '20', - }, - { - name: 'second', - value: '10', - }, - ], - serviceAccountName: 'pipeline', - taskRef: { - kind: 'Task', - name: 'add-task', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: 'Mon Mar 27 2023 18:09:11', - startTime: 'Mon Mar 27 2023 18:08:19', - podName: 'sum-three-pipeline-run-second-add-al6kxl-deploy-pod', - conditions: [ - { - lastTransitionTime: '2021-02-09T09:57:03Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - taskResults: [ - { - name: 'sum', - value: '30', - }, - { - name: 'difference', - value: '10', - }, - { - name: 'multiply', - value: '200', - }, - { - name: 'divide', - value: '2', - }, - ], - }, -}; - -export const taskRunWithSBOMResult = { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - annotations: { - 'chains.tekton.dev/signed': 'true', - 'pipeline.openshift.io/preferredName': 'pipelinerun-with-sbom-task', - 'pipeline.openshift.io/started-by': 'kube:admin', - 'task.output.location': 'results', - 'task.results.format': 'application/text', - 'task.results.key': 'LINK_TO_SBOM', - }, - labels: { - [TEKTON_PIPELINE_RUN]: 'pipelinerun-with-sbom-task', - 'tekton.dev/pipelineTask': 'sbom-task', - }, - ownerReferences: [ - { - apiVersion: 'tekton.dev/v1', - blockOwnerDeletion: true, - controller: true, - kind: 'PipelineRun', - name: 'pipelinerun-with-sbom-task', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a9b24', - }, - ], - name: 'pipelinerun-with-sbom-task-t237ev-sbom-task', - uid: '764d0a6c-a4f6-419c-a3c3-585c2a9eb67c', - }, - spec: { - serviceAccountName: 'pipeline', - taskRef: { - kind: 'ClusterTask', - name: 'sbom-task', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-11-08T08:18:25Z', - conditions: [ - { - lastTransitionTime: '2023-11-08T08:18:25Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipelinerun-with-sbom-task-t237ev-sbom-task-pod', - results: [ - { - name: 'LINK_TO_SBOM', - type: 'string', - value: 'quay.io/test/image:build-8e536-1692702836', - }, - ], - }, -}; - -export const taskRunWithSBOMResultExternalLink: TaskRunKind = { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - annotations: { - 'chains.tekton.dev/signed': 'true', - 'pipeline.openshift.io/preferredName': 'pipelinerun-with-sbom-task', - 'pipeline.openshift.io/started-by': 'kube:admin', - 'pipeline.tekton.dev/release': 'a2f17f6', - 'task.output.location': 'results', - 'task.results.format': 'application/text', - 'task.results.type': 'external-link', - 'task.results.key': 'LINK_TO_SBOM', - }, - labels: { - [TEKTON_PIPELINE_RUN]: 'pipelinerun-with-external-sbom-task', - 'tekton.dev/pipelineTask': 'sbom-task-with-external-link', - }, - ownerReferences: [ - { - apiVersion: 'tekton.dev/v1', - blockOwnerDeletion: true, - controller: true, - kind: 'PipelineRun', - name: 'pipelinerun-with-external-sbom-task', - uid: '0a091bbf-3813-48d3-a6ce-fc43644a9b24', - }, - ], - resourceVersion: '197373', - name: 'pipelinerun-with-sbom-task-t237ev-sbom-task', - uid: '764d0a6c-a4f6-419c-a3c3-585c2a9eb67c', - generation: 1, - }, - spec: { - serviceAccountName: 'pipeline', - taskRef: { - kind: 'ClusterTask', - name: 'sbom-task-with-external-link', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-11-08T08:18:25Z', - conditions: [ - { - lastTransitionTime: '2023-11-08T08:18:25Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipelinerun-with-sbom-task-with-external-pod', - results: [ - { - name: 'LINK_TO_SBOM', - type: 'string', - value: - 'https://quay.io/repository/janus-idp/backstage-showcase?tab=tags', - }, - ], - }, -}; - -export const enterpriseContractTaskRun: TaskRunKind = { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - name: 'ec-taskrun', - labels: { - 'tekton.dev/pipelineRun': 'pipelinerun-with-scanner-task', - 'tekton.dev/pipelineTask': 'ec-task', - }, - annotations: { - 'chains.tekton.dev/signed': 'true', - 'pipeline.openshift.io/preferredName': 'pipelineRun-ec-task', - 'pipeline.openshift.io/started-by': 'kube:admin', - 'pipeline.tekton.dev/release': 'a2f17f6', - 'task.results.format': 'application/json', - 'task.output.location': 'logs', - 'task.results.type': 'ec', - name: 'pipelineRun-ec-task-t237ev', - uid: '764d0a6c-a4f6-419c-a3c3-585c2a9eb67c', - }, - }, - spec: { - serviceAccountName: 'pipeline', - taskRef: { - kind: 'Task', - name: 'ec-task', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-11-08T08:18:25Z', - conditions: [ - { - lastTransitionTime: '2023-11-08T08:18:25Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipelineRun-ec-task-t237ev-pod', - }, -}; - -export const acsImageScanTaskRun: TaskRunKind = { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - name: 'image-scan-taskrun', - labels: { - 'tekton.dev/pipelineRun': 'pipelinerun-with-scanner-task', - 'tekton.dev/pipelineTask': 'image-scan-task', - }, - annotations: { - 'chains.tekton.dev/signed': 'true', - 'pipeline.openshift.io/preferredName': 'pipelineRun-image-scan-task', - 'pipeline.openshift.io/started-by': 'kube:admin', - 'pipeline.tekton.dev/release': 'a2f17f6', - 'task.results.format': 'application/json', - 'task.output.location': 'logs', - 'task.results.type': 'roxctl-image-scan', - 'task.results.key': 'SCAN_OUTPUT', - name: 'pipelineRun-image-scan-task-t237ev', - uid: '764d0a6c-a4f6-419c-a3c3-585c2a9eb67c', - }, - }, - spec: { - serviceAccountName: 'pipeline', - taskRef: { - kind: 'Task', - name: 'image-scan-task', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-11-08T08:18:25Z', - conditions: [ - { - lastTransitionTime: '2023-11-08T08:18:25Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipelineRun-image-scan-task-t237ev-pod', - }, -}; - -export const acsImageCheckTaskRun: TaskRunKind = { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - name: 'image-check-taskrun', - labels: { - 'tekton.dev/pipelineRun': 'pipelinerun-with-scanner-task', - 'tekton.dev/pipelineTask': 'image-check-task', - }, - annotations: { - 'chains.tekton.dev/signed': 'true', - 'pipeline.openshift.io/preferredName': 'pipelineRun-image-check-task', - 'pipeline.openshift.io/started-by': 'kube:admin', - 'pipeline.tekton.dev/release': 'a2f17f6', - 'task.results.format': 'application/json', - 'task.output.location': 'logs', - 'task.results.type': 'roxctl-image-check', - 'task.results.key': 'SCAN_OUTPUT', - name: 'pipelineRun-image-check-task-t237ev', - uid: '764d0a6c-a4f6-419c-a3c3-585c2a9eb67c', - }, - }, - spec: { - serviceAccountName: 'pipeline', - taskRef: { - kind: 'Task', - name: 'image-check-task', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-11-08T08:18:25Z', - conditions: [ - { - lastTransitionTime: '2023-11-08T08:18:25Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipelineRun-image-check-task-t237ev-pod', - }, -}; - -export const acsDeploymentCheckTaskRun: TaskRunKind = { - apiVersion: 'tekton.dev/v1', - kind: 'TaskRun', - metadata: { - name: 'deployment-check-taskrun', - labels: { - 'tekton.dev/pipelineRun': 'pipelinerun-with-scanner-task', - 'tekton.dev/pipelineTask': 'deployment-check-task', - }, - annotations: { - 'chains.tekton.dev/signed': 'true', - 'pipeline.openshift.io/preferredName': - 'pipelineRun-deployment-check-task', - 'pipeline.openshift.io/started-by': 'kube:admin', - 'pipeline.tekton.dev/release': 'a2f17f6', - 'task.results.format': 'application/json', - 'task.output.location': 'logs', - 'task.results.type': 'roxctl-deployment-check', - 'task.results.key': 'SCAN_OUTPUT', - name: 'pipelineRun-deployment-check-task-t237ev', - uid: '764d0a6c-a4f6-419c-a3c3-585c2a9eb67c', - }, - }, - spec: { - serviceAccountName: 'pipeline', - taskRef: { - kind: 'Task', - name: 'deployment-check-task', - }, - timeout: '1h0m0s', - }, - status: { - completionTime: '2023-11-08T08:18:25Z', - conditions: [ - { - lastTransitionTime: '2023-11-08T08:18:25Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'pipelineRun-deployment-check-task-t237ev-pod', - }, -}; diff --git a/plugins/tekton/src/components/Charts/PipelineBars.test.tsx b/plugins/tekton/src/components/Charts/PipelineBars.test.tsx deleted file mode 100644 index d444508f40..0000000000 --- a/plugins/tekton/src/components/Charts/PipelineBars.test.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react'; - -import { render } from '@testing-library/react'; - -import { mockKubernetesPlrResponse } from '../../__fixtures__/1-pipelinesData'; -import PipelineBars from './PipelineBars'; - -jest.mock('react', () => ({ - ...jest.requireActual('react'), - useContext: jest.fn(), -})); - -jest.mock('@material-ui/core', () => ({ - ...jest.requireActual('@material-ui/core'), - makeStyles: () => () => { - return { - titleContainer: 'title', - closeButton: 'close', - }; - }, - Dialog: () =>
, -})); - -describe('PipelineBars', () => { - it('should show PipelineBars & Dialog', () => { - (React.useContext as jest.Mock).mockReturnValue({ - clusters: ['OCP'], - selectedCluster: [0], - watchResourcesData: { - pods: { data: mockKubernetesPlrResponse.pods }, - taskruns: { data: mockKubernetesPlrResponse.taskruns }, - }, - }); - const pipelineRun = mockKubernetesPlrResponse.pipelineruns[0]; - const { queryByTestId } = render( - , - ); - expect( - queryByTestId(`horizontal-stacked-bars-${pipelineRun.metadata.name}`), - ).toBeInTheDocument(); - expect(queryByTestId('dialog')).toBeInTheDocument(); - }); -}); diff --git a/plugins/tekton/src/components/Charts/PipelineBars.tsx b/plugins/tekton/src/components/Charts/PipelineBars.tsx deleted file mode 100644 index 5b9ffffa56..0000000000 --- a/plugins/tekton/src/components/Charts/PipelineBars.tsx +++ /dev/null @@ -1,69 +0,0 @@ -import React from 'react'; - -import { Tooltip } from '@patternfly/react-core'; - -import { - ComputedStatus, - getRunStatusColor, - getTaskRunsForPipelineRun, - HorizontalStackedBars, - PipelineRunKind, - TaskStatusTooltip, - TaskStatusTypes, -} from '@janus-idp/shared-react'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { getTaskStatusOfPLR } from '../../utils/tekton-utils'; -import PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog'; - -type PipelineBarProps = { pipelineRun: PipelineRunKind }; - -const PipelineBars = ({ pipelineRun }: PipelineBarProps) => { - const { watchResourcesData } = React.useContext(TektonResourcesContext); - const [open, setOpen] = React.useState(false); - const pods = watchResourcesData?.pods?.data || []; - const taskRuns = watchResourcesData?.taskruns?.data || []; - const plrTasks = getTaskRunsForPipelineRun(pipelineRun, taskRuns); - const taskStatus = getTaskStatusOfPLR(pipelineRun, plrTasks); - - const openDialog = () => { - setOpen(true); - }; - - const closeDialog = () => { - setOpen(false); - }; - - return ( - <> - - }> - ({ - color: getRunStatusColor( - ComputedStatus[status as keyof typeof ComputedStatus], - ).color, - name: status, - size: taskStatus[ - ComputedStatus[ - status as keyof typeof ComputedStatus - ] as keyof TaskStatusTypes - ], - }))} - /> - - - ); -}; - -export default PipelineBars; diff --git a/plugins/tekton/src/components/Icons/CriticalRiskIcon.tsx b/plugins/tekton/src/components/Icons/CriticalRiskIcon.tsx deleted file mode 100644 index 33e07ee32b..0000000000 --- a/plugins/tekton/src/components/Icons/CriticalRiskIcon.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react'; - -import { global_palette_red_200 as criticalColor } from '@patternfly/react-tokens/dist/js/global_palette_red_200'; - -const CriticalRiskIcon = ({ - className, - title, -}: { - className: string; - title?: string; -}): React.ReactElement => { - return ( - - {title && {title}} - - - ); -}; - -export default CriticalRiskIcon; diff --git a/plugins/tekton/src/components/Icons/EqualsIcon.tsx b/plugins/tekton/src/components/Icons/EqualsIcon.tsx deleted file mode 100644 index 10c564d3d4..0000000000 --- a/plugins/tekton/src/components/Icons/EqualsIcon.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import * as React from 'react'; - -import { global_palette_gold_400 as mediumColor } from '@patternfly/react-tokens/dist/js/global_palette_gold_400'; - -const EqualsIcon = ({ - className, - title, -}: { - className: string; - title?: string; -}): React.ReactElement => { - return ( - - {title && {title}} - - - ); -}; - -export default EqualsIcon; diff --git a/plugins/tekton/src/components/Icons/LinkToSbomIcon.tsx b/plugins/tekton/src/components/Icons/LinkToSbomIcon.tsx deleted file mode 100644 index 3dcc50b0f5..0000000000 --- a/plugins/tekton/src/components/Icons/LinkToSbomIcon.tsx +++ /dev/null @@ -1,41 +0,0 @@ -import * as React from 'react'; - -import { createStyles, makeStyles, Theme } from '@material-ui/core'; -import classNames from 'classnames'; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - icon: { - fill: 'var(--pf-v5-global--Color--100)', - }, - disabledButton: { - fill: theme.palette.grey[600], - }, - }), -); - -const LinkToSBomIcon = ({ - disabled, - dataTestId, -}: { - dataTestId: string; - disabled?: boolean; -}): React.ReactElement => { - const classes = useStyles(); - return ( - - - - ); -}; - -export default LinkToSBomIcon; diff --git a/plugins/tekton/src/components/Icons/OutputIcon.tsx b/plugins/tekton/src/components/Icons/OutputIcon.tsx deleted file mode 100644 index e1fb574f19..0000000000 --- a/plugins/tekton/src/components/Icons/OutputIcon.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import * as React from 'react'; - -import { createStyles, makeStyles, Theme } from '@material-ui/core'; -import classNames from 'classnames'; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - icon: { - fill: 'var(--pf-v5-global--Color--100)', - }, - disabledButton: { - fill: theme.palette.grey[600], - }, - }), -); - -const OutputIcon = ({ - disabled, -}: { - disabled?: boolean; -}): React.ReactElement => { - const classes = useStyles(); - return ( - - - - ); -}; - -export default OutputIcon; diff --git a/plugins/tekton/src/components/Icons/SignedBadge.tsx b/plugins/tekton/src/components/Icons/SignedBadge.tsx deleted file mode 100644 index 2199a40fd5..0000000000 --- a/plugins/tekton/src/components/Icons/SignedBadge.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import * as React from 'react'; - -const SignedBadgeIcon: React.FC> = ({ - style, -}): React.ReactElement => { - return ( - - - - - - ); -}; - -export default SignedBadgeIcon; diff --git a/plugins/tekton/src/components/Icons/ViewLogsIcon.tsx b/plugins/tekton/src/components/Icons/ViewLogsIcon.tsx deleted file mode 100644 index a6ec1e08da..0000000000 --- a/plugins/tekton/src/components/Icons/ViewLogsIcon.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import * as React from 'react'; - -import { createStyles, makeStyles, Theme } from '@material-ui/core'; -import classNames from 'classnames'; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - icon: { - fill: 'var(--pf-v5-global--Color--100)', - }, - disabledButton: { - fill: theme.palette.grey[600], - }, - }), -); - -const ViewLogsIcon = ({ - disabled, -}: { - disabled?: boolean; -}): React.ReactElement => { - const classes = useStyles(); - return ( - - - - ); -}; - -export default ViewLogsIcon; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunColumnHeader.ts b/plugins/tekton/src/components/PipelineRunList/PipelineRunColumnHeader.ts deleted file mode 100644 index 6d53fae99c..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunColumnHeader.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { TableColumn } from '@backstage/core-components'; - -export const PipelineRunColumnHeader: TableColumn[] = [ - { - id: 'expander', - }, - { - id: 'name', - title: 'NAME', - field: 'metadata.name', - }, - { - id: 'vulnerabilities', - title: 'VULNERABILITIES', - field: 'status.results', - }, - { - id: 'status', - title: 'STATUS', - field: 'status.conditions[0].reason', - }, - { - id: 'task-status', - title: 'TASK STATUS', - field: 'status.conditions[0].reason', - }, - { - id: 'start-time', - title: 'STARTED', - field: 'status.startTime', - defaultSort: 'desc', - }, - { - id: 'duration', - title: 'DURATION', - field: 'status.completionTime', - }, - { - id: 'actions', - title: 'ACTIONS', - }, -]; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunList.test.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunList.test.tsx deleted file mode 100644 index 94e912d0c0..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunList.test.tsx +++ /dev/null @@ -1,247 +0,0 @@ -import React from 'react'; -import { BrowserRouter } from 'react-router-dom'; - -import { usePermission } from '@backstage/plugin-permission-react'; - -import { render } from '@testing-library/react'; - -import { ComputedStatus } from '@janus-idp/shared-react'; - -import { mockKubernetesPlrResponse } from '../../__fixtures__/1-pipelinesData'; -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import PipelineRunList from './PipelineRunList'; - -jest.mock('@backstage/plugin-catalog-react', () => ({ - useEntity: () => ({ - entity: { - metadata: { - name: 'test', - }, - }, - }), -})); - -jest.mock('@backstage/plugin-permission-react', () => ({ - usePermission: jest.fn(), -})); - -const mockUsePermission = usePermission as jest.MockedFunction< - typeof usePermission ->; - -jest.mock('@material-ui/styles', () => ({ - ...jest.requireActual('@material-ui/styles'), - makeStyles: () => (_theme: any) => { - return { - ok: 'ok', - }; - }, -})); - -describe('PipelineRunList', () => { - beforeEach(() => { - mockUsePermission.mockReturnValue({ loading: false, allowed: true }); - }); - - it('should render PipelineRunList if available', () => { - const mockContextData = { - watchResourcesData: { - pipelineruns: { - data: mockKubernetesPlrResponse.pipelineruns, - }, - taskruns: { - data: mockKubernetesPlrResponse.taskruns, - }, - }, - loaded: true, - responseError: '', - selectedClusterErrors: [], - clusters: ['ocp'], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.All, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - - const { queryByText } = render( - - - - - , - ); - - expect(queryByText(/No Pipeline Runs found/i)).toBeNull(); - }); - - it('should render loading if data has not been loaded', () => { - const mockContextData = { - watchResourcesData: {}, - loaded: false, - responseError: '', - selectedClusterErrors: [], - clusters: [], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.All, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - - const { getByTestId } = render( - - - , - ); - expect(getByTestId('tekton-progress')).not.toBeNull(); - }); - - it('should show empty state if no data is available', () => { - const mockContextData = { - watchResourcesData: { - pipelineruns: { - data: [], - }, - taskruns: { - data: [], - }, - }, - loaded: true, - responseError: '', - selectedClusterErrors: [], - clusters: [], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.All, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - - const { getByText } = render( - - - , - ); - expect(getByText(/No Pipeline Runs found/i)).not.toBeNull(); - }); - - it('should show empty state with no cluster selector if there are error in fetching resources and no clusters', () => { - const mockContextData = { - watchResourcesData: { - pipelineruns: { - data: [], - }, - taskruns: { - data: [], - }, - }, - loaded: true, - responseError: - 'getaddrinfo ENOTFOUND api.rhoms-4.13-052404.dev.openshiftappsvc.org', - selectedClusterErrors: [], - clusters: [], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.All, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - - const { getByText, queryByText } = render( - - - , - ); - getByText(/No Pipeline Runs found/i); - expect(queryByText(/Cluster/)).toBeNull(); - }); - - it('should show empty state with cluster selector if there are error in fetching resources and cluster(s) are fetched', () => { - const mockContextData = { - watchResourcesData: { - pipelineruns: { - data: [], - }, - taskruns: { - data: [], - }, - }, - loaded: true, - responseError: - 'getaddrinfo ENOTFOUND api.rhoms-4.13-052404.dev.openshiftappsvc.org', - selectedClusterErrors: [{ message: '403 - forbidden' }], - clusters: ['ocp'], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.All, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - - const { getByText, queryByText } = render( - - - , - ); - getByText(/No Pipeline Runs found/i); - expect(queryByText(/Cluster/)).not.toBeNull(); - }); - - it('should render filtered PipelineRunList based on selected status', () => { - const mockContextData = { - watchResourcesData: { - pipelineruns: { - data: mockKubernetesPlrResponse.pipelineruns, - }, - taskruns: { - data: mockKubernetesPlrResponse.taskruns, - }, - }, - loaded: true, - responseError: '', - selectedClusterErrors: [], - clusters: ['ocp'], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.Succeeded, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - - const { queryByText } = render( - - - - - , - ); - - expect(queryByText('pipelinerun-with-scanner-task')).not.toBeNull(); - }); - - it('should show empty state if no PipelineRuns matches selected status', () => { - const mockContextData = { - watchResourcesData: { - pipelineruns: { - data: mockKubernetesPlrResponse.pipelineruns, - }, - taskruns: { - data: mockKubernetesPlrResponse.taskruns, - }, - }, - loaded: true, - responseError: '', - selectedClusterErrors: [], - clusters: ['ocp'], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.Cancelled, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - - const { queryByText } = render( - - - - - , - ); - - expect(queryByText(/No Pipeline Runs found/i)).not.toBeNull(); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunList.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunList.tsx deleted file mode 100644 index c0848bc681..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunList.tsx +++ /dev/null @@ -1,265 +0,0 @@ -import React from 'react'; - -import { InfoCard, Progress } from '@backstage/core-components'; - -import { - Box, - makeStyles, - Paper, - Table, - TableBody, - TableCell, - TablePagination, - TableRow, - Toolbar, - Typography, -} from '@material-ui/core'; - -import { - ComputedStatus, - PipelineRunKind, - pipelineRunStatus, -} from '@janus-idp/shared-react'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { ClusterErrors, Order } from '../../types/types'; -import { getComparator } from '../../utils/tekton-utils'; -import { ClusterSelector, ErrorPanel } from '../common'; -import { StatusSelector } from '../common/StatusSelector'; -import { TableExpandCollapse } from '../common/TableExpandCollapse'; -import { PipelineRunColumnHeader } from './PipelineRunColumnHeader'; -import { PipelineRunListSearchBar } from './PipelineRunListSearchBar'; -import { PipelineRunTableBody } from './PipelineRunTableBody'; -import { EnhancedTableHead } from './PipelineTableHeader'; - -type WrapperInfoCardProps = { - allErrors?: ClusterErrors; - showClusterSelector?: boolean; - titleClassName?: string; -}; - -const useStyles = makeStyles(theme => ({ - root: { - alignItems: 'start', - padding: theme.spacing(3, 0, 2.5, 2.5), - }, - empty: { - padding: theme.spacing(2), - display: 'flex', - justifyContent: 'center', - }, - title: { - display: 'flex', - gap: '20px', - alignItems: 'center', - }, - footer: { - '&:nth-of-type(odd)': { - backgroundColor: `${theme.palette.background.paper}`, - }, - }, -})); - -const WrapperInfoCard = ({ - children, - allErrors, - showClusterSelector = true, - titleClassName, -}: React.PropsWithChildren) => ( - <> - {allErrors && allErrors.length > 0 && } - - - - -
- ), - })} - > - {children} - - -); - -const PipelineRunList = () => { - const { - loaded, - responseError, - watchResourcesData, - selectedClusterErrors, - clusters, - selectedCluster, - selectedStatus, - } = React.useContext(TektonResourcesContext); - const [search, setSearch] = React.useState(''); - const [order, setOrder] = React.useState('desc'); - const [orderBy, setOrderBy] = React.useState('status.startTime'); - const [orderById, setOrderById] = React.useState('startTime'); // 2 columns have the same field - const [page, setPage] = React.useState(0); - const [rowsPerPage, setRowsPerPage] = React.useState(5); - - // Jump to first page when cluster, status and search filter changed - const updateStateOnFilterChanges = React.useRef(false); - React.useEffect(() => { - if (updateStateOnFilterChanges.current) { - setPage(0); - } else { - updateStateOnFilterChanges.current = true; - } - }, [selectedCluster, selectedStatus, search]); - - const allPipelineRuns = React.useMemo(() => { - const plrs = - watchResourcesData?.pipelineruns?.data?.map(d => ({ - ...d, - id: d.metadata.uid, - })) ?? []; - return plrs as PipelineRunKind[]; - }, [watchResourcesData]); - - const filteredPipelineRuns = React.useMemo(() => { - let plrs = allPipelineRuns; - - if (selectedStatus && selectedStatus !== ComputedStatus.All) { - plrs = plrs.filter(plr => pipelineRunStatus(plr) === selectedStatus); - } - - if (search) { - const f = search.toUpperCase(); - plrs = plrs.filter((plr: PipelineRunKind) => { - const n = plr.metadata?.name?.toUpperCase(); - return n?.includes(f); - }); - } - - plrs = plrs.sort(getComparator(order, orderBy, orderById)); - - return plrs; - }, [allPipelineRuns, selectedStatus, search, order, orderBy, orderById]); - - const visibleRows = React.useMemo(() => { - return filteredPipelineRuns.slice( - page * rowsPerPage, - page * rowsPerPage + rowsPerPage, - ); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [filteredPipelineRuns, page, rowsPerPage, order, orderById]); - - const handleRequestSort = React.useCallback( - (_event: React.MouseEvent, property: string, id: string) => { - const isAsc = orderBy === property && order === 'asc'; - setOrder(isAsc ? 'desc' : 'asc'); - setOrderBy(property); - setOrderById(id); - }, - [order, orderBy], - ); - - const handleChangePage = (_event: unknown, newPage: number) => { - setPage(newPage); - }; - - const handleChangeRowsPerPage = ( - event: React.ChangeEvent, - ) => { - setRowsPerPage(parseInt(event.target.value, 10)); - setPage(0); - }; - - // Avoid a layout jump when reaching the last page with empty rows. - const emptyRows = - page > 0 - ? Math.max( - 0, - (1 + page) * rowsPerPage - (filteredPipelineRuns.length ?? 0), - ) - : 0; - - const classes = useStyles(); - - const allErrors: ClusterErrors = [ - ...(responseError ? [{ message: responseError }] : []), - ...(selectedClusterErrors ?? []), - ]; - - if (!loaded && !responseError) - return ( -
- -
- ); - - return ( - 0} - titleClassName={classes.title} - > - - - - - Pipeline Runs - - - -
- - {visibleRows?.length > 0 ? ( - - - {emptyRows > 0 && ( - - - - )} - - - - - ) : ( - - - - - - )} -
-
- No Pipeline Runs found -
-
- - - - ); -}; - -export default React.memo(PipelineRunList); diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunListSearchBar.test.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunListSearchBar.test.tsx deleted file mode 100644 index d6d7fb1b84..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunListSearchBar.test.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; - -import { fireEvent, render, screen } from '@testing-library/react'; - -import { PipelineRunListSearchBar } from './PipelineRunListSearchBar'; - -describe('PipelineRunListSearchBar', () => { - test('renders PipelineRunListSearchBar component', () => { - const { getByPlaceholderText } = render( - {}} />, - ); - - screen.logTestingPlaygroundURL(); - - expect(getByPlaceholderText('Search')).toBeInTheDocument(); - }); - - test('handles search input change', () => { - const onChange = jest.fn(); - const { getByPlaceholderText, getByTestId } = render( - , - ); - const searchInput = getByPlaceholderText('Search'); - const clearButton = getByTestId('clear-search'); - expect(clearButton.getAttribute('disabled')).toBe(''); // disabled - - fireEvent.change(searchInput, { target: { value: 'example' } }); - - expect(onChange).toHaveBeenCalledWith('example'); - }); - - test('clears search input', () => { - const onChange = jest.fn(); - const { getByTestId } = render( - , - ); - const clearButton = getByTestId('clear-search'); - expect(clearButton.getAttribute('disabled')).toBe(null); // not disabled - - fireEvent.click(getByTestId('clear-search')); - - expect(onChange).toHaveBeenCalledWith(''); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunListSearchBar.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunListSearchBar.tsx deleted file mode 100644 index 826d82b575..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunListSearchBar.tsx +++ /dev/null @@ -1,60 +0,0 @@ -import React from 'react'; - -import { - FormControl, - IconButton, - Input, - InputAdornment, - makeStyles, -} from '@material-ui/core'; -import Clear from '@material-ui/icons/Clear'; -import Search from '@material-ui/icons/Search'; - -type PipelineRunListSearchBarProps = { - value: string; - onChange: (filter: string) => void; -}; - -const useStyles = makeStyles({ - formControl: { - alignItems: 'flex-end', - flexGrow: 1, - }, -}); - -export const PipelineRunListSearchBar = ({ - value, - onChange, -}: PipelineRunListSearchBarProps) => { - const classes = useStyles(); - - return ( - - onChange(event.target.value)} - value={value} - startAdornment={ - - - - } - endAdornment={ - - onChange('')} - edge="end" - disabled={!value} - data-testid="clear-search" - > - - - - } - /> - - ); -}; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunOutput.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunOutput.tsx deleted file mode 100644 index ce56c9ba6b..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunOutput.tsx +++ /dev/null @@ -1,120 +0,0 @@ -import React from 'react'; - -import { Progress } from '@backstage/core-components'; -import { useApi } from '@backstage/core-plugin-api'; - -import { - ACSCheckResults, - ACSImageScanResult, - Output, - PipelineRunKind as PipelineRunV1Kind, - TaskRunKind as TaskRunV1Kind, - usePipelineRunOutput, -} from '@aonic-ui/pipelines'; -import { Grid, Paper, Typography } from '@material-ui/core'; - -import { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-react'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { - kubernetesProxyApiRef, - TektonResourcesContextData, -} from '../../types/types'; - -type PipelineRunOutputProps = { - pipelineRun: PipelineRunKind; - taskRuns: TaskRunKind[]; -}; - -const PipelineRunOutput: React.FC = ({ - pipelineRun, - taskRuns, -}) => { - const { clusters, selectedCluster } = - React.useContext(TektonResourcesContext); - const kubernetesProxyApi = useApi(kubernetesProxyApiRef); - - const currCluster = - (clusters.length > 0 && clusters[selectedCluster || 0]) || ''; - - const getLogs = React.useCallback( - async (podName: string, containerName: string): Promise => { - return await kubernetesProxyApi - .getPodLogs({ - podName: podName, - namespace: pipelineRun?.metadata?.namespace ?? '', - containerName: containerName, - clusterName: currCluster, - }) - .then(res => res?.text); - }, - [kubernetesProxyApi, currCluster, pipelineRun], - ); - - const outputGroup = usePipelineRunOutput( - pipelineRun as PipelineRunV1Kind, - taskRuns as TaskRunV1Kind[], - getLogs, - ); - - const stillLoading = - outputGroup?.ec?.loading && - (outputGroup?.acsImageScan?.loading || - outputGroup?.acsImageCheck?.loading || - outputGroup?.acsDeploymentCheck?.loading); - - const isEmpty = (data: ACSCheckResults | ACSImageScanResult) => - Object.keys(data).length === 0; - const noDataAvailable = - outputGroup?.ec?.data.length === 0 && - outputGroup.results.data.length === 0 && - isEmpty(outputGroup?.acsImageScan?.data) && - isEmpty(outputGroup?.acsImageScan?.data) && - isEmpty(outputGroup?.acsImageScan?.data); - - const renderOutput = () => { - if (stillLoading && noDataAvailable) { - return ; - } - - if (!stillLoading && noDataAvailable) { - return ( - - No output found - - ); - } - - const metadata = - outputGroup?.acsImageCheck?.data?.results?.[0]?.metadata?.additionalInfo; - if (metadata?.name?.includes('@')) { - metadata.name = metadata?.name.substr(0, metadata?.name.lastIndexOf('@')); - } - - return ( - - ); - }; - - return ( - -
- - {renderOutput()} - -
-
- ); -}; -export default PipelineRunOutput; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunRow.css b/plugins/tekton/src/components/PipelineRunList/PipelineRunRow.css deleted file mode 100644 index fb286eb838..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunRow.css +++ /dev/null @@ -1,3 +0,0 @@ -.bs-tkn-timestamp { - color: inherit; -} diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunRow.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunRow.tsx deleted file mode 100644 index 72d4f26eca..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunRow.tsx +++ /dev/null @@ -1,176 +0,0 @@ -import React from 'react'; - -import { - Box, - Collapse, - IconButton, - makeStyles, - TableCell, - TableRow, - Theme, -} from '@material-ui/core'; -import KeyboardArrowDownIcon from '@material-ui/icons/KeyboardArrowDown'; -import KeyboardArrowRightIcon from '@material-ui/icons/KeyboardArrowRight'; -import { Timestamp, Tooltip } from '@patternfly/react-core'; - -import { PipelineRunKind } from '@janus-idp/shared-react'; - -import { TEKTON_SIGNED_ANNOTATION } from '../../consts/tekton-const'; -import { OpenRowStatus, tektonGroupColor } from '../../types/types'; -import { pipelineRunDuration } from '../../utils/tekton-utils'; -import { PipelineRunVisualization } from '../pipeline-topology'; -import PipelineRunRowActions from './PipelineRunRowActions'; -import PipelineRunTaskStatus from './PipelineRunTaskStatus'; -import PipelineRunVulnerabilities from './PipelineRunVulnerabilities'; -import PlrStatus from './PlrStatus'; -import ResourceBadge from './ResourceBadge'; - -import './PipelineRunRow.css'; - -import classNames from 'classnames'; - -import SignedBadgeIcon from '../Icons/SignedBadge'; - -const useStyles = makeStyles((theme: Theme) => ({ - plrRow: { - '&:nth-of-type(odd)': { - backgroundColor: `${theme.palette.background.paper}`, - }, - }, - plrVisRow: { - borderBottom: `1px solid ${theme.palette.grey.A100}`, - }, - signedIndicator: { - display: 'inline-block', - width: theme.spacing(2.5), - position: 'relative', - top: theme.spacing(0.5), - }, -})); - -type PipelineRunRowProps = { - row: PipelineRunKind; - startTime: string; - isExpanded?: boolean; - open: boolean; - setOpen: React.Dispatch>; -}; - -type PipelineRunNameProps = { row: PipelineRunKind }; - -const PipelineRunName = ({ row }: PipelineRunNameProps) => { - const classes = useStyles(); - const name = row.metadata?.name; - const signed = - row?.metadata?.annotations?.[TEKTON_SIGNED_ANNOTATION] === 'true'; - - return ( -
- {name ? ( - -
- -
- - ) : null - } - /> - ) : ( - '-' - )} -
- ); -}; - -export const PipelineRunRow = ({ - row, - startTime, - isExpanded = false, - open, - setOpen, -}: PipelineRunRowProps) => { - const classes = useStyles(); - const uid = row.metadata?.uid; - - React.useEffect(() => { - return setOpen((val: OpenRowStatus) => { - return { - ...val, - ...(uid && { [uid]: isExpanded }), - }; - }); - }, [isExpanded, uid, setOpen]); - - const expandCollapseClickHandler = () => { - setOpen((val: OpenRowStatus) => { - return { - ...val, - ...(uid && { - [uid]: !val[uid], - }), - }; - }); - }; - - return ( - - - - - {open ? : } - - - - - - - - - - - - - - - - {startTime ? ( - - ) : ( - '-' - )} - - {pipelineRunDuration(row)} - - - - - - - - - - - - - - - ); -}; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunRowActions.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunRowActions.tsx deleted file mode 100644 index 1c106e3f9e..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunRowActions.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import * as React from 'react'; - -import { kubernetesProxyPermission } from '@backstage/plugin-kubernetes-common'; -import { usePermission } from '@backstage/plugin-permission-react'; - -import { IconButton } from '@material-ui/core'; -import { Flex, FlexItem } from '@patternfly/react-core'; -import { Tooltip } from '@patternfly/react-core/dist/esm/components/Tooltip/Tooltip'; - -import { - ComputedStatus, - pipelineRunFilterReducer, - PipelineRunKind, - TaskRunKind, -} from '@janus-idp/shared-react'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { - getTaskrunsOutputGroup, - hasExternalLink, - isSbomTaskRun, -} from '../../utils/taskRun-utils'; -import OutputIcon from '../Icons/OutputIcon'; -import ViewLogsIcon from '../Icons/ViewLogsIcon'; -import PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog'; -import PipelineRunOutputDialog from '../PipelineRunOutput/PipelineRunOutputDialog'; -import PipelineRunSBOMLink from './PipelineRunSBOMLink'; - -const PipelineRunRowActions: React.FC<{ pipelineRun: PipelineRunKind }> = ({ - pipelineRun, -}) => { - const { watchResourcesData } = React.useContext(TektonResourcesContext); - const [open, setOpen] = React.useState(false); - - const [openOutput, setOpenOutput] = React.useState(false); - const [noActiveTask, setNoActiveTask] = React.useState(false); - const pods = watchResourcesData?.pods?.data || []; - const taskRuns = watchResourcesData?.taskruns?.data || []; - const { sbomTaskRun } = getTaskrunsOutputGroup( - pipelineRun?.metadata?.name, - taskRuns, - ); - const activeTaskName = sbomTaskRun?.metadata?.name; - - const hasKubernetesProxyAccess = usePermission({ - permission: kubernetesProxyPermission, - }); - - const openDialog = (viewLogs?: boolean) => { - if (viewLogs) setNoActiveTask(true); - setOpen(true); - }; - - const openOutputDialog = () => { - setOpenOutput(true); - }; - - const closeDialog = () => { - setNoActiveTask(false); - setOpen(false); - }; - - const { - acsImageScanTaskRun, - acsImageCheckTaskRun, - acsDeploymentCheckTaskRun, - ecTaskRun, - } = getTaskrunsOutputGroup(pipelineRun?.metadata?.name, taskRuns); - - const finishedTaskruns = [ - ...(acsImageScanTaskRun ? [acsImageScanTaskRun] : []), - ...(acsImageCheckTaskRun ? [acsImageCheckTaskRun] : []), - ...(acsDeploymentCheckTaskRun ? [acsDeploymentCheckTaskRun] : []), - ...(ecTaskRun ? [ecTaskRun] : []), - ].filter((taskRun: TaskRunKind) => - [ - ComputedStatus.Succeeded, - ComputedStatus.Failed, - ComputedStatus.Skipped, - ].includes(pipelineRunFilterReducer(taskRun)), - ); - - const results = - pipelineRun?.status?.pipelineResults || pipelineRun?.status?.results || []; - - const disabled = - results.length === 0 ? finishedTaskruns.length === 0 : results.length === 0; - - return ( - <> - - - { - setOpenOutput(false); - }} - /> - - - - openDialog(true)} - disabled={!hasKubernetesProxyAccess.allowed} - style={{ pointerEvents: 'auto', padding: 0 }} - > - - - - - - - - openDialog() : undefined - } - style={{ pointerEvents: 'auto', padding: 0 }} - > - - - - - - - openOutputDialog()} - style={{ pointerEvents: 'auto', padding: 0 }} - > - - - - - - - ); -}; -export default React.memo(PipelineRunRowActions); diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunSBOMLink.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunSBOMLink.tsx deleted file mode 100644 index 440b179ca5..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunSBOMLink.tsx +++ /dev/null @@ -1,44 +0,0 @@ -import React from 'react'; -import { Link } from 'react-router-dom'; - -import { TaskRunKind } from '@janus-idp/shared-react'; - -import { - getSbomLink, - hasExternalLink, - isSbomTaskRun, -} from '../../utils/taskRun-utils'; -import LinkToSBomIcon from '../Icons/LinkToSbomIcon'; - -const PipelineRunSBOMLink: React.FC<{ - sbomTaskRun: TaskRunKind | undefined; -}> = ({ sbomTaskRun }): React.ReactElement | null => { - const isSBOMTask = isSbomTaskRun(sbomTaskRun); - const isExternalLink: boolean = hasExternalLink(sbomTaskRun); - const linkToSbom = getSbomLink(sbomTaskRun); - - if ( - isSBOMTask && - isExternalLink && - (linkToSbom?.startsWith('http://') || linkToSbom?.startsWith('https://')) - ) { - // Link to external page - return ( - - - - ); - } else if (isSBOMTask && linkToSbom) { - // Link to internal taskrun page - return ; - } - - return ( - - ); -}; - -export default PipelineRunSBOMLink; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunTableBody.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunTableBody.tsx deleted file mode 100644 index 2374377366..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunTableBody.tsx +++ /dev/null @@ -1,42 +0,0 @@ -import * as React from 'react'; - -import { PipelineRunKind } from '@janus-idp/shared-react'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { OpenRowStatus } from '../../types/types'; -import { PipelineRunRow } from './PipelineRunRow'; - -type PipelineRunTableBodyProps = { - rows: PipelineRunKind[]; -}; - -export const PipelineRunTableBody = ({ rows }: PipelineRunTableBodyProps) => { - const { isExpanded } = React.useContext(TektonResourcesContext); - const [open, setOpen] = React.useState( - rows.reduce((acc, row) => { - if (row.metadata?.uid) { - acc[row.metadata?.uid] = isExpanded ?? false; - } - return acc; - }, {} as OpenRowStatus), - ); - - return ( - <> - {rows.map((row: PipelineRunKind) => { - const startTime = row.status?.startTime || ''; - - return ( - - ); - })} - - ); -}; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunTaskStatus.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunTaskStatus.tsx deleted file mode 100644 index 0f60bb92d3..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunTaskStatus.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; - -import { PipelineRunKind } from '@janus-idp/shared-react'; - -import PipelineBars from '../Charts/PipelineBars'; - -const PipelineRunTaskStatus = ({ - pipelineRun, -}: { - pipelineRun: PipelineRunKind; -}) => { - return pipelineRun?.metadata?.name ? ( - - ) : null; -}; - -export default PipelineRunTaskStatus; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineRunVulnerabilities.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineRunVulnerabilities.tsx deleted file mode 100644 index e216591a5d..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineRunVulnerabilities.tsx +++ /dev/null @@ -1,135 +0,0 @@ -import * as React from 'react'; - -import { makeStyles, Theme } from '@material-ui/core'; -import AngleDoubleDownIcon from '@mui/icons-material/KeyboardDoubleArrowDownOutlined'; -import AngleDoubleUpIcon from '@mui/icons-material/KeyboardDoubleArrowUpOutlined'; -import { Tooltip } from '@patternfly/react-core'; -import { global_palette_gold_400 as mediumColor } from '@patternfly/react-tokens/dist/js/global_palette_gold_400'; -import { global_palette_orange_300 as highColor } from '@patternfly/react-tokens/dist/js/global_palette_orange_300'; -import classNames from 'classnames'; - -import { PipelineRunKind } from '@janus-idp/shared-react'; - -import { usePipelineRunScanResults } from '../../hooks/usePipelineRunScanResults'; -import CriticalRiskIcon from '../Icons/CriticalRiskIcon'; -import EqualsIcon from '../Icons/EqualsIcon'; - -const useVStyles = makeStyles((theme: Theme) => ({ - pipelineVulnerabilities: { - display: 'flex', - flexWrap: 'wrap', - gap: theme.spacing(1), - }, - severityContainer: { - alignItems: 'center', - display: 'flex', - flexWrap: 'nowrap', - gap: theme.spacing(0.5), - }, - severityStatus: { - alignItems: 'center', - display: 'flex', - flexWrap: 'nowrap', - gap: theme.spacing(0.5), - }, - severityCount: { - fontWeight: 'bold', - }, - criticalStatus: { - height: '1em', - width: '1em', - }, - highStatus: { - color: highColor.value, - height: '0.8em', - width: '0.8em', - }, - mediumStatus: { - color: mediumColor.value, - height: '1.3em', - width: '1.3em', - }, - lowStatus: { - height: '0.8em', - width: '0.8em', - }, -})); - -type PipelineRunVulnerabilitiesProps = { - pipelineRun: PipelineRunKind; - condensed?: boolean; -}; - -const PipelineRunVulnerabilities: React.FC = ({ - pipelineRun, - condensed, -}) => { - const classes = useVStyles(); - const scanResults = usePipelineRunScanResults(pipelineRun); - - return ( -
- {scanResults?.vulnerabilities ? ( - <> -
- - - - - {!condensed ? 'Critical' : null} - - - {scanResults.vulnerabilities.critical || 0} - -
-
- - - - - {!condensed ? 'High' : null} - - - {scanResults.vulnerabilities.high || 0} - -
-
- - - - - {!condensed ? 'Medium' : null} - - - {scanResults.vulnerabilities.medium || 0} - -
-
- - - - - {!condensed ? 'Low' : null} - - - {scanResults.vulnerabilities.low || 0} - -
- - ) : ( - '-' - )} -
- ); -}; - -export default PipelineRunVulnerabilities; diff --git a/plugins/tekton/src/components/PipelineRunList/PipelineTableHeader.tsx b/plugins/tekton/src/components/PipelineRunList/PipelineTableHeader.tsx deleted file mode 100644 index dac973c615..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PipelineTableHeader.tsx +++ /dev/null @@ -1,85 +0,0 @@ -import * as React from 'react'; - -import { - makeStyles, - TableCell, - TableHead, - TableRow, - TableSortLabel, -} from '@material-ui/core'; - -import { Order } from '../../types/types'; -import { PipelineRunColumnHeader } from './PipelineRunColumnHeader'; - -type EnhancedTableProps = { - onRequestSort: ( - event: React.MouseEvent, - property: string, - id: string, - ) => void; - order: Order; - orderBy: string; - orderById: string; -}; - -const useStyles = makeStyles(theme => ({ - header: { - padding: theme.spacing(1, 2, 1, 2.5), - borderTop: `1px solid ${theme.palette.grey.A100}`, - borderBottom: `1px solid ${theme.palette.grey.A100}`, - // withStyles hasn't a generic overload for theme - fontWeight: 'bold', - position: 'static', - wordBreak: 'normal', - }, -})); - -export const EnhancedTableHead = ({ - order, - orderBy, - orderById, - onRequestSort, -}: EnhancedTableProps) => { - const createSortHandler = - (property: string, id: string) => (event: React.MouseEvent) => { - onRequestSort(event, property, id); - }; - const classes = useStyles(); - - return ( - - - {PipelineRunColumnHeader.map(headCell => { - return ( - - {headCell.field ? ( - - {headCell.title} - - ) : ( - <> {headCell.title} - )} - - ); - })} - - - ); -}; diff --git a/plugins/tekton/src/components/PipelineRunList/PlrStatus.tsx b/plugins/tekton/src/components/PipelineRunList/PlrStatus.tsx deleted file mode 100644 index 3fead7651e..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/PlrStatus.tsx +++ /dev/null @@ -1,16 +0,0 @@ -import React from 'react'; - -import { - pipelineRunFilterReducer, - PipelineRunKind, - Status, -} from '@janus-idp/shared-react'; - -type PlrStatusProps = { obj: PipelineRunKind }; - -const PlrStatus = ({ obj }: PlrStatusProps) => { - const plrStatus = pipelineRunFilterReducer(obj); - return ; -}; - -export default PlrStatus; diff --git a/plugins/tekton/src/components/PipelineRunList/ResourceBadge.css b/plugins/tekton/src/components/PipelineRunList/ResourceBadge.css deleted file mode 100644 index 3b99745ae4..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/ResourceBadge.css +++ /dev/null @@ -1,17 +0,0 @@ -.bs-tkn-pipeline-visualization__label { - align-items: baseline; -} - -.bs-tkn-pipeline-visualization__label .badge { - font-size: 12px; - line-height: 20px; - margin-right: 4px; - min-width: 24px; - padding: 0 7px; - border-radius: 20px; - color: var(--pf-v5-global--palette--white); - display: inline-block; - text-align: center; - white-space: nowrap; - width: 100%; -} diff --git a/plugins/tekton/src/components/PipelineRunList/ResourceBadge.tsx b/plugins/tekton/src/components/PipelineRunList/ResourceBadge.tsx deleted file mode 100644 index 427db67d9c..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/ResourceBadge.tsx +++ /dev/null @@ -1,37 +0,0 @@ -import React from 'react'; - -import { Split, SplitItem } from '@patternfly/react-core'; - -import './ResourceBadge.css'; - -const ResourceBadge = ({ - color, - abbr, - name, - suffix, -}: { - color: string; - abbr: string; - name: string; - suffix?: React.ReactNode; -}) => { - return ( - - - - {abbr} - - - - {name} - - {suffix ? ( - - {suffix} - - ) : null} - - ); -}; - -export default ResourceBadge; diff --git a/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunOutput.test.tsx b/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunOutput.test.tsx deleted file mode 100644 index 13293eb212..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunOutput.test.tsx +++ /dev/null @@ -1,102 +0,0 @@ -import React from 'react'; - -import '@testing-library/jest-dom'; - -import { useApi } from '@backstage/core-plugin-api'; - -import { render, screen, waitFor } from '@testing-library/react'; - -import { mockKubernetesPlrResponse } from '../../../__fixtures__/1-pipelinesData'; -import { acsImageCheckResults } from '../../../__fixtures__/advancedClusterSecurityData'; -import { enterpriseContractResult } from '../../../__fixtures__/enterpriseContractData'; -import PipelineRunOutput from '../PipelineRunOutput'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn(), -})); - -describe('PipelineRunOutput', () => { - beforeEach(() => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockResolvedValue({ text: 'data' }), - }); - }); - - it('should render the progress bar', async () => { - render( - , - ); - - await waitFor(() => { - expect(screen.queryByTestId('progress')).toBeInTheDocument(); - }); - }); - - it('should render the results table', async () => { - render( - , - ); - - await waitFor(() => { - expect(screen.queryByTestId('results-table')).toBeInTheDocument(); - expect(screen.queryByText('MY_SCAN_OUTPUT')).toBeInTheDocument(); - }); - }); - - it('should render the results table and ACS section', async () => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockImplementation(({ podName }) => { - if (podName.includes('image-check')) { - return Promise.resolve({ - text: JSON.stringify(acsImageCheckResults), - }); - } - return Promise.resolve({ text: 'data' }); - }), - }); - render( - , - ); - - await waitFor(() => { - expect( - screen.queryByText('Advanced Cluster Security'), - ).toBeInTheDocument(); - expect(screen.queryByText('Others')).toBeInTheDocument(); - }); - }); - - it('should render the EC and Others reports section', async () => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockImplementation(({ podName }) => { - if (podName.includes('ec-task')) { - return Promise.resolve({ - text: JSON.stringify(enterpriseContractResult), - }); - } - return Promise.resolve({ text: 'data' }); - }), - }); - render( - , - ); - - await waitFor(() => { - expect(screen.queryByText('Enterprise Contract')).toBeInTheDocument(); - expect(screen.queryByText('Others')).toBeInTheDocument(); - }); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunRowActions.test.tsx b/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunRowActions.test.tsx deleted file mode 100644 index 15b25bf2f8..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunRowActions.test.tsx +++ /dev/null @@ -1,214 +0,0 @@ -import React from 'react'; - -import '@testing-library/jest-dom'; - -import { BrowserRouter } from 'react-router-dom'; - -import { LinkProps } from '@backstage/core-components'; -import { usePermission } from '@backstage/plugin-permission-react'; - -import { - act, - fireEvent, - render, - screen, - waitFor, - within, -} from '@testing-library/react'; - -import { ComputedStatus, PipelineRunKind } from '@janus-idp/shared-react'; - -import { mockKubernetesPlrResponse } from '../../../__fixtures__/1-pipelinesData'; -import { TektonResourcesContext } from '../../../hooks/TektonResourcesContext'; -import { TektonResourcesContextData } from '../../../types/types'; -import PipelineRunRowActions from '../PipelineRunRowActions'; - -jest.mock('@backstage/plugin-permission-react', () => ({ - usePermission: jest.fn(), -})); - -const mockUsePermission = usePermission as jest.MockedFunction< - typeof usePermission ->; - -jest.mock('@material-ui/core', () => ({ - ...jest.requireActual('@material-ui/core'), - makeStyles: () => () => { - return { - titleContainer: 'title', - closeButton: 'close', - }; - }, - Dialog: (props: any) => ( -
- {props.open && Logs modal content} -
- ), -})); - -jest.mock('react-router-dom', () => { - const actual = jest.requireActual('react-router-dom'); - return { - ...actual, - Link: (props: LinkProps) => ( - - {props.children} - - ), - }; -}); - -const tektonResourceContextData: TektonResourcesContextData = { - watchResourcesData: { - pipelineruns: { - data: mockKubernetesPlrResponse.pipelineruns, - }, - taskruns: { - data: mockKubernetesPlrResponse.taskruns, - }, - pods: { - data: mockKubernetesPlrResponse.pods, - }, - }, - loaded: true, - responseError: '', - selectedClusterErrors: [], - clusters: ['ocp'], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.Other, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, -}; - -const TestPipelineRunRowActions = ({ - pipelineRun, -}: { - pipelineRun: PipelineRunKind; -}) => ( - - - - - -); - -describe('PipelineRunRowActions', () => { - beforeEach(() => { - mockUsePermission.mockReturnValue({ loading: false, allowed: true }); - }); - - it('should render the icon space holder', () => { - render( - , - ); - - expect(screen.queryByTestId('icon-space-holder')).toBeInTheDocument(); - }); - - it('should render the internal sbom link', () => { - render( - , - ); - - expect(screen.queryByTestId('internal-sbom-link')).toBeInTheDocument(); - }); - - it('should open sbom logs modal when the view SBOM link is clicked', async () => { - render( - , - ); - - expect(screen.queryByTestId('internal-sbom-link')).toBeInTheDocument(); - - act(() => { - fireEvent.click(screen.queryByTestId('view-sbom-icon') as HTMLElement); - }); - - await waitFor(() => { - within( - screen.getByTestId('pipelinerun-logs-dialog') as HTMLElement, - ).getByText('Logs modal content'); - }); - }); - - it('should render the external sbom link', () => { - render( - , - ); - - expect(screen.queryByTestId('external-sbom-link')).toBeInTheDocument(); - }); - - it('should disable the view logs action if the user does not have enough permission', () => { - mockUsePermission.mockReturnValue({ loading: false, allowed: false }); - - render( - , - ); - - expect(screen.queryByTestId('view-logs-icon')).toBeInTheDocument(); - expect( - screen.queryByTestId('view-logs-icon')?.getAttribute('disabled'), - ).not.toBeNull(); - }); - - it('should not open sbom logs modal when the view external SBOM link is clicked', async () => { - render( - , - ); - - expect(screen.queryByTestId('external-sbom-link')).toBeInTheDocument(); - - act(() => { - fireEvent.click(screen.queryByTestId('view-sbom-icon') as HTMLElement); - }); - - await waitFor(() => { - expect( - within( - screen.getByTestId('pipelinerun-logs-dialog') as HTMLElement, - ).queryByText('Logs modal content'), - ).not.toBeInTheDocument(); - }); - }); - - it('should disable the view output action', () => { - render( - , - ); - - expect(screen.queryByTestId('view-output-icon')).toBeInTheDocument(); - - expect( - screen.queryByTestId('view-output-icon')?.getAttribute('disabled'), - ).toBeDefined(); - }); - - it('should enable the view output action', () => { - render( - , - ); - - expect(screen.queryByTestId('view-output-icon')).toBeInTheDocument(); - - expect( - screen.queryByTestId('view-output-icon')?.getAttribute('disabled'), - ).toBeNull(); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunSBOMLink.test.tsx b/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunSBOMLink.test.tsx deleted file mode 100644 index 0b04c3b56c..0000000000 --- a/plugins/tekton/src/components/PipelineRunList/__tests__/PipelineRunSBOMLink.test.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react'; - -import { LinkProps } from '@backstage/core-components'; - -import { render, screen } from '@testing-library/react'; - -import { - taskRunWithResults, - taskRunWithSBOMResult, - taskRunWithSBOMResultExternalLink, -} from '../../../__fixtures__/taskRunData'; -import PipelineRunSBOMLink from '../PipelineRunSBOMLink'; - -jest.mock('react-router-dom', () => { - const actual = jest.requireActual('react-router-dom'); - return { - ...actual, - Link: (props: LinkProps) => ( - - {props.children} - - ), - }; -}); - -describe('PipelineRunSBOMLInk', () => { - it('should render the icon space holder', () => { - render(); - - expect(screen.queryByTestId('icon-space-holder')).toBeInTheDocument(); - }); - - it('should render the icon space holder if the taskrun passed is not a valid sbomTaskrun', () => { - render(); - - expect(screen.queryByTestId('icon-space-holder')).toBeInTheDocument(); - }); - - it('should render the internal logs link for a sbom Taskrun', () => { - render(); - expect(screen.queryByTestId('internal-sbom-link')).toBeInTheDocument(); - }); - - it('should render the external logs link for a sbom Taskrun', () => { - render( - , - ); - - expect(screen.queryByTestId('external-sbom-link')).toBeInTheDocument(); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogDialog.tsx b/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogDialog.tsx deleted file mode 100644 index 7095882f10..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogDialog.tsx +++ /dev/null @@ -1,105 +0,0 @@ -import React from 'react'; - -import { ErrorBoundary } from '@backstage/core-components'; - -import { V1Pod } from '@kubernetes/client-node'; -import { - Box, - createStyles, - Dialog, - DialogContent, - DialogTitle, - IconButton, - makeStyles, - Theme, -} from '@material-ui/core'; -import CloseIcon from '@mui/icons-material/Close'; - -import { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-react'; - -import { tektonGroupColor } from '../../types/types'; -import ResourceBadge from '../PipelineRunList/ResourceBadge'; -import PipelineRunLogDownloader from './PipelineRunLogDownloader'; -import PipelineRunLogs from './PipelineRunLogs'; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - titleContainer: { - display: 'flex', - alignItems: 'center', - gap: theme.spacing(1), - }, - closeButton: { - position: 'absolute', - right: theme.spacing(1), - top: theme.spacing(1), - color: theme.palette.grey[500], - }, - }), -); - -type PipelineRunLogDialogProps = { - open: boolean; - closeDialog: () => void; - pipelineRun: PipelineRunKind; - taskRuns: TaskRunKind[]; - pods: V1Pod[]; - activeTask?: string; -}; -const PipelineRunLogDialog = ({ - open, - closeDialog, - pipelineRun, - pods, - taskRuns, - activeTask, -}: PipelineRunLogDialogProps) => { - const classes = useStyles(); - - const [task, setTask] = React.useState(activeTask); - - return ( - - - - - - - - - - - - - - - - - ); -}; - -export default React.memo(PipelineRunLogDialog); diff --git a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogDownloader.tsx b/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogDownloader.tsx deleted file mode 100644 index 5a726d877c..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogDownloader.tsx +++ /dev/null @@ -1,68 +0,0 @@ -import React from 'react'; - -import { V1Pod } from '@kubernetes/client-node'; -import { Flex, FlexItem } from '@patternfly/react-core'; - -import { PipelineRunKind } from '@janus-idp/shared-react'; - -import { - TEKTON_PIPELINE_RUN, - TEKTON_PIPELINE_TASK, - TEKTON_PIPELINE_TASKRUN, -} from '../../consts/tekton-const'; -import PodLogsDownloadLink from './PodLogsDownloadLink'; - -const PipelineRunLogDownloader: React.FC<{ - pods: V1Pod[]; - pipelineRun: PipelineRunKind; - activeTask: string | undefined; -}> = ({ pods, pipelineRun, activeTask }) => { - const filteredPods: V1Pod[] = pods?.filter( - (p: V1Pod) => - p?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === - pipelineRun?.metadata?.name, - ); - - const sortedPods: V1Pod[] = React.useMemo( - () => - Array.from(filteredPods)?.sort( - (a: V1Pod, b: V1Pod) => - new Date(a?.status?.startTime as Date).getTime() - - new Date(b?.status?.startTime as Date).getTime(), - ), - [filteredPods], - ); - - const activeTaskPod: V1Pod = - sortedPods.find( - (sp: V1Pod) => - sp.metadata?.labels?.[TEKTON_PIPELINE_TASKRUN] === activeTask, - ) ?? sortedPods[sortedPods.length - 1]; - - return sortedPods.length > 0 ? ( - - - - - - - - - ) : null; -}; -export default PipelineRunLogDownloader; diff --git a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogViewer.tsx b/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogViewer.tsx deleted file mode 100644 index 491d35534d..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogViewer.tsx +++ /dev/null @@ -1,59 +0,0 @@ -import React from 'react'; - -import { DismissableBanner, LogViewer } from '@backstage/core-components'; - -import { V1Container, V1Pod } from '@kubernetes/client-node'; -import { Paper } from '@material-ui/core'; -import { Skeleton } from '@material-ui/lab'; - -import { usePodLogsOfPipelineRun } from '../../hooks/usePodLogsOfPipelineRun'; - -type PipelineRunLogViewerProps = { pod: V1Pod }; - -export const PipelineRunLogViewer = ({ pod }: PipelineRunLogViewerProps) => { - const { value, error, loading } = usePodLogsOfPipelineRun({ - pod, - }); - - const containersList = pod?.spec?.containers || []; - let text = ''; - - text = containersList.reduce( - (acc: string, container: V1Container, idx: number) => { - if (container?.name && value?.[idx]?.text) { - return acc - .concat(`${container.name.toUpperCase()}\n${value[idx].text}`) - .concat(idx === containersList.length - 1 ? '' : '\n'); - } - return acc; - }, - '', - ); - - return ( - <> - {error && ( - - )} - - {loading && ( - - )} - {pod && !loading && } - - - ); -}; diff --git a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogs.tsx b/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogs.tsx deleted file mode 100644 index f4096fef50..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/PipelineRunLogs.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import React from 'react'; - -import { LogViewer, Progress } from '@backstage/core-components'; - -import { V1Pod } from '@kubernetes/client-node'; -import { Paper } from '@material-ui/core'; -import Grid from '@material-ui/core/Grid'; - -import { - getTaskRunsForPipelineRun, - pipelineRunFilterReducer, - PipelineRunKind, - TaskRunKind, -} from '@janus-idp/shared-react'; - -import { getActiveTaskRun, getSortedTaskRuns } from '../../utils/taskRun-utils'; -import { PipelineRunLogViewer } from './PipelineRunLogViewer'; -import { TaskStatusStepper } from './TaskStatusStepper'; - -type PipelineRunLogsProps = { - pipelineRun: PipelineRunKind; - taskRuns: TaskRunKind[]; - pods: V1Pod[]; - activeTask?: string; - setActiveTask: (t: string) => void; -}; -export const PipelineRunLogs = ({ - pipelineRun, - taskRuns, - pods, - activeTask, - setActiveTask, -}: PipelineRunLogsProps) => { - const PLRTaskRuns = getTaskRunsForPipelineRun(pipelineRun, taskRuns); - const sortedTaskRuns = getSortedTaskRuns(PLRTaskRuns); - const taskRunFromYaml = PLRTaskRuns?.reduce( - (acc: { [value: string]: TaskRunKind }, value) => { - if (value?.metadata?.name) { - acc[value.metadata.name] = value; - } - return acc; - }, - {}, - ); - - const completed = pipelineRunFilterReducer(pipelineRun); - const [lastActiveStepId, setLastActiveStepId] = React.useState(''); - - React.useEffect(() => { - const mostRecentFailedOrActiveStep = sortedTaskRuns.find(tr => - ['Failed', 'Running'].includes(tr.status), - ); - - if (completed && !mostRecentFailedOrActiveStep && !activeTask) { - setLastActiveStepId(sortedTaskRuns[sortedTaskRuns.length - 1]?.id); - return; - } - - setLastActiveStepId( - !activeTask ? (mostRecentFailedOrActiveStep?.id as string) : '', - ); - }, [sortedTaskRuns, completed, activeTask]); - - const currentStepId = activeTask || lastActiveStepId; - const activeItem = getActiveTaskRun(sortedTaskRuns, currentStepId); - const podName = - activeItem && taskRunFromYaml?.[currentStepId]?.status?.podName; - const podData = React.useMemo( - () => - pods.find(pod => { - return pod?.metadata?.name === podName; - }), - [pods, podName], - ); - - return ( - - - - - - - - {!currentStepId && } -
- {!podData ? ( - - - - ) : ( - - )} -
-
-
- ); -}; - -export default PipelineRunLogs; diff --git a/plugins/tekton/src/components/PipelineRunLogs/PodLogsDownloadLink.tsx b/plugins/tekton/src/components/PipelineRunLogs/PodLogsDownloadLink.tsx deleted file mode 100644 index 1f4e6855fb..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/PodLogsDownloadLink.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import React from 'react'; - -import { useApi } from '@backstage/core-plugin-api'; - -import { V1Pod } from '@kubernetes/client-node'; -import { createStyles, Link, makeStyles, Theme } from '@material-ui/core'; -import DownloadIcon from '@mui/icons-material/FileDownloadOutlined'; -import classNames from 'classnames'; - -import { downloadLogFile } from '@janus-idp/shared-react'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { ContainerScope } from '../../hooks/usePodLogsOfPipelineRun'; -import { - kubernetesProxyApiRef, - TektonResourcesContextData, -} from '../../types/types'; -import { getPodLogs } from '../../utils/log-downloader-utils'; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - downloadAction: { - position: 'relative', - marginBottom: 'var(--pf-v5-global--spacer--sm)', - color: 'var(--pf-v5-global--color--100)', - cursor: 'pointer', - }, - buttonDisabled: { - color: theme.palette.grey[400], - cursor: 'not-allowed', - }, - }), -); - -const PodLogsDownloadLink: React.FC<{ - pods: V1Pod[]; - fileName: string; - downloadTitle: string; -}> = ({ pods, fileName, downloadTitle, ...props }): React.ReactElement => { - const classes = useStyles(); - const [downloading, setDownloading] = React.useState(false); - const kubernetesProxyApi = useApi(kubernetesProxyApiRef); - - const { clusters, selectedCluster = 0 } = - React.useContext(TektonResourcesContext); - const currCluster = clusters.length > 0 ? clusters[selectedCluster] : ''; - - const getLogs = (podScope: ContainerScope): Promise<{ text: string }> => { - const { podName, podNamespace, containerName, clusterName } = podScope; - return kubernetesProxyApi.getPodLogs({ - podName: podName, - namespace: podNamespace, - containerName: containerName, - clusterName: clusterName, - }); - }; - - return ( - { - setDownloading(true); - getPodLogs(pods, getLogs, currCluster) - .then((logs: string) => { - setDownloading(false); - downloadLogFile(logs || '', fileName); - }) - .catch(err => { - // eslint-disable-next-line no-console - console.warn('Download failed', err); - setDownloading(false); - }); - }} - className={classNames(classes.downloadAction, { - [classes.buttonDisabled]: downloading, - })} - {...props} - > - - {downloadTitle || 'Download '} - - ); -}; -export default PodLogsDownloadLink; diff --git a/plugins/tekton/src/components/PipelineRunLogs/TaskStatusStepper.tsx b/plugins/tekton/src/components/PipelineRunLogs/TaskStatusStepper.tsx deleted file mode 100644 index a73261f0bd..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/TaskStatusStepper.tsx +++ /dev/null @@ -1,169 +0,0 @@ -import React from 'react'; -import useInterval from 'react-use/lib/useInterval'; - -import { - CircularProgress, - createStyles, - makeStyles, - StepButton, - StepIconProps, - Theme, -} from '@material-ui/core'; -import Step from '@material-ui/core/Step'; -import StepLabel from '@material-ui/core/StepLabel'; -import Stepper from '@material-ui/core/Stepper'; -import Typography from '@material-ui/core/Typography'; -import Cancel from '@material-ui/icons/Cancel'; -import Check from '@material-ui/icons/Check'; -import FiberManualRecordIcon from '@material-ui/icons/FiberManualRecord'; -import classNames from 'classnames'; - -import { ComputedStatus } from '@janus-idp/shared-react'; - -import { TaskStep } from '../../utils/taskRun-utils'; -import { calculateDuration } from '../../utils/tekton-utils'; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - root: { - width: '100%', - }, - titleContainer: { - display: 'flex', - alignItems: 'center', - gap: theme.spacing(1), - }, - closeButton: { - position: 'absolute', - right: theme.spacing(1), - top: theme.spacing(1), - color: theme.palette.grey[500], - }, - labelWrapper: { - display: 'flex', - flex: 1, - flexDirection: 'row', - justifyContent: 'space-between', - }, - stepWrapper: { - width: '100%', - }, - }), -); - -const StepTimeTicker = ({ step }: { step: TaskStep }) => { - const [time, setTime] = React.useState(''); - - useInterval(() => { - if (!step.startedAt) { - setTime(''); - return; - } - - setTime(calculateDuration(step.startedAt, step.endedAt)); - }, 1000); - - return {time}; -}; - -const useStepIconStyles = makeStyles((theme: Theme) => - createStyles({ - root: { - color: theme.palette.text.disabled, - display: 'flex', - height: 22, - alignItems: 'center', - }, - completed: { - color: theme.palette.status.ok, - }, - error: { - color: theme.palette.status.error, - }, - }), -); - -const TaskStepIconComponent = ({ active, completed, error }: StepIconProps) => { - const classes = useStepIconStyles(); - - const getMiddle = () => { - if (active) { - return ; - } - if (completed) { - return ; - } - if (error) { - return ; - } - return ; - }; - - return ( -
- {getMiddle()} -
- ); -}; - -type TaskStatusStepperProps = { - steps: TaskStep[]; - currentStepId: string | undefined; - onUserStepChange: (id: string) => void; - classes?: { - root?: string; - }; -}; - -export const TaskStatusStepper = React.memo((props: TaskStatusStepperProps) => { - const { steps, currentStepId, onUserStepChange } = props; - const classes = useStyles(props); - - return ( -
- s.id === currentStepId)} - orientation="vertical" - nonLinear - > - {steps.map((step, _) => { - const isCancelled = step.status === ComputedStatus.Cancelled; - const isActive = step.status === ComputedStatus.Running; - const isCompleted = step.status === ComputedStatus.Succeeded; - const isFailed = step.status === ComputedStatus.Failed; - const isSkipped = step.status === ComputedStatus.Skipped; - - return ( - - onUserStepChange(step.id)}> - -
- {step.name} - {isSkipped ? ( - Skipped - ) : ( - - )} -
-
-
-
- ); - })} -
-
- ); -}); diff --git a/plugins/tekton/src/components/PipelineRunLogs/__tests__/PipelineRunLogDialog.test.tsx b/plugins/tekton/src/components/PipelineRunLogs/__tests__/PipelineRunLogDialog.test.tsx deleted file mode 100644 index 02af8379cb..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/__tests__/PipelineRunLogDialog.test.tsx +++ /dev/null @@ -1,106 +0,0 @@ -import React from 'react'; - -import { useApi } from '@backstage/core-plugin-api'; - -import { Theme } from '@material-ui/core'; -import { render, screen } from '@testing-library/react'; - -import { testPipelineRunPods } from '../../../__fixtures__/pods-data'; -import PipelineRunLogDialog from '../PipelineRunLogDialog'; - -jest.mock('@material-ui/styles', () => ({ - ...jest.requireActual('@material-ui/styles'), - makeStyles: (cb: any) => (theme: Theme) => - cb({ - ...theme, - spacing: () => 0, - palette: { grey: { 500: 'grey' } }, - }), -})); - -jest.mock('@backstage/core-components', () => ({ - ErrorBoundary: (props: any) => <>{props.children}, -})); - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn(), -})); - -jest.mock('../PipelineRunLogs', () => () =>
Pipeline run logs
); - -describe('PipelineRunLogDialog', () => { - beforeEach(() => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockResolvedValue({ text: 'log data...' }), - }); - }); - it('should not show pipeline run logs modal', () => { - const closeDialog = jest.fn(); - render( - , - ); - - expect( - screen.queryByTestId('pipelinerun-logs-dialog'), - ).not.toBeInTheDocument(); - }); - - it('should show pipeline run logs modal', () => { - const closeDialog = jest.fn(); - render( - , - ); - - expect(screen.getByTestId('pipelinerun-logs-dialog')).toBeInTheDocument(); - }); - - it('should not show download links in the logs modal if there are no pods', () => { - const closeDialog = jest.fn(); - render( - , - ); - - expect(screen.getByTestId('pipelinerun-logs-dialog')).toBeInTheDocument(); - - expect( - screen.queryByTestId('pipelinerun-logs-downloader'), - ).not.toBeInTheDocument(); - }); - - it('should show download links in the logs modal if pods are available', () => { - const closeDialog = jest.fn(); - render( - , - ); - - expect(screen.getByTestId('pipelinerun-logs-dialog')).toBeInTheDocument(); - expect( - screen.queryByTestId('pipelinerun-logs-downloader'), - ).toBeInTheDocument(); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunLogs/__tests__/PipelineRunLogDownloader.test.tsx b/plugins/tekton/src/components/PipelineRunLogs/__tests__/PipelineRunLogDownloader.test.tsx deleted file mode 100644 index 09fac0b431..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/__tests__/PipelineRunLogDownloader.test.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import React from 'react'; - -import { render, screen } from '@testing-library/react'; - -import { testPipelineRunPods } from '../../../__fixtures__/pods-data'; -import PipelineRunLogDownloader from '../PipelineRunLogDownloader'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn(), -})); - -describe('PipelineRunLogDownloader', () => { - it('should not show download links', () => { - const { pipelineRun } = testPipelineRunPods; - render( - , - ); - - expect(screen.queryByTestId('download-task-logs')).not.toBeInTheDocument(); - expect( - screen.queryByTestId('download-pipelinerun-logs'), - ).not.toBeInTheDocument(); - }); - - it('should return download links', () => { - const { pipelineRun, pods } = testPipelineRunPods; - render( - , - ); - - expect(screen.getByTestId('download-task-logs')).toBeInTheDocument(); - expect(screen.getByTestId('download-pipelinerun-logs')).toBeInTheDocument(); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunLogs/__tests__/PodLogsDownloadLink.test.tsx b/plugins/tekton/src/components/PipelineRunLogs/__tests__/PodLogsDownloadLink.test.tsx deleted file mode 100644 index 15636a509d..0000000000 --- a/plugins/tekton/src/components/PipelineRunLogs/__tests__/PodLogsDownloadLink.test.tsx +++ /dev/null @@ -1,124 +0,0 @@ -import React from 'react'; - -import { fireEvent, render, screen, waitFor } from '@testing-library/react'; - -import { downloadLogFile } from '@janus-idp/shared-react'; - -import { testPipelineRunPods } from '../../../__fixtures__/pods-data'; -import { getPodLogs } from '../../../utils/log-downloader-utils'; -import PodLogsDownloadLink from '../PodLogsDownloadLink'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn(), -})); - -jest.mock('../../../utils/log-downloader-utils', () => ({ - getPodLogs: jest.fn(), -})); - -jest.mock('@janus-idp/shared-react', () => ({ - ...jest.requireActual('@janus-idp/shared-react'), - downloadLogFile: jest.fn(), -})); - -const getPodLogsMock = getPodLogs as jest.Mock; -const downloadLogFileMock = downloadLogFile as jest.Mock; - -describe('PodLogsDownloadLink', () => { - beforeEach(() => { - getPodLogsMock.mockResolvedValue(''); - downloadLogFileMock.mockResolvedValue('download complete'); - }); - - it('should download the pipelineRun logs', async () => { - const { pods } = testPipelineRunPods; - - render( - , - ); - fireEvent.click(screen.getByTestId('download-pipelinerun-logs')); - - await waitFor(() => { - expect( - screen.getByTestId('download-pipelinerun-logs'), - ).toBeInTheDocument(); - - expect(getPodLogsMock).toHaveBeenCalled(); - expect(downloadLogFileMock).toHaveBeenCalled(); - }); - }); - - it('should disable download button during download and enable it back the process is complete', async () => { - getPodLogsMock.mockResolvedValue(''); - downloadLogFileMock.mockResolvedValue('download complete'); - - const { pods } = testPipelineRunPods; - render( - , - ); - - fireEvent.click(screen.getByTestId('download-pipelinerun-logs')); - - expect(screen.getByTestId('download-pipelinerun-logs')).toHaveAttribute( - 'disabled', - ); - - expect( - screen.getByTestId('download-pipelinerun-logs').getAttribute('title'), - ).toBe('downloading logs'); - - await waitFor(() => { - expect( - screen.getByTestId('download-pipelinerun-logs'), - ).not.toHaveAttribute('disabled'); - expect( - screen.getByTestId('download-pipelinerun-logs').getAttribute('title'), - ).toBe('Download all task logs'); - }); - }); - - it('should re-enable download button incase of any errors during download', async () => { - getPodLogsMock.mockRejectedValue('logs download error'); - downloadLogFileMock.mockResolvedValue(''); - - const { pods } = testPipelineRunPods; - render( - , - ); - - fireEvent.click(screen.getByTestId('download-pipelinerun-logs')); - - expect(screen.getByTestId('download-pipelinerun-logs')).toHaveAttribute( - 'disabled', - ); - - expect( - screen.getByTestId('download-pipelinerun-logs').getAttribute('title'), - ).toBe('downloading logs'); - - await waitFor(() => { - expect( - screen.getByTestId('download-pipelinerun-logs'), - ).not.toHaveAttribute('disabled'); - expect( - screen.getByTestId('download-pipelinerun-logs').getAttribute('title'), - ).toBe('Download all task logs'); - }); - }); -}); diff --git a/plugins/tekton/src/components/PipelineRunOutput/PipelineRunOutputDialog.tsx b/plugins/tekton/src/components/PipelineRunOutput/PipelineRunOutputDialog.tsx deleted file mode 100644 index dbcf83fbb5..0000000000 --- a/plugins/tekton/src/components/PipelineRunOutput/PipelineRunOutputDialog.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import React from 'react'; - -import { ErrorBoundary } from '@backstage/core-components'; - -import { - Box, - createStyles, - Dialog, - DialogContent, - DialogTitle, - IconButton, - makeStyles, - Theme, -} from '@material-ui/core'; -import CloseIcon from '@mui/icons-material/Close'; - -import { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-react'; - -import { tektonGroupColor } from '../../types/types'; -import PipelineRunOutput from '../PipelineRunList/PipelineRunOutput'; -import ResourceBadge from '../PipelineRunList/ResourceBadge'; - -const useStyles = makeStyles((theme: Theme) => - createStyles({ - titleContainer: { - display: 'flex', - alignItems: 'center', - gap: theme.spacing(1), - }, - closeButton: { - position: 'absolute', - right: theme.spacing(1), - top: theme.spacing(1), - color: theme.palette.grey[500], - }, - }), -); - -type PipelineRunOutputDialogProps = { - open: boolean; - closeDialog: () => void; - pipelineRun: PipelineRunKind; - taskRuns: TaskRunKind[]; -}; -const PipelineRunOutputDialog = ({ - open, - closeDialog, - pipelineRun, - taskRuns, -}: PipelineRunOutputDialogProps) => { - const classes = useStyles(); - - return ( - - - - {' '} - - - - - - - - - - - - ); -}; - -export default React.memo(PipelineRunOutputDialog); diff --git a/plugins/tekton/src/components/Router.tsx b/plugins/tekton/src/components/Router.tsx deleted file mode 100644 index 56859bf0f8..0000000000 --- a/plugins/tekton/src/components/Router.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import React from 'react'; -import { Route, Routes } from 'react-router-dom'; - -import { Entity } from '@backstage/catalog-model'; -import { useEntity } from '@backstage/plugin-catalog-react'; - -import { TEKTON_CI_ANNOTATION } from '../consts/tekton-const'; -import { TektonCIComponent } from './Tekton/TektonCIComponent'; - -/** @public */ -export const isTektonCIAvailable = (entity: Entity): boolean => - Boolean(entity.metadata.annotations?.[TEKTON_CI_ANNOTATION]); - -/** @public */ -export const Router = () => { - const { entity } = useEntity(); - if (isTektonCIAvailable(entity)) { - return ( - - } /> - - ); - } - return null; -}; diff --git a/plugins/tekton/src/components/Tekton/TektonCIComponent.test.tsx b/plugins/tekton/src/components/Tekton/TektonCIComponent.test.tsx deleted file mode 100644 index 2f8dd321e7..0000000000 --- a/plugins/tekton/src/components/Tekton/TektonCIComponent.test.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import React from 'react'; - -import { usePermission } from '@backstage/plugin-permission-react'; - -import { render } from '@testing-library/react'; - -import { TektonCIComponent } from './TektonCIComponent'; - -// mock useTektonObjectsResponse hook -jest.mock('../../hooks/useTektonObjectsResponse', () => ({ - useTektonObjectsResponse: () => ({ - watchResourcesData: { - pipelineruns: { - data: [], - }, - taskruns: { - data: [], - }, - }, - loaded: true, - responseError: '', - selectedClusterErrors: [], - clusters: [], - setSelectedCluster: () => {}, - }), -})); - -jest.mock('@backstage/plugin-permission-react', () => ({ - usePermission: jest.fn(), -})); - -const mockUsePermission = usePermission as jest.MockedFunction< - typeof usePermission ->; - -describe('TektonComponent', () => { - beforeEach(() => { - mockUsePermission.mockReturnValue({ loading: false, allowed: true }); - }); - - it('should render Permission alert if the user does not have view permission', () => { - mockUsePermission.mockReturnValue({ loading: false, allowed: false }); - const { getByTestId } = render(); - expect(getByTestId('no-permission-alert')).toBeInTheDocument(); - }); - - it('should render TektonComponent', () => { - const { getByText } = render(); - expect(getByText(/No Pipeline Runs found/i)).not.toBeNull(); - }); -}); diff --git a/plugins/tekton/src/components/Tekton/TektonCIComponent.tsx b/plugins/tekton/src/components/Tekton/TektonCIComponent.tsx deleted file mode 100644 index b6e940d882..0000000000 --- a/plugins/tekton/src/components/Tekton/TektonCIComponent.tsx +++ /dev/null @@ -1,64 +0,0 @@ -import React from 'react'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { useDarkTheme } from '../../hooks/useDarkTheme'; -import { useTektonObjectsResponse } from '../../hooks/useTektonObjectsResponse'; -import { useTektonViewPermission } from '../../hooks/useTektonViewPermission'; -import { ModelsPlural } from '../../models'; -import PermissionAlert from '../common/PermissionAlert'; -import PipelineRunList from '../PipelineRunList/PipelineRunList'; - -import '@patternfly/react-core/dist/styles/base.css'; -import '@patternfly/patternfly/patternfly-theme-dark.css'; -import '@patternfly/patternfly/patternfly-charts-theme-dark.css'; -import '@patternfly/patternfly/utilities/Accessibility/accessibility.css'; - -const savedStylesheets = new Set(); - -export const TektonCIComponent = () => { - useDarkTheme(); - - React.useLayoutEffect(() => { - const scalprumStyles = Array.from( - document.querySelectorAll('link[rel="stylesheet"]'), - ).filter(link => - link.attributes - .getNamedItem('href') - ?.value?.includes('backstage-plugin-tekton'), - ); - - scalprumStyles.forEach(link => - savedStylesheets.add(link as HTMLLinkElement), - ); - - savedStylesheets.forEach(link => { - if (!document.head.contains(link)) { - document.head.appendChild(link); - } - }); - return () => { - savedStylesheets.forEach(link => { - if (document.head.contains(link)) { - document.head.removeChild(link); - } - }); - }; - }, []); - - const watchedResources = [ - ModelsPlural.pipelineruns, - ModelsPlural.taskruns, - ModelsPlural.pods, - ]; - const tektonResourcesContextData = useTektonObjectsResponse(watchedResources); - const hasViewPermission = useTektonViewPermission(); - - if (!hasViewPermission) { - return ; - } - return ( - - - - ); -}; diff --git a/plugins/tekton/src/components/common/ClusterSelector.css b/plugins/tekton/src/components/common/ClusterSelector.css deleted file mode 100644 index da6aae614b..0000000000 --- a/plugins/tekton/src/components/common/ClusterSelector.css +++ /dev/null @@ -1,8 +0,0 @@ -.bs-tkn-cluster-selector { - display: flex; - align-items: center; -} - -.bs-tkn-cluster-selector > div > div > div { - margin-top: 0; -} diff --git a/plugins/tekton/src/components/common/ClusterSelector.tsx b/plugins/tekton/src/components/common/ClusterSelector.tsx deleted file mode 100644 index a22a2cc95a..0000000000 --- a/plugins/tekton/src/components/common/ClusterSelector.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import React from 'react'; - -import { Select, SelectedItems } from '@backstage/core-components'; -import { BackstageTheme } from '@backstage/theme'; - -import { makeStyles, Typography } from '@material-ui/core'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; - -import './ClusterSelector.css'; - -const useStyles = makeStyles(theme => ({ - label: { - color: theme.palette.text.primary, - fontSize: '1rem', - paddingRight: '10px', - fontWeight: 'bold', - }, -})); - -export const ClusterSelector = () => { - const classes = useStyles(); - const { - clusters: k8sClusters, - selectedCluster, - setSelectedCluster: setClusterContext, - } = React.useContext(TektonResourcesContext); - const clusterOptions = k8sClusters.map(cluster => ({ - value: cluster, - label: cluster, - })); - - const curCluster = - selectedCluster && k8sClusters?.length > 0 - ? k8sClusters[selectedCluster] - : k8sClusters?.[0]; - - const [clusterSelected, setClusterSelected] = - React.useState(curCluster); - - const onClusterChange = (arg: SelectedItems) => { - const index = k8sClusters.findIndex(cluster => cluster === arg); - setClusterContext(index); - setClusterSelected(arg); - }; - return ( -
- Cluster - -
- ); -}; diff --git a/plugins/tekton/src/components/common/TableExpandCollapse.tsx b/plugins/tekton/src/components/common/TableExpandCollapse.tsx deleted file mode 100644 index b0e05fa39e..0000000000 --- a/plugins/tekton/src/components/common/TableExpandCollapse.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import React from 'react'; - -import { IconButton, makeStyles, Tooltip } from '@material-ui/core'; -import Collapse from '@material-ui/icons/UnfoldLess'; -import Expand from '@material-ui/icons/UnfoldMore'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; - -const useStyles = makeStyles({ - expandCollapse: { - flexGrow: 1, - textAlign: 'end', - }, - iconButton: { - padding: '2px', - }, -}); - -export const TableExpandCollapse = () => { - const classes = useStyles(); - const { isExpanded, setIsExpanded } = React.useContext( - TektonResourcesContext, - ); - - const handleExpandCollaspse = () => { - setIsExpanded(!isExpanded); - }; - return ( -
- - - handleExpandCollaspse()} - disabled={!isExpanded} - className={classes.iconButton} - > - - - - - - - handleExpandCollaspse()} - disabled={isExpanded} - className={classes.iconButton} - > - - - - -
- ); -}; diff --git a/plugins/tekton/src/components/common/WrapperInfoCard.tsx b/plugins/tekton/src/components/common/WrapperInfoCard.tsx deleted file mode 100644 index 8b7550c601..0000000000 --- a/plugins/tekton/src/components/common/WrapperInfoCard.tsx +++ /dev/null @@ -1,34 +0,0 @@ -import React from 'react'; - -import { BottomLinkProps, InfoCard } from '@backstage/core-components'; - -import { ClusterErrors } from '../../types/types'; -import { ClusterSelector, ErrorPanel } from '../common'; - -type WrapperInfoCardProps = { - title: string; - allErrors?: ClusterErrors; - footerLink?: BottomLinkProps; - showClusterSelector?: boolean; -}; - -export const WrapperInfoCard = ({ - children, - allErrors, - footerLink, - title, - showClusterSelector = true, -}: React.PropsWithChildren) => ( - <> - {allErrors && allErrors.length > 0 && } - })} - deepLink={footerLink} - > - {children} - - -); - -export default WrapperInfoCard; diff --git a/plugins/tekton/src/components/common/index.ts b/plugins/tekton/src/components/common/index.ts deleted file mode 100644 index ebf30499a0..0000000000 --- a/plugins/tekton/src/components/common/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { ErrorPanel } from './ErrorPanel'; -export { ClusterSelector } from './ClusterSelector'; -export { ResourceStatus } from './ResourceStatus'; diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineLayout.tsx b/plugins/tekton/src/components/pipeline-topology/PipelineLayout.tsx deleted file mode 100644 index 42f9a28d54..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineLayout.tsx +++ /dev/null @@ -1,188 +0,0 @@ -import React from 'react'; - -import { - action, - Controller, - createTopologyControlButtons, - defaultControlButtonsOptions, - EdgeModel, - GRAPH_LAYOUT_END_EVENT, - GRAPH_POSITION_CHANGE_EVENT, - GraphModel, - Node, - NodeModel, - Rect, - TopologyControlBar, - TopologyView, - Visualization, - VisualizationProvider, - VisualizationSurface, -} from '@patternfly/react-topology'; - -import { - DROP_SHADOW_SPACING, - GRAPH_MIN_WIDTH, - NODE_HEIGHT, - PipelineLayout as PipelineLayoutTypes, - TOOLBAR_HEIGHT, -} from '../../consts/pipeline-topology-const'; -import { PipelineMixedNodeModel } from '../../types/pipeline-topology-types'; -import { getLayoutData } from '../../utils/pipeline-topology-utils'; -import pipelineComponentFactory, { - layoutFactory, -} from './pipelineComponentFactory'; - -type PipelineLayoutProps = { - model: { - graph: GraphModel; - nodes: PipelineMixedNodeModel[]; - edges: EdgeModel[]; - }; -}; - -export const PipelineLayout = ({ model }: PipelineLayoutProps) => { - const [vis, setVis] = React.useState(null); - const [maxSize, setMaxSize] = React.useState<{ - height: number; - width: number; - }>({ height: 0, width: 0 }); - const storedGraphModel = React.useRef(null); - - const layout: PipelineLayoutTypes = model.graph.layout as PipelineLayoutTypes; - - const onLayoutUpdate = React.useCallback( - (nodes: Node[]) => { - const nodeBounds = nodes.map((node: Node) => - node.getBounds(), - ); - const maxWidth = Math.floor( - nodeBounds - .map((bounds: Rect) => bounds.width) - .reduce((w1: number, w2: number) => Math.max(w1, w2), 0), - ); - const maxHeight = Math.floor( - nodeBounds - .map((bounds: Rect) => bounds.height) - .reduce((h1: number, h2: number) => Math.max(h1, h2), 0), - ); - const maxObject = - nodeBounds.find((nb: Rect) => nb.height === maxHeight) ?? - ({ y: 0 } as Rect); - - const maxX = Math.floor( - nodeBounds - .map((bounds: Rect) => bounds.x) - .reduce((x1: number, x2: number) => Math.max(x1, x2), 0), - ); - const maxY = Math.floor( - nodeBounds - .map((bounds: Rect) => bounds.y) - .reduce((y1: number, y2: number) => Math.max(y1, y2), 0), - ); - - let horizontalMargin = 0; - let verticalMargin = 0; - if (layout) { - horizontalMargin = getLayoutData(layout)?.marginx || 0; - verticalMargin = getLayoutData(layout)?.marginy || 0; - } - const finallyTaskHeight = - maxObject.y + maxHeight + DROP_SHADOW_SPACING + verticalMargin * 2; - const regularTaskHeight = - maxY + NODE_HEIGHT + DROP_SHADOW_SPACING + verticalMargin * 2; - - setMaxSize({ - height: Math.max(finallyTaskHeight, regularTaskHeight) + TOOLBAR_HEIGHT, - width: Math.max( - maxX + maxWidth + DROP_SHADOW_SPACING + horizontalMargin * 2, - GRAPH_MIN_WIDTH, - ), - }); - }, - [setMaxSize, layout], - ); - - React.useEffect(() => { - if (model.graph.id !== storedGraphModel?.current?.id) { - storedGraphModel.current = null; - setVis(null); - } - }, [vis, model]); - - React.useEffect(() => { - let mounted = true; - if (vis === null) { - const controller = new Visualization(); - controller.registerLayoutFactory(layoutFactory); - controller.registerComponentFactory(pipelineComponentFactory); - controller.fromModel(model); - controller.addEventListener(GRAPH_POSITION_CHANGE_EVENT, () => { - storedGraphModel.current = controller.getGraph().toModel(); - }); - controller.addEventListener(GRAPH_LAYOUT_END_EVENT, () => { - onLayoutUpdate(controller.getGraph().getNodes()); - }); - if (mounted) { - setVis(controller); - } - } else { - const graph = storedGraphModel.current; - if (graph) { - model.graph = graph; - } - vis.fromModel(model); - vis.getGraph().layout(); - } - return () => { - mounted = false; - }; - }, [vis, model, onLayoutUpdate]); - - React.useEffect(() => { - if (model && vis) { - const graph = storedGraphModel.current; - if (graph) { - model.graph = graph; - } - vis.fromModel(model); - } - }, [model, vis]); - - if (!vis) return null; - - const controlBar = (controller: Controller) => ( - { - controller.getGraph().scaleBy(4 / 3); - }), - zoomOutCallback: action(() => { - controller.getGraph().scaleBy(0.75); - }), - fitToScreenCallback: action(() => { - controller.getGraph().fit(80); - }), - resetViewCallback: action(() => { - controller.getGraph().reset(); - controller.getGraph().layout(); - }), - legend: false, - })} - /> - ); - - return ( -
- - - - - -
- ); -}; diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineRunVisualization.tsx b/plugins/tekton/src/components/pipeline-topology/PipelineRunVisualization.tsx deleted file mode 100644 index 26685d784c..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineRunVisualization.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; - -import { useDarkTheme } from '../../hooks/useDarkTheme'; -import { PipelineVisualizationView } from './PipelineVisualizationView'; - -type PipelineRunVisualizationProps = { - pipelineRunName?: string; -}; - -export const PipelineRunVisualization = ({ - pipelineRunName, -}: PipelineRunVisualizationProps) => { - useDarkTheme(); - - return ( - <> - {pipelineRunName && ( - - )} - - ); -}; diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineTaskNode.css b/plugins/tekton/src/components/pipeline-topology/PipelineTaskNode.css deleted file mode 100644 index cccd0850c6..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineTaskNode.css +++ /dev/null @@ -1,3 +0,0 @@ -.bs-tkn-pipeline-task-node:focus { - outline: -webkit-focus-ring-color auto 5px; -} diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineTaskNode.tsx b/plugins/tekton/src/components/pipeline-topology/PipelineTaskNode.tsx deleted file mode 100644 index 8b21b8634a..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineTaskNode.tsx +++ /dev/null @@ -1,184 +0,0 @@ -import React from 'react'; - -import { Tooltip } from '@patternfly/react-core'; -import { - DEFAULT_LAYER, - DEFAULT_WHEN_OFFSET, - GraphElement, - Layer, - Node, - RunStatus, - ScaleDetailsLevel, - TaskNode, - TOP_LAYER, - useDetailsLevel, - useHover, - WhenDecorator, - WithContextMenuProps, - WithSelectionProps, -} from '@patternfly/react-topology'; -// eslint-disable-next-line @backstage/no-undeclared-imports -import { observer } from 'mobx-react'; - -import { PipelineTaskWithStatus, TaskRunKind } from '@janus-idp/shared-react'; - -import { NodeType } from '../../consts/pipeline-topology-const'; -import { - TEKTON_PIPELINE_RUN, - TEKTON_PIPELINE_TASK, -} from '../../consts/tekton-const'; -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { StepStatus } from '../../types/taskRun'; -import { TektonResourcesContextData } from '../../types/types'; -import { createStepStatus } from '../../utils/pipeline-step-utils'; -import { getTaskStatus } from '../../utils/pipelineRun-utils'; -import PipelineRunLogDialog from '../PipelineRunLogs/PipelineRunLogDialog'; -import { PipelineVisualizationStepList } from './PipelineVisualizationStepList'; - -import './PipelineTaskNode.css'; - -type PipelineTaskNodeProps = { - element: Node; -} & WithContextMenuProps & - WithSelectionProps & - GraphElement; - -const PipelineTaskNode = ({ - element, - onContextMenu, - contextMenuOpen, - ...rest -}: PipelineTaskNodeProps) => { - const [open, setOpen] = React.useState(false); - const { watchResourcesData } = React.useContext( - TektonResourcesContext, - ); - const data = element.getData(); - const triggerRef = React.useRef(null); - - const pipelineRun = data.pipelineRun; - const [hover, hoverRef] = useHover(); - const detailsLevel = useDetailsLevel(); - const isFinallyTask = element.getType() === NodeType.FINALLY_NODE; - - const pods = watchResourcesData?.pods?.data || []; - const taskRuns = watchResourcesData?.taskruns?.data || []; - const openDialog = () => { - setOpen(true); - }; - - const closeDialog = () => { - setOpen(false); - }; - - const computedTask: PipelineTaskWithStatus = data.task; - const stepList = - computedTask?.status?.steps || computedTask?.taskSpec?.steps || []; - - const taskStatus = getTaskStatus(data.pipelineRun, data.task); - - const stepStatusList: StepStatus[] = stepList.map((step: { name: string }) => - createStepStatus(step, taskStatus), - ); - const succeededStepsCount = stepStatusList.filter( - ({ status }) => status === RunStatus.Succeeded, - ).length; - - const badge = - stepStatusList.length > 0 && data.status - ? `${succeededStepsCount}/${stepStatusList.length}` - : null; - - const passedData = React.useMemo(() => { - const newData = { ...data }; - Object.keys(newData).forEach(key => { - if (newData[key] === undefined) { - delete newData[key]; - } - }); - return newData; - }, [data]); - - const hasTaskIcon = !!(data.taskIconClass || data.taskIcon); - const whenDecorator = data.whenStatus ? ( - - ) : null; - const activeTaskId = taskRuns.find( - (tr: TaskRunKind) => - tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === - pipelineRun?.metadata?.name && - tr?.metadata?.labels?.[TEKTON_PIPELINE_TASK] === data.task?.name, - )?.metadata?.name; - - const taskNode = ( - <> - - - {whenDecorator} - - - ); - - return ( - - } - > - - } - triggerRef={triggerRef} - > - {taskNode} - - - - ); -}; - -export default React.memo(observer(PipelineTaskNode)); diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineVisualization.css b/plugins/tekton/src/components/pipeline-topology/PipelineVisualization.css deleted file mode 100644 index 3852d63ab2..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineVisualization.css +++ /dev/null @@ -1,27 +0,0 @@ -.bs-tkn-pipeline-visualization__label { - align-items: baseline; - padding-bottom: var(--pf-v5-global--spacer--xs); -} - -.bs-tkn-pipeline-visualization__label .badge { - font-size: 17px; - line-height: 20px; - margin-right: 4px; - min-width: 24px; - padding: 0 7px; - border-radius: 20px; - color: var(--pf-v5-global--palette--white); - display: inline-block; - text-align: center; - white-space: nowrap; - width: 100%; -} - -.bs-tkn-pipeline-visualization__layout .pf-topology-content { - border-radius: 20px; -} - -.bs-tkn-pipeline-visualization__layout .pf-topology-visualization-surface { - font-size: 1rem; - border-radius: 1rem; -} diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineVisualization.tsx b/plugins/tekton/src/components/pipeline-topology/PipelineVisualization.tsx deleted file mode 100644 index 48d04deea6..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineVisualization.tsx +++ /dev/null @@ -1,40 +0,0 @@ -import React from 'react'; - -import { PipelineRunKind, TaskRunKind } from '@janus-idp/shared-react'; - -import { useDarkTheme } from '../../hooks/useDarkTheme'; -import { getGraphDataModel } from '../../utils/pipeline-topology-utils'; -import { PipelineLayout } from './PipelineLayout'; - -import './PipelineVisualization.css'; - -type PipelineVisualizationProps = { - pipelineRun: PipelineRunKind | null; - taskRuns: TaskRunKind[]; -}; - -export const PipelineVisualization = ({ - pipelineRun, - taskRuns, -}: PipelineVisualizationProps) => { - useDarkTheme(); - - const model = getGraphDataModel(pipelineRun ?? undefined, taskRuns ?? []); - - return ( - <> - {!model || (model.nodes.length === 0 && model.edges.length === 0) ? ( -
- This Pipeline Run has no tasks to visualize -
- ) : ( -
- -
- )} - - ); -}; diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationStepList.css b/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationStepList.css deleted file mode 100644 index e6db778069..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationStepList.css +++ /dev/null @@ -1,67 +0,0 @@ -.bs-tkn-pipeline-visualization-step-list { - min-width: 10em; -} - -.bs-tkn-pipeline-visualization-step-list__task-name { - font-weight: var(--pf-v5-global--FontWeight--bold); - line-height: var(--pf-v5-global--spacer--lg); - max-height: var(--pf-v5-global--spacer--2xl); - max-width: 15em; - margin: 0 auto 10px auto; - - display: -webkit-box; - -webkit-box-orient: vertical; - -webkit-line-clamp: 2; - overflow: hidden; -} - -.bs-tkn-pipeline-visualization-step-list__task-type { - line-height: var(--pf-v5-global--spacer--xs); - max-height: var(--pf-v5-global--spacer--2xl); - margin: 0 auto 10px auto; -} - -.bs-tkn-pipeline-visualization-step-list__step { - display: flex; - margin-bottom: var(--pf-v5-global--spacer--xs); -} - -.bs-tkn-pipeline-visualization-step-list__step--task-run { - margin-bottom: var(--pf-v5-global--spacer--sm); -} - -.bs-tkn-pipeline-visualization-step-list__step:last-child { - margin-bottom: 0; -} - -.bs-tkn-pipeline-visualization-step-list__bullet { - font-size: 1rem; -} - -.bs-tkn-pipeline-visualization-step-list__icon { - flex: 0 0 18px; -} - -.bs-tkn-pipeline-visualization-step-list__icon-backdrop { - fill: var(--pf-v5-global--Color--light-100); -} - -.bs-tkn-pipeline-visualization-step-list__name { - flex: 1 1 auto; - overflow: hidden; - padding-left: var(--pf-v5-global--spacer--sm); - text-align: left; - text-overflow: ellipsis; - white-space: nowrap; -} - -.bs-tkn-pipeline-visualization-step-list__name.is-main-focus { - padding: 0 var(--pf-v5-global--spacer--sm); - text-align: center; -} - -.bs-tkn-pipeline-visualization-step-list__duration { - flex: 0 0 auto; - padding-left: var(--pf-v5-global--spacer--sm); - text-align: right; -} diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationStepList.tsx b/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationStepList.tsx deleted file mode 100644 index 68b5bd0622..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationStepList.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react'; - -import { RunStatus } from '@patternfly/react-topology'; -import classNames from 'classnames'; - -import { Status } from '@janus-idp/shared-react'; - -import { StepStatus } from '../../types/taskRun'; - -import './PipelineVisualizationStepList.css'; - -export type PipelineVisualizationStepListProps = { - isSpecOverview: boolean; - taskName: string; - steps: StepStatus[]; - isFinallyTask?: boolean; - hideHeader?: boolean; -}; - -type TooltipColoredStatusIconProps = { - status: RunStatus; -}; - -const TooltipColoredStatusIcon = ({ - status, -}: TooltipColoredStatusIconProps) => { - const icon = ; - return icon; -}; - -export const PipelineVisualizationStepList = ({ - isSpecOverview, - taskName, - steps, - isFinallyTask, - hideHeader, -}: PipelineVisualizationStepListProps) => { - return ( -
- {!hideHeader && ( -
- {taskName} -
- )} - {isFinallyTask && ( -
- Finally task -
- )} - {steps?.map(({ duration, name, status }) => { - return ( -
- {!isSpecOverview ? ( -
- -
- ) : ( - - • - - )} -
- {name} -
- {!isSpecOverview && ( -
- {duration} -
- )} -
- ); - })} -
- ); -}; diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationView.test.tsx b/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationView.test.tsx deleted file mode 100644 index 3a76da688b..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationView.test.tsx +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react'; -import { BrowserRouter } from 'react-router-dom'; - -import { render } from '@testing-library/react'; - -import { ComputedStatus } from '@janus-idp/shared-react'; - -import { mockKubernetesPlrResponse } from '../../__fixtures__/1-pipelinesData'; -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { PipelineVisualizationView } from './PipelineVisualizationView'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useRouteRef: () => () => '/xyz', -})); - -describe('PipelineVisualizationView', () => { - it('should render the pipeline run visualization when pipelineRun name exists in the params', () => { - const mockContextData = { - watchResourcesData: { - pipelineruns: { - data: mockKubernetesPlrResponse.pipelineruns, - }, - taskruns: { - data: mockKubernetesPlrResponse.taskruns, - }, - }, - loaded: true, - responseError: '', - selectedClusterErrors: [], - clusters: [], - setSelectedCluster: () => {}, - selectedStatus: ComputedStatus.All, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }; - const { queryByTestId } = render( - - - - - , - ); - expect(queryByTestId('pipelineRun-visualization')).toBeInTheDocument(); - }); -}); diff --git a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationView.tsx b/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationView.tsx deleted file mode 100644 index a5cb538d6e..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/PipelineVisualizationView.tsx +++ /dev/null @@ -1,53 +0,0 @@ -import React from 'react'; - -import { EmptyState, Progress } from '@backstage/core-components'; - -import { isEmpty } from 'lodash'; - -import { TektonResourcesContext } from '../../hooks/TektonResourcesContext'; -import { getPipelineRun } from '../../utils/pipelineRun-utils'; -import { PipelineVisualization } from './PipelineVisualization'; - -import './PipelineVisualization.css'; - -type PipelineVisualizationViewProps = { - pipelineRun: string; -}; - -export const PipelineVisualizationView = ({ - pipelineRun, -}: PipelineVisualizationViewProps) => { - const { loaded, responseError, watchResourcesData } = React.useContext( - TektonResourcesContext, - ); - - const pipelineRunResource = React.useMemo( - () => - getPipelineRun(watchResourcesData?.pipelineruns?.data ?? [], pipelineRun), - [watchResourcesData, pipelineRun], - ); - - if (!loaded) - return ( -
- -
- ); - - if (loaded && (responseError || isEmpty(pipelineRunResource))) { - return ( - - ); - } - - return ( - - ); -}; diff --git a/plugins/tekton/src/components/pipeline-topology/TaskGroupEdge.tsx b/plugins/tekton/src/components/pipeline-topology/TaskGroupEdge.tsx deleted file mode 100644 index bbcfa80e76..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/TaskGroupEdge.tsx +++ /dev/null @@ -1,20 +0,0 @@ -import React from 'react'; - -import { Edge, TaskEdge } from '@patternfly/react-topology'; -// eslint-disable-next-line @backstage/no-undeclared-imports -import { observer } from 'mobx-react'; - -import { GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL } from '../../consts/pipeline-topology-const'; - -interface TaskEdgeProps { - element: Edge; -} - -const TaskGroupEdge = (props: TaskEdgeProps) => ( - -); - -export default observer(TaskGroupEdge); diff --git a/plugins/tekton/src/components/pipeline-topology/dag.test.ts b/plugins/tekton/src/components/pipeline-topology/dag.test.ts deleted file mode 100644 index 0ca60e097e..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/dag.test.ts +++ /dev/null @@ -1,104 +0,0 @@ -import { DAG } from './dag'; - -describe('dag', () => { - describe('addVertex:', () => { - it('should add the vertex to the graph', () => { - const dag = new DAG(); - - dag.addVertex('task1'); - dag.addVertex('task2'); - - expect(dag.names).toHaveLength(2); - }); - - it('should skip the duplicate vertex added to the graph', () => { - const dag = new DAG(); - - dag.addVertex('task1'); - dag.addVertex('task1'); - - expect(dag.names).toHaveLength(1); - }); - }); - - describe('AddEdge:', () => { - it('should add the vertex if it not available in the graph', () => { - const dag = new DAG(); - - dag.addEdge('task1', 'task2'); - expect(dag.names).toHaveLength(2); - }); - - it('should add the edges to the graph', () => { - const dag = new DAG(); - - dag.addVertex('task1'); - dag.addVertex('task2'); - - dag.addEdge('task1', 'task2'); - expect(dag?.vertices?.get?.('task2')?.dependancyNames).toContain('task1'); - }); - - it('should skip the duplicate edges added to the graph', () => { - const dag = new DAG(); - - dag.addVertex('task1'); - dag.addVertex('task2'); - - dag.addEdge('task1', 'task2'); - dag.addEdge('task1', 'task2'); - expect(dag?.vertices?.get('task2')?.dependancyNames).toContain('task1'); - }); - }); - - describe('AddEdges', () => { - it('should form the dependancies when addEdges is called with multiple before and after tasks', () => { - const dag = new DAG(); - - dag.addVertex('task1'); - dag.addVertex('task2'); - dag.addVertex('task3'); - dag.addVertex('task4'); - dag.addVertex('task5'); - - const runAfter = ['task1', 'task2']; - const runBefore = ['task4', 'task5']; - - dag.addEdges('task3', { id: 'task3' }, runBefore, runAfter); - - expect(dag?.printGraph())?.toEqual( - 'task1 --> task2 --> task3 --> task4 --> task5', - ); - }); - - it('should throw an error if there is any cycle detected', () => { - const dag = new DAG(); - - dag.addVertex('task1'); - dag.addVertex('task2'); - dag.addVertex('task3'); - - const runAfter = ['task1', 'task2']; - const runBefore = ['task1']; - - expect(() => - dag.addEdges('task3', { id: 'task3' }, runBefore, runAfter), - ).toThrow('cycle detected: task3 --> task1 --> task3'); - }); - }); - - it('should print the tasks in topological sort order', () => { - const dag = new DAG(); - - dag.addVertex('task1'); - dag.addVertex('task2'); - dag.addVertex('task3'); - dag.addVertex('task4'); - - dag.addEdge('task1', 'task2'); - dag.addEdge('task2', 'task3'); - dag.addEdge('task3', 'task4'); - - expect(dag.printGraph()).toEqual('task1 --> task2 --> task3 --> task4'); - }); -}); diff --git a/plugins/tekton/src/components/pipeline-topology/dag.ts b/plugins/tekton/src/components/pipeline-topology/dag.ts deleted file mode 100644 index 32e3ca17db..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/dag.ts +++ /dev/null @@ -1,156 +0,0 @@ -export interface Vertex { - name: string; - level: number; - dependancy: { [key: string]: any }; - dependancyNames: string[]; - hasOutgoing: boolean; - data: any; -} - -type Vertices = Map; - -export class DAG { - names: string[]; - - vertices: Vertices; - - constructor() { - this.names = []; - this.vertices = new Map(); - } - - private visit( - vertex: Vertex, - fn: (v: Vertex, path: string[]) => void, - visited?: any, - path?: string[], - ) { - const { name } = vertex; - const vertices = vertex.dependancy; - const names = vertex.dependancyNames; - const len = names.length; - - if (!visited) { - // eslint-disable-next-line no-param-reassign - visited = new Map(); - } - if (!path) { - // eslint-disable-next-line no-param-reassign - path = []; - } - if (visited.has(name)) { - return; - } - path.push(name); - visited.set(name, true); - for (let i = 0; i < len; i++) { - this.visit(vertices[names[i]], fn, visited, path); - } - fn(vertex, path); - path.pop(); - } - - private map(name: string, data: any) { - const vertex = this.addVertex(name) as Vertex; - vertex.data = data; - } - - addVertex(name: string) { - if (!name) { - return null; - } - if (this.vertices.has(name)) { - return this.vertices.get(name); - } - - const vertex: Vertex = { - name, - level: 0, - dependancy: {}, - dependancyNames: [], - hasOutgoing: false, - data: {}, - }; - this.vertices.set(name, vertex); - this.names.push(name); - return vertex; - } - - addEdge(source: string, target: string): void { - if (!source || !target || source === target) { - return; - } - const fromNode = this.addVertex(source) as Vertex; - const toNode = this.addVertex(target) as Vertex; - - if (toNode.dependancy[source]) { - return; - } - - const printPath = (path: string[], tar: string): string => { - const reversedPath = [...path].reverse(); - return `${reversedPath.join(' --> ')} --> ${tar}`; - }; - - const checkCycle = (vertex: Vertex, path: string[]) => { - if (vertex.name === target) { - throw new Error(`cycle detected: ${printPath(path, target)}`); - } else { - vertex.level = path.length; - } - }; - this.visit(fromNode, checkCycle); - fromNode.hasOutgoing = true; - toNode.dependancy[source] = fromNode; - toNode.dependancyNames.push(source); - } - - addEdges( - name: string, - data: any, - before: string | string[], - after: string | string[], - ): void { - this.map(name, data); - - if (before) { - if (typeof before === 'string') { - this.addEdge(name, before); - } else { - before.forEach(b => this.addEdge(name, b)); - } - } - if (after) { - if (typeof after === 'string') { - this.addEdge(after, name); - } else { - after.forEach(a => this.addEdge(a, name)); - } - } - } - - topologicalSort(fn: any): void { - const visited = new Map(); - const { vertices } = this; - const { names } = this; - const len = names.length; - - for (let i = 0; i < len; i++) { - const vertex = vertices.get(names[i]) as Vertex; - if (!vertex.hasOutgoing) { - this.visit(vertex, fn, visited); - } - } - } - - printGraph() { - const orderedNodes: string[] = []; - this.topologicalSort((v: Vertex, t: string) => { - v.data.stage = this.names.length - t.length; - orderedNodes.push(v.name); - }); - // eslint-disable-next-line no-console - console.log(orderedNodes.join(' --> ')); - return orderedNodes.join(' --> '); - } -} diff --git a/plugins/tekton/src/components/pipeline-topology/index.ts b/plugins/tekton/src/components/pipeline-topology/index.ts deleted file mode 100644 index 710d89f5ee..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { PipelineVisualization } from './PipelineVisualization'; -export { PipelineRunVisualization } from './PipelineRunVisualization'; diff --git a/plugins/tekton/src/components/pipeline-topology/pipelineComponentFactory.tsx b/plugins/tekton/src/components/pipeline-topology/pipelineComponentFactory.tsx deleted file mode 100644 index 48b5faef60..0000000000 --- a/plugins/tekton/src/components/pipeline-topology/pipelineComponentFactory.tsx +++ /dev/null @@ -1,84 +0,0 @@ -import React from 'react'; - -import { - ComponentFactory, - DagreLayout, - DefaultTaskGroup, - Graph, - GraphComponent, - GraphElement, - LayoutFactory, - ModelKind, - PipelineDagreLayout, - SpacerNode, - TaskEdge, - withPanZoom, -} from '@patternfly/react-topology'; - -import { NodeType, PipelineLayout } from '../../consts/pipeline-topology-const'; -import { getLayoutData } from '../../utils/pipeline-topology-utils'; -import PipelineTaskNode from './PipelineTaskNode'; -import TaskGroupEdge from './TaskGroupEdge'; - -const GROUPED_EDGE_TYPE = 'GROUPED_EDGE'; - -export const layoutFactory: LayoutFactory = (type: string, graph: Graph) => { - switch (type) { - case PipelineLayout.DAGRE_BUILDER: - case PipelineLayout.DAGRE_BUILDER_SPACED: - return new DagreLayout(graph, { - // Hack to get around undesirable defaults - linkDistance: 0, - nodeDistance: 0, - groupDistance: 0, - collideDistance: 0, - simulationSpeed: 0, - chargeStrength: 0, - allowDrag: false, - layoutOnDrag: false, - ...getLayoutData(type), - }); - case PipelineLayout.DAGRE_VIEWER: - return new PipelineDagreLayout(graph, { nodesep: 25 }); - default: - return undefined; - } -}; - -const pipelineComponentFactory: ComponentFactory = ( - kind: ModelKind, - type: string, -): React.ComponentType<{ element: GraphElement }> | undefined => { - if (kind === ModelKind.graph) { - return withPanZoom()(GraphComponent) as React.ComponentType<{ - element: GraphElement; - }>; - } - if (kind === ModelKind.edge) { - return TaskEdge as React.ComponentType<{ element: GraphElement }>; - } - if (kind === ModelKind.node) { - switch (type) { - case NodeType.TASK_NODE: - case NodeType.FINALLY_NODE: - return PipelineTaskNode as React.ComponentType; - case 'task-group': - case NodeType.FINALLY_GROUP: - return DefaultTaskGroup as React.ComponentType<{ - element: GraphElement; - }>; - case NodeType.SPACER_NODE: - return SpacerNode as React.ComponentType<{ element: GraphElement }>; - case 'finally-spacer-edge': - case NodeType.EDGE: - return TaskEdge as React.ComponentType<{ element: GraphElement }>; - case GROUPED_EDGE_TYPE: - return TaskGroupEdge as React.ComponentType<{ element: GraphElement }>; - default: - return undefined; - } - } - return undefined; -}; - -export default pipelineComponentFactory; diff --git a/plugins/tekton/src/consts/pipeline-topology-const.ts b/plugins/tekton/src/consts/pipeline-topology-const.ts deleted file mode 100644 index 6e4e78c7c3..0000000000 --- a/plugins/tekton/src/consts/pipeline-topology-const.ts +++ /dev/null @@ -1,110 +0,0 @@ -import * as dagre from 'dagre'; - -export const NODE_SEPARATION_HORIZONTAL = 25; -export const NODE_SEPARATION_VERTICAL = 20; -export const DROP_SHADOW_SPACING = 5; -export const BUILDER_NODE_ADD_RADIUS = 9; -export const BUILDER_NODE_DECORATOR_RADIUS = 9; -export const BUILDER_NODE_ADD_PADDING = 4; - -export const NODE_WIDTH = 120; -export const NODE_HEIGHT = 30; -export const FINALLY_NODE_PADDING = 30; -export const FINALLY_NODE_VERTICAL_SPACING = 20; - -export const FINALLY_ADD_LINK_TEXT_HEIGHT = 10; -export const FINALLY_ADD_LINK_SIZE = 15; -export const WHEN_EXPRESSSION_DIAMOND_SIZE = 10; -export const WHEN_EXPRESSION_SPACING = 25; - -export const DEFAULT_NODE_HEIGHT = 32; -export const NODE_PADDING = 12; -export const DEFAULT_NODE_ICON_WIDTH = 30; -export const DEFAULT_BADGE_WIDTH = 40; -export const DEFAULT_FINALLLY_GROUP_PADDING = 35; -export const TOOLBAR_HEIGHT = 40; -export const GRAPH_MIN_WIDTH = 300; -export const GRAPH_MAX_HEIGHT_PERCENT = 45; - -export enum NodeType { - TASK_NODE = 'task', - SPACER_NODE = 'spacer', - LOADING_NODE = 'loading', - TASK_LIST_NODE = 'task-list', - BUILDER_NODE = 'builder', - INVALID_TASK_LIST_NODE = 'invalid-task-list', - FINALLY_NODE = 'finally-node', - BUILDER_FINALLY_NODE = 'builder-finally-node', - FINALLY_GROUP = 'finally-group', - EDGE = 'edge', -} -export enum DrawDesign { - INTEGRAL_SHAPE = 'integral-shape', - STRAIGHT = 'line', -} -export enum PipelineLayout { - DAGRE_BUILDER = 'dagre-builder', - DAGRE_BUILDER_SPACED = 'dagre-builder-spaced', - DAGRE_VIEWER = 'dagre-viewer', - DAGRE_VIEWER_SPACED = 'dagre-viewer-spaced', -} - -export enum AddNodeDirection { - /** - * Rules today: - * - the `relatedTask` is pointing at ONLY us - * - we inherit all that `relatedTask` is pointing at - */ - BEFORE = 'in-run-after', - - /** - * Rules today: - * - the `relatedTask` must be our ONLY runAfter - * - we are added to all that is pointing at `relatedTask` - */ - AFTER = 'has-run-after', - - /** - * Rules today: - * - we inherit all that `relatedTask` is pointing at - * - we are added to all that is pointing at `relatedTask` - */ - PARALLEL = 'shared-parallel', -} - -const DAGRE_SHARED_PROPS: dagre.GraphLabel = { - nodesep: NODE_SEPARATION_VERTICAL, - ranksep: NODE_SEPARATION_HORIZONTAL, - edgesep: 50, - ranker: 'longest-path', - rankdir: 'LR', - marginx: 20, - marginy: 20, -}; -export const DAGRE_VIEWER_PROPS: dagre.GraphLabel = { - ...DAGRE_SHARED_PROPS, -}; -export const DAGRE_VIEWER_SPACED_PROPS: dagre.GraphLabel = { - ...DAGRE_VIEWER_PROPS, - ranksep: NODE_SEPARATION_HORIZONTAL + WHEN_EXPRESSION_SPACING, -}; -export const DAGRE_BUILDER_PROPS: dagre.GraphLabel = { - ...DAGRE_SHARED_PROPS, - ranksep: NODE_SEPARATION_HORIZONTAL + BUILDER_NODE_ADD_RADIUS * 2, - nodesep: NODE_SEPARATION_VERTICAL + BUILDER_NODE_ADD_RADIUS, - marginx: DAGRE_SHARED_PROPS.marginx ?? 0 + BUILDER_NODE_ADD_RADIUS * 2, - marginy: DAGRE_SHARED_PROPS.marginy ?? 0 + BUILDER_NODE_ADD_RADIUS * 2, -}; - -export const DAGRE_BUILDER_SPACED_PROPS: dagre.GraphLabel = { - ...DAGRE_BUILDER_PROPS, - ranksep: - NODE_SEPARATION_HORIZONTAL + - WHEN_EXPRESSION_SPACING + - BUILDER_NODE_ADD_RADIUS * 2, -}; - -export const GROUPED_PIPELINE_NODE_SEPARATION_HORIZONTAL = 200; - -export const REGEX_EXTRACT_DEPS = - /(?:\$\(tasks\.)([a-z0-9_-]+)(?:.results)(?:[.^\w]+\))/g; diff --git a/plugins/tekton/src/consts/tekton-const.ts b/plugins/tekton/src/consts/tekton-const.ts deleted file mode 100644 index 1d71c1f9ed..0000000000 --- a/plugins/tekton/src/consts/tekton-const.ts +++ /dev/null @@ -1,5 +0,0 @@ -export const TEKTON_CI_ANNOTATION = 'janus-idp.io/tekton'; -export const TEKTON_PIPELINE_TASK = 'tekton.dev/pipelineTask'; -export const TEKTON_PIPELINE_RUN = 'tekton.dev/pipelineRun'; -export const TEKTON_PIPELINE_TASKRUN = 'tekton.dev/taskRun'; -export const TEKTON_SIGNED_ANNOTATION = 'chains.tekton.dev/signed'; diff --git a/plugins/tekton/src/globals.d.ts b/plugins/tekton/src/globals.d.ts deleted file mode 100644 index 006534e235..0000000000 --- a/plugins/tekton/src/globals.d.ts +++ /dev/null @@ -1,4 +0,0 @@ -declare module '*.svg' { - const content: React.FunctionComponent>; - export default content; -} diff --git a/plugins/tekton/src/hooks/TektonResourcesContext.ts b/plugins/tekton/src/hooks/TektonResourcesContext.ts deleted file mode 100644 index 9e71f3621b..0000000000 --- a/plugins/tekton/src/hooks/TektonResourcesContext.ts +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; - -import { ComputedStatus } from '@janus-idp/shared-react'; - -import { TektonResourcesContextData } from '../types/types'; - -export const TektonResourcesContext = - React.createContext({ - clusters: [], - selectedStatus: ComputedStatus.All, - setSelectedCluster: () => {}, - setSelectedStatus: () => {}, - setIsExpanded: () => {}, - }); diff --git a/plugins/tekton/src/hooks/useAllWatchResources.test.ts b/plugins/tekton/src/hooks/useAllWatchResources.test.ts deleted file mode 100644 index 1ad4993e8f..0000000000 --- a/plugins/tekton/src/hooks/useAllWatchResources.test.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { KubernetesObjects } from '@backstage/plugin-kubernetes-react'; - -import { renderHook } from '@testing-library/react'; - -import { kubernetesObjects } from '../__fixtures__/kubernetesObject'; -import { ModelsPlural } from '../models'; -import { useAllWatchResources } from './useAllWatchResources'; - -const watchedResources = [ModelsPlural.pipelineruns, ModelsPlural.taskruns]; - -describe('useAllWatchResources', () => { - it('should return watchResourcesData as empty if no resources found', () => { - const k8sObjectsResponse = { - loading: false, - error: '', - } as KubernetesObjects; - const { result } = renderHook(() => - useAllWatchResources(k8sObjectsResponse, 0, watchedResources), - ); - expect(result.current).toEqual({}); - }); - - it('should return watchResourcesData if resources are present', () => { - const k8sObjectsResponse = { - kubernetesObjects, - loading: false, - error: '', - } as KubernetesObjects; - const { result } = renderHook(() => - useAllWatchResources(k8sObjectsResponse, 0, watchedResources), - ); - expect(result.current?.pipelineruns?.data).toHaveLength(5); - expect(result.current?.taskruns).toBeUndefined(); - }); - - it('should return watchResourcesData as empty if resources are present but it is not in in watchedResources', () => { - const k8sObjectsResponse = { - kubernetesObjects, - loading: false, - error: '', - } as KubernetesObjects; - const { result } = renderHook(() => - useAllWatchResources(k8sObjectsResponse, 0, []), - ); - expect(result.current).toEqual({}); - }); - - it('should update watchResourcesData as per API response', () => { - let k8sObjectsResponse = { - loading: false, - error: '', - } as KubernetesObjects; - const { result, rerender } = renderHook(() => - useAllWatchResources(k8sObjectsResponse, 0, watchedResources), - ); - expect(result.current).toEqual({}); - - k8sObjectsResponse = { - kubernetesObjects, - loading: false, - error: '', - } as KubernetesObjects; - rerender(); - expect(result.current?.pipelineruns?.data).toHaveLength(5); - }); -}); diff --git a/plugins/tekton/src/hooks/useAllWatchResources.ts b/plugins/tekton/src/hooks/useAllWatchResources.ts deleted file mode 100644 index c9d5adc7e4..0000000000 --- a/plugins/tekton/src/hooks/useAllWatchResources.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { useEffect, useMemo, useState } from 'react'; - -import { KubernetesObjects } from '@backstage/plugin-kubernetes-react'; - -import { useDeepCompareMemoize } from '@janus-idp/shared-react'; - -import { TektonResponseData } from '../types/types'; -import { getTektonResources } from '../utils/tekton-utils'; - -export const useAllWatchResources = ( - k8sObjectsResponse: KubernetesObjects, - cluster: number, - watchedResource: string[] = [], -): TektonResponseData => { - const { kubernetesObjects, loading, error } = k8sObjectsResponse; - const [resources, setResources] = useState({}); - - useEffect(() => { - let isMounted = true; - if (isMounted && !loading && kubernetesObjects && !error) { - const tektonResources: TektonResponseData = getTektonResources( - cluster, - kubernetesObjects, - ); - if (tektonResources) { - setResources(tektonResources); - } - } - return () => { - isMounted = false; - }; - }, [loading, kubernetesObjects, error, cluster]); - - const watchResourcesData = useMemo(() => { - return watchedResource.reduce((acc: TektonResponseData, resKind) => { - if (resources[resKind]) { - acc[resKind] = resources[resKind]; - } - return acc; - }, {}); - }, [watchedResource, resources]); - - return useDeepCompareMemoize(watchResourcesData); -}; diff --git a/plugins/tekton/src/hooks/useDarkTheme.test.ts b/plugins/tekton/src/hooks/useDarkTheme.test.ts deleted file mode 100644 index 8b97f7119c..0000000000 --- a/plugins/tekton/src/hooks/useDarkTheme.test.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { useTheme } from '@material-ui/core/styles'; -import { renderHook } from '@testing-library/react'; - -import { useDarkTheme } from './useDarkTheme'; - -jest.mock('@material-ui/core/styles', () => ({ - useTheme: jest.fn(), -})); - -const useThemeMock = useTheme as jest.Mock; - -describe('useDarkTheme', () => { - it('should add dark theme class to html tag', () => { - useThemeMock.mockReturnValue({ - palette: { - type: 'dark', - }, - }); - renderHook(() => useDarkTheme()); - const htmlTagElement = document.documentElement; - expect(htmlTagElement.classList.contains('pf-v5-theme-dark')).toBe(true); - }); - - it('should remove dark theme class from html tag', () => { - useThemeMock.mockReturnValue({ - palette: { - type: 'light', - }, - }); - renderHook(() => useDarkTheme()); - const htmlTagElement = document.documentElement; - expect(htmlTagElement.classList.contains('pf-v5-theme-dark')).toBe(false); - }); -}); diff --git a/plugins/tekton/src/hooks/useDarkTheme.ts b/plugins/tekton/src/hooks/useDarkTheme.ts deleted file mode 100644 index 24f48bbedf..0000000000 --- a/plugins/tekton/src/hooks/useDarkTheme.ts +++ /dev/null @@ -1,22 +0,0 @@ -import React from 'react'; - -import { useTheme } from '@material-ui/core/styles'; - -const THEME_DARK = 'dark'; -const THEME_DARK_CLASS = 'pf-v5-theme-dark'; - -export const useDarkTheme = () => { - const { - palette: { type }, - } = useTheme(); - - React.useEffect(() => { - const htmlTagElement = document.documentElement; - if (type === THEME_DARK) { - htmlTagElement.classList.add(THEME_DARK_CLASS); - } else { - htmlTagElement.classList.remove(THEME_DARK_CLASS); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [type]); -}; diff --git a/plugins/tekton/src/hooks/usePipelineRunScanResults.test.ts b/plugins/tekton/src/hooks/usePipelineRunScanResults.test.ts deleted file mode 100644 index aff80554a9..0000000000 --- a/plugins/tekton/src/hooks/usePipelineRunScanResults.test.ts +++ /dev/null @@ -1,53 +0,0 @@ -import { renderHook } from '@testing-library/react'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { usePipelineRunScanResults } from './usePipelineRunScanResults'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn(), -})); - -describe('usePipelineRunVulnerabilities', () => { - it('should return vulnerabilities when SCAN_OUTPUT is set', () => { - const { result } = renderHook(() => - usePipelineRunScanResults(mockKubernetesPlrResponse.pipelineruns[2]), - ); - - expect(result.current.vulnerabilities?.critical).toEqual(13); - expect(result.current.vulnerabilities?.high).toEqual(29); - expect(result.current.vulnerabilities?.medium).toEqual(32); - expect(result.current.vulnerabilities?.low).toEqual(3); - }); - it('should return vulnerabilities when the suffix SCAN_OUTPUT is set', () => { - const { result } = renderHook(() => - usePipelineRunScanResults(mockKubernetesPlrResponse.pipelineruns[4]), - ); - - expect(result.current.vulnerabilities?.critical).toEqual(1); - expect(result.current.vulnerabilities?.high).toEqual(9); - expect(result.current.vulnerabilities?.medium).toEqual(20); - expect(result.current.vulnerabilities?.low).toEqual(1); - }); - it('should accumulate all vulnerabilities', () => { - const { result } = renderHook(() => { - const results4 = - mockKubernetesPlrResponse.pipelineruns[4].status.pipelineResults?.[0]; - const results1 = - mockKubernetesPlrResponse.pipelineruns[2].status.results?.[0]; - const plr = { - ...mockKubernetesPlrResponse.pipelineruns[2], - status: { - ...mockKubernetesPlrResponse.pipelineruns[2].status, - results: results4 && results1 ? [results4, results1] : [], - }, - }; - return usePipelineRunScanResults(plr); - }); - - expect(result.current.vulnerabilities?.critical).toEqual(14); - expect(result.current.vulnerabilities?.high).toEqual(38); - expect(result.current.vulnerabilities?.medium).toEqual(52); - expect(result.current.vulnerabilities?.low).toEqual(4); - }); -}); diff --git a/plugins/tekton/src/hooks/usePipelineRunScanResults.ts b/plugins/tekton/src/hooks/usePipelineRunScanResults.ts deleted file mode 100644 index 68014444b7..0000000000 --- a/plugins/tekton/src/hooks/usePipelineRunScanResults.ts +++ /dev/null @@ -1,49 +0,0 @@ -import * as React from 'react'; - -import { PipelineRunKind } from '@janus-idp/shared-react'; - -import { PipelineRunScanResults } from '../types/types'; - -const SCAN_OUTPUT_SUFFIX = 'SCAN_OUTPUT'; - -export const getPipelineRunScanResults = ( - pipelineRun: PipelineRunKind, -): PipelineRunScanResults => - (pipelineRun.status?.results || pipelineRun.status?.pipelineResults)?.reduce( - (acc, result) => { - if (result.name?.endsWith(SCAN_OUTPUT_SUFFIX)) { - if (!acc.vulnerabilities) { - acc.vulnerabilities = { critical: 0, high: 0, medium: 0, low: 0 }; - } - try { - const taskVulnerabilities = JSON.parse(result.value); - if (taskVulnerabilities.vulnerabilities) { - acc.vulnerabilities.critical += - taskVulnerabilities.vulnerabilities.critical || 0; - acc.vulnerabilities.high += - taskVulnerabilities.vulnerabilities.high || 0; - acc.vulnerabilities.medium += - taskVulnerabilities.vulnerabilities.medium || 0; - acc.vulnerabilities.low += - taskVulnerabilities.vulnerabilities.low || 0; - } - } catch (e) { - // ignore - } - } - return acc; - }, - {} as PipelineRunScanResults, - ) || {}; - -export const usePipelineRunScanResults = ( - pipelineRun: PipelineRunKind, -): PipelineRunScanResults => { - return React.useMemo(() => { - if (!pipelineRun) { - return {}; - } - - return getPipelineRunScanResults(pipelineRun); - }, [pipelineRun]); -}; diff --git a/plugins/tekton/src/hooks/usePodContainerLogs.test.ts b/plugins/tekton/src/hooks/usePodContainerLogs.test.ts deleted file mode 100644 index cda29cfe77..0000000000 --- a/plugins/tekton/src/hooks/usePodContainerLogs.test.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { useApi } from '@backstage/core-plugin-api'; - -import { renderHook, waitFor } from '@testing-library/react'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { usePodContainerLogs } from './usePodContainerLogs'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn(), -})); - -describe('usePodContainerLogs', () => { - it('should return loading as true and value as undefined initially', async () => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockResolvedValue({ text: 'log data...' }), - }); - const { result } = renderHook(() => - usePodContainerLogs({ - pod: mockKubernetesPlrResponse.pods[0] as any, - containerName: - mockKubernetesPlrResponse.pods[0].spec.containers[0].name, - }), - ); - - await waitFor(() => { - expect(result.current.loading).toEqual(true); - }); - - await waitFor(() => expect(result.current.value).toBeUndefined()); - }); - - it('should return value as log text', async () => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockResolvedValue({ text: 'log data...' }), - }); - const { result } = renderHook(() => - usePodContainerLogs({ - pod: mockKubernetesPlrResponse.pods[0] as any, - containerName: - mockKubernetesPlrResponse.pods[0].spec.containers[0].name, - }), - ); - - await waitFor(() => { - expect(result.current.value).toEqual({ text: 'log data...' }); - }); - }); -}); diff --git a/plugins/tekton/src/hooks/usePodContainerLogs.ts b/plugins/tekton/src/hooks/usePodContainerLogs.ts deleted file mode 100644 index bc89d9426e..0000000000 --- a/plugins/tekton/src/hooks/usePodContainerLogs.ts +++ /dev/null @@ -1,81 +0,0 @@ -import React from 'react'; -import { useAsync } from 'react-use'; - -import { useApi } from '@backstage/core-plugin-api'; -import { ContainerScope } from '@backstage/plugin-kubernetes-react'; - -import { V1Pod } from '@kubernetes/client-node'; - -import { - kubernetesProxyApiRef, - TektonResourcesContextData, -} from '../types/types'; -import { TektonResourcesContext } from './TektonResourcesContext'; - -interface PodContainerLogsOptions { - pod: V1Pod | undefined; - containerName: string; - intervalMs?: number; -} - -export const usePodContainerLogs = ({ - pod, - containerName: cName, -}: PodContainerLogsOptions) => { - const [loadingData, setLoadingData] = React.useState(true); - const [, setPodInfo] = React.useState(pod?.metadata?.name ?? ''); - const kubernetesProxyApi = useApi(kubernetesProxyApiRef); - const { clusters, selectedCluster } = - React.useContext(TektonResourcesContext); - const currCluster = - (clusters.length > 0 && clusters[selectedCluster || 0]) || ''; - const getLogs = React.useCallback( - async (podScope: ContainerScope): Promise<{ text: string }> => { - const { - podName, - podNamespace, - containerName, - cluster: { name: clusterName }, - } = podScope; - return await kubernetesProxyApi.getPodLogs({ - podName: podName, - namespace: podNamespace, - containerName: containerName, - clusterName: clusterName, - }); - }, - [kubernetesProxyApi], - ); - - const { value, error, loading } = useAsync(async () => { - if (pod?.metadata?.name && pod?.metadata?.namespace) { - const podScope = { - containerName: cName, - podName: pod.metadata.name, - podNamespace: pod.metadata.namespace, - cluster: { name: currCluster }, - }; - return getLogs(podScope); - } - return null; - }, [pod, getLogs]); - - React.useEffect(() => { - let mounted = true; - if (!loading && mounted) { - setPodInfo(prevState => { - if (prevState === pod?.metadata?.name) { - setLoadingData(false); - return prevState; - } - setLoadingData(true); - return pod?.metadata?.name || ''; - }); - } - return () => { - mounted = false; - }; - }, [loading, pod]); - - return { value, error, loading: loadingData }; -}; diff --git a/plugins/tekton/src/hooks/usePodLogsOfPipelineRun.test.ts b/plugins/tekton/src/hooks/usePodLogsOfPipelineRun.test.ts deleted file mode 100644 index eb505479ea..0000000000 --- a/plugins/tekton/src/hooks/usePodLogsOfPipelineRun.test.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { useApi } from '@backstage/core-plugin-api'; - -import { renderHook, waitFor } from '@testing-library/react'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { usePodLogsOfPipelineRun } from './usePodLogsOfPipelineRun'; - -jest.mock('@backstage/core-plugin-api', () => ({ - ...jest.requireActual('@backstage/core-plugin-api'), - useApi: jest.fn(), -})); - -describe('usePodLogsOfPipelineRun', () => { - it('should return loading as true and value as undefined initially', async () => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockResolvedValue({ text: 'log data...' }), - }); - const { result } = renderHook(() => - usePodLogsOfPipelineRun({ - pod: mockKubernetesPlrResponse.pods[0] as any, - intervalMs: 500, - }), - ); - - await waitFor(() => { - expect(result.current.loading).toEqual(true); - }); - - await waitFor(() => expect(result.current.value).toBeUndefined()); - }); - - it('should return value as log text', async () => { - (useApi as any).mockReturnValue({ - getPodLogs: jest.fn().mockResolvedValueOnce({ text: 'log data...' }), - }); - const { result } = renderHook(() => - usePodLogsOfPipelineRun({ - pod: mockKubernetesPlrResponse.pods[0] as any, - intervalMs: 500, - }), - ); - - await waitFor(() => { - expect(result.current.value).toEqual([{ text: 'log data...' }]); - }); - }); -}); diff --git a/plugins/tekton/src/hooks/usePodLogsOfPipelineRun.ts b/plugins/tekton/src/hooks/usePodLogsOfPipelineRun.ts deleted file mode 100644 index 021c3005f1..0000000000 --- a/plugins/tekton/src/hooks/usePodLogsOfPipelineRun.ts +++ /dev/null @@ -1,93 +0,0 @@ -import React from 'react'; -import useAsyncRetry from 'react-use/lib/useAsyncRetry'; -import useInterval from 'react-use/lib/useInterval'; - -import { useApi } from '@backstage/core-plugin-api'; - -import { V1Container, V1Pod } from '@kubernetes/client-node'; - -import { - kubernetesProxyApiRef, - TektonResourcesContextData, -} from '../types/types'; -import { TektonResourcesContext } from './TektonResourcesContext'; - -export interface ContainerScope { - podName: string; - podNamespace: string; - clusterName: string; - containerName: string; -} - -interface PodLogsOptions { - pod: V1Pod; - intervalMs?: number; -} - -export const usePodLogsOfPipelineRun = ({ - pod, - intervalMs = 5000, -}: PodLogsOptions) => { - const [loadingData, setLoadingData] = React.useState(true); - const [, setPodInfo] = React.useState(pod?.metadata?.name ?? ''); - const kubernetesProxyApi = useApi(kubernetesProxyApiRef); - const { clusters, selectedCluster } = - React.useContext(TektonResourcesContext); - const currCluster = - (clusters.length > 0 && clusters[selectedCluster || 0]) || ''; - const containersList = pod?.spec?.containers || []; - const getLogs = React.useCallback( - async (podScope: ContainerScope): Promise<{ text: string }> => { - const { podName, podNamespace, containerName, clusterName } = podScope; - return await kubernetesProxyApi.getPodLogs({ - podName: podName, - namespace: podNamespace, - containerName: containerName, - clusterName: clusterName, - }); - }, - [kubernetesProxyApi], - ); - - const { value, error, loading, retry } = useAsyncRetry(async () => { - const requests: Promise<{ - text: string; - }>[] = []; - containersList.map((container: V1Container, _idx: any) => { - if (pod?.metadata?.name && pod?.metadata?.namespace && container) { - const podScope = { - containerName: container.name, - podName: pod.metadata.name, - podNamespace: pod.metadata.namespace, - clusterName: currCluster, - }; - requests.push(getLogs(podScope)); - } - }); - return requests.length > 0 ? Promise.all(requests) : []; - }, [containersList, pod, getLogs]); - - const stopPolling = - pod?.status?.phase === 'Succeeded' || pod?.status?.phase === 'Failed'; - - useInterval(() => retry(), stopPolling ? null : intervalMs); - - React.useEffect(() => { - let mounted = true; - if (!loading && mounted) { - setPodInfo(prevState => { - if (prevState === pod?.metadata?.name) { - setLoadingData(false); - return prevState; - } - setLoadingData(true); - return pod?.metadata?.name || ''; - }); - } - return () => { - mounted = false; - }; - }, [loading, pod]); - - return { value, error, loading: loadingData }; -}; diff --git a/plugins/tekton/src/hooks/useResourcesClusters.test.ts b/plugins/tekton/src/hooks/useResourcesClusters.test.ts deleted file mode 100644 index 11452e2fea..0000000000 --- a/plugins/tekton/src/hooks/useResourcesClusters.test.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { KubernetesObjects } from '@backstage/plugin-kubernetes-react'; - -import { renderHook } from '@testing-library/react'; - -import { kubernetesObjects } from '../__fixtures__/kubernetesObject'; -import { useResourcesClusters } from './useResourcesClusters'; - -describe('useResourcesClusters', () => { - it('should return clusters and errors as empty if no resources found', () => { - const k8sObjectsResponse = { - loading: true, - error: '', - }; - const { result } = renderHook(() => - useResourcesClusters(k8sObjectsResponse), - ); - expect(result.current.clusters).toEqual([]); - expect(result.current.errors).toEqual([]); - }); - - it('should return clusters and errors(if any) if resources are present', () => { - let k8sObjectsResponse = { - kubernetesObjects: kubernetesObjects, - loading: false, - error: '', - } as KubernetesObjects; - const { result, rerender } = renderHook(() => - useResourcesClusters(k8sObjectsResponse), - ); - expect(result.current.clusters).toEqual(['minikube', 'ocp']); - expect(result.current.errors).toEqual([[], []]); - - const kubernetesObjectsWithError = { - items: [ - { - ...kubernetesObjects.items[0], - errors: [ - { errorType: 'FETCH_ERROR', message: 'Couldnt fetch resources' }, - ], - }, - ], - }; - - k8sObjectsResponse = { - kubernetesObjects: kubernetesObjectsWithError, - loading: false, - error: '', - } as KubernetesObjects; - rerender(); - expect(result.current.clusters).toEqual(['minikube']); - expect(result.current.errors).toEqual([ - [{ errorType: 'FETCH_ERROR', message: 'Couldnt fetch resources' }], - ]); - }); -}); diff --git a/plugins/tekton/src/hooks/useResourcesClusters.ts b/plugins/tekton/src/hooks/useResourcesClusters.ts deleted file mode 100644 index 1637592f96..0000000000 --- a/plugins/tekton/src/hooks/useResourcesClusters.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { useEffect, useState } from 'react'; - -import { KubernetesObjects } from '@backstage/plugin-kubernetes-react'; - -import { useDeepCompareMemoize } from '@janus-idp/shared-react'; - -import { ClusterErrors } from '../types/types'; -import { getClusters } from '../utils/tekton-utils'; - -export const useResourcesClusters = (k8sObjectsResponse: KubernetesObjects) => { - const { kubernetesObjects, loading, error } = k8sObjectsResponse; - const [clusters, setClusters] = useState<{ - clusters: string[]; - errors: ClusterErrors[]; - }>({ clusters: [], errors: [] }); - - useEffect(() => { - let isMounted = true; - if (isMounted && !loading && kubernetesObjects && !error) { - const k8sResourcesClusters = getClusters(kubernetesObjects); - if (k8sResourcesClusters) { - setClusters(k8sResourcesClusters); - } - } - return () => { - isMounted = false; - }; - }, [loading, kubernetesObjects, error]); - - return useDeepCompareMemoize(clusters); -}; diff --git a/plugins/tekton/src/hooks/useTektonObjectResponse.test.ts b/plugins/tekton/src/hooks/useTektonObjectResponse.test.ts deleted file mode 100644 index 3ed7e380ad..0000000000 --- a/plugins/tekton/src/hooks/useTektonObjectResponse.test.ts +++ /dev/null @@ -1,95 +0,0 @@ -import { act } from 'react'; - -import { renderHook, waitFor } from '@testing-library/react'; - -import { useKubernetesObjects } from '@janus-idp/shared-react'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { kubernetesObjects } from '../__fixtures__/kubernetesObject'; -import { ModelsPlural } from '../models'; -import { useTektonObjectsResponse } from './useTektonObjectsResponse'; - -const watchedResources = [ModelsPlural.pipelineruns, ModelsPlural.taskruns]; - -jest.mock('@janus-idp/shared-react', () => ({ - useKubernetesObjects: jest.fn(), - useDeepCompareMemoize: (val: any) => val, - useDebounceCallback: (val: any) => jest.fn(val), -})); - -const mockUseKubernetesObjects = useKubernetesObjects as jest.Mock; - -jest.mock('@backstage/plugin-catalog-react', () => ({ - useEntity: () => ({ - entity: { - metadata: { - name: 'test', - }, - }, - }), -})); - -const watchResourcesData = { - pipelineruns: { - data: mockKubernetesPlrResponse.pipelineruns, - }, -}; - -describe('useTektonObjectResponse', () => { - it('should return k8sResourcesContextData', async () => { - mockUseKubernetesObjects.mockReturnValue({ - kubernetesObjects, - loading: false, - error: '', - }); - const { result, rerender } = renderHook(() => - useTektonObjectsResponse(watchedResources), - ); - rerender(); - await waitFor(() => { - expect(result.current.watchResourcesData).toEqual(watchResourcesData); - expect(result.current.clusters).toEqual(['minikube', 'ocp']); - expect(result.current.selectedClusterErrors).toEqual([]); - }); - }); - - it('should be able to select a cluster and return data accordingly', async () => { - mockUseKubernetesObjects.mockReturnValue({ - kubernetesObjects, - loading: false, - error: '', - }); - const { result } = renderHook(() => - useTektonObjectsResponse(watchedResources), - ); - expect(result.current.selectedCluster).toEqual(0); - act(() => { - result.current.setSelectedCluster(1); - }); - await waitFor(() => { - expect(result.current.watchResourcesData).toEqual({}); - expect(result.current.clusters).toEqual(['minikube', 'ocp']); - expect(result.current.selectedClusterErrors).toEqual([]); - expect(result.current.selectedCluster).toEqual(1); - }); - }); - - it('should return responseError with loaded if unable to fetch data', async () => { - mockUseKubernetesObjects.mockReturnValue({ - error: - 'getaddrinfo ENOTFOUND api.rhoms-4.13-052404.dev.openshiftappsvc.org', - }); - const { result } = renderHook(() => - useTektonObjectsResponse(watchedResources), - ); - await waitFor(() => { - expect(result.current.watchResourcesData).toBeUndefined(); - expect(result.current.clusters).toEqual([]); - expect(result.current.selectedClusterErrors).toEqual([]); - expect(result.current.loaded).toEqual(true); - expect(result.current.responseError).toEqual( - 'getaddrinfo ENOTFOUND api.rhoms-4.13-052404.dev.openshiftappsvc.org', - ); - }); - }); -}); diff --git a/plugins/tekton/src/hooks/useTektonObjectsResponse.ts b/plugins/tekton/src/hooks/useTektonObjectsResponse.ts deleted file mode 100644 index 99c20752e7..0000000000 --- a/plugins/tekton/src/hooks/useTektonObjectsResponse.ts +++ /dev/null @@ -1,105 +0,0 @@ -import React from 'react'; - -import { useEntity } from '@backstage/plugin-catalog-react'; - -import { isEqual } from 'lodash'; - -import { - ComputedStatus, - useDebounceCallback, - useDeepCompareMemoize, - useKubernetesObjects, -} from '@janus-idp/shared-react'; - -import { - kubernetesApiRef, - kubernetesAuthProvidersApiRef, - TektonResourcesContextData, - TektonResponseData, -} from '../types/types'; -import { useAllWatchResources } from './useAllWatchResources'; -import { useResourcesClusters } from './useResourcesClusters'; - -export const useTektonObjectsResponse = ( - watchedResource: string[], -): TektonResourcesContextData => { - const { entity } = useEntity(); - const { kubernetesObjects, loading, error } = useKubernetesObjects( - entity, - kubernetesApiRef, - kubernetesAuthProvidersApiRef, - ); - const [selectedCluster, setSelectedCluster] = React.useState(0); - const [selectedStatus, setSelectedStatus] = React.useState( - 'All' as ComputedStatus, - ); - const [isExpanded, setIsExpanded] = React.useState(false); - const [loaded, setLoaded] = React.useState(false); - const [errorState, setErrorState] = React.useState(); - const [pipelinesData, setPipelinesData] = React.useState< - TektonResponseData | undefined - >(); - - const mounted = React.useRef(false); - - React.useEffect(() => { - mounted.current = true; - return () => { - mounted.current = false; - }; - }, []); - - const watchResourcesData = useAllWatchResources( - { kubernetesObjects, loading, error }, - selectedCluster, - watchedResource, - ); - - const resourcesClusters = useResourcesClusters({ - kubernetesObjects, - loading, - error, - }); - - const updateResults = React.useCallback( - ( - resData: TektonResponseData, - isLoading: boolean, - errorData: string | undefined, - ) => { - if (!isLoading && !errorData && mounted.current) { - setLoaded(true); - setPipelinesData(prevPipelinesData => { - if (isEqual(prevPipelinesData, resData)) { - return prevPipelinesData; - } - return resData; - }); - } else if (errorData && mounted.current) { - setLoaded(true); - setErrorState(errorData); - } - }, - [setLoaded, setPipelinesData, setErrorState], - ); - - const debouncedUpdateResources = useDebounceCallback(updateResults, 250); - - React.useEffect(() => { - debouncedUpdateResources?.(watchResourcesData, loading, error); - }, [debouncedUpdateResources, watchResourcesData, loading, error]); - - return useDeepCompareMemoize({ - watchResourcesData: pipelinesData, - loaded, - responseError: errorState, - selectedClusterErrors: resourcesClusters?.errors?.[selectedCluster] ?? [], - clusters: resourcesClusters?.clusters || [], - selectedCluster, - setSelectedCluster, - selectedStatus, - setSelectedStatus, - isExpanded, - setIsExpanded, - }); -}; diff --git a/plugins/tekton/src/hooks/useTektonViewPermission.ts b/plugins/tekton/src/hooks/useTektonViewPermission.ts deleted file mode 100644 index 8cc944ef13..0000000000 --- a/plugins/tekton/src/hooks/useTektonViewPermission.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { usePermission } from '@backstage/plugin-permission-react'; - -import { tektonViewPermission } from '@janus-idp/backstage-plugin-tekton-common'; - -export const useTektonViewPermission = () => { - const tektonViewPermissionResult = usePermission({ - permission: tektonViewPermission, - }); - - return tektonViewPermissionResult.allowed; -}; diff --git a/plugins/tekton/src/index.ts b/plugins/tekton/src/index.ts deleted file mode 100644 index f469aedcf1..0000000000 --- a/plugins/tekton/src/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { tektonPlugin, TektonCI } from './plugin'; -export { TEKTON_CI_ANNOTATION } from './consts/tekton-const'; -export { isTektonCIAvailable } from './components/Router'; diff --git a/plugins/tekton/src/models.ts b/plugins/tekton/src/models.ts deleted file mode 100644 index 66e61bd281..0000000000 --- a/plugins/tekton/src/models.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { GroupVersionKind, tektonGroupColor } from './types/types'; - -export const PipelineRunGVK: GroupVersionKind = { - apiVersion: 'v1', - apiGroup: 'tekton.dev', - kind: 'PipelineRun', -}; - -export const PipelineRunModel = { - ...PipelineRunGVK, - abbr: 'PLR', - color: tektonGroupColor, -}; - -export const TaskRunGVK: GroupVersionKind = { - apiVersion: 'v1', - apiGroup: 'tekton.dev', - kind: 'TaskRun', -}; - -export enum ModelsPlural { - pipelineruns = 'pipelineruns', - taskruns = 'taskruns', - pods = 'pods', -} - -export const tektonResourceModels: { [key: string]: GroupVersionKind } = { - [ModelsPlural.pipelineruns]: PipelineRunGVK, - [ModelsPlural.taskruns]: TaskRunGVK, -}; diff --git a/plugins/tekton/src/plugin.test.ts b/plugins/tekton/src/plugin.test.ts deleted file mode 100644 index 2b12f2048d..0000000000 --- a/plugins/tekton/src/plugin.test.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { tektonPlugin } from './plugin'; - -describe('tekton', () => { - it('should export plugin', () => { - expect(tektonPlugin).toBeDefined(); - }); -}); diff --git a/plugins/tekton/src/plugin.ts b/plugins/tekton/src/plugin.ts deleted file mode 100644 index bd7052a73d..0000000000 --- a/plugins/tekton/src/plugin.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { - createApiFactory, - createComponentExtension, - createPlugin, - discoveryApiRef, - fetchApiRef, - gitlabAuthApiRef, - googleAuthApiRef, - microsoftAuthApiRef, - oktaAuthApiRef, - oneloginAuthApiRef, -} from '@backstage/core-plugin-api'; -import { - KubernetesAuthProviders, - KubernetesBackendClient, - KubernetesProxyClient, -} from '@backstage/plugin-kubernetes-react'; - -import { - kubernetesApiRef, - kubernetesAuthProvidersApiRef, - kubernetesProxyApiRef, -} from './types/types'; - -export const tektonPlugin = createPlugin({ - id: 'tekton', - apis: [ - createApiFactory({ - api: kubernetesAuthProvidersApiRef, - deps: { - gitlabAuthApi: gitlabAuthApiRef, - googleAuthApi: googleAuthApiRef, - microsoftAuthApi: microsoftAuthApiRef, - oktaAuthApi: oktaAuthApiRef, - oneloginAuthApi: oneloginAuthApiRef, - }, - factory: ({ - gitlabAuthApi, - googleAuthApi, - microsoftAuthApi, - oktaAuthApi, - oneloginAuthApi, - }) => { - const oidcProviders = { - gitlab: gitlabAuthApi, - google: googleAuthApi, - microsoft: microsoftAuthApi, - okta: oktaAuthApi, - onelogin: oneloginAuthApi, - }; - - return new KubernetesAuthProviders({ - microsoftAuthApi, - googleAuthApi, - oidcProviders, - }); - }, - }), - createApiFactory({ - api: kubernetesApiRef, - deps: { - discoveryApi: discoveryApiRef, - fetchApi: fetchApiRef, - kubernetesAuthProvidersApi: kubernetesAuthProvidersApiRef, - }, - factory: ({ discoveryApi, fetchApi, kubernetesAuthProvidersApi }) => - new KubernetesBackendClient({ - discoveryApi, - fetchApi, - kubernetesAuthProvidersApi, - }), - }), - createApiFactory({ - api: kubernetesProxyApiRef, - deps: { - kubernetesApi: kubernetesApiRef, - }, - factory: ({ kubernetesApi }) => - new KubernetesProxyClient({ - kubernetesApi, - }), - }), - ], -}); - -export const TektonCI = tektonPlugin.provide( - createComponentExtension({ - name: 'TektonCI', - component: { - lazy: () => import('./components/Router').then(m => m.Router), - }, - }), -); diff --git a/plugins/tekton/src/setupTests.ts b/plugins/tekton/src/setupTests.ts deleted file mode 100644 index 48c09b5346..0000000000 --- a/plugins/tekton/src/setupTests.ts +++ /dev/null @@ -1,2 +0,0 @@ -import '@testing-library/jest-dom'; -import 'cross-fetch/polyfill'; diff --git a/plugins/tekton/src/types/output.ts b/plugins/tekton/src/types/output.ts deleted file mode 100644 index daf2c50b6e..0000000000 --- a/plugins/tekton/src/types/output.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { TaskRunKind } from '@janus-idp/shared-react'; - -export enum TaskType { - sbom = 'sbom', - ec = 'ec', - acsImageScan = 'acsImageScan', - acsImageCheck = 'acsImageCheck', - acsDeploymentCheck = 'acsDeploymentCheck', -} - -export type OutputTaskRunGroup = { - [key in `${TaskType}TaskRun`]?: TaskRunKind; -}; diff --git a/plugins/tekton/src/types/pipeline-topology-types.ts b/plugins/tekton/src/types/pipeline-topology-types.ts deleted file mode 100644 index 7d7e7fc5b8..0000000000 --- a/plugins/tekton/src/types/pipeline-topology-types.ts +++ /dev/null @@ -1,147 +0,0 @@ -import { - EdgeModel, - NodeModel, - RunStatus, - WhenStatus, -} from '@patternfly/react-topology'; - -import { - PipelineRunKind, - PipelineTask, - TaskRunKind, -} from '@janus-idp/shared-react'; - -import { AddNodeDirection, NodeType } from '../consts/pipeline-topology-const'; - -// Builder Callbacks -export type NewTaskListNodeCallback = (direction: AddNodeDirection) => void; -export type NewTaskNodeCallback = (resource: TaskRunKind) => void; -export type RemoveListTaskCallback = () => void; -export type NodeSelectionCallback = (nodeData: BuilderNodeModelData) => void; - -export type TaskSearchCallback = (callback: () => void) => void; - -// Node Data Models -export type PipelineRunAfterNodeModelData = { - id?: string; - width?: number; - height?: number; - selected?: boolean; - status?: RunStatus; - whenStatus?: WhenStatus; - pipelineRun?: PipelineRunKind; - label?: string; - runAfterTasks?: string[]; - task: { - name: string; - runAfter?: string[]; - }; -}; - -type FinallyTask = { - name: string; - runAfter?: string[]; - error?: string; - selected?: boolean; - disableTooltip?: boolean; - onTaskSelection?: () => void; -}; -type FinallyListTask = { - name: string; - convertList: (resource: TaskRunKind) => void; - onRemoveTask: () => void; -}; -type FinallyNodeTask = { - name: string; - runAfter: string[]; - selected?: boolean; - isFinallyTask: boolean; - finallyTasks: FinallyTask[]; -}; -export type FinallyNodeData = { - task: FinallyNodeTask; -}; - -export type PipelineBuilderTaskBase = { name: string; runAfter?: string[] }; - -export type PipelineBuilderLoadingTask = PipelineBuilderTaskBase & { - isFinallyTask: boolean; - resource: TaskRunKind; - taskRef: { - kind: string; - name: string; - }; -}; - -export type BuilderFinallyNodeData = { - task: FinallyNodeTask & { - finallyInvalidListTasks: FinallyListTask[]; - finallyLoadingTasks: PipelineBuilderLoadingTask[]; - finallyListTasks: FinallyListTask[]; - addNewFinallyListNode?: () => void; - onTaskSearch: TaskSearchCallback; - }; -}; -export type FinallyNodeModel = FinallyNodeData & { - pipelineRun?: PipelineRunKind; - isFinallyTask: boolean; -}; -export type LoadingNodeModel = PipelineRunAfterNodeModelData & { - isFinallyTask: boolean; -}; -export type BuilderFinallyNodeModel = BuilderFinallyNodeData & { - clusterTaskList: TaskRunKind[]; - namespaceTaskList: TaskRunKind[]; - namespace: string; - isFinallyTask: boolean; -}; - -export type TaskListNodeModelData = PipelineRunAfterNodeModelData & { - clusterTaskList: TaskRunKind[]; - namespaceTaskList: TaskRunKind[]; - onNewTask: NewTaskNodeCallback; - onRemoveTask: RemoveListTaskCallback | null; - onTaskSearch: TaskSearchCallback; -}; -export type BuilderNodeModelData = PipelineRunAfterNodeModelData & { - error?: string; - task: PipelineTask; - onAddNode: NewTaskListNodeCallback; - onNodeSelection: NodeSelectionCallback; -}; -export type TaskNodeModelData = PipelineRunAfterNodeModelData & { - task: PipelineTask; - pipelineRun?: PipelineRunKind; -}; - -// Graph Models -type PipelineNodeModel = NodeModel & { - data: D; - type: NodeType; -}; -export type PipelineMixedNodeModel = - PipelineNodeModel; -export type PipelineTaskNodeModel = PipelineNodeModel; -export type PipelineBuilderTaskNodeModel = - PipelineNodeModel; -export type PipelineTaskListNodeModel = - PipelineNodeModel; -export type PipelineTaskLoadingNodeModel = PipelineNodeModel; -export type PipelineFinallyNodeModel = PipelineNodeModel; -export type PipelineBuilderFinallyNodeModel = - PipelineNodeModel; - -export type PipelineEdgeModel = EdgeModel; - -// Node Creators -export type NodeCreator = ( - name: string, - data: D, -) => PipelineNodeModel; -export type NodeCreatorSetup = ( - type: NodeType, - width?: number, - height?: number, -) => NodeCreator; - -export type CheckTaskErrorMessage = (taskIndex: number) => string | undefined; diff --git a/plugins/tekton/src/types/taskRun.ts b/plugins/tekton/src/types/taskRun.ts deleted file mode 100644 index 90762e5b23..0000000000 --- a/plugins/tekton/src/types/taskRun.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { RunStatus } from '@patternfly/react-topology'; - -import { ComputedStatus, TerminatedReasons } from '@janus-idp/shared-react'; - -export type StepStatus = { - duration: string | null | undefined; - name: string; - status: RunStatus; -}; - -export type TaskStatusStep = { - name: string; - running?: { startedAt: string }; - terminated?: { - finishedAt: string; - reason: TerminatedReasons; - startedAt: string; - }; - waiting?: {}; -}; - -export type TaskStatus = { - reason: ComputedStatus; - duration?: string; - steps?: TaskStatusStep[]; -}; diff --git a/plugins/tekton/src/types/types.ts b/plugins/tekton/src/types/types.ts deleted file mode 100644 index 0d51857fc8..0000000000 --- a/plugins/tekton/src/types/types.ts +++ /dev/null @@ -1,71 +0,0 @@ -import { createApiRef } from '@backstage/core-plugin-api'; -import { - KubernetesApi, - KubernetesAuthProvidersApi, - KubernetesProxyApi, -} from '@backstage/plugin-kubernetes-react'; - -import { ComputedStatus } from '@janus-idp/shared-react'; - -export const tektonGroupColor = '#38812f'; - -export type GroupVersionKind = { - kind: string; - apiVersion: string; - apiGroup?: string; -}; - -export type TektonResponseData = { - [key: string]: { data: any[] }; -}; - -export type ClusterError = { - errorType?: string; - message?: string; - resourcePath?: string; - statusCode?: number; -}; - -export type ClusterErrors = ClusterError[]; - -export type TektonResourcesContextData = { - watchResourcesData?: TektonResponseData; - loaded?: boolean; - responseError?: string; - selectedClusterErrors?: ClusterErrors; - clusters: string[]; - selectedCluster?: number; - setSelectedCluster: React.Dispatch>; - selectedStatus: ComputedStatus; - setSelectedStatus: React.Dispatch>; - isExpanded?: boolean; - setIsExpanded: React.Dispatch>; -}; - -export type Order = 'asc' | 'desc'; - -export type OpenRowStatus = { - [x: string]: boolean; -}; - -export type PipelineRunScanResults = { - vulnerabilities?: { - critical: number; - high: number; - medium: number; - low: number; - }; -}; - -export const kubernetesAuthProvidersApiRef = - createApiRef({ - id: 'plugin.tekton-kubernetes-auth-providers.service', - }); - -export const kubernetesApiRef = createApiRef({ - id: 'plugin.tekton-kubernetes.service', -}); - -export const kubernetesProxyApiRef = createApiRef({ - id: 'plugin.tekton-kubernetes.proxy-service', -}); diff --git a/plugins/tekton/src/utils/log-downloader-utils.test.ts b/plugins/tekton/src/utils/log-downloader-utils.test.ts deleted file mode 100644 index ff02e01b6c..0000000000 --- a/plugins/tekton/src/utils/log-downloader-utils.test.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { testPods } from '../__fixtures__/pods-data'; -import { ContainerScope } from '../hooks/usePodLogsOfPipelineRun'; -import { getPodLogs } from './log-downloader-utils'; - -describe('getPodLogs', () => { - it('should return empty logs if there are no pods', async () => { - const podLogsGetter = () => Promise.resolve({ text: '' }); - const logs = await getPodLogs([], podLogsGetter, 'cluster-1'); - - expect(logs).toBe(''); - }); - - it('should return logs if there are pods', async () => { - const podLogsGetter = (p: ContainerScope) => { - return Promise.resolve({ text: `${p.containerName}` }); - }; - const logs = await getPodLogs(testPods, podLogsGetter, 'cluster-1'); - - expect(logs).toBe(`STEP-TKN -step-tkn -STEP-PRINT-SBOM-RESULTS -step-print-sbom-results -STEP-PRINT-SCAN-RESULTS -step-print-scan-results`); - }); - - it('should display logs only for the pods that has logs', async () => { - const podLogsGetter = (p: ContainerScope) => { - return Promise.resolve({ text: `${p.containerName}` }); - }; - - const podsWithoutContainers = [ - testPods[0], - - { ...testPods[1], spec: { ...testPods[1].spec, containers: [] } }, - ]; - - const logs = await getPodLogs( - podsWithoutContainers, - podLogsGetter, - 'cluster-1', - ); - - expect(logs).toBe(`STEP-TKN -step-tkn -`); - }); -}); diff --git a/plugins/tekton/src/utils/log-downloader-utils.ts b/plugins/tekton/src/utils/log-downloader-utils.ts deleted file mode 100644 index eedf08902c..0000000000 --- a/plugins/tekton/src/utils/log-downloader-utils.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { V1Container, V1Pod } from '@kubernetes/client-node'; - -import { ContainerScope } from '../hooks/usePodLogsOfPipelineRun'; - -export async function getPodLogs( - pods: V1Pod[] | [], - podLogsGetter: (podScope: ContainerScope) => Promise<{ text: string }>, - currentClusterName: string, -): Promise { - const containersList = pods.map((pod: V1Pod) => pod?.spec?.containers ?? []); - const isPodAndContainerAvailable = ( - pod: V1Pod, - container: V1Container, - ): boolean => !!(pod && container); - - const requests: Promise<{ text: string }>[] = []; - containersList.forEach((containers: V1Container[], _idx: number) => { - containers.forEach((container: V1Container) => { - const pod: V1Pod = pods[_idx]; - if (isPodAndContainerAvailable(pod, container)) { - const podScope: ContainerScope = { - containerName: container.name, - podName: pod.metadata?.name ?? '', - podNamespace: pod.metadata?.namespace ?? '', - clusterName: currentClusterName, - }; - - requests.push(podLogsGetter(podScope)); - } - }); - }); - return Promise.all(requests).then(response => { - const containerFlatList = containersList.flat(1); - return response.reduce( - (acc: string, r: { text: string }, idx) => { - const container: V1Container = containerFlatList[idx]; - return acc - .concat(`${container?.name.toUpperCase()}\n${r?.text}`) - .concat(idx === containersList.length - 1 ? '' : '\n'); - }, - - '', - ); - }); -} diff --git a/plugins/tekton/src/utils/pipeline-step-utils.test.ts b/plugins/tekton/src/utils/pipeline-step-utils.test.ts deleted file mode 100644 index e46359781f..0000000000 --- a/plugins/tekton/src/utils/pipeline-step-utils.test.ts +++ /dev/null @@ -1,93 +0,0 @@ -import { - ComputedStatus, - PipelineRunKind, - PipelineTaskWithStatus, -} from '@janus-idp/shared-react'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { createStepStatus } from './pipeline-step-utils'; -import { getTaskStatus } from './pipelineRun-utils'; - -describe('createStepStatus', () => { - it('should return the task step status', () => { - const computedTask: PipelineTaskWithStatus = { - ...mockKubernetesPlrResponse.pipelineruns[0].status.pipelineSpec.tasks[0], - status: { - completionTime: '2023-04-12T10:20:18Z', - conditions: [ - { - lastTransitionTime: '2023-04-12T10:20:18Z', - message: 'All Steps have completed executing', - reason: 'Succeeded', - status: 'True', - type: 'Succeeded', - }, - ], - podName: 'nodejs-ex-git-ez4iru-deploy-pod', - startTime: '2023-04-12T10:20:11Z', - steps: [ - { - container: 'step-oc', - imageID: - 'image-registry.openshift-image-registry.svc:5000/openshift/cli@sha256:d1b63fca6a4035a7fcacba436d778fc87bb8f4057ee3d43057b9c313b091b1ba', - name: 'oc', - terminated: { - containerID: - 'cri-o://0ec330c543090c8678de1ff97bfa49fc839a1915fbf9a994c5b3e43f1f261799', - exitCode: 0, - finishedAt: '2023-04-12T10:20:18Z', - reason: 'Completed', - startedAt: '2023-04-12T10:20:17Z', - }, - }, - ], - taskSpec: { - description: - 'This task runs commands against the cluster provided by user and if not provided then where the Task is being executed.\nOpenShift is a Kubernetes distribution from Red Hat which provides oc, the OpenShift CLI that complements kubectl for simplifying deployment and configuration applications on OpenShift.', - params: [], - steps: [ - { - env: [ - { - name: 'HOME', - value: '/tekton/home', - }, - ], - image: - 'image-registry.openshift-image-registry.svc:5000/openshift/cli:latest', - name: 'oc', - resources: {}, - script: '', - }, - ], - workspaces: [], - }, - duration: '7s', - reason: 'Succeeded', - }, - }; - const step = computedTask?.status?.steps?.[0] ?? { name: '' }; - const taskStatus = getTaskStatus( - mockKubernetesPlrResponse.pipelineruns[0] as PipelineRunKind, - computedTask, - ); - const stepStatus = createStepStatus(step, taskStatus); - expect(stepStatus).toEqual({ - duration: '1s', - name: 'oc', - status: 'Succeeded', - }); - }); - - it('should return proper status values when step and status objects have missing properties', () => { - const stepStatus = createStepStatus( - { name: '' }, - { reason: ComputedStatus.Other }, - ); - expect(stepStatus).toEqual({ - duration: undefined, - name: '', - status: ComputedStatus.Other, - }); - }); -}); diff --git a/plugins/tekton/src/utils/pipeline-step-utils.ts b/plugins/tekton/src/utils/pipeline-step-utils.ts deleted file mode 100644 index 820479e173..0000000000 --- a/plugins/tekton/src/utils/pipeline-step-utils.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { ComputedStatus, TerminatedReasons } from '@janus-idp/shared-react'; - -import { StepStatus, TaskStatus, TaskStatusStep } from '../types/taskRun'; -import { calculateDuration } from './tekton-utils'; - -const getMatchingStepDuration = (matchingStep?: TaskStatusStep) => { - if (!matchingStep) return ''; - - if (matchingStep.terminated) { - return calculateDuration( - matchingStep.terminated.startedAt, - matchingStep.terminated.finishedAt, - ); - } - - if (matchingStep.running) { - return calculateDuration(matchingStep.running.startedAt); - } - - return ''; -}; - -const getMatchingStep = ( - step: { name: string }, - status: TaskStatus, -): TaskStatusStep | undefined => { - const statusSteps: TaskStatusStep[] = status.steps || []; - return statusSteps.find(statusStep => { - // In rare occasions the status step name is prefixed with `step-` - // This is likely a bug but this workaround will be temporary as it's investigated separately - return ( - statusStep.name === step.name || statusStep.name === `step-${step.name}` - ); - }); -}; - -export const createStepStatus = ( - step: { name: string }, - status: TaskStatus, -): StepStatus => { - let stepRunStatus = ComputedStatus.PipelineNotStarted; - let duration = null; - - if (!status?.reason) { - stepRunStatus = ComputedStatus.Cancelled; - } else if (status.reason === ComputedStatus['In Progress']) { - // In progress, try to get granular statuses - const matchingStep = getMatchingStep(step, status); - - if (!matchingStep) { - stepRunStatus = ComputedStatus.Pending; - } else if (matchingStep.terminated) { - stepRunStatus = - matchingStep.terminated.reason === TerminatedReasons.Completed - ? ComputedStatus.Succeeded - : ComputedStatus.Failed; - duration = getMatchingStepDuration(matchingStep); - } else if (matchingStep.running) { - stepRunStatus = ComputedStatus['In Progress']; - duration = getMatchingStepDuration(matchingStep); - } else if (matchingStep.waiting) { - stepRunStatus = ComputedStatus.Pending; - } - } else { - // Not in progress, just use the run status reason - stepRunStatus = status.reason; - - duration = - getMatchingStepDuration(getMatchingStep(step, status)) || status.duration; - } - - return { - duration, - name: step.name, - status: stepRunStatus as any, - }; -}; diff --git a/plugins/tekton/src/utils/pipeline-topology-utils.test.ts b/plugins/tekton/src/utils/pipeline-topology-utils.test.ts deleted file mode 100644 index eb0305dcab..0000000000 --- a/plugins/tekton/src/utils/pipeline-topology-utils.test.ts +++ /dev/null @@ -1,128 +0,0 @@ -import { RunStatus, WhenStatus } from '@patternfly/react-topology'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { - extractDepsFromContextVariables, - getGraphDataModel, - getTaskWhenStatus, -} from './pipeline-topology-utils'; -import { getPipelineRun } from './pipelineRun-utils'; - -describe('getPipelineRun', () => { - it('should return the required pipeline run resource', () => { - expect( - getPipelineRun( - mockKubernetesPlrResponse.pipelineruns, - 'pipeline-test-wbvtlk', - ), - ).toEqual(mockKubernetesPlrResponse.pipelineruns[1]); - }); - - it('should return null if pipeline run doesnot exist', () => { - expect( - getPipelineRun(mockKubernetesPlrResponse.pipelineruns, 'bnb'), - ).toEqual(null); - }); -}); - -describe('extractDepsFromContextVariables', () => { - it('should return emtpy array for invalid values', () => { - expect(extractDepsFromContextVariables('')).toEqual([]); - expect(extractDepsFromContextVariables(null)).toEqual([]); - expect(extractDepsFromContextVariables(undefined)).toEqual([]); - }); - - it('should return empty array if the context variable string does not contain results', () => { - expect(extractDepsFromContextVariables('$(context.pipeline.name)')).toEqual( - [], - ); - expect( - extractDepsFromContextVariables('$(context.pipelinerun.name)'), - ).toEqual([]); - }); - - it('should return a task name if the context variable string contains results', () => { - const contextVariable = '$(tasks.task1.results.sum)'; - expect(extractDepsFromContextVariables(contextVariable)).toEqual(['task1']); - }); - - it('should return a list of task names if the context variable string contains multiple results', () => { - const contextVariable = - '$(tasks.task1.results.sum) $(tasks.task2.results.sum)'; - - expect(extractDepsFromContextVariables(contextVariable)).toEqual([ - 'task1', - 'task2', - ]); - }); -}); - -describe('getTaskWhenStatus:', () => { - const [task1] = - mockKubernetesPlrResponse.pipelineruns[0].status.pipelineSpec.tasks; - - const taskWithStatus = ( - reason: RunStatus = RunStatus.Succeeded, - when?: boolean, - ) => { - return { - ...task1, - ...(when && { - when: [ - { - input: 'params.test', - operator: 'IN', - values: ['pass'], - }, - ], - }), - status: { - reason, - conditions: [], - }, - }; - }; - - it('should return undefined if the task does not have when expression', () => { - expect(getTaskWhenStatus(taskWithStatus())).toBeUndefined(); - }); - - it('should return a matching when status', () => { - const succeededTask = { - ...taskWithStatus(RunStatus.Succeeded, true), - }; - const skippedTask = { - ...taskWithStatus(RunStatus.Skipped, true), - }; - expect(getTaskWhenStatus(succeededTask)).toBe(WhenStatus.Met); - expect(getTaskWhenStatus(skippedTask)).toBe(WhenStatus.Unmet); - }); -}); - -describe('getGraphDataModel', () => { - it('should return null for invalid values', () => { - expect(getGraphDataModel(undefined, [])).toBeNull(); - }); - - it('should return graph, nodes and edges for valid pipelineRun', () => { - const model = getGraphDataModel( - mockKubernetesPlrResponse.pipelineruns[0], - mockKubernetesPlrResponse.taskruns, - ); - expect(model?.graph).toBeDefined(); - expect(model?.nodes).toHaveLength(3); - expect(model?.edges).toHaveLength(2); - }); - - it('should include the finally group and nodes for the pipeline with finally task', () => { - const model = getGraphDataModel( - mockKubernetesPlrResponse.pipelineruns[1], - mockKubernetesPlrResponse.taskruns, - ); - const finallyGroup = model?.nodes.filter(n => n.type === 'finally-group'); - const finallyNodes = model?.nodes.filter(n => n.type === 'finally-node'); - - expect(finallyGroup).toHaveLength(1); - expect(finallyNodes).toHaveLength(1); - }); -}); diff --git a/plugins/tekton/src/utils/pipeline-topology-utils.ts b/plugins/tekton/src/utils/pipeline-topology-utils.ts deleted file mode 100644 index 9ab58d492a..0000000000 --- a/plugins/tekton/src/utils/pipeline-topology-utils.ts +++ /dev/null @@ -1,367 +0,0 @@ -import { - EdgeModel, - getEdgesFromNodes, - getSpacerNodes, - GraphModel, - ModelKind, - RunStatus, - WhenStatus, -} from '@patternfly/react-topology'; -import * as dagre from 'dagre'; -import { minBy, uniq } from 'lodash'; - -import { - ComputedStatus, - PipelineRunKind, - PipelineTask, - PipelineTaskParam, - PipelineTaskWithStatus, - TaskRunKind, -} from '@janus-idp/shared-react'; - -import { DAG, Vertex } from '../components/pipeline-topology/dag'; -import { - DAGRE_BUILDER_PROPS, - DAGRE_BUILDER_SPACED_PROPS, - DAGRE_VIEWER_PROPS, - DAGRE_VIEWER_SPACED_PROPS, - DEFAULT_BADGE_WIDTH, - DEFAULT_FINALLLY_GROUP_PADDING, - DEFAULT_NODE_HEIGHT, - DEFAULT_NODE_ICON_WIDTH, - FINALLY_NODE_PADDING, - NODE_HEIGHT, - NODE_PADDING, - NODE_WIDTH, - NodeType, - PipelineLayout, - REGEX_EXTRACT_DEPS, - WHEN_EXPRESSION_SPACING, -} from '../consts/pipeline-topology-const'; -import { - FinallyNodeModel, - LoadingNodeModel, - NodeCreator, - NodeCreatorSetup, - PipelineEdgeModel, - PipelineMixedNodeModel, - PipelineRunAfterNodeModelData, -} from '../types/pipeline-topology-types'; -import { appendPipelineRunStatus, getPLRTaskRuns } from './pipelineRun-utils'; - -const createGenericNode: NodeCreatorSetup = - (type, width?, height?) => (name, data) => ({ - id: name, - label: data?.label || name, - runAfterTasks: data?.runAfterTasks || [], - ...(data && { data }), - height: height ?? NODE_HEIGHT, - width: width ?? NODE_WIDTH, - type, - }); - -const getMaxFinallyNode = (finallyTaskList: PipelineTaskWithStatus[]) => { - const sortedFinallyTaskList = [...finallyTaskList].sort( - (a, b) => b.name.length - a.name.length, - ); - return sortedFinallyTaskList[0]?.name || ''; -}; - -export const createFinallyNode = ( - height: number, -): NodeCreator => - createGenericNode( - NodeType.FINALLY_NODE, - NODE_WIDTH + WHEN_EXPRESSION_SPACING + FINALLY_NODE_PADDING * 2, - height, - ); - -export const createLoadingNode: NodeCreator = - createGenericNode(NodeType.LOADING_NODE); - -const createPipelineTaskNode = ( - type: NodeType, - data: PipelineRunAfterNodeModelData, -) => createGenericNode(type, data.width, data.height)(data.id ?? '', data); - -export const getTextWidth = ( - text: string, - font: string = '0.8rem RedHatText', -): number => { - if (!text || text.length === 0) { - return 0; - } - const canvas = document.createElement('canvas'); - const context = canvas.getContext('2d'); - if (!context) { - return text.length; - } - context.font = font; - const { width } = context.measureText(text); - return width; -}; - -export const extractDepsFromContextVariables = ( - contextVariable: string | null | undefined, -) => { - let matches; - const deps: string[] = []; - if (!contextVariable) { - return deps; - } - // eslint-disable-next-line no-cond-assign - while ((matches = REGEX_EXTRACT_DEPS.exec(contextVariable)) !== null) { - // This is necessary to avoid infinite loops with zero-width matches - if (matches.index === REGEX_EXTRACT_DEPS.lastIndex) { - REGEX_EXTRACT_DEPS.lastIndex++; - } - if (matches) { - if (!deps.includes(matches[1])) { - deps.push(matches[1]); - } - } - } - return deps; -}; - -export const getSpacerNode = ( - node: PipelineMixedNodeModel, -): PipelineMixedNodeModel => ({ - ...node, - height: 1, - width: 1, -}); - -export const getWhenStatus = ( - status: ComputedStatus, -): WhenStatus | undefined => { - switch (status) { - case ComputedStatus.Succeeded: - case ComputedStatus.Failed: - return WhenStatus.Met; - case ComputedStatus.Skipped: - case ComputedStatus['In Progress']: - case ComputedStatus.Idle: - return WhenStatus.Unmet; - default: - return undefined; - } -}; - -export const getTaskWhenStatus = ( - task: PipelineTaskWithStatus, -): WhenStatus | undefined => { - if (!task.when) { - return undefined; - } - return getWhenStatus(task.status?.reason as ComputedStatus); -}; - -const getDepsFromContextVariables = (task: PipelineTask) => { - const depsFromContextVariables: string[] = []; - if (task.params) { - task.params.forEach((p: PipelineTaskParam) => { - if (Array.isArray(p.value)) { - p.value.forEach(paramValue => { - depsFromContextVariables.push( - ...extractDepsFromContextVariables(paramValue), - ); - }); - } else { - depsFromContextVariables.push( - ...extractDepsFromContextVariables(p.value), - ); - } - }); - } - if (task?.when) { - task.when.forEach(({ input, values }) => { - depsFromContextVariables.push(...extractDepsFromContextVariables(input)); - values.forEach((whenValue: string) => { - depsFromContextVariables.push( - ...extractDepsFromContextVariables(whenValue), - ); - }); - }); - } - return depsFromContextVariables; -}; - -const getRunAfterTasks = (task: PipelineTask, dag: DAG, vertex: Vertex) => { - const runAfterTasks: string[] = []; - const depsFromContextVariables = getDepsFromContextVariables(task); - - const dependancies = uniq([...vertex.dependancyNames]); - if (dependancies) { - dependancies.forEach(dep => { - const depObj = dag.vertices.get(dep) as Vertex; - if ( - depObj.level - vertex.level <= 1 || - vertex.data.runAfter?.includes(depObj.name) - ) { - runAfterTasks.push(dep); - } - }); - } - if (depsFromContextVariables.length > 0) { - const v = depsFromContextVariables.map(d => { - return dag.vertices.get(d) as Vertex; - }); - const minLevelDep = minBy(v, (d: Vertex) => d.level) as Vertex; - const nearestDeps = v.filter(v1 => v1.level === minLevelDep.level); - nearestDeps.forEach(nd => { - if (nd.level - vertex.level <= 1 || vertex.dependancyNames.length === 0) { - runAfterTasks.push(nd.name); - } - }); - } - return runAfterTasks; -}; - -export const getGraphDataModel = ( - pipelineRun: PipelineRunKind | undefined, - taskRuns: TaskRunKind[], -): { - graph: GraphModel; - nodes: PipelineMixedNodeModel[]; - edges: EdgeModel[]; -} | null => { - if (!pipelineRun) { - return null; - } - - const plrTaskRuns = getPLRTaskRuns(taskRuns, pipelineRun?.metadata?.name); - - const taskList = appendPipelineRunStatus(pipelineRun, plrTaskRuns); - - const dag = new DAG(); - taskList?.forEach((task: PipelineTask) => { - dag.addEdges(task.name, task, '', task.runAfter || []); - }); - - const nodes: PipelineMixedNodeModel[] = []; - const maxWidthForLevel: { [key: string]: number } = {}; - dag.topologicalSort((v: Vertex) => { - if (!maxWidthForLevel[v.level]) { - maxWidthForLevel[v.level] = getTextWidth(v.name); - } else { - maxWidthForLevel[v.level] = Math.max( - maxWidthForLevel[v.level], - getTextWidth(v.name), - ); - } - }); - dag.topologicalSort((vertex: Vertex) => { - const task = vertex.data as PipelineTask; - const runAfterTasks = getRunAfterTasks(task, dag, vertex); - const badgePadding = - Object.keys(pipelineRun.spec)?.length > 0 ? DEFAULT_BADGE_WIDTH : 0; - const isTaskSkipped = pipelineRun?.status?.skippedTasks?.some( - t => t.name === task.name, - ); - nodes.push( - createPipelineTaskNode(NodeType.TASK_NODE, { - id: vertex.name, - label: vertex.name, - width: - maxWidthForLevel[vertex.level] + - NODE_PADDING * 2 + - DEFAULT_NODE_ICON_WIDTH + - badgePadding, - runAfterTasks, - status: isTaskSkipped ? RunStatus.Skipped : vertex.data.status?.reason, - whenStatus: getTaskWhenStatus(vertex.data), - task: vertex.data, - pipelineRun, - }), - ); - }); - - const finallyTaskList = appendPipelineRunStatus( - pipelineRun, - plrTaskRuns, - true, - ); - - const finallyNodes = finallyTaskList.map(fTask => { - const isTaskSkipped = pipelineRun?.status?.skippedTasks?.some( - t => t.name === fTask.name, - ); - - return createPipelineTaskNode(NodeType.FINALLY_NODE, { - id: fTask.name, - label: fTask.name, - width: - getTextWidth(getMaxFinallyNode(finallyTaskList)) + - NODE_PADDING * 2 + - DEFAULT_FINALLLY_GROUP_PADDING * 2, - height: DEFAULT_NODE_HEIGHT, - runAfterTasks: [], - status: isTaskSkipped - ? RunStatus.Skipped - : (fTask.status?.reason as RunStatus), - whenStatus: getTaskWhenStatus(fTask), - task: fTask, - pipelineRun, - }); - }); - - const finallyGroup = finallyNodes.length - ? [ - { - id: 'finally-group-id', - type: NodeType.FINALLY_GROUP, - children: finallyNodes.map(n => n.id), - group: true, - style: { padding: DEFAULT_FINALLLY_GROUP_PADDING }, - }, - ] - : []; - const spacerNodes: PipelineMixedNodeModel[] = ( - getSpacerNodes([...nodes, ...finallyNodes], NodeType.SPACER_NODE, [ - NodeType.FINALLY_NODE, - ]) as PipelineMixedNodeModel[] - ).map(getSpacerNode); - - const edges: PipelineEdgeModel[] = getEdgesFromNodes( - [...nodes, ...spacerNodes, ...finallyNodes], - NodeType.SPACER_NODE, - NodeType.EDGE, - NodeType.EDGE, - [NodeType.FINALLY_NODE], - NodeType.EDGE, - ); - - return { - graph: { - id: `${pipelineRun?.metadata?.name}-graph`, - type: ModelKind.graph, - layout: PipelineLayout.DAGRE_VIEWER, - scaleExtent: [0.5, 1], - }, - nodes: [ - ...nodes, - ...spacerNodes, - ...finallyNodes, - ...finallyGroup, - ] as PipelineMixedNodeModel[], - edges, - }; -}; - -export const getLayoutData = ( - layout: PipelineLayout, -): dagre.GraphLabel | null => { - switch (layout) { - case PipelineLayout.DAGRE_BUILDER: - return DAGRE_BUILDER_PROPS; - case PipelineLayout.DAGRE_VIEWER: - return DAGRE_VIEWER_PROPS; - case PipelineLayout.DAGRE_VIEWER_SPACED: - return DAGRE_VIEWER_SPACED_PROPS; - case PipelineLayout.DAGRE_BUILDER_SPACED: - return DAGRE_BUILDER_SPACED_PROPS; - default: - return null; - } -}; diff --git a/plugins/tekton/src/utils/pipelineRun-utils.test.ts b/plugins/tekton/src/utils/pipelineRun-utils.test.ts deleted file mode 100644 index 710faa2f2d..0000000000 --- a/plugins/tekton/src/utils/pipelineRun-utils.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -import { - ComputedStatus, - SucceedConditionReason, - TaskRunKind, -} from '@janus-idp/shared-react'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { appendPipelineRunStatus, getPLRTaskRuns } from './pipelineRun-utils'; - -describe('pipelineRun-utils', () => { - it('should append Pending status if a taskrun status reason is missing', () => { - const pipelineRun = mockKubernetesPlrResponse.pipelineruns[0]; - const pipelineRunWithoutStatus = { ...pipelineRun }; - const plrTaskRuns = getPLRTaskRuns( - mockKubernetesPlrResponse.taskruns, - mockKubernetesPlrResponse.pipelineruns[0].metadata.name, - ); - - const taskList = appendPipelineRunStatus( - pipelineRunWithoutStatus, - plrTaskRuns, - ); - expect( - taskList.filter(t => t?.status.reason === ComputedStatus.Pending), - ).toHaveLength(2); - }); - - it('should append pipelineRun running status for all the tasks', () => { - const plrTaskRuns = getPLRTaskRuns( - mockKubernetesPlrResponse.taskruns, - mockKubernetesPlrResponse.pipelineruns[0].metadata.name, - ); - - const taskList = appendPipelineRunStatus( - mockKubernetesPlrResponse.pipelineruns[0], - plrTaskRuns, - ); - expect( - taskList.filter(t => t.status.reason === ComputedStatus.Running), - ).toHaveLength(1); - }); - - it('should append pipelineRun pending status for all the tasks if taskruns are not present and pipelinerun status is PipelineRunPending', () => { - const pipelineRun = { ...mockKubernetesPlrResponse.pipelineruns[0] }; - pipelineRun.status.conditions[0] = { - ...pipelineRun.status.conditions[0], - reason: SucceedConditionReason.PipelineRunPending, - }; - const taskList = appendPipelineRunStatus(pipelineRun, {}); - expect( - taskList.filter(t => t.status.reason === ComputedStatus.Idle), - ).toHaveLength(pipelineRun.status.pipelineSpec.tasks.length); - }); - - it('should append pipelineRun cancelled status for all the tasks if taskruns are not present and pipelinerun status is PipelineRunCancelled', () => { - const pipelineRun = { ...mockKubernetesPlrResponse.pipelineruns[0] }; - pipelineRun.status.conditions[0] = { - ...pipelineRun.status.conditions[0], - reason: SucceedConditionReason.PipelineRunCancelled, - }; - const taskList = appendPipelineRunStatus(pipelineRun, {}); - expect( - taskList.filter(t => t.status.reason === ComputedStatus.Cancelled), - ).toHaveLength(pipelineRun.status.pipelineSpec.tasks.length); - }); - - it('should append status to only pipeline tasks if isFinallyTasks is false', () => { - const pipelineRun = { ...mockKubernetesPlrResponse.pipelineruns[1] }; - const plrTaskRuns = getPLRTaskRuns( - mockKubernetesPlrResponse.taskruns, - pipelineRun.metadata.name, - ); - const taskList = appendPipelineRunStatus(pipelineRun, plrTaskRuns); - expect(taskList).toHaveLength(3); - }); - - it('should append status to only finally tasks if isFinallyTasks is true', () => { - const pipelineRun = { ...mockKubernetesPlrResponse.pipelineruns[1] }; - const plrTaskRuns = getPLRTaskRuns( - mockKubernetesPlrResponse.taskruns, - pipelineRun.metadata.name, - ); - const taskList = appendPipelineRunStatus(pipelineRun, plrTaskRuns, true); - expect(taskList).toHaveLength(1); - }); - - it('should return empty array if there are no finally tasks but isFinallyTasks is true', () => { - const pipelineRun = { ...mockKubernetesPlrResponse.pipelineruns[0] }; - const plrTaskRuns = getPLRTaskRuns( - mockKubernetesPlrResponse.taskruns as TaskRunKind[], - pipelineRun.metadata.name, - ); - const taskList = appendPipelineRunStatus(pipelineRun, plrTaskRuns, true); - expect(taskList).toHaveLength(0); - }); -}); diff --git a/plugins/tekton/src/utils/pipelineRun-utils.ts b/plugins/tekton/src/utils/pipelineRun-utils.ts deleted file mode 100644 index 7ff302c0de..0000000000 --- a/plugins/tekton/src/utils/pipelineRun-utils.ts +++ /dev/null @@ -1,190 +0,0 @@ -import { cloneDeep, each, find, get, isEmpty, isFinite, trim } from 'lodash'; - -import { - ComputedStatus, - pipelineRunFilterReducer, - PipelineRunKind, - pipelineRunStatus, - PipelineTask, - PipelineTaskWithStatus, - PLRTaskRuns, - SucceedConditionReason, - TaskRunKind, -} from '@janus-idp/shared-react'; - -import { - TEKTON_PIPELINE_RUN, - TEKTON_PIPELINE_TASK, -} from '../consts/tekton-const'; -import { TaskStatus } from '../types/taskRun'; - -// Conversions between units and milliseconds -const s = 1000; -const m = s * 60; -const h = m * 60; -const d = h * 24; -const w = d * 7; -const units = { w, d, h, m, s }; - -export const formatPrometheusDuration = (ms: number) => { - if (!isFinite(ms) || ms < 0) { - return ''; - } - let remaining = ms; - let str = ''; - each(units, (factor, unit) => { - const n = Math.floor(remaining / factor); - if (n > 0) { - str += `${n}${unit} `; - remaining -= n * factor; - } - }); - return trim(str); -}; - -export const taskConditions = { - hasFromDependency: (task: PipelineTask): boolean => - !!task?.resources?.inputs?.[0].from, - hasRunAfterDependency: (task: PipelineTask): boolean => - !!task?.runAfter && task?.runAfter?.length > 0, -}; - -export const getPipelineRun = ( - runs: PipelineRunKind[], - name: string, -): PipelineRunKind | null => { - if (runs?.length > 0 && name) { - return runs.find(run => run?.metadata?.name === name) ?? null; - } - return null; -}; - -const getStatusReason = (reason: string | undefined) => { - switch (reason) { - case SucceedConditionReason.PipelineRunCancelled: - return ComputedStatus.Cancelled; - case SucceedConditionReason.PipelineRunPending: - return ComputedStatus.Idle; - default: - return ComputedStatus.Failed; - } -}; - -const appendTaskDuration = (mTask: PipelineTaskWithStatus) => { - const task = cloneDeep(mTask); - if (mTask?.status?.completionTime && mTask?.status?.startTime) { - const date = - new Date(mTask.status.completionTime).getTime() - - new Date(mTask.status.startTime).getTime(); - task.status = { - ...mTask.status, - duration: formatPrometheusDuration(date), - }; - } - return task; -}; - -const appendTaskStatus = (mTask: PipelineTaskWithStatus) => { - let task = cloneDeep(mTask); - if (!mTask.status) { - task = { - ...mTask, - status: { reason: ComputedStatus.Pending, conditions: [] }, - }; - } else if (mTask.status?.conditions) { - task.status.reason = pipelineRunStatus(mTask) || ComputedStatus.Pending; - } else if (mTask.status && !mTask.status.reason) { - task.status.reason = ComputedStatus.Pending; - } - return task; -}; - -export const appendPipelineRunStatus = ( - pipelineRun: PipelineRunKind, - taskRuns: PLRTaskRuns, - isFinallyTasks = false, -) => { - const tasks = - (isFinallyTasks - ? pipelineRun.status?.pipelineSpec?.finally - : pipelineRun.status?.pipelineSpec?.tasks) || []; - - return tasks?.map(task => { - if (!pipelineRun.status) { - return task as PipelineTaskWithStatus; - } - if (isEmpty(taskRuns)) { - return { - ...task, - status: { - reason: getStatusReason(pipelineRun?.status?.conditions?.[0].reason), - }, - } as PipelineTaskWithStatus; - } - let mTask = { - ...task, - status: get(find(taskRuns, { pipelineTaskName: task.name }), 'status'), - } as PipelineTaskWithStatus; - // append task duration - mTask = appendTaskDuration(mTask); - // append task status - mTask = appendTaskStatus(mTask); - return mTask; - }); -}; - -export const getPLRTaskRuns = ( - taskRuns: TaskRunKind[], - pipelineRun: string | undefined, -): PLRTaskRuns => { - const filteredTaskRuns = taskRuns.filter( - tr => tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === pipelineRun, - ); - return filteredTaskRuns.reduce((acc: any, taskRun: TaskRunKind) => { - const temp = { - [`${taskRun?.metadata?.name}`]: { - pipelineTaskName: taskRun?.metadata?.labels?.[TEKTON_PIPELINE_TASK], - status: taskRun?.status, - }, - }; - // eslint-disable-next-line no-param-reassign - acc = { ...acc, ...temp }; - return acc; - }, {}); -}; - -export const getTaskStatus = ( - pipelineRun: PipelineRunKind, - task: PipelineTaskWithStatus, -) => { - let taskStatus: TaskStatus = { - reason: ComputedStatus.Idle, - }; - - const computedStatus = pipelineRunFilterReducer(pipelineRun); - const isSkipped = !!( - task && - pipelineRun?.status?.skippedTasks?.some( - (t: { name: string }) => t.name === task.name, - ) - ); - - if (task?.status) { - taskStatus = task.status as TaskStatus; - } - if ( - computedStatus === ComputedStatus.Failed || - computedStatus === ComputedStatus.Cancelled - ) { - if ( - task?.status?.reason === ComputedStatus.Idle || - task?.status?.reason === ComputedStatus.Pending - ) { - taskStatus.reason = ComputedStatus.Cancelled; - } - } - if (isSkipped) { - taskStatus.reason = ComputedStatus.Skipped; - } - return taskStatus; -}; diff --git a/plugins/tekton/src/utils/taskRun-utils.test.ts b/plugins/tekton/src/utils/taskRun-utils.test.ts deleted file mode 100644 index 816568b32e..0000000000 --- a/plugins/tekton/src/utils/taskRun-utils.test.ts +++ /dev/null @@ -1,131 +0,0 @@ -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { - acsDeploymentCheckTaskRun, - acsImageCheckTaskRun, - acsImageScanTaskRun, - enterpriseContractTaskRun, - taskRunWithResults, - taskRunWithSBOMResult, - taskRunWithSBOMResultExternalLink, -} from '../__fixtures__/taskRunData'; -import { - getActiveTaskRun, - getSbomLink, - getSortedTaskRuns, - getTaskrunsOutputGroup, - hasExternalLink, - isACSDeploymentCheckTaskRun, - isACSImageCheckTaskRun, - isACSImageScanTaskRun, - isECTaskRun, - isSbomTaskRun, -} from './taskRun-utils'; - -describe('taskRun-utils', () => { - it('should return sorted task runs', () => { - const sortedTaskRuns = getSortedTaskRuns( - mockKubernetesPlrResponse.taskruns, - ); - expect(sortedTaskRuns[0].id).toEqual('ruby-ex-git-xf45fo-build'); - }); - - it('should return empty sorted task runs', () => { - const sortedTaskRuns = getSortedTaskRuns([]); - expect(sortedTaskRuns).toHaveLength(0); - }); - - it('should return active taskrun as the latest taskrun when active task is not present', () => { - const activeTaskRun = getActiveTaskRun( - getSortedTaskRuns(mockKubernetesPlrResponse.taskruns), - '', - ); - expect(activeTaskRun).toBe('pipelinerun-with-sbom-task-t237ev-sbom-task'); - }); - - it('should return active taskrun when active task is present', () => { - const activeTaskRun = getActiveTaskRun( - getSortedTaskRuns(mockKubernetesPlrResponse.taskruns), - 'pipeline-test-wbvtlk-tkn', - ); - expect(activeTaskRun).toBe('pipeline-test-wbvtlk-tkn'); - }); - - it('should return undefined when active task is not present', () => { - const activeTaskRun = getActiveTaskRun( - getSortedTaskRuns(mockKubernetesPlrResponse.taskruns), - 'pipeline-test-wbvt-tkn', - ); - expect(activeTaskRun).toBe(undefined); - }); - - it('should not return the SBOM link', () => { - expect(getSbomLink(taskRunWithResults)).toBeUndefined(); - }); - - it('should return the SBOM link', () => { - expect(getSbomLink(taskRunWithSBOMResult)).toBe( - 'quay.io/test/image:build-8e536-1692702836', - ); - }); - - it('should return false if taskrun is missing annotations', () => { - expect( - hasExternalLink({ - ...taskRunWithSBOMResultExternalLink, - metadata: { - ...taskRunWithSBOMResultExternalLink.metadata, - annotations: undefined, - }, - }), - ).toBe(false); - }); - - it('should return false if the taskrun is missing external-link type annotation', () => { - expect(hasExternalLink(taskRunWithSBOMResult)).toBe(false); - }); - - it('should return true if the taskrun has external-link type annotation', () => { - expect(hasExternalLink(taskRunWithSBOMResultExternalLink)).toBe(true); - }); - - it('should return true if the taskrun is a valid SBOM task', () => { - expect(isSbomTaskRun(taskRunWithSBOMResultExternalLink)).toBe(true); - expect(isSbomTaskRun(taskRunWithSBOMResult)).toBe(true); - }); - - it('should return true if the taskrun is a valid EC task', () => { - expect(isECTaskRun(enterpriseContractTaskRun)).toBe(true); - }); - - it('should return true if the taskrun is a valid ACS image scan task', () => { - expect(isACSImageScanTaskRun(acsImageScanTaskRun)).toBe(true); - }); - - it('should return true if the taskrun is a valid ACS image check task', () => { - expect(isACSImageCheckTaskRun(acsImageCheckTaskRun)).toBe(true); - }); - it('should return true if the taskrun is a valid ACS deployment check task', () => { - expect(isACSDeploymentCheckTaskRun(acsDeploymentCheckTaskRun)).toBe(true); - }); - - it('should return false if the taskrun is not a valid SBOM task', () => { - expect(isSbomTaskRun(taskRunWithResults)).toBe(false); - expect(isECTaskRun(taskRunWithResults)).toBe(false); - expect(isACSImageScanTaskRun(taskRunWithResults)).toBe(false); - expect(isACSImageCheckTaskRun(taskRunWithResults)).toBe(false); - expect(isACSDeploymentCheckTaskRun(taskRunWithResults)).toBe(false); - }); - - it('should return the taskrun group', () => { - const outputGroup = getTaskrunsOutputGroup( - 'pipelinerun-with-scanner-task', - [acsImageScanTaskRun, acsImageCheckTaskRun, acsDeploymentCheckTaskRun], - ); - - expect(outputGroup.acsImageScanTaskRun).toBeDefined(); - expect(outputGroup.acsImageCheckTaskRun).toBeDefined(); - expect(outputGroup.acsDeploymentCheckTaskRun).toBeDefined(); - expect(outputGroup.ecTaskRun).toBeUndefined(); - expect(outputGroup.sbomTaskRun).toBeUndefined(); - }); -}); diff --git a/plugins/tekton/src/utils/taskRun-utils.ts b/plugins/tekton/src/utils/taskRun-utils.ts deleted file mode 100644 index 57a52db053..0000000000 --- a/plugins/tekton/src/utils/taskRun-utils.ts +++ /dev/null @@ -1,120 +0,0 @@ -import { - TaskRunResultsAnnotations, - TaskRunResultsKeyValue, - TaskRunResultsTypeValue, -} from '@aonic-ui/pipelines'; - -import { - ComputedStatus, - pipelineRunFilterReducer, - TaskRunKind, -} from '@janus-idp/shared-react'; - -import { - TEKTON_PIPELINE_RUN, - TEKTON_PIPELINE_TASK, -} from '../consts/tekton-const'; -import { OutputTaskRunGroup } from '../types/output'; - -export type TaskStep = { - id: string; - name: string; - status: ComputedStatus; - startedAt?: string; - endedAt?: string; -}; - -export const getSortedTaskRuns = (tRuns: TaskRunKind[]): TaskStep[] => { - if (!tRuns || tRuns.length === 0) { - return []; - } - const taskRuns = Array.from(tRuns).sort((a, b) => { - if (a.status?.completionTime) { - return b.status?.completionTime && - new Date(a.status?.completionTime ?? '') > - new Date(b.status.completionTime) - ? 1 - : -1; - } - return b.status?.completionTime || - new Date(a.status?.startTime ?? '') > new Date(b.status?.startTime ?? '') - ? 1 - : -1; - }); - return (taskRuns?.map(tr => { - return { - id: tr.metadata?.name, - name: tr.metadata?.labels?.[TEKTON_PIPELINE_TASK], - status: pipelineRunFilterReducer(tr), - startedAt: tr.status?.startTime, - endedAt: tr.status?.completionTime, - }; - }) || []) as TaskStep[]; -}; - -export const getActiveTaskRun = ( - taskRuns: TaskStep[], - activeTask: string | undefined, -): string | undefined => - activeTask - ? taskRuns.find(taskRun => taskRun?.id === activeTask)?.id - : taskRuns[taskRuns.length - 1]?.id; - -const checkTypeAnnotation = ( - tr: TaskRunKind | undefined, - type: TaskRunResultsTypeValue, -): boolean => - tr?.metadata?.annotations?.[TaskRunResultsAnnotations.TYPE] === type; - -export const isSbomTaskRun = (tr: TaskRunKind | undefined): boolean => - tr?.metadata?.annotations?.[TaskRunResultsAnnotations.KEY] === - TaskRunResultsKeyValue.SBOM; - -export const isECTaskRun = (tr: TaskRunKind | undefined): boolean => - checkTypeAnnotation(tr, TaskRunResultsTypeValue.EC); - -export const isACSImageScanTaskRun = (tr: TaskRunKind | undefined): boolean => - checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_IMAGE_SCAN); - -export const isACSImageCheckTaskRun = (tr: TaskRunKind | undefined): boolean => - checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_IMAGE_CHECK); - -export const isACSDeploymentCheckTaskRun = ( - tr: TaskRunKind | undefined, -): boolean => - checkTypeAnnotation(tr, TaskRunResultsTypeValue.ROXCTL_DEPLOYMENT_CHECK); - -export const getTaskrunsOutputGroup = ( - pipelineRunName: string | undefined, - taskruns: TaskRunKind[], -): OutputTaskRunGroup => { - const getPLRTaskRunByType = ( - check: (tr: TaskRunKind | undefined) => boolean, - ): TaskRunKind | undefined => - taskruns?.find( - (tr: TaskRunKind) => - tr?.metadata?.labels?.[TEKTON_PIPELINE_RUN] === pipelineRunName && - check(tr), - ); - - return { - sbomTaskRun: getPLRTaskRunByType(isSbomTaskRun), - ecTaskRun: getPLRTaskRunByType(isECTaskRun), - acsImageScanTaskRun: getPLRTaskRunByType(isACSImageScanTaskRun), - acsImageCheckTaskRun: getPLRTaskRunByType(isACSImageCheckTaskRun), - acsDeploymentCheckTaskRun: getPLRTaskRunByType(isACSDeploymentCheckTaskRun), - }; -}; - -export const hasExternalLink = ( - sbomTaskRun: TaskRunKind | undefined, -): boolean => - sbomTaskRun?.metadata?.annotations?.[TaskRunResultsAnnotations.TYPE] === - TaskRunResultsTypeValue.EXTERNAL_LINK; - -export const getSbomLink = ( - sbomTaskRun: TaskRunKind | undefined, -): string | undefined => - (sbomTaskRun?.status?.results || sbomTaskRun?.status?.taskResults)?.find( - r => r.name === TaskRunResultsKeyValue.SBOM, - )?.value; diff --git a/plugins/tekton/src/utils/tekton-utils.test.ts b/plugins/tekton/src/utils/tekton-utils.test.ts deleted file mode 100644 index 73b58f0ab4..0000000000 --- a/plugins/tekton/src/utils/tekton-utils.test.ts +++ /dev/null @@ -1,330 +0,0 @@ -import { RawFetchError } from '@backstage/plugin-kubernetes-common'; - -import { PipelineRunKind, PipelineRunStatus } from '@janus-idp/shared-react'; - -import { mockKubernetesPlrResponse } from '../__fixtures__/1-pipelinesData'; -import { kubernetesObjects } from '../__fixtures__/kubernetesObject'; -import { - calculateDuration, - calculateDurationInSeconds, - getClusters, - getComparator, - getDuration, - getTaskStatusOfPLR, - getTektonResources, - pipelineRunDuration, - totalPipelineRunTasks, -} from './tekton-utils'; - -describe('tekton-utils', () => { - it('getClusters should return the cluster', () => { - const k8sObjects = { - items: [ - { - cluster: { - name: 'cluster1', - }, - podMetrics: [], - errors: [ - { - errorType: 'FETCH_ERROR', - message: 'Could not fetch resources', - } as RawFetchError, - ], - resources: [], - }, - ], - }; - const { clusters, errors } = getClusters(k8sObjects); - expect(clusters).toEqual(['cluster1']); - expect(errors).toEqual([ - [{ errorType: 'FETCH_ERROR', message: 'Could not fetch resources' }], - ]); - }); - - it('getTektonResources should return the tekton resources if exists', () => { - const plrResources = getTektonResources(0, kubernetesObjects); - expect(plrResources).toEqual({ - pipelineruns: { - data: mockKubernetesPlrResponse.pipelineruns, - }, - pods: { - data: mockKubernetesPlrResponse.pods, - }, - }); - }); - - it('getTektonResources should not return the tekton resources if does not exists', () => { - const plrResources = getTektonResources(1, kubernetesObjects); - expect(plrResources).toEqual({}); - }); - - it('totalPipelineRunTasks should return the total number of tasks in a pipeline run', () => { - const totalTasks = totalPipelineRunTasks( - mockKubernetesPlrResponse.pipelineruns[0], - ); - expect(totalTasks).toEqual(3); - }); - - it('getTaskStatusOfPLR should return the updated task status', () => { - const updatedTaskStatus = getTaskStatusOfPLR( - mockKubernetesPlrResponse.pipelineruns[0], - [mockKubernetesPlrResponse.taskruns[0]], - ); - expect(updatedTaskStatus).toEqual({ - PipelineNotStarted: 0, - Pending: 2, - Running: 1, - Succeeded: 0, - Failed: 0, - Cancelled: 0, - Skipped: 0, - }); - }); - - it('getTaskStatusOfPLR should return the updated task status if no taskrun exist', () => { - const mockPipelineRun = { - ...kubernetesObjects.items[0].resources[0].resources[0], - status: {}, - }; - const updatedTaskStatus = getTaskStatusOfPLR(mockPipelineRun, [ - mockKubernetesPlrResponse.taskruns[1], - ]); - expect(updatedTaskStatus).toEqual({ - PipelineNotStarted: 1, - Pending: 0, - Running: 0, - Succeeded: 0, - Failed: 0, - Cancelled: 0, - Skipped: 0, - }); - }); - - it('should return duration in seconds', () => { - let duration = calculateDurationInSeconds( - '2020-05-22T11:57:53Z', - '2020-05-22T11:57:57Z', - ); - expect(duration).toEqual(4); - - duration = calculateDurationInSeconds( - '2020-05-22T11:57:53Z', - '2020-05-22T12:02:20Z', - ); - expect(duration).toBe(267); - - duration = calculateDurationInSeconds( - '2020-05-22T10:57:53Z', - '2020-05-22T12:57:57Z', - ); - expect(duration).toBe(7204); - }); - - it('should return the right duration strings', () => { - expect(getDuration(0, false)).toBe('less than a sec'); - expect(getDuration(0, true)).toBe('less than a sec'); - - expect(getDuration(10, false)).toBe('10s'); - expect(getDuration(10, true)).toBe('10 seconds'); - - expect(getDuration(60, false)).toBe('1m'); - expect(getDuration(60, true)).toBe('1 minute'); - - expect(getDuration(3600 + 2 * 60 + 3, false)).toBe('1h 2m 3s'); - expect(getDuration(3600 + 2 * 60 + 3, true)).toBe( - '1 hour 2 minutes 3 seconds', - ); - - expect(getDuration(48 * 3600 + 1, false)).toBe('48h 1s'); - expect(getDuration(48 * 3600 + 1, true)).toBe('48 hours 1 second'); - }); - - it('should return definite duration', () => { - let duration = calculateDuration( - '2020-05-22T11:57:53Z', - '2020-05-22T11:57:57Z', - ); - expect(duration).toEqual('4s'); - duration = calculateDuration( - '2020-05-22T11:57:53Z', - '2020-05-22T11:57:57Z', - true, - ); - expect(duration).toEqual('4 seconds'); - duration = calculateDuration( - '2020-05-22T11:57:53Z', - '2020-05-22T12:02:20Z', - ); - expect(duration).toBe('4m 27s'); - duration = calculateDuration( - '2020-05-22T11:57:53Z', - '2020-05-22T12:02:20Z', - true, - ); - expect(duration).toBe('4 minutes 27 seconds'); - duration = calculateDuration( - '2020-05-22T10:57:53Z', - '2020-05-22T12:57:57Z', - ); - expect(duration).toBe('2h 4s'); - }); - - it('should return expect duration for PipelineRun', () => { - const duration = pipelineRunDuration( - mockKubernetesPlrResponse.pipelineruns[0], - ); - expect(duration).not.toBeNull(); - expect(duration).toBe('2 minutes 9 seconds'); - }); - - it('should return expect duration as - for PipelineRun without start time', () => { - const mockPipelineRun: PipelineRunKind = { - ...mockKubernetesPlrResponse.pipelineruns[0], - status: { - ...mockKubernetesPlrResponse.pipelineruns[0].status, - startTime: '', - }, - }; - const duration = pipelineRunDuration(mockPipelineRun); - expect(duration).not.toBeNull(); - expect(duration).toBe('-'); - }); - - it('should return expect duration as - for PipelineRun without end time', () => { - const mockPipelineRun: PipelineRunKind = { - ...mockKubernetesPlrResponse.pipelineruns[1], - status: { - ...mockKubernetesPlrResponse.pipelineruns[1].status, - completionTime: '', - }, - }; - const duration = pipelineRunDuration(mockPipelineRun); - expect(duration).not.toBeNull(); - expect(duration).toBe('-'); - }); - - it('should be able to sort pipelineRunsData in ascending order based on pipelinerun name', () => { - const mockPipelineRuns: PipelineRunKind[] = [ - ...mockKubernetesPlrResponse.pipelineruns, - ]; - - const sortedData: PipelineRunKind[] = Array.from(mockPipelineRuns).sort( - getComparator('asc', 'metadata.name', 'name'), - ); - expect(sortedData[0].metadata?.name).toBe('pipeline-test-wbvtlk'); - }); - - it('should be able to sort pipelineRunsData in ascending order based on pipelinerun start time', () => { - const mockPipelineRuns: PipelineRunKind[] = [ - ...mockKubernetesPlrResponse.pipelineruns, - ]; - - const sortedData: PipelineRunKind[] = Array.from(mockPipelineRuns).sort( - getComparator('asc', 'status.startTime', 'start-time'), - ); - expect(sortedData[0].metadata?.name).toBe('ruby-ex-git-xf45fo'); - }); - - it('should be able to sort pipelineRunsData in ascending order based on pipelinerun duration', () => { - const mockPipelineRuns: PipelineRunKind[] = [ - ...mockKubernetesPlrResponse.pipelineruns, - ]; - - const sortedData: PipelineRunKind[] = Array.from(mockPipelineRuns).sort( - getComparator('asc', 'status.completionTime', 'duration'), - ); - expect(sortedData[0].metadata?.name).toBe('ruby-ex-git-xf45fo'); - }); - it('should be able to sort pipelineRunsData in ascending order based on pipelinerun vulnerabilities', () => { - const mockPipelineRun: PipelineRunKind = - mockKubernetesPlrResponse.pipelineruns[1]; - - const pipelineRunA: PipelineRunKind = { - ...mockPipelineRun, - metadata: { ...mockPipelineRun.metadata, name: 'A' }, - status: { - ...mockPipelineRun.status, - results: [ - { - name: 'SCAN_OUTPUT', - value: - '{"vulnerabilities":{\n"critical": 13,\n"high": 29,\n"medium": 32,\n"low": 3,\n"unknown": 0}\n}\n', - }, - ], - } as PipelineRunStatus, - }; - const pipelineRunB: PipelineRunKind = { - ...mockPipelineRun, - metadata: { ...mockPipelineRun.metadata, name: 'B' }, - status: { - ...mockPipelineRun.status, - results: [ - { - name: 'SCAN_OUTPUT', - value: - '{"vulnerabilities":{\n"critical": 1,\n"high": 29,\n"medium": 32,\n"low": 3,\n"unknown": 0}\n}\n', - }, - ], - } as PipelineRunStatus, - }; - const pipelineRuns = [pipelineRunA, pipelineRunB]; - - let sortedData: PipelineRunKind[] = Array.from(pipelineRuns).sort( - getComparator('asc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('B'); - sortedData = Array.from(pipelineRuns).sort( - getComparator('desc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('A'); - - pipelineRunB.status!.results = [ - { - name: 'SCAN_OUTPUT', - value: - '{"vulnerabilities":{\n"critical": 13,\n"high": 30,\n"medium": 2,\n"low": 2,\n"unknown": 0}\n}\n', - }, - ]; - sortedData = Array.from(pipelineRuns).sort( - getComparator('asc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('A'); - sortedData = Array.from(pipelineRuns).sort( - getComparator('desc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('B'); - - pipelineRunB.status!.results = [ - { - name: 'SCAN_OUTPUT', - value: - '{"vulnerabilities":{\n"critical": 13,\n"high": 29,\n"medium": 33,\n"low": 2,\n"unknown": 0}\n}\n', - }, - ]; - sortedData = Array.from(pipelineRuns).sort( - getComparator('asc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('A'); - sortedData = Array.from(pipelineRuns).sort( - getComparator('desc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('B'); - - pipelineRunB.status!.results = [ - { - name: 'SCAN_OUTPUT', - value: - '{"vulnerabilities":{\n"critical": 13,\n"high": 29,\n"medium": 32,\n"low": 4,\n"unknown": 0}\n}\n', - }, - ]; - sortedData = Array.from(pipelineRuns).sort( - getComparator('asc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('A'); - sortedData = Array.from(pipelineRuns).sort( - getComparator('desc', 'status.results', 'vulnerabilities'), - ); - expect(sortedData[0].metadata?.name).toBe('B'); - }); -}); diff --git a/plugins/tekton/src/utils/tekton-utils.ts b/plugins/tekton/src/utils/tekton-utils.ts deleted file mode 100644 index f4d4ca5eb4..0000000000 --- a/plugins/tekton/src/utils/tekton-utils.ts +++ /dev/null @@ -1,291 +0,0 @@ -import { - ClusterObjects, - ObjectsByEntityResponse, -} from '@backstage/plugin-kubernetes-common'; - -import { pluralize } from '@patternfly/react-core'; -import { get } from 'lodash'; - -import { - ComputedStatus, - getTaskRunsForPipelineRun, - pipelineRunFilterReducer, - PipelineRunKind, - pipelineRunStatus, - SucceedConditionReason, - TaskRunKind, - TaskStatusTypes, - updateTaskStatus, -} from '@janus-idp/shared-react'; - -import { getPipelineRunScanResults } from '../hooks/usePipelineRunScanResults'; -import { PipelineRunGVK, TaskRunGVK } from '../models'; -import { - ClusterErrors, - Order, - PipelineRunScanResults, - TektonResponseData, -} from '../types/types'; - -export const getClusters = (k8sObjects: ObjectsByEntityResponse) => { - const clusters: string[] = k8sObjects.items.map( - (item: ClusterObjects) => item.cluster.name, - ); - const errors: ClusterErrors[] = k8sObjects.items.map( - (item: ClusterObjects) => item.errors, - ); - return { clusters, errors }; -}; - -const isTektonResource = (kind: string) => - [PipelineRunGVK.kind, TaskRunGVK.kind].includes(kind); - -const getResourceType = (kind: string) => { - switch (kind) { - case PipelineRunGVK.kind: - return 'pipelineruns'; - case TaskRunGVK.kind: - return 'taskruns'; - default: - return ''; - } -}; - -export const getTektonResources = ( - cluster: number, - k8sObjects: ObjectsByEntityResponse, -) => - k8sObjects.items?.[cluster]?.resources?.reduce( - (acc: TektonResponseData, res: any) => { - if (res.type === 'pods') { - return { - ...acc, - pods: { data: res.resources }, - }; - } - if ( - res.type !== 'customresources' || - (res.type === 'customresources' && res.resources.length === 0) - ) { - return acc; - } - const customResKind = res.resources[0].kind; - return { - ...acc, - ...(isTektonResource(customResKind) && { - [getResourceType(customResKind)]: { - data: res.resources, - }, - }), - }; - }, - {}, - ); - -export const totalPipelineRunTasks = (pipelinerun: PipelineRunKind): number => { - if (!pipelinerun?.status?.pipelineSpec) { - return 0; - } - const totalTasks = (pipelinerun.status.pipelineSpec?.tasks || []).length; - const finallyTasks = - (pipelinerun.status.pipelineSpec?.finally || []).length ?? 0; - return totalTasks + finallyTasks; -}; - -export const getTaskStatusOfPLR = ( - pipelinerun: PipelineRunKind, - taskRuns: TaskRunKind[], -) => { - const totalTasks = totalPipelineRunTasks(pipelinerun); - const plrTasks = getTaskRunsForPipelineRun(pipelinerun, taskRuns); - const plrTaskLength = plrTasks?.length; - const skippedTaskLength = pipelinerun?.status?.skippedTasks?.length || 0; - - const taskStatus: TaskStatusTypes = updateTaskStatus(pipelinerun, plrTasks); - - if (plrTasks?.length > 0) { - const pipelineRunHasFailure = taskStatus[ComputedStatus.Failed] > 0; - const pipelineRunIsCancelled = - pipelineRunFilterReducer(pipelinerun) === ComputedStatus.Cancelled; - const unhandledTasks = - totalTasks >= plrTaskLength - ? totalTasks - plrTaskLength - skippedTaskLength - : totalTasks; - - if (pipelineRunHasFailure || pipelineRunIsCancelled) { - taskStatus[ComputedStatus.Cancelled] += unhandledTasks; - } else { - taskStatus[ComputedStatus.Pending] += unhandledTasks; - } - } else if ( - pipelinerun?.status?.conditions?.[0]?.status === 'False' || - pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunCancelled - ) { - taskStatus[ComputedStatus.Cancelled] = totalTasks; - } else if ( - pipelinerun?.spec?.status === SucceedConditionReason.PipelineRunPending - ) { - taskStatus[ComputedStatus.Pending] += totalTasks; - } else { - taskStatus[ComputedStatus.PipelineNotStarted]++; - } - return taskStatus; -}; - -export const getDuration = (seconds: number, long?: boolean): string => { - if (seconds === 0) { - return 'less than a sec'; - } - let sec = Math.round(seconds); - let min = 0; - let hr = 0; - let duration = ''; - if (sec >= 60) { - min = Math.floor(sec / 60); - sec %= 60; - } - if (min >= 60) { - hr = Math.floor(min / 60); - min %= 60; - } - if (hr > 0) { - duration += long ? pluralize(hr, 'hour', 'hours') : `${hr}h`; - duration += ' '; - } - if (min > 0) { - duration += long ? pluralize(min, 'minute', 'minutes') : `${min}m`; - duration += ' '; - } - if (sec > 0) { - duration += long ? pluralize(sec, 'second', 'seconds') : `${sec}s`; - } - - return duration.trim(); -}; - -export const descendingComparator = ( - a: PipelineRunKind, - b: PipelineRunKind, - orderBy: string, -) => { - if (get(b, orderBy) < get(a, orderBy)) { - return -1; - } - if (get(b, orderBy) > get(a, orderBy)) { - return 1; - } - return 0; -}; - -export const calculateDurationInSeconds = ( - startTime: string, - endTime?: string, -) => { - const start = new Date(startTime).getTime(); - const end = endTime ? new Date(endTime).getTime() : new Date().getTime(); - const durationInSeconds = (end - start) / 1000; - return durationInSeconds; -}; - -export const durationComparator = (a: PipelineRunKind, b: PipelineRunKind) => { - const durationA = a.status?.startTime - ? calculateDurationInSeconds(a.status?.startTime, a.status?.completionTime) - : 0; - - const durationB = b.status?.startTime - ? calculateDurationInSeconds(b.status?.startTime, b.status?.completionTime) - : 0; - - if (durationB < durationA) { - return -1; - } - if (durationB > durationA) { - return 1; - } - return 0; -}; - -const vulnerabilitiesSortValue = ( - scanResults: PipelineRunScanResults, -): number => { - if (!scanResults?.vulnerabilities) { - return -1; - } - // Expect no more than 999 of any one severity - return ( - (scanResults.vulnerabilities.critical ?? 0) * 1000000000 + - (scanResults.vulnerabilities.high ?? 0) * 1000000 + - (scanResults.vulnerabilities.medium ?? 0) * 1000 + - (scanResults.vulnerabilities.low ?? 0) - ); -}; - -export const vulnerabilitiesComparator = ( - a: PipelineRunKind, - b: PipelineRunKind, -) => { - const vulnerabilitiesSortValueA = vulnerabilitiesSortValue( - getPipelineRunScanResults(a), - ); - const vulnerabilitiesSortValueB = vulnerabilitiesSortValue( - getPipelineRunScanResults(b), - ); - - if (vulnerabilitiesSortValueB < vulnerabilitiesSortValueA) { - return -1; - } - if (vulnerabilitiesSortValueB > vulnerabilitiesSortValueA) { - return 1; - } - return 0; -}; - -export const getComparator = ( - order: Order, - orderBy: string, - orderById: string, -) => { - switch (orderById) { - case 'duration': - return (a: PipelineRunKind, b: PipelineRunKind) => { - return order === 'desc' - ? durationComparator(a, b) - : -durationComparator(a, b); - }; - case 'vulnerabilities': - return (a: PipelineRunKind, b: PipelineRunKind) => { - return order === 'desc' - ? vulnerabilitiesComparator(a, b) - : -vulnerabilitiesComparator(a, b); - }; - default: - return (a: PipelineRunKind, b: PipelineRunKind) => { - return order === 'desc' - ? descendingComparator(a, b, orderBy) - : -descendingComparator(a, b, orderBy); - }; - } -}; - -export const calculateDuration = ( - startTime: string, - endTime?: string, - long?: boolean, -) => { - const durationInSeconds = calculateDurationInSeconds(startTime, endTime); - return getDuration(durationInSeconds, long); -}; - -export const pipelineRunDuration = (run: PipelineRunKind): string => { - if (!run || Object.keys(run).length === 0) { - return '-'; - } - const startTime = run.status?.startTime; - const completionTime = run.status?.completionTime; - - // Duration cannot be computed if start time is missing or a completed/failed pipeline/task has no end time - if (!startTime || (!completionTime && pipelineRunStatus(run) !== 'Running')) { - return '-'; - } - return calculateDuration(startTime, completionTime, true); -}; diff --git a/plugins/tekton/tests/tekton.spec.ts b/plugins/tekton/tests/tekton.spec.ts deleted file mode 100644 index ff02cdcffb..0000000000 --- a/plugins/tekton/tests/tekton.spec.ts +++ /dev/null @@ -1,323 +0,0 @@ -import { expect, Locator, Page, test } from '@playwright/test'; - -import { Common } from './tektonHelper'; - -test.describe('Tekton plugin', () => { - let page: Page; - let common: Common; - test.beforeAll(async ({ browser }) => { - const context = await browser.newContext(); - page = await context.newPage(); - common = new Common(page); - - await common.loginAsGuest(); - await expect( - page.getByRole('heading', { name: 'Pipeline Runs' }), - ).toBeVisible({ timeout: 20000 }); - }); - - test.afterAll(async ({ browser }) => { - await browser.close(); - }); - - test('Control elements are shown', async () => { - const clusterSelect = page.locator('.bs-tkn-cluster-selector'); - await expect( - clusterSelect.getByText('Cluster', { exact: true }), - ).toBeVisible(); - await expect(clusterSelect.getByText('mock-cluster')).toBeVisible(); - - const statusSelect = page.locator('.bs-tkn-status-selector'); - await expect(statusSelect.getByText('Status')).toBeVisible(); - await expect(statusSelect.getByText('All')).toBeVisible(); - - const columns = [ - 'NAME', - 'VULNERABILITIES', - 'STATUS', - 'TASK STATUS', - 'STARTED', - 'DURATION', - 'ACTIONS', - ]; - const thead = page.locator('thead'); - for (const col of columns) { - await expect( - thead.getByRole('columnheader', { name: col, exact: true }), - ).toBeVisible(); - } - }); - - test('Pipelines are shown', async () => { - const plrLabel = page.locator('.bs-tkn-pipeline-visualization__label'); - expect(await plrLabel.all()).toHaveLength(5); - for (const plr of await plrLabel.all()) { - expect(plr).toBeVisible(); - } - }); - - test('Pipeline without scan or sbom only shows logs', async () => { - const row = page.getByRole('row', { name: 'pipeline-test-wbvtlk' }); - await expect(row.getByRole('cell').nth(2)).toHaveText('-'); - - const actions = row.getByRole('cell').last(); - await expect(actions.getByRole('button').first()).toBeEnabled(); - await expect(row.getByTestId('view-sbom-icon')).toBeDisabled(); - await expect(row.getByTestId('view-output-icon')).toBeDisabled(); - }); - - test.describe('Pipeline with scanner', () => { - const output = { - vulnerabilities: { - critical: 13, - high: 29, - medium: 32, - low: 3, - unknown: 0, - }, - unpatched_vulnerabilities: { - critical: 0, - high: 1, - medium: 0, - low: 1, - }, - }; - const policyColumns = [ - 'Name', - 'Severity', - 'Breaks build', - 'Description', - 'Violation', - 'Remediation', - ]; - let row: Locator; - - test.beforeAll(() => { - row = page.getByRole('row', { name: 'pipelinerun-with-scanner-task' }); - }); - - test.afterAll(async () => { - await page.getByLabel('close').click(); - }); - - test('Vulnerabilities are shown in the run', async () => { - await checkVulnerabilities(row, output.vulnerabilities); - }); - - test('Output action is available', async () => { - const btn = row.getByTestId('view-output-icon'); - await expect(btn).toBeEnabled(); - await btn.click(); - await expect(page.getByTestId('pipelinerun-output-dialog')).toBeVisible(); - }); - - test('Enterprise contract output is shown', async () => { - const card = page.getByTestId('enterprise-contract'); - const title = page.locator('[id="{enterprise contract-title}"]'); - // check the title and the badge - await expect(title.getByTestId('card-title')).toBeVisible(); - await expect(title.getByTestId('card-title')).toHaveText( - 'Enterprise Contract', - ); - await expect(title.getByTestId('card-badge')).toHaveText('Failed'); - - // check the description - await expect(card).toContainText('Enterprise Contract is a set of tools'); - - // check the summary - const summary = card.locator('.pf-v5-c-card'); - await expect(summary.getByText('Summary')).toBeVisible(); - await expect(summary.getByText('Failed')).toBeVisible(); - await expect(summary.getByText('Success')).toBeVisible(); - await expect(summary.getByText('Warning')).toBeVisible(); - - // check the rules - const rules = page.getByTestId('ec-policy-table'); - const statuses = rules.getByTestId('rule-status'); - await expect(statuses).toHaveCount(4); - await expect(statuses.filter({ hasText: 'Failed' })).toHaveCount(2); - await expect(statuses.filter({ hasText: 'Warning' })).toHaveCount(1); - await expect(statuses.filter({ hasText: 'Success' })).toHaveCount(1); - }); - - test('ACS Image Scan is shown', async () => { - const card = page.locator(`[id='advanced cluster security']`); - await card - .locator(`[id='advanced cluster security-toggle-button']`) - .click(); - await card.scrollIntoViewIfNeeded(); - - // check the title and the badge - await expect(card.getByTestId('card-title')).toBeVisible(); - await expect(card.getByTestId('card-title')).toHaveText( - 'Advanced Cluster Security', - ); - await expect(card.getByTestId('card-badge')).toHaveText('Issues found'); - - const sections = [ - 'CVEs by severity', - 'CVEs by status', - 'Total scan results', - ]; - const columns = [ - 'CVE ID', - 'Severity', - 'Component', - 'Component version', - 'Fixed in version', - ]; - - await checkCards(card, sections, 'image-scan-table', columns); - }); - - test('ACS Image Check is shown', async () => { - const card = page.locator(`[id='advanced cluster security']`); - await card.getByRole('tab', { name: 'Image Check' }).click(); - const cards = ['CVEs by severity', 'Failing policy checks']; - - await checkCards(card, cards, 'image-check-table', policyColumns); - }); - - test('ACS Deployment Check is shown', async () => { - const card = page.locator(`[id='advanced cluster security']`); - await card.getByRole('tab', { name: 'Deployment Check' }).click(); - const cards = ['Violations by severity', 'Failing policy checks']; - - await checkCards(card, cards, 'deployment-check-table', policyColumns); - }); - - test('Check other output', async () => { - const card = page.locator('[id="others"]'); - await card.locator(`[id='others-toggle-button']`).click(); - await card.scrollIntoViewIfNeeded(); - - await expect(card.getByRole('gridcell').first()).toContainText( - 'SCAN_OUTPUT', - ); - - const text = (await card - .getByRole('gridcell') - .last() - .textContent()) as string; - expect(JSON.parse(text)).toEqual(output); - }); - }); - - test('Pipeline with sbom has the show sbom action', async () => { - const row = page.getByRole('row', { name: 'pipelinerun-with-sbom-task' }); - await expect(row.getByRole('cell').nth(2)).toHaveText('-'); - - const showSbom = row.getByTestId('view-sbom-icon'); - await expect(showSbom).toBeEnabled(); - await expect(row.getByTestId('view-output-icon')).toBeDisabled(); - await showSbom.click(); - - const dialog = page.getByTitle('PipelineRun Logs'); - await expect(dialog.getByText('sbom-task')).toBeVisible(); - - await page.getByLabel('close').click(); - }); - - test.describe('Pipeline with external sbom', () => { - let row: Locator; - const output = { - vulnerabilities: { - critical: 1, - high: 9, - medium: 20, - low: 1, - unknown: 0, - }, - unpatched_vulnerabilities: { - critical: 0, - high: 1, - medium: 0, - low: 1, - }, - }; - - test.beforeAll(() => { - row = page.getByRole('row', { - name: 'pipelinerun-with-external-sbom-task', - }); - }); - - test('Vulnerability scan is shown', async () => { - await checkVulnerabilities(row, output.vulnerabilities); - }); - - test('Show sbom action points to quay.io', async () => { - const showSbom = row.getByTestId('view-sbom-icon'); - await expect(showSbom).toBeEnabled(); - expect(await showSbom.locator('a').getAttribute('href')).toContain( - 'https://quay.io', - ); - }); - - test('View output action is enabled', async () => { - const viewOutput = row.getByTestId('view-output-icon'); - await expect(viewOutput).toBeEnabled(); - - await viewOutput.click(); - const dialog = page.getByRole('dialog'); - await expect(dialog).toBeVisible(); - - await expect(dialog.locator('tbody')).toContainText('MY_SCAN_OUTPUT'); - const text = (await dialog.locator('td').last().textContent()) as string; - expect(JSON.parse(text)).toEqual(output); - await page.getByLabel('close').click(); - }); - }); - - test('Signed pipeline shows the signed indicator', async () => { - const row = page.getByRole('row', { name: 'ruby-ex-git-xf45fo' }); - await expect(row.locator('.signed-indicator')).toBeVisible(); - }); -}); - -async function checkCards( - base: Locator, - sectionTitles: string[], - tableName: string, - columns: string[], -) { - // check the violations summary - const sections = base.locator('.pf-v5-c-card:visible'); - for (const item of sectionTitles) { - await expect(sections.filter({ hasText: item })).toBeVisible(); - } - - // check the violations table - const table = base.getByTestId(tableName); - await expect(table).toBeVisible(); - - for (const col of columns) { - await expect( - table.locator('thead').getByText(col, { exact: true }), - ).toBeVisible(); - } - expect(await table.getByRole('row').count()).toBeGreaterThan(1); -} - -async function checkVulnerabilities( - row: Locator, - vulnerabilities: { - critical: number; - high: number; - medium: number; - low: number; - }, -) { - const vuln = row.locator('.severity'); - let i = 0; - - for (const prop in vulnerabilities) { - if (vulnerabilities[prop] > 0) { - await expect(vuln.nth(i)).toContainText( - new RegExp(`${prop}\s*${vulnerabilities[prop]}`), - { ignoreCase: true }, - ); - i++; - } - } -} diff --git a/plugins/tekton/tests/tektonHelper.ts b/plugins/tekton/tests/tektonHelper.ts deleted file mode 100644 index 888eecc39f..0000000000 --- a/plugins/tekton/tests/tektonHelper.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { expect, type Locator, type Page } from '@playwright/test'; - -export class Common { - page: Page; - - constructor(page: Page) { - this.page = page; - } - - async verifyHeading(heading: string) { - const headingLocator = this.page - .locator('h1, h2, h3, h4, h5, h6') - .filter({ hasText: heading }) - .first(); - await headingLocator.waitFor({ state: 'visible', timeout: 30000 }); - await expect(headingLocator).toBeVisible(); - } - - async clickButton( - label: string, - clickOpts?: Parameters[0], - getByTextOpts: Parameters[1] = { exact: true }, - ) { - const muiButtonLabel = 'span[class^="MuiButton-label"]'; - const selector = `${muiButtonLabel}:has-text("${label}")`; - const button = this.page - .locator(selector) - .getByText(label, getByTextOpts) - .first(); - await button.waitFor({ state: 'visible' }); - await button.click(clickOpts); - } - - async waitForSideBarVisible() { - await this.page.waitForSelector('nav a', { timeout: 120000 }); - } - - async loginAsGuest() { - await this.page.goto('/'); - // TODO - Remove it after https://issues.redhat.com/browse/RHIDP-2043. A Dynamic plugin for Guest Authentication Provider needs to be created - this.page.on('dialog', async dialog => { - await dialog.accept(); - }); - - await this.verifyHeading('Select a sign-in method'); - await this.clickButton('Enter'); - await this.waitForSideBarVisible(); - } -} diff --git a/plugins/tekton/tsconfig.json b/plugins/tekton/tsconfig.json deleted file mode 100644 index 0fba2d784c..0000000000 --- a/plugins/tekton/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": ["src", "dev", "migrations"], - "exclude": ["node_modules"], - "compilerOptions": { - "outDir": "../../dist-types/plugins/tekton", - "rootDir": "." - } -} diff --git a/plugins/tekton/turbo.json b/plugins/tekton/turbo.json deleted file mode 100644 index 3d4f6e8aa7..0000000000 --- a/plugins/tekton/turbo.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "extends": ["//"], - "tasks": { - "tsc": { - "outputs": ["../../dist-types/plugins/tekton/**"] - } - } -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 789743363d..0000000000 --- a/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "@backstage/cli/config/tsconfig.json", - "include": [ - "packages/*/src", - "plugins/*/src", - "plugins/*/dev", - "plugins/*/migrations" - ], - "compilerOptions": { - "outDir": "dist-types", - "rootDir": ".", - "useUnknownInCatchVariables": false - } -} diff --git a/turbo.json b/turbo.json deleted file mode 100644 index 7cce6573b9..0000000000 --- a/turbo.json +++ /dev/null @@ -1,41 +0,0 @@ -{ - "$schema": "https://turbo.build/schema.json", - "globalDependencies": [], - "tasks": { - "start": { - "cache": false, - "persistent": true, - "dependsOn": ["openapi:generate"] - }, - "build": { - "outputs": ["dist/**"], - "dependsOn": ["^build", "tsc"] - }, - "clean": { - "cache": false - }, - "test": { - "outputs": ["coverage/**"], - "dependsOn": ["openapi:generate"] - }, - "ui-test": { - "outputs": ["test-results/**"] - }, - "lint:check": {}, - "lint:fix": { - "cache": false - }, - "prettier:check": {}, - "prettier:fix": { - "cache": false - }, - "tsc": { - "outputs": ["../../dist-types/**"], - "dependsOn": ["^tsc", "openapi:generate"] - }, - "openapi:generate": { - "outputs": ["src/generated/**"], - "dependsOn": ["^openapi:generate"] - } - } -} diff --git a/yamllint-config.yaml b/yamllint-config.yaml deleted file mode 100644 index 37d9fc0055..0000000000 --- a/yamllint-config.yaml +++ /dev/null @@ -1,12 +0,0 @@ ---- -extends: default -rules: - line-length: disable - document-start: disable - comments-indentation: disable - indentation: - indent-sequences: whatever - hyphens: - max-spaces-after: 4 - comments: - min-spaces-from-content: 1 diff --git a/yarn.lock b/yarn.lock index 15af164b8e..35cbb90957 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6,21 +6,21 @@ __metadata: cacheKey: 8 "@0no-co/graphql.web@npm:^1.0.1": - version: 1.0.9 - resolution: "@0no-co/graphql.web@npm:1.0.9" + version: 1.0.11 + resolution: "@0no-co/graphql.web@npm:1.0.11" peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 peerDependenciesMeta: graphql: optional: true - checksum: a7580304d3b545b69e11e4a7b95d0c81b5fee3d071f92b1386f0f2e4e4f69703cbe19e0a4f5c489cbb70e7b5ac1ccec3a51f529c85dfbbccf8ebd6370fd6b0e2 + checksum: 2f624f831f917a83be7b7e95c47f4b9ee71b0b13f1af23333c0c5db631047abbf6dcf10ea0300afcd046976a11b9c1a9fe3b88f1af9d7d4973e07a6d0a947843 languageName: node linkType: hard "@adobe/css-tools@npm:^4.4.0": - version: 4.4.0 - resolution: "@adobe/css-tools@npm:4.4.0" - checksum: 1f08fb49bf17fc7f2d1a86d3e739f29ca80063d28168307f1b0a962ef37501c5667271f6771966578897f2e94e43c4770fd802728a6e6495b812da54112d506a + version: 4.4.1 + resolution: "@adobe/css-tools@npm:4.4.1" + checksum: bbded8a03c314afee0fb0b42922f664f437e0e2f0b86eeeb06dee9d02cd8fc958cf87aa3314952b00074e0b22fc5b8da23f45b61b6f8291c8aaa7cffc56a76e9 languageName: node linkType: hard @@ -34,23 +34,6 @@ __metadata: languageName: node linkType: hard -"@aonic-ui/pipelines@npm:^1.1.1": - version: 1.1.1 - resolution: "@aonic-ui/pipelines@npm:1.1.1" - dependencies: - "@patternfly/react-table": ^5.1.2 - js-yaml: ^4.1.0 - peerDependencies: - "@patternfly/react-core": ^5.1.2 - "@patternfly/react-icons": ^5.1.2 - "@patternfly/react-table": ^5.1.2 - "@patternfly/react-tokens": ^5.1.2 - "@testing-library/jest-dom": ^6.2.0 - react: ^18.2.0 - checksum: c1e65ca7923efbb107d816f5d7028b855baa67c7f6c93377adc20c2dff28ca397f32420ca17379d92f2e70118ca9efd16c01a883624a5c5861e70ff73a551e23 - languageName: node - linkType: hard - "@apidevtools/json-schema-ref-parser@npm:9.0.6": version: 9.0.6 resolution: "@apidevtools/json-schema-ref-parser@npm:9.0.6" @@ -138,8 +121,8 @@ __metadata: linkType: hard "@asyncapi/parser@npm:^3.0.7, @asyncapi/parser@npm:^3.1.0": - version: 3.3.0 - resolution: "@asyncapi/parser@npm:3.3.0" + version: 3.4.0 + resolution: "@asyncapi/parser@npm:3.4.0" dependencies: "@asyncapi/specs": ^6.8.0 "@openapi-contrib/openapi-schema-to-json-schema": ~3.2.0 @@ -158,9 +141,9 @@ __metadata: ajv-formats: ^2.1.1 avsc: ^5.7.5 js-yaml: ^4.1.0 - jsonpath-plus: ^7.2.0 + jsonpath-plus: ^10.0.0 node-fetch: 2.6.7 - checksum: c3ecf9986e22d007708843a85c69ab4b197f2c86df8610065e4498feed109be0e0067f1d513b5a2dd7bb26eb443f865128d11965fcfa42251f73895d4cc92619 + checksum: 158eab3b910258ad3c66ebbf94a86bbab4c78d6b4fb0d62980a3bef0e33358f914790e8044c59ef34f6cd25e963d2e5d37e940fc340056c8e9fe14343c8f2ee8 languageName: node linkType: hard @@ -286,7 +269,7 @@ __metadata: languageName: node linkType: hard -"@aws-crypto/util@npm:^5.2.0": +"@aws-crypto/util@npm:5.2.0, @aws-crypto/util@npm:^5.2.0": version: 5.2.0 resolution: "@aws-crypto/util@npm:5.2.0" dependencies: @@ -308,686 +291,688 @@ __metadata: linkType: hard "@aws-sdk/client-codecommit@npm:^3.350.0": - version: 3.675.0 - resolution: "@aws-sdk/client-codecommit@npm:3.675.0" + version: 3.693.0 + resolution: "@aws-sdk/client-codecommit@npm:3.693.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/client-sso-oidc": 3.675.0 - "@aws-sdk/client-sts": 3.675.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/credential-provider-node": 3.675.0 - "@aws-sdk/middleware-host-header": 3.667.0 - "@aws-sdk/middleware-logger": 3.667.0 - "@aws-sdk/middleware-recursion-detection": 3.667.0 - "@aws-sdk/middleware-user-agent": 3.669.0 - "@aws-sdk/region-config-resolver": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-endpoints": 3.667.0 - "@aws-sdk/util-user-agent-browser": 3.675.0 - "@aws-sdk/util-user-agent-node": 3.669.0 - "@smithy/config-resolver": ^3.0.9 - "@smithy/core": ^2.4.8 - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/hash-node": ^3.0.7 - "@smithy/invalid-dependency": ^3.0.7 - "@smithy/middleware-content-length": ^3.0.9 - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-retry": ^3.0.23 - "@smithy/middleware-serde": ^3.0.7 - "@smithy/middleware-stack": ^3.0.7 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 + "@aws-sdk/client-sso-oidc": 3.693.0 + "@aws-sdk/client-sts": 3.693.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/credential-provider-node": 3.693.0 + "@aws-sdk/middleware-host-header": 3.693.0 + "@aws-sdk/middleware-logger": 3.693.0 + "@aws-sdk/middleware-recursion-detection": 3.693.0 + "@aws-sdk/middleware-user-agent": 3.693.0 + "@aws-sdk/region-config-resolver": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-endpoints": 3.693.0 + "@aws-sdk/util-user-agent-browser": 3.693.0 + "@aws-sdk/util-user-agent-node": 3.693.0 + "@smithy/config-resolver": ^3.0.11 + "@smithy/core": ^2.5.2 + "@smithy/fetch-http-handler": ^4.1.0 + "@smithy/hash-node": ^3.0.9 + "@smithy/invalid-dependency": ^3.0.9 + "@smithy/middleware-content-length": ^3.0.11 + "@smithy/middleware-endpoint": ^3.2.2 + "@smithy/middleware-retry": ^3.0.26 + "@smithy/middleware-serde": ^3.0.9 + "@smithy/middleware-stack": ^3.0.9 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/node-http-handler": ^3.3.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/url-parser": ^3.0.9 "@smithy/util-base64": ^3.0.0 "@smithy/util-body-length-browser": ^3.0.0 "@smithy/util-body-length-node": ^3.0.0 - "@smithy/util-defaults-mode-browser": ^3.0.23 - "@smithy/util-defaults-mode-node": ^3.0.23 - "@smithy/util-endpoints": ^2.1.3 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-retry": ^3.0.7 + "@smithy/util-defaults-mode-browser": ^3.0.26 + "@smithy/util-defaults-mode-node": ^3.0.26 + "@smithy/util-endpoints": ^2.1.5 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-retry": ^3.0.9 "@smithy/util-utf8": ^3.0.0 "@types/uuid": ^9.0.1 tslib: ^2.6.2 uuid: ^9.0.1 - checksum: 6cbad10a8634b8091b7f3a0994bfcec8c716c70a213b84ae1e30fd8194a8fa7c018aafc9bccd29e5424ecc8181dfc955c27d1184ffe269faccb43d7385966288 + checksum: 899965e6e75f1141ebe28c217285fd80d2e2b3afc2d3debf199a82a1d1ff6f50e6e323fcd8e7547a86130bcd4421e7726806b3d13dcb3fc32e1ed16aa4ead459 languageName: node linkType: hard -"@aws-sdk/client-cognito-identity@npm:3.675.0": - version: 3.675.0 - resolution: "@aws-sdk/client-cognito-identity@npm:3.675.0" +"@aws-sdk/client-cognito-identity@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/client-cognito-identity@npm:3.693.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/client-sso-oidc": 3.675.0 - "@aws-sdk/client-sts": 3.675.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/credential-provider-node": 3.675.0 - "@aws-sdk/middleware-host-header": 3.667.0 - "@aws-sdk/middleware-logger": 3.667.0 - "@aws-sdk/middleware-recursion-detection": 3.667.0 - "@aws-sdk/middleware-user-agent": 3.669.0 - "@aws-sdk/region-config-resolver": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-endpoints": 3.667.0 - "@aws-sdk/util-user-agent-browser": 3.675.0 - "@aws-sdk/util-user-agent-node": 3.669.0 - "@smithy/config-resolver": ^3.0.9 - "@smithy/core": ^2.4.8 - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/hash-node": ^3.0.7 - "@smithy/invalid-dependency": ^3.0.7 - "@smithy/middleware-content-length": ^3.0.9 - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-retry": ^3.0.23 - "@smithy/middleware-serde": ^3.0.7 - "@smithy/middleware-stack": ^3.0.7 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 + "@aws-sdk/client-sso-oidc": 3.693.0 + "@aws-sdk/client-sts": 3.693.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/credential-provider-node": 3.693.0 + "@aws-sdk/middleware-host-header": 3.693.0 + "@aws-sdk/middleware-logger": 3.693.0 + "@aws-sdk/middleware-recursion-detection": 3.693.0 + "@aws-sdk/middleware-user-agent": 3.693.0 + "@aws-sdk/region-config-resolver": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-endpoints": 3.693.0 + "@aws-sdk/util-user-agent-browser": 3.693.0 + "@aws-sdk/util-user-agent-node": 3.693.0 + "@smithy/config-resolver": ^3.0.11 + "@smithy/core": ^2.5.2 + "@smithy/fetch-http-handler": ^4.1.0 + "@smithy/hash-node": ^3.0.9 + "@smithy/invalid-dependency": ^3.0.9 + "@smithy/middleware-content-length": ^3.0.11 + "@smithy/middleware-endpoint": ^3.2.2 + "@smithy/middleware-retry": ^3.0.26 + "@smithy/middleware-serde": ^3.0.9 + "@smithy/middleware-stack": ^3.0.9 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/node-http-handler": ^3.3.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/url-parser": ^3.0.9 "@smithy/util-base64": ^3.0.0 "@smithy/util-body-length-browser": ^3.0.0 "@smithy/util-body-length-node": ^3.0.0 - "@smithy/util-defaults-mode-browser": ^3.0.23 - "@smithy/util-defaults-mode-node": ^3.0.23 - "@smithy/util-endpoints": ^2.1.3 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-retry": ^3.0.7 + "@smithy/util-defaults-mode-browser": ^3.0.26 + "@smithy/util-defaults-mode-node": ^3.0.26 + "@smithy/util-endpoints": ^2.1.5 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-retry": ^3.0.9 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: f4957e60c0b64ff6305d31954c436e8fd144c26d924009f92e174364f892f05dacbd1586e293b70f9de66f33db2b230f66584d6b8c02e952446a333ad9f4e2dc + checksum: 302271d5e0233d281e0f9e254a3599097391137f3e7ed2f4d8998d9df7afb478322e755c73e2d617bb72ac8ac70ab1ec0b6fbde7e526f82103e33343567ff475 languageName: node linkType: hard "@aws-sdk/client-s3@npm:^3.350.0": - version: 3.676.0 - resolution: "@aws-sdk/client-s3@npm:3.676.0" + version: 3.693.0 + resolution: "@aws-sdk/client-s3@npm:3.693.0" dependencies: "@aws-crypto/sha1-browser": 5.2.0 "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/client-sso-oidc": 3.675.0 - "@aws-sdk/client-sts": 3.675.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/credential-provider-node": 3.675.0 - "@aws-sdk/middleware-bucket-endpoint": 3.667.0 - "@aws-sdk/middleware-expect-continue": 3.667.0 - "@aws-sdk/middleware-flexible-checksums": 3.669.0 - "@aws-sdk/middleware-host-header": 3.667.0 - "@aws-sdk/middleware-location-constraint": 3.667.0 - "@aws-sdk/middleware-logger": 3.667.0 - "@aws-sdk/middleware-recursion-detection": 3.667.0 - "@aws-sdk/middleware-sdk-s3": 3.674.0 - "@aws-sdk/middleware-ssec": 3.667.0 - "@aws-sdk/middleware-user-agent": 3.669.0 - "@aws-sdk/region-config-resolver": 3.667.0 - "@aws-sdk/signature-v4-multi-region": 3.674.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-endpoints": 3.667.0 - "@aws-sdk/util-user-agent-browser": 3.675.0 - "@aws-sdk/util-user-agent-node": 3.669.0 - "@aws-sdk/xml-builder": 3.662.0 - "@smithy/config-resolver": ^3.0.9 - "@smithy/core": ^2.4.8 - "@smithy/eventstream-serde-browser": ^3.0.10 - "@smithy/eventstream-serde-config-resolver": ^3.0.7 - "@smithy/eventstream-serde-node": ^3.0.9 - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/hash-blob-browser": ^3.1.6 - "@smithy/hash-node": ^3.0.7 - "@smithy/hash-stream-node": ^3.1.6 - "@smithy/invalid-dependency": ^3.0.7 - "@smithy/md5-js": ^3.0.7 - "@smithy/middleware-content-length": ^3.0.9 - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-retry": ^3.0.23 - "@smithy/middleware-serde": ^3.0.7 - "@smithy/middleware-stack": ^3.0.7 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 + "@aws-sdk/client-sso-oidc": 3.693.0 + "@aws-sdk/client-sts": 3.693.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/credential-provider-node": 3.693.0 + "@aws-sdk/middleware-bucket-endpoint": 3.693.0 + "@aws-sdk/middleware-expect-continue": 3.693.0 + "@aws-sdk/middleware-flexible-checksums": 3.693.0 + "@aws-sdk/middleware-host-header": 3.693.0 + "@aws-sdk/middleware-location-constraint": 3.693.0 + "@aws-sdk/middleware-logger": 3.693.0 + "@aws-sdk/middleware-recursion-detection": 3.693.0 + "@aws-sdk/middleware-sdk-s3": 3.693.0 + "@aws-sdk/middleware-ssec": 3.693.0 + "@aws-sdk/middleware-user-agent": 3.693.0 + "@aws-sdk/region-config-resolver": 3.693.0 + "@aws-sdk/signature-v4-multi-region": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-endpoints": 3.693.0 + "@aws-sdk/util-user-agent-browser": 3.693.0 + "@aws-sdk/util-user-agent-node": 3.693.0 + "@aws-sdk/xml-builder": 3.693.0 + "@smithy/config-resolver": ^3.0.11 + "@smithy/core": ^2.5.2 + "@smithy/eventstream-serde-browser": ^3.0.12 + "@smithy/eventstream-serde-config-resolver": ^3.0.9 + "@smithy/eventstream-serde-node": ^3.0.11 + "@smithy/fetch-http-handler": ^4.1.0 + "@smithy/hash-blob-browser": ^3.1.8 + "@smithy/hash-node": ^3.0.9 + "@smithy/hash-stream-node": ^3.1.8 + "@smithy/invalid-dependency": ^3.0.9 + "@smithy/md5-js": ^3.0.9 + "@smithy/middleware-content-length": ^3.0.11 + "@smithy/middleware-endpoint": ^3.2.2 + "@smithy/middleware-retry": ^3.0.26 + "@smithy/middleware-serde": ^3.0.9 + "@smithy/middleware-stack": ^3.0.9 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/node-http-handler": ^3.3.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/url-parser": ^3.0.9 "@smithy/util-base64": ^3.0.0 "@smithy/util-body-length-browser": ^3.0.0 "@smithy/util-body-length-node": ^3.0.0 - "@smithy/util-defaults-mode-browser": ^3.0.23 - "@smithy/util-defaults-mode-node": ^3.0.23 - "@smithy/util-endpoints": ^2.1.3 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-retry": ^3.0.7 - "@smithy/util-stream": ^3.1.9 + "@smithy/util-defaults-mode-browser": ^3.0.26 + "@smithy/util-defaults-mode-node": ^3.0.26 + "@smithy/util-endpoints": ^2.1.5 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-retry": ^3.0.9 + "@smithy/util-stream": ^3.3.0 "@smithy/util-utf8": ^3.0.0 - "@smithy/util-waiter": ^3.1.6 + "@smithy/util-waiter": ^3.1.8 tslib: ^2.6.2 - checksum: c39bde3ed2ee7da6cc152e92d695d217556f37ab9cbce8ace8bd7047b74f18f9c1622fb4d133fdc3ba2f117ca6a5980913f703511eebfcc951a3b29e7adcc676 + checksum: a00fbf23820d47f47ebb1abebfd0686b07ada2d0048214d41782f09ad33c299da174830a6624702e783ee21b00da14084fc4d1669c16097bf0aab0617c6d3403 languageName: node linkType: hard -"@aws-sdk/client-sso-oidc@npm:3.675.0": - version: 3.675.0 - resolution: "@aws-sdk/client-sso-oidc@npm:3.675.0" +"@aws-sdk/client-sso-oidc@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/client-sso-oidc@npm:3.693.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/credential-provider-node": 3.675.0 - "@aws-sdk/middleware-host-header": 3.667.0 - "@aws-sdk/middleware-logger": 3.667.0 - "@aws-sdk/middleware-recursion-detection": 3.667.0 - "@aws-sdk/middleware-user-agent": 3.669.0 - "@aws-sdk/region-config-resolver": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-endpoints": 3.667.0 - "@aws-sdk/util-user-agent-browser": 3.675.0 - "@aws-sdk/util-user-agent-node": 3.669.0 - "@smithy/config-resolver": ^3.0.9 - "@smithy/core": ^2.4.8 - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/hash-node": ^3.0.7 - "@smithy/invalid-dependency": ^3.0.7 - "@smithy/middleware-content-length": ^3.0.9 - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-retry": ^3.0.23 - "@smithy/middleware-serde": ^3.0.7 - "@smithy/middleware-stack": ^3.0.7 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/credential-provider-node": 3.693.0 + "@aws-sdk/middleware-host-header": 3.693.0 + "@aws-sdk/middleware-logger": 3.693.0 + "@aws-sdk/middleware-recursion-detection": 3.693.0 + "@aws-sdk/middleware-user-agent": 3.693.0 + "@aws-sdk/region-config-resolver": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-endpoints": 3.693.0 + "@aws-sdk/util-user-agent-browser": 3.693.0 + "@aws-sdk/util-user-agent-node": 3.693.0 + "@smithy/config-resolver": ^3.0.11 + "@smithy/core": ^2.5.2 + "@smithy/fetch-http-handler": ^4.1.0 + "@smithy/hash-node": ^3.0.9 + "@smithy/invalid-dependency": ^3.0.9 + "@smithy/middleware-content-length": ^3.0.11 + "@smithy/middleware-endpoint": ^3.2.2 + "@smithy/middleware-retry": ^3.0.26 + "@smithy/middleware-serde": ^3.0.9 + "@smithy/middleware-stack": ^3.0.9 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/node-http-handler": ^3.3.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/url-parser": ^3.0.9 "@smithy/util-base64": ^3.0.0 "@smithy/util-body-length-browser": ^3.0.0 "@smithy/util-body-length-node": ^3.0.0 - "@smithy/util-defaults-mode-browser": ^3.0.23 - "@smithy/util-defaults-mode-node": ^3.0.23 - "@smithy/util-endpoints": ^2.1.3 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-retry": ^3.0.7 + "@smithy/util-defaults-mode-browser": ^3.0.26 + "@smithy/util-defaults-mode-node": ^3.0.26 + "@smithy/util-endpoints": ^2.1.5 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-retry": ^3.0.9 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 peerDependencies: - "@aws-sdk/client-sts": ^3.675.0 - checksum: 5bc6ec63b6881e02f00ea76141d063c28d8de2d93434fde987afff744ea8ef19c7bbf1bf8ecc2aa03a6780d7be43b0ea562f8565cfb37badb36bf183b060b3a5 + "@aws-sdk/client-sts": ^3.693.0 + checksum: 3a8c7717a329cc1a8d4f57494056be01682c49d3405164484701c46960fd1c02991fdee607c079ea675d6e698d7dfc6161ae200905e0bbca87cba162129e8647 languageName: node linkType: hard -"@aws-sdk/client-sso@npm:3.675.0": - version: 3.675.0 - resolution: "@aws-sdk/client-sso@npm:3.675.0" +"@aws-sdk/client-sso@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/client-sso@npm:3.693.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/middleware-host-header": 3.667.0 - "@aws-sdk/middleware-logger": 3.667.0 - "@aws-sdk/middleware-recursion-detection": 3.667.0 - "@aws-sdk/middleware-user-agent": 3.669.0 - "@aws-sdk/region-config-resolver": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-endpoints": 3.667.0 - "@aws-sdk/util-user-agent-browser": 3.675.0 - "@aws-sdk/util-user-agent-node": 3.669.0 - "@smithy/config-resolver": ^3.0.9 - "@smithy/core": ^2.4.8 - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/hash-node": ^3.0.7 - "@smithy/invalid-dependency": ^3.0.7 - "@smithy/middleware-content-length": ^3.0.9 - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-retry": ^3.0.23 - "@smithy/middleware-serde": ^3.0.7 - "@smithy/middleware-stack": ^3.0.7 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/middleware-host-header": 3.693.0 + "@aws-sdk/middleware-logger": 3.693.0 + "@aws-sdk/middleware-recursion-detection": 3.693.0 + "@aws-sdk/middleware-user-agent": 3.693.0 + "@aws-sdk/region-config-resolver": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-endpoints": 3.693.0 + "@aws-sdk/util-user-agent-browser": 3.693.0 + "@aws-sdk/util-user-agent-node": 3.693.0 + "@smithy/config-resolver": ^3.0.11 + "@smithy/core": ^2.5.2 + "@smithy/fetch-http-handler": ^4.1.0 + "@smithy/hash-node": ^3.0.9 + "@smithy/invalid-dependency": ^3.0.9 + "@smithy/middleware-content-length": ^3.0.11 + "@smithy/middleware-endpoint": ^3.2.2 + "@smithy/middleware-retry": ^3.0.26 + "@smithy/middleware-serde": ^3.0.9 + "@smithy/middleware-stack": ^3.0.9 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/node-http-handler": ^3.3.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/url-parser": ^3.0.9 "@smithy/util-base64": ^3.0.0 "@smithy/util-body-length-browser": ^3.0.0 "@smithy/util-body-length-node": ^3.0.0 - "@smithy/util-defaults-mode-browser": ^3.0.23 - "@smithy/util-defaults-mode-node": ^3.0.23 - "@smithy/util-endpoints": ^2.1.3 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-retry": ^3.0.7 + "@smithy/util-defaults-mode-browser": ^3.0.26 + "@smithy/util-defaults-mode-node": ^3.0.26 + "@smithy/util-endpoints": ^2.1.5 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-retry": ^3.0.9 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: f478c7c997e99fb8ea381ff6580faa0bc6f4bbfbafd41ed3a4521b1dcd7c0ee78cc431373f3b9d4ae385f9e2c30b85e83831ed2de6a0dbec831dd5ad7a59aaf9 + checksum: f48c7643bb52e882ec4d64e4e013d1c3e7f6654a87cec207f9aee2f07a50521814797190046c3d1425621d5fca059794d13f1a50738bc30cbe0a311f2231a50b languageName: node linkType: hard -"@aws-sdk/client-sts@npm:3.675.0, @aws-sdk/client-sts@npm:^3.350.0": - version: 3.675.0 - resolution: "@aws-sdk/client-sts@npm:3.675.0" +"@aws-sdk/client-sts@npm:3.693.0, @aws-sdk/client-sts@npm:^3.350.0": + version: 3.693.0 + resolution: "@aws-sdk/client-sts@npm:3.693.0" dependencies: "@aws-crypto/sha256-browser": 5.2.0 "@aws-crypto/sha256-js": 5.2.0 - "@aws-sdk/client-sso-oidc": 3.675.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/credential-provider-node": 3.675.0 - "@aws-sdk/middleware-host-header": 3.667.0 - "@aws-sdk/middleware-logger": 3.667.0 - "@aws-sdk/middleware-recursion-detection": 3.667.0 - "@aws-sdk/middleware-user-agent": 3.669.0 - "@aws-sdk/region-config-resolver": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-endpoints": 3.667.0 - "@aws-sdk/util-user-agent-browser": 3.675.0 - "@aws-sdk/util-user-agent-node": 3.669.0 - "@smithy/config-resolver": ^3.0.9 - "@smithy/core": ^2.4.8 - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/hash-node": ^3.0.7 - "@smithy/invalid-dependency": ^3.0.7 - "@smithy/middleware-content-length": ^3.0.9 - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/middleware-retry": ^3.0.23 - "@smithy/middleware-serde": ^3.0.7 - "@smithy/middleware-stack": ^3.0.7 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/url-parser": ^3.0.7 + "@aws-sdk/client-sso-oidc": 3.693.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/credential-provider-node": 3.693.0 + "@aws-sdk/middleware-host-header": 3.693.0 + "@aws-sdk/middleware-logger": 3.693.0 + "@aws-sdk/middleware-recursion-detection": 3.693.0 + "@aws-sdk/middleware-user-agent": 3.693.0 + "@aws-sdk/region-config-resolver": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-endpoints": 3.693.0 + "@aws-sdk/util-user-agent-browser": 3.693.0 + "@aws-sdk/util-user-agent-node": 3.693.0 + "@smithy/config-resolver": ^3.0.11 + "@smithy/core": ^2.5.2 + "@smithy/fetch-http-handler": ^4.1.0 + "@smithy/hash-node": ^3.0.9 + "@smithy/invalid-dependency": ^3.0.9 + "@smithy/middleware-content-length": ^3.0.11 + "@smithy/middleware-endpoint": ^3.2.2 + "@smithy/middleware-retry": ^3.0.26 + "@smithy/middleware-serde": ^3.0.9 + "@smithy/middleware-stack": ^3.0.9 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/node-http-handler": ^3.3.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/url-parser": ^3.0.9 "@smithy/util-base64": ^3.0.0 "@smithy/util-body-length-browser": ^3.0.0 "@smithy/util-body-length-node": ^3.0.0 - "@smithy/util-defaults-mode-browser": ^3.0.23 - "@smithy/util-defaults-mode-node": ^3.0.23 - "@smithy/util-endpoints": ^2.1.3 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-retry": ^3.0.7 + "@smithy/util-defaults-mode-browser": ^3.0.26 + "@smithy/util-defaults-mode-node": ^3.0.26 + "@smithy/util-endpoints": ^2.1.5 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-retry": ^3.0.9 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 257cf92ccbe3dcfac57c8657c347de4d04f73612025f15dd748b7f65afbc9b41bf623dcf90cbaf6c24546eb025a213364d69db2d30082afeb13d198bb1094064 + checksum: f2b269ebd246d26f525fab4d267d05f0993ac7cec4f25fd170bc29acbb777b2dabaa7051e09247abd1f9974b1e1b42e1b1272e4705445ee26b72e4f5c4888560 languageName: node linkType: hard -"@aws-sdk/core@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/core@npm:3.667.0" +"@aws-sdk/core@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/core@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/core": ^2.4.8 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/property-provider": ^3.1.7 - "@smithy/protocol-http": ^4.1.4 - "@smithy/signature-v4": ^4.2.0 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/util-middleware": ^3.0.7 + "@aws-sdk/types": 3.692.0 + "@smithy/core": ^2.5.2 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/property-provider": ^3.1.9 + "@smithy/protocol-http": ^4.1.6 + "@smithy/signature-v4": ^4.2.2 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/util-middleware": ^3.0.9 fast-xml-parser: 4.4.1 tslib: ^2.6.2 - checksum: da4d0e3971e88d2dc72214ea04f95f35e4e03f6323f3bc438e378cd479816d5ee3aa8fd224778639803d344691edd6fac2096b26bda337afdaba8abcee3bd40c + checksum: 7ef29d5a8d524f26cf4fe09657d4b30948749db6a3b53433ca644de52509f4cfd7de47b2893d34ab763b845d822fb780ca28ca744bf68cdd056e60d6c8fa7502 languageName: node linkType: hard -"@aws-sdk/credential-provider-cognito-identity@npm:3.675.0": - version: 3.675.0 - resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.675.0" +"@aws-sdk/credential-provider-cognito-identity@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-cognito-identity@npm:3.693.0" dependencies: - "@aws-sdk/client-cognito-identity": 3.675.0 - "@aws-sdk/types": 3.667.0 - "@smithy/property-provider": ^3.1.7 - "@smithy/types": ^3.5.0 + "@aws-sdk/client-cognito-identity": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/property-provider": ^3.1.9 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: b5fb07a8108556726df0f5237df103cb2595dcda00d5b4f11c58321dfacb177d1907d044996139142374729d458e25f29b157a3e597ea3ea81826b6ca17219cb + checksum: 500030b7a319a46aea98aecea24b2ed8d320d2a956c5bb81ef3730b4d6ea58d5e8c91b7b9462c41b36d79d06a02b8924652ef470261787d0fcbad532d945740f languageName: node linkType: hard -"@aws-sdk/credential-provider-env@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/credential-provider-env@npm:3.667.0" +"@aws-sdk/credential-provider-env@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-env@npm:3.693.0" dependencies: - "@aws-sdk/core": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/property-provider": ^3.1.7 - "@smithy/types": ^3.5.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/property-provider": ^3.1.9 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: d077c5370ba5a90e11e0722d4a7820c8075a610bd099c519b710a58fc1770ecd2ad3a401b00d4467016c215df293e08a25ff798f42deb7bab8a559eca2fff245 + checksum: 7bf20b2eb9da4396756e13912eb8b11a9884e51656ebc1c949709802464ab86e4c364929db56caed9539bd5102999d96f4101b38500784c26dc28cd9a7bd8d97 languageName: node linkType: hard -"@aws-sdk/credential-provider-http@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/credential-provider-http@npm:3.667.0" +"@aws-sdk/credential-provider-http@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-http@npm:3.693.0" dependencies: - "@aws-sdk/core": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/fetch-http-handler": ^3.2.9 - "@smithy/node-http-handler": ^3.2.4 - "@smithy/property-provider": ^3.1.7 - "@smithy/protocol-http": ^4.1.4 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 - "@smithy/util-stream": ^3.1.9 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/fetch-http-handler": ^4.1.0 + "@smithy/node-http-handler": ^3.3.0 + "@smithy/property-provider": ^3.1.9 + "@smithy/protocol-http": ^4.1.6 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 + "@smithy/util-stream": ^3.3.0 tslib: ^2.6.2 - checksum: 9f300ca39a607e10c6b79f374de6e306dabe54ceab527b898bcd205b6b7225e01f03dc888c9b4258aadf4b6d786547fc599787a246eb797c3e80044c7ea9cf09 + checksum: aeff7af8b0b2d7ffa0f66ba12ef52e49ef443bbfea7fae0096c8610640e55fa91b553c450dead914ea26f8c0c32dd42d19773169dd469996c161e9c6ecb34e92 languageName: node linkType: hard -"@aws-sdk/credential-provider-ini@npm:3.675.0": - version: 3.675.0 - resolution: "@aws-sdk/credential-provider-ini@npm:3.675.0" +"@aws-sdk/credential-provider-ini@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-ini@npm:3.693.0" dependencies: - "@aws-sdk/core": 3.667.0 - "@aws-sdk/credential-provider-env": 3.667.0 - "@aws-sdk/credential-provider-http": 3.667.0 - "@aws-sdk/credential-provider-process": 3.667.0 - "@aws-sdk/credential-provider-sso": 3.675.0 - "@aws-sdk/credential-provider-web-identity": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/credential-provider-imds": ^3.2.4 - "@smithy/property-provider": ^3.1.7 - "@smithy/shared-ini-file-loader": ^3.1.8 - "@smithy/types": ^3.5.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/credential-provider-env": 3.693.0 + "@aws-sdk/credential-provider-http": 3.693.0 + "@aws-sdk/credential-provider-process": 3.693.0 + "@aws-sdk/credential-provider-sso": 3.693.0 + "@aws-sdk/credential-provider-web-identity": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/credential-provider-imds": ^3.2.6 + "@smithy/property-provider": ^3.1.9 + "@smithy/shared-ini-file-loader": ^3.1.10 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 peerDependencies: - "@aws-sdk/client-sts": ^3.675.0 - checksum: cbe841276cd155181bde85a74d01f690f7aa444ef6b4c8ac824e718d3ce840c11d2e3355412a0bf6e04367402af1b2e56720f05cd5ddea6fcc644bb3bef93b6f + "@aws-sdk/client-sts": ^3.693.0 + checksum: ab8358382bf74ae74ee162e43684455866a8855cc7b7b96543fb8276087f41d06df995b5be964f9ec0f5d34f4c48841971d17bbf2f169692dfdf2f08cb05f009 languageName: node linkType: hard -"@aws-sdk/credential-provider-node@npm:3.675.0, @aws-sdk/credential-provider-node@npm:^3.350.0": - version: 3.675.0 - resolution: "@aws-sdk/credential-provider-node@npm:3.675.0" +"@aws-sdk/credential-provider-node@npm:3.693.0, @aws-sdk/credential-provider-node@npm:^3.350.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-node@npm:3.693.0" dependencies: - "@aws-sdk/credential-provider-env": 3.667.0 - "@aws-sdk/credential-provider-http": 3.667.0 - "@aws-sdk/credential-provider-ini": 3.675.0 - "@aws-sdk/credential-provider-process": 3.667.0 - "@aws-sdk/credential-provider-sso": 3.675.0 - "@aws-sdk/credential-provider-web-identity": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/credential-provider-imds": ^3.2.4 - "@smithy/property-provider": ^3.1.7 - "@smithy/shared-ini-file-loader": ^3.1.8 - "@smithy/types": ^3.5.0 + "@aws-sdk/credential-provider-env": 3.693.0 + "@aws-sdk/credential-provider-http": 3.693.0 + "@aws-sdk/credential-provider-ini": 3.693.0 + "@aws-sdk/credential-provider-process": 3.693.0 + "@aws-sdk/credential-provider-sso": 3.693.0 + "@aws-sdk/credential-provider-web-identity": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/credential-provider-imds": ^3.2.6 + "@smithy/property-provider": ^3.1.9 + "@smithy/shared-ini-file-loader": ^3.1.10 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: 9f36e8e8643323dcb88d1412b18d45a0e040f195e88b02224d209068d964679cdfd4e1d1e0af8db00e3b0f4614fb498e545e615f5024c6aed06fabadee4fae36 + checksum: d64e9966eec6d9342c57af205d93d8fe6243dc532c0ca88cc7fe5f91da29d69fdd2b01374b8662f0d3e1983dc29a4df820e97cb5a75fa10781c87d87508a2dfe languageName: node linkType: hard -"@aws-sdk/credential-provider-process@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/credential-provider-process@npm:3.667.0" +"@aws-sdk/credential-provider-process@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-process@npm:3.693.0" dependencies: - "@aws-sdk/core": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/property-provider": ^3.1.7 - "@smithy/shared-ini-file-loader": ^3.1.8 - "@smithy/types": ^3.5.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/property-provider": ^3.1.9 + "@smithy/shared-ini-file-loader": ^3.1.10 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: eab090d81ca09ca690e94f4a37a81c20479b3099c25f410684610de707d17ee8dc20750a3bdd0c7c5eaec1d843313acee3e2a260aed37c1379cf0d36b7044f36 + checksum: 58ee27e5e7e1610b40db035156a89f942002dfbaee422fef63057c4e4df897b93589549e4356b0f8dedb233f4b367263dd79e0de1ae5bed3b4169a5f4914956a languageName: node linkType: hard -"@aws-sdk/credential-provider-sso@npm:3.675.0": - version: 3.675.0 - resolution: "@aws-sdk/credential-provider-sso@npm:3.675.0" +"@aws-sdk/credential-provider-sso@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-sso@npm:3.693.0" dependencies: - "@aws-sdk/client-sso": 3.675.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/token-providers": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/property-provider": ^3.1.7 - "@smithy/shared-ini-file-loader": ^3.1.8 - "@smithy/types": ^3.5.0 + "@aws-sdk/client-sso": 3.693.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/token-providers": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/property-provider": ^3.1.9 + "@smithy/shared-ini-file-loader": ^3.1.10 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: a72ee7aee3d34f08c8a4aa8ac8b4985768f98aa5bded4b4d962c8d2371cff47f66811113f9fde80de83459253c12c904b63d86076de184a33bbe4868eb9e21ae + checksum: b45b1c611524f2c826f9f1dd33aa28d7ebfc2800a1e06414bcce9ed420d74fcdb63b176a572403c4a9db4d4908efdb2af149a4d127bde5a420e38ef754a71bef languageName: node linkType: hard -"@aws-sdk/credential-provider-web-identity@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/credential-provider-web-identity@npm:3.667.0" +"@aws-sdk/credential-provider-web-identity@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/credential-provider-web-identity@npm:3.693.0" dependencies: - "@aws-sdk/core": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/property-provider": ^3.1.7 - "@smithy/types": ^3.5.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/property-provider": ^3.1.9 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 peerDependencies: - "@aws-sdk/client-sts": ^3.667.0 - checksum: 02dff83f72a7d4a2ab4c763ae0c73a8b3d8c4cff89b10d8015d08db2699638babb0458280c60799bef69efce509c3c94ad6e69a041a0df25bc15bd05be1500dc + "@aws-sdk/client-sts": ^3.693.0 + checksum: 800ca10277a2a27e12dd4ddd6ccbe0b1b8acc4fa53ed9f32a492aa19ddd86cf710c5215c124748b0f2f0d4f486557cc156fd46fef40a8b87405bd58853ddb2ad languageName: node linkType: hard "@aws-sdk/credential-providers@npm:^3.350.0": - version: 3.675.0 - resolution: "@aws-sdk/credential-providers@npm:3.675.0" - dependencies: - "@aws-sdk/client-cognito-identity": 3.675.0 - "@aws-sdk/client-sso": 3.675.0 - "@aws-sdk/client-sts": 3.675.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/credential-provider-cognito-identity": 3.675.0 - "@aws-sdk/credential-provider-env": 3.667.0 - "@aws-sdk/credential-provider-http": 3.667.0 - "@aws-sdk/credential-provider-ini": 3.675.0 - "@aws-sdk/credential-provider-node": 3.675.0 - "@aws-sdk/credential-provider-process": 3.667.0 - "@aws-sdk/credential-provider-sso": 3.675.0 - "@aws-sdk/credential-provider-web-identity": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@smithy/credential-provider-imds": ^3.2.4 - "@smithy/property-provider": ^3.1.7 - "@smithy/types": ^3.5.0 + version: 3.693.0 + resolution: "@aws-sdk/credential-providers@npm:3.693.0" + dependencies: + "@aws-sdk/client-cognito-identity": 3.693.0 + "@aws-sdk/client-sso": 3.693.0 + "@aws-sdk/client-sts": 3.693.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/credential-provider-cognito-identity": 3.693.0 + "@aws-sdk/credential-provider-env": 3.693.0 + "@aws-sdk/credential-provider-http": 3.693.0 + "@aws-sdk/credential-provider-ini": 3.693.0 + "@aws-sdk/credential-provider-node": 3.693.0 + "@aws-sdk/credential-provider-process": 3.693.0 + "@aws-sdk/credential-provider-sso": 3.693.0 + "@aws-sdk/credential-provider-web-identity": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/credential-provider-imds": ^3.2.6 + "@smithy/property-provider": ^3.1.9 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: e0eb8db74f1aed41b8b97280efbc306fbf454a2dcf3d03792a57948cbbfe77178539f27628a0e45cb2ae421290e0779109b22b81cbd7c5a625fca0b5a2b98db4 + checksum: 45f12b7e77706f72a656728632ac3413cf33cad71b4d89e4291756a3440b7e1563664f95eed9ef85b022dd80aab5f8a578e7d17333781767b4bdfb8b6d723e34 languageName: node linkType: hard "@aws-sdk/lib-storage@npm:^3.350.0": - version: 3.676.0 - resolution: "@aws-sdk/lib-storage@npm:3.676.0" + version: 3.693.0 + resolution: "@aws-sdk/lib-storage@npm:3.693.0" dependencies: - "@smithy/abort-controller": ^3.1.5 - "@smithy/middleware-endpoint": ^3.1.4 - "@smithy/smithy-client": ^3.4.0 + "@smithy/abort-controller": ^3.1.7 + "@smithy/middleware-endpoint": ^3.2.2 + "@smithy/smithy-client": ^3.4.3 buffer: 5.6.0 events: 3.3.0 stream-browserify: 3.0.0 tslib: ^2.6.2 peerDependencies: - "@aws-sdk/client-s3": ^3.676.0 - checksum: 7c044d077afd1ebd9c321e0efa726cc06fde9be555bd25ee0f9332bcfa25ef812dbf61b8210999a0c88f9058934b6f286363dd530f1345a7194be03d66a9d407 + "@aws-sdk/client-s3": ^3.693.0 + checksum: a70da2191efd6eca7cb02d8ca888002814b2cc386f3325e6132c5e71bc106f6b1e48b2495c0963f48745186188dbcc3ea8b20486a4717cce8a43afc39e823bb3 languageName: node linkType: hard -"@aws-sdk/middleware-bucket-endpoint@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.667.0" +"@aws-sdk/middleware-bucket-endpoint@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-bucket-endpoint@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-arn-parser": 3.568.0 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-arn-parser": 3.693.0 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/protocol-http": ^4.1.6 + "@smithy/types": ^3.7.0 "@smithy/util-config-provider": ^3.0.0 tslib: ^2.6.2 - checksum: b67c9438fc574848691072e8f22003d600818489dd066183f5d39243eeae6863170b7c2cfbed0fba16864e2fc6a3198cd23a916faa00086014600c5832b9c954 + checksum: 7e77ec9d07737bc0e5e7f3dafa18605990ddce2b34c8702db9e097cc9f20ac26247bf6332951fcfef9127a3f07ad452c6df669c14b649f8f260f6c2dd1b7cb4d languageName: node linkType: hard -"@aws-sdk/middleware-expect-continue@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/middleware-expect-continue@npm:3.667.0" +"@aws-sdk/middleware-expect-continue@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-expect-continue@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: c5da94a95ba837bfa3bddd17c9cf0be9e63b0f02fcbfd3394ecdc918f6949715847be8568e710aa5631a628b6b6f27d0ecaad23ff8917207f3ef6a948e62e68f + checksum: f16766b456a9731e7087d8450dc8481bd9bb6d8e0e5ad17c590095f530d5ec819afc8db16052dfe5e885594f2cb5ca34ecf6a97d212285e03fef04ebff35d140 languageName: node linkType: hard -"@aws-sdk/middleware-flexible-checksums@npm:3.669.0": - version: 3.669.0 - resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.669.0" +"@aws-sdk/middleware-flexible-checksums@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-flexible-checksums@npm:3.693.0" dependencies: "@aws-crypto/crc32": 5.2.0 "@aws-crypto/crc32c": 5.2.0 - "@aws-sdk/core": 3.667.0 - "@aws-sdk/types": 3.667.0 + "@aws-crypto/util": 5.2.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/types": 3.692.0 "@smithy/is-array-buffer": ^3.0.0 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 - "@smithy/util-middleware": ^3.0.7 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/protocol-http": ^4.1.6 + "@smithy/types": ^3.7.0 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-stream": ^3.3.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 65fc21716ec7d1ff1f241e1fe90a1ae185a8e2421ebaa8b41118006b787df91335b1a6188bd4c7efa722ca427d71fae9439fbbe9d12fc9896ffba70a15540b7d + checksum: 225d83a3c2de3e0ab560adc70f749a370b26c33491b428d2f25a348d7c33b91f3b2c4f798f5d12fbad2e305cf29aba42909310a74fb298f17f90f175473727ae languageName: node linkType: hard -"@aws-sdk/middleware-host-header@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/middleware-host-header@npm:3.667.0" +"@aws-sdk/middleware-host-header@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-host-header@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: e545c3f2182dc6bf812ef19219850e3b86dfc72e7a596b70c6444ccccf79d6939cc1ad00c0261aaacf4cdaf7e5e1f0a17b11a5d197da467a518444172876e671 + checksum: 547411ba412889104753f0948db38a25ef632716bb6d4dd62e315c505fd480afc3dd40de69a1c6e9bfea72ad444b9982edb72f46025955bdf133865585e2439c languageName: node linkType: hard -"@aws-sdk/middleware-location-constraint@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/middleware-location-constraint@npm:3.667.0" +"@aws-sdk/middleware-location-constraint@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-location-constraint@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: bd92e6cb7a6bf823d7ff8703b668498820634f47f503d6d854b3fc809bf7fca65cc6673b5c057c88ae45c64a2926cbe291f46ee9d8fcc6be96bbfe41409242bf + checksum: faf609e791c79db23cd33deb406db915ad2f95865490d343e16cad120b1b70eb19540c1e32d6f3767f3b651006cdd2af0d144fc0bf20eb60c589304d4db756c0 languageName: node linkType: hard -"@aws-sdk/middleware-logger@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/middleware-logger@npm:3.667.0" +"@aws-sdk/middleware-logger@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-logger@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: 47d7c9fa8f6d5cceeafe91fc35b63c9a18b57bdf289a2d44983409af61c3c52330ff6400c5d1208a250f98bda62d4c1eddb91f3f6c4f83846b10c3c35e317748 + checksum: 15f11cf8df63387f2c3c4694aea99a67cd82f1e6d657576847ae3a73528ef1ecca86c76dcc2f8c0cff84d317ae6604f18427b86bc93620db3437b7823645022d languageName: node linkType: hard -"@aws-sdk/middleware-recursion-detection@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/middleware-recursion-detection@npm:3.667.0" +"@aws-sdk/middleware-recursion-detection@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-recursion-detection@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: 80b4f28b76e2bba9058ebdf5d19d889f0b5b005ebae0ae7998097620b53502b7f5f8fdd5d17ae4a44a2357f83977e55e840f93255cfcb41a013de0c830553022 + checksum: 070a244828ed1c2d45fa6a1355fbefc8c14a4f76d42be6b4c9e6e1a8bf5d7fc8d581c043a6115f8d83ecabb4adde526ca573ce3b7ed6e36491cfec9b2223ea25 languageName: node linkType: hard -"@aws-sdk/middleware-sdk-s3@npm:3.674.0": - version: 3.674.0 - resolution: "@aws-sdk/middleware-sdk-s3@npm:3.674.0" +"@aws-sdk/middleware-sdk-s3@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-sdk-s3@npm:3.693.0" dependencies: - "@aws-sdk/core": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-arn-parser": 3.568.0 - "@smithy/core": ^2.4.8 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/protocol-http": ^4.1.4 - "@smithy/signature-v4": ^4.2.0 - "@smithy/smithy-client": ^3.4.0 - "@smithy/types": ^3.5.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-arn-parser": 3.693.0 + "@smithy/core": ^2.5.2 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/protocol-http": ^4.1.6 + "@smithy/signature-v4": ^4.2.2 + "@smithy/smithy-client": ^3.4.3 + "@smithy/types": ^3.7.0 "@smithy/util-config-provider": ^3.0.0 - "@smithy/util-middleware": ^3.0.7 - "@smithy/util-stream": ^3.1.9 + "@smithy/util-middleware": ^3.0.9 + "@smithy/util-stream": ^3.3.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: d2138edb382ce0f1e9a2e73766214f5b2620a7de921944c493b0c4864a50233857b42daccb3efa9187fcda098b9f910f8183233436004757dd3125fa29a58953 + checksum: 8237c92de9aadd3776134ad419cfa97b0617da001d17bde157146a73c5e68fcaa2a64c3e596c12a757de6c29cb105dc26dd1add087880ae535393360e47d7ab1 languageName: node linkType: hard -"@aws-sdk/middleware-ssec@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/middleware-ssec@npm:3.667.0" +"@aws-sdk/middleware-ssec@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-ssec@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: 16210a33fb0fc718b46196f3d8cd4931e04b2e09660d4c41ff95a04dbbd09f267115d7e30d29efd1e87102e515e659260714df43b89c409cd53b624767750641 + checksum: c576f47f72e79caad5a9e377f4e8814f3bfaf5c4dc5f55a9fcbddc20c1f8e7bf07c6d392bae90ea02f68c14596b0191bea91a024d7b289941df136066c803293 languageName: node linkType: hard -"@aws-sdk/middleware-user-agent@npm:3.669.0": - version: 3.669.0 - resolution: "@aws-sdk/middleware-user-agent@npm:3.669.0" +"@aws-sdk/middleware-user-agent@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/middleware-user-agent@npm:3.693.0" dependencies: - "@aws-sdk/core": 3.667.0 - "@aws-sdk/types": 3.667.0 - "@aws-sdk/util-endpoints": 3.667.0 - "@smithy/core": ^2.4.8 - "@smithy/protocol-http": ^4.1.4 - "@smithy/types": ^3.5.0 + "@aws-sdk/core": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@aws-sdk/util-endpoints": 3.693.0 + "@smithy/core": ^2.5.2 + "@smithy/protocol-http": ^4.1.6 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: c1295321b7767c726428db155d417cdc3459532746bf11b18c5ea296c128137379570a7f83cd1da012b8d64fb0228b9e75f9b66fdd7249f945f020c901bcdb9d + checksum: e2ba47434d3cbce428ce5465f1cfb32288294990bd841ac185e776940b4ff36e716b39682eb6dfd6205802adb9ac0175d23176c7816a11f282ff5a3eba33d3cd languageName: node linkType: hard -"@aws-sdk/region-config-resolver@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/region-config-resolver@npm:3.667.0" +"@aws-sdk/region-config-resolver@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/region-config-resolver@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/types": ^3.7.0 "@smithy/util-config-provider": ^3.0.0 - "@smithy/util-middleware": ^3.0.7 + "@smithy/util-middleware": ^3.0.9 tslib: ^2.6.2 - checksum: be102ae253d5c6ec934151a427e24187620a180ad7fadf17af14244e3e3dc7dd7a6c7c9c3597adc2994aa2fb4f39146749a4070b6cf96ac182f177161a0f48dc + checksum: cd36379af28bf74110f285a97cd6e4c4ecbbaa85af3e230973163c0be561a9dcee978b7d822181d0e88199a3562bd6b17d8a97da5dc169285bf1036b083ce988 languageName: node linkType: hard -"@aws-sdk/signature-v4-multi-region@npm:3.674.0": - version: 3.674.0 - resolution: "@aws-sdk/signature-v4-multi-region@npm:3.674.0" +"@aws-sdk/signature-v4-multi-region@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/signature-v4-multi-region@npm:3.693.0" dependencies: - "@aws-sdk/middleware-sdk-s3": 3.674.0 - "@aws-sdk/types": 3.667.0 - "@smithy/protocol-http": ^4.1.4 - "@smithy/signature-v4": ^4.2.0 - "@smithy/types": ^3.5.0 + "@aws-sdk/middleware-sdk-s3": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/protocol-http": ^4.1.6 + "@smithy/signature-v4": ^4.2.2 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: 02914e48fe1e6601d9fa1915526a57e0ea358bea83cfbea14cdadfbf490c724437da8c69bc9e3ec6a4df31f65a6d0530f743931a70c3b109db7a07f06c4c0120 + checksum: e989c0602f6297b2cf2a1aeb42e7036242b5b97cc11b3ed14ed9f23dfa8a9637cb10443621bbff569979874294c64d777da6477abb2a6c12bf5b7b096c834476 languageName: node linkType: hard -"@aws-sdk/token-providers@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/token-providers@npm:3.667.0" +"@aws-sdk/token-providers@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/token-providers@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/property-provider": ^3.1.7 - "@smithy/shared-ini-file-loader": ^3.1.8 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/property-provider": ^3.1.9 + "@smithy/shared-ini-file-loader": ^3.1.10 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 peerDependencies: - "@aws-sdk/client-sso-oidc": ^3.667.0 - checksum: cd783b95f3bbe6b33eb75abbad2ea36cec91fc2788376711a2a866e3d1f17b21313004f3e75dadd270ca41ee59f3cc57198dbf51bf222d472ccda249c47ece3b + "@aws-sdk/client-sso-oidc": ^3.693.0 + checksum: 34c68e56ade25e0fc023da1e90ad58906a8714bf2ee0a0d1c59365f8776cf03bfe059d1508a68bc8a32e8bb2fc89a885cc5de63c2e0de57e1c43c38242e8bf4b languageName: node linkType: hard @@ -1001,83 +986,83 @@ __metadata: languageName: node linkType: hard -"@aws-sdk/types@npm:3.667.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0": - version: 3.667.0 - resolution: "@aws-sdk/types@npm:3.667.0" +"@aws-sdk/types@npm:3.692.0, @aws-sdk/types@npm:^3.222.0, @aws-sdk/types@npm:^3.347.0": + version: 3.692.0 + resolution: "@aws-sdk/types@npm:3.692.0" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: 54471245c8e5ba7542e2e19044b350cde965aa7ef71fcbc931e4ae2436ff620b07234d777035db6b34e5deac74ac41efaa41b6b378044d4597e7463ecff22925 + checksum: 6261518ddc194f5daeab7ad6fdd04442b6c304938200eb361336c321d9648cf523c315e7565d13640606bc721bca43a35b416c5768a117083c4babf232730d31 languageName: node linkType: hard -"@aws-sdk/util-arn-parser@npm:3.568.0, @aws-sdk/util-arn-parser@npm:^3.310.0": - version: 3.568.0 - resolution: "@aws-sdk/util-arn-parser@npm:3.568.0" +"@aws-sdk/util-arn-parser@npm:3.693.0, @aws-sdk/util-arn-parser@npm:^3.310.0": + version: 3.693.0 + resolution: "@aws-sdk/util-arn-parser@npm:3.693.0" dependencies: tslib: ^2.6.2 - checksum: e3c45e5d524a772954d0a33614d397414185b9eb635423d01253cad1c1b9add625798ed9cf23343d156fae89c701f484bc062ab673f67e2e2edfe362fde6d170 + checksum: de35fab41f61a37a8af3e80b4cdb8d861603ae8f6a85b266d8ad4f9aca14e6cdb0d260c88a78ab692ea0778626afcd53bbfe95a45d4f9857ae8a13251e80f289 languageName: node linkType: hard -"@aws-sdk/util-endpoints@npm:3.667.0": - version: 3.667.0 - resolution: "@aws-sdk/util-endpoints@npm:3.667.0" +"@aws-sdk/util-endpoints@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/util-endpoints@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/types": ^3.5.0 - "@smithy/util-endpoints": ^2.1.3 + "@aws-sdk/types": 3.692.0 + "@smithy/types": ^3.7.0 + "@smithy/util-endpoints": ^2.1.5 tslib: ^2.6.2 - checksum: c9e2baccba71c43f52570ff0c2e522126657fadd4dba184cd9edd3d4f17bfa527728e5c4f841cedaa527cab6ad4ecc4dcc87714748785fbdeb98b29b9f4cbc24 + checksum: 9fe1ee8da39c72cd6fc5b7bff9ee6ab0ec5407e89dfb4204cbd6f3f2e7b37dac1fdfcc665b8806168bb4c3606382d02e58d5f024ae145928653d614de5630ee6 languageName: node linkType: hard "@aws-sdk/util-locate-window@npm:^3.0.0": - version: 3.568.0 - resolution: "@aws-sdk/util-locate-window@npm:3.568.0" + version: 3.693.0 + resolution: "@aws-sdk/util-locate-window@npm:3.693.0" dependencies: tslib: ^2.6.2 - checksum: 354db5187beee4203c7ec6583556ab14ecde9644c06aaa51fa2528131836d3fc73035a3b080c904e108c49defce20d5562893113b93d819b70497f47989bb578 + checksum: ff446f1247107c38c88b791b6a2ba25d63e3762819448550c27e18c329232ee3732df33562ada4123114409910f0bb9e6006add169ef0d5b8ce27ed9cde3ba82 languageName: node linkType: hard -"@aws-sdk/util-user-agent-browser@npm:3.675.0": - version: 3.675.0 - resolution: "@aws-sdk/util-user-agent-browser@npm:3.675.0" +"@aws-sdk/util-user-agent-browser@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/util-user-agent-browser@npm:3.693.0" dependencies: - "@aws-sdk/types": 3.667.0 - "@smithy/types": ^3.5.0 + "@aws-sdk/types": 3.692.0 + "@smithy/types": ^3.7.0 bowser: ^2.11.0 tslib: ^2.6.2 - checksum: 4aee69eb989edb674577c593d0b6eb493b68d11c9901d54500e1acc049d39312a259b057b6fba01a61fffc861c0548162085a8cd7d3b1477ac5ccb73d8d0c550 + checksum: 7c4cf88395ea2633c397c9eb9f33bb01ce0db2780016dea5c7294900e45e5fd419c7691fb961c4b81ce486f6a38166fb39182bce6c9cc12a48234d232056ee11 languageName: node linkType: hard -"@aws-sdk/util-user-agent-node@npm:3.669.0": - version: 3.669.0 - resolution: "@aws-sdk/util-user-agent-node@npm:3.669.0" +"@aws-sdk/util-user-agent-node@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/util-user-agent-node@npm:3.693.0" dependencies: - "@aws-sdk/middleware-user-agent": 3.669.0 - "@aws-sdk/types": 3.667.0 - "@smithy/node-config-provider": ^3.1.8 - "@smithy/types": ^3.5.0 + "@aws-sdk/middleware-user-agent": 3.693.0 + "@aws-sdk/types": 3.692.0 + "@smithy/node-config-provider": ^3.1.10 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 peerDependencies: aws-crt: ">=1.0.0" peerDependenciesMeta: aws-crt: optional: true - checksum: 89af06914764efbccc2bdd07f8cc26c4949a20dfed30064d71f1e310cfa9b3bf40a94c2245723209a790bdacf71ced9d5c2742760205879417e220f00808add2 + checksum: 27857144e7285b036a50043b0f829dae61b2f2c9a8a88a1b1c53835d2194ccf0a5d64151fc71f5297817657da4aaac95e8569dbb8a84883ec46c61246aeb66dc languageName: node linkType: hard -"@aws-sdk/xml-builder@npm:3.662.0": - version: 3.662.0 - resolution: "@aws-sdk/xml-builder@npm:3.662.0" +"@aws-sdk/xml-builder@npm:3.693.0": + version: 3.693.0 + resolution: "@aws-sdk/xml-builder@npm:3.693.0" dependencies: - "@smithy/types": ^3.5.0 + "@smithy/types": ^3.7.0 tslib: ^2.6.2 - checksum: 4571dfe225133ccad480b20cf3f0887386e90579608b524e4e84447c1e995aea1df8d6ec0ce82e7d121ad3f0d9d94c6a85a2ce9db22440da46f3bcb3fb7351d7 + checksum: 6f215d8d7a04ab934bf152fff3e87f89256395a130572a68944d96cf9b3fd6ae2393178860968cbb8532c69b715f6f9d205fd96063f0d458f78ec240084e4368 languageName: node linkType: hard @@ -1149,18 +1134,18 @@ __metadata: linkType: hard "@azure/core-rest-pipeline@npm:^1.10.1, @azure/core-rest-pipeline@npm:^1.17.0, @azure/core-rest-pipeline@npm:^1.3.0, @azure/core-rest-pipeline@npm:^1.9.1": - version: 1.17.0 - resolution: "@azure/core-rest-pipeline@npm:1.17.0" + version: 1.18.0 + resolution: "@azure/core-rest-pipeline@npm:1.18.0" dependencies: "@azure/abort-controller": ^2.0.0 "@azure/core-auth": ^1.8.0 "@azure/core-tracing": ^1.0.1 - "@azure/core-util": ^1.9.0 + "@azure/core-util": ^1.11.0 "@azure/logger": ^1.0.0 http-proxy-agent: ^7.0.0 https-proxy-agent: ^7.0.0 tslib: ^2.6.2 - checksum: 8a79cbaaae295964bb8d18cb44873e705ebe3f9217fe74d83415b7266e46c3d6297c799d6e5e49516b165d273e0b794bf0ed14bb6aa875d09d4a90c3a559b6df + checksum: 4c8e6572938fd693494ec44477b58afa7c16aed7ea8ef061fcc0cf8a8e602d7ea07676f46b8c850d38e04e5ac4ab10888f88bce8ffac6db1bd3b77bf07a07f29 languageName: node linkType: hard @@ -1173,7 +1158,7 @@ __metadata: languageName: node linkType: hard -"@azure/core-util@npm:^1.11.0, @azure/core-util@npm:^1.2.0, @azure/core-util@npm:^1.6.1, @azure/core-util@npm:^1.9.0": +"@azure/core-util@npm:^1.11.0, @azure/core-util@npm:^1.2.0, @azure/core-util@npm:^1.6.1": version: 1.11.0 resolution: "@azure/core-util@npm:1.11.0" dependencies: @@ -1225,29 +1210,29 @@ __metadata: linkType: hard "@azure/msal-browser@npm:^3.26.1": - version: 3.26.1 - resolution: "@azure/msal-browser@npm:3.26.1" + version: 3.27.0 + resolution: "@azure/msal-browser@npm:3.27.0" dependencies: - "@azure/msal-common": 14.15.0 - checksum: 70ebea1abc4bc6b0e5a250f865cffd24a1aeb615a35e7b572dad11369d486a7aeb4af60048c5f6a5bc3627fad65dbdc8c118f16086cb3f9cc03931699b08f4f7 + "@azure/msal-common": 14.16.0 + checksum: 22c7d087380405f87139a7dfa579b8a49a17d5493e748e1e609f5733bb7549dd5b8558d709f81500f8faa3feebbc2245f8978adc96dc2ce84c54825b37301465 languageName: node linkType: hard -"@azure/msal-common@npm:14.15.0": - version: 14.15.0 - resolution: "@azure/msal-common@npm:14.15.0" - checksum: 072e4ca58856997df2e82935c818801a69a85df16d7dccdfed02c1b8f8a772751594efe1b918433c760202348a99aa6ec9d99cc0f018ab2f1659186ad2a8b88e +"@azure/msal-common@npm:14.16.0": + version: 14.16.0 + resolution: "@azure/msal-common@npm:14.16.0" + checksum: 01ec26e22243c5c435b97db085e96f5488733336c142b65a118ee6e523a548d3f17d013147810948cceaee7bdc339362bb9b2799fc9ea53c9d4c9aa10d8987e3 languageName: node linkType: hard "@azure/msal-node@npm:^2.15.0": - version: 2.15.0 - resolution: "@azure/msal-node@npm:2.15.0" + version: 2.16.1 + resolution: "@azure/msal-node@npm:2.16.1" dependencies: - "@azure/msal-common": 14.15.0 + "@azure/msal-common": 14.16.0 jsonwebtoken: ^9.0.0 uuid: ^8.3.0 - checksum: 10dd1c273e2465d519d28ee04d1c9e2e4ecfa2cab664b38677502c626139f86a16f7d78c645e6727d550a84dfa7773ebea1fb2cc7454870f3c6507d601e6ef2f + checksum: ed6ab93ec5cf6955deb51d7142e49f1a3524032e6870362f198e4097b7c7e09be33dbb08d51e0b49a9e339eeefb3082081cdfeec0acb4f7ee78835eaa4b1c1e7 languageName: node linkType: hard @@ -1281,55 +1266,57 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.8.3": - version: 7.25.9 - resolution: "@babel/code-frame@npm:7.25.9" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.10.4, @babel/code-frame@npm:^7.12.13, @babel/code-frame@npm:^7.16.0, @babel/code-frame@npm:^7.16.7, @babel/code-frame@npm:^7.18.6, @babel/code-frame@npm:^7.24.2, @babel/code-frame@npm:^7.25.9, @babel/code-frame@npm:^7.26.0, @babel/code-frame@npm:^7.8.3": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" dependencies: - "@babel/highlight": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 picocolors: ^1.0.0 - checksum: 458015f42f130bc70a19aaf016eaabb51e8c6508feb65394115972621bf864c2cc6b07ee547b1d95e2fde958e14243f79a4d0223ef6d52963820cafcf6fcf11b + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 languageName: node linkType: hard -"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/compat-data@npm:7.25.9" - checksum: 59d8c9d4907076e9a7a02ef065faec7b6f512bdaaf160dfa4e3c4476d816203a304d6e86e7104b063ac7cde571ee20dd83eb7b5260ef2e7cd06ca681bc424aa7 +"@babel/compat-data@npm:^7.22.6, @babel/compat-data@npm:^7.25.9, @babel/compat-data@npm:^7.26.0": + version: 7.26.2 + resolution: "@babel/compat-data@npm:7.26.2" + checksum: d52fae9b0dc59b409d6005ae6b172e89329f46d68136130065ebe923a156fc633e0f1c8600b3e319b9e0f99fd948f64991a5419e2e9431d00d9d235d5f7a7618 languageName: node linkType: hard "@babel/core@npm:^7.11.6, @babel/core@npm:^7.12.3, @babel/core@npm:^7.19.6, @babel/core@npm:^7.21.3, @babel/core@npm:^7.22.0, @babel/core@npm:^7.23.0, @babel/core@npm:^7.23.2, @babel/core@npm:^7.23.9, @babel/core@npm:^7.24.0, @babel/core@npm:^7.7.5": - version: 7.25.9 - resolution: "@babel/core@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/core@npm:7.26.0" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.25.9 - "@babel/generator": ^7.25.9 + "@babel/code-frame": ^7.26.0 + "@babel/generator": ^7.26.0 "@babel/helper-compilation-targets": ^7.25.9 - "@babel/helper-module-transforms": ^7.25.9 - "@babel/helpers": ^7.25.9 - "@babel/parser": ^7.25.9 + "@babel/helper-module-transforms": ^7.26.0 + "@babel/helpers": ^7.26.0 + "@babel/parser": ^7.26.0 "@babel/template": ^7.25.9 "@babel/traverse": ^7.25.9 - "@babel/types": ^7.25.9 + "@babel/types": ^7.26.0 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 6633cd8abdd679ffefe526a6611d4721f90f76ebf1944a8501e8beccad24a4a71c07530c8245370660c6449618b9f454a3326bac85ff03d61df7bab6f0710522 + checksum: b296084cfd818bed8079526af93b5dfa0ba70282532d2132caf71d4060ab190ba26d3184832a45accd82c3c54016985a4109ab9118674347a7e5e9bc464894e6 languageName: node linkType: hard -"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.23.0, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.7.2": - version: 7.25.9 - resolution: "@babel/generator@npm:7.25.9" +"@babel/generator@npm:^7.12.11, @babel/generator@npm:^7.23.0, @babel/generator@npm:^7.23.6, @babel/generator@npm:^7.25.9, @babel/generator@npm:^7.26.0, @babel/generator@npm:^7.7.2": + version: 7.26.2 + resolution: "@babel/generator@npm:7.26.2" dependencies: - "@babel/types": ^7.25.9 + "@babel/parser": ^7.26.2 + "@babel/types": ^7.26.0 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 jsesc: ^3.0.2 - checksum: 4b8f27363e6521ca9e33d307744aeff8b6f540492eb935e597e115304d999eb228b24d43ce679e2c0337b4a98966ae28dc53f1fab86db1eb852d53e11120fd7b + checksum: 6ff850b7d6082619f8c2f518d993cf7254cfbaa20b026282cbef5c9b2197686d076a432b18e36c4d1a42721c016df4f77a8f62c67600775d9683621d534b91b4 languageName: node linkType: hard @@ -1395,9 +1382,9 @@ __metadata: languageName: node linkType: hard -"@babel/helper-define-polyfill-provider@npm:^0.6.2": - version: 0.6.2 - resolution: "@babel/helper-define-polyfill-provider@npm:0.6.2" +"@babel/helper-define-polyfill-provider@npm:^0.6.2, @babel/helper-define-polyfill-provider@npm:^0.6.3": + version: 0.6.3 + resolution: "@babel/helper-define-polyfill-provider@npm:0.6.3" dependencies: "@babel/helper-compilation-targets": ^7.22.6 "@babel/helper-plugin-utils": ^7.22.5 @@ -1406,7 +1393,7 @@ __metadata: resolve: ^1.14.2 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 2bba965ea9a4887ddf9c11d51d740ab473bd7597b787d042c325f6a45912dfe908c2d6bb1d837bf82f7e9fa51e6ad5150563c58131d2bb85515e63d971414a9c + checksum: 710e6d8a5391736b9f53f09d0494575c2e03de199ad8d1349bc8e514cb85251ea1f1842c2ff44830849d482052ddb42ae931101002a87a263b12f649c2e57c01 languageName: node linkType: hard @@ -1430,17 +1417,16 @@ __metadata: languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helper-module-transforms@npm:7.25.9" +"@babel/helper-module-transforms@npm:^7.25.9, @babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: "@babel/helper-module-imports": ^7.25.9 - "@babel/helper-simple-access": ^7.25.9 "@babel/helper-validator-identifier": ^7.25.9 "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 12e50861531ff45667925c958a5d01f0a7fbd37b589d73be7f167c94595091c6842531b1b14a22049b53c56891fa596f014c94d9496685311aaa80651805fca0 + checksum: 942eee3adf2b387443c247a2c190c17c4fd45ba92a23087abab4c804f40541790d51ad5277e4b5b1ed8d5ba5b62de73857446b7742f835c18ebd350384e63917 languageName: node linkType: hard @@ -1538,17 +1524,17 @@ __metadata: languageName: node linkType: hard -"@babel/helpers@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/helpers@npm:7.25.9" +"@babel/helpers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helpers@npm:7.26.0" dependencies: "@babel/template": ^7.25.9 - "@babel/types": ^7.25.9 - checksum: 82b1051c065baff1f53a85886bd05b2136c021f8d9301974d639007b7b90f674115b992a1dcf04667b37f9229d6f3eaeb1c40550f9ae46802ec4a8e388018b31 + "@babel/types": ^7.26.0 + checksum: d77fe8d45033d6007eadfa440355c1355eed57902d5a302f450827ad3d530343430a21210584d32eef2f216ae463d4591184c6fc60cf205bbf3a884561469200 languageName: node linkType: hard -"@babel/highlight@npm:^7.0.0, @babel/highlight@npm:^7.25.9": +"@babel/highlight@npm:^7.0.0": version: 7.25.9 resolution: "@babel/highlight@npm:7.25.9" dependencies: @@ -1560,14 +1546,14 @@ __metadata: languageName: node linkType: hard -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/parser@npm:7.25.9" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.0, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.24.0, @babel/parser@npm:^7.25.9, @babel/parser@npm:^7.26.0, @babel/parser@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/parser@npm:7.26.2" dependencies: - "@babel/types": ^7.25.9 + "@babel/types": ^7.26.0 bin: parser: ./bin/babel-parser.js - checksum: 76e898e9feaa7e11512841c13aab1a6d81f69a19ab93b0ec941dd78407fdbfe8fb08ff54e0966567aef4f24a7b94125473f0e903fb198c010bd5456058bf3432 + checksum: c88b5ea0adf357ef909cdc2c31e284a154943edc59f63f6e8a4c20bf773a1b2f3d8c2205e59c09ca7cdad91e7466300114548876529277a80651b6436a48d5d9 languageName: node linkType: hard @@ -1684,35 +1670,35 @@ __metadata: linkType: hard "@babel/plugin-syntax-flow@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-flow@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/plugin-syntax-flow@npm:7.26.0" dependencies: "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c33f5ff3228b4ba990a414f07dfa7ca23a0251fa0fae3f935b2c1784104983c8802b190302f4d4e246e41edb41ab6762ac1bd868939abdf0ef809862afaf51c1 + checksum: fdc0d0a7b512e00d933e12cf93c785ea4645a193f4b539230b7601cfaa8c704410199318ce9ea14e5fca7d13e9027822f7d81a7871d3e854df26b6af04cc3c6c languageName: node linkType: hard -"@babel/plugin-syntax-import-assertions@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-import-assertions@npm:7.25.9" +"@babel/plugin-syntax-import-assertions@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-assertions@npm:7.26.0" dependencies: "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2f0c70bb379135ee205402caa42c0dda4d5d8fb64ff4ad163cab94bd8291c1a63b9dc9cf293758cecee223080d2d61e83f92c6d2a264621e24a07258c48968db + checksum: b58f2306df4a690ca90b763d832ec05202c50af787158ff8b50cdf3354359710bce2e1eb2b5135fcabf284756ac8eadf09ca74764aa7e76d12a5cac5f6b21e67 languageName: node linkType: hard -"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-syntax-import-attributes@npm:7.25.9" +"@babel/plugin-syntax-import-attributes@npm:^7.24.7, @babel/plugin-syntax-import-attributes@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-syntax-import-attributes@npm:7.26.0" dependencies: "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 0ea00b9100d383680c7142e61e3aa7101e3657ec5e1bfa990871eee4ae17e2c4a0da084e8f611d349bb9612908e911e1400418eb59caa5184226b08f513c1a0a + checksum: c122aa577166c80ee67f75aebebeef4150a132c4d3109d25d7fc058bf802946f883e330f20b78c1d3e3a5ada631c8780c263d2d01b5dbaecc69efefeedd42916 languageName: node linkType: hard @@ -1931,15 +1917,15 @@ __metadata: languageName: node linkType: hard -"@babel/plugin-transform-class-static-block@npm:^7.25.9": - version: 7.25.9 - resolution: "@babel/plugin-transform-class-static-block@npm:7.25.9" +"@babel/plugin-transform-class-static-block@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-class-static-block@npm:7.26.0" dependencies: "@babel/helper-create-class-features-plugin": ^7.25.9 "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.12.0 - checksum: 306db84958218c1c7e0d7e8f363fcf9970fd52dab8f4f226cbe4876fcf5466a9addee5a79214a7982a7294f014305f3f0951227ff31ba6d5d47c9d54b7d54d2b + checksum: d779d4d3a6f8d363f67fcbd928c15baa72be8d3b86c6d05e0300b50e66e2c4be9e99398b803d13064bc79d90ae36e37a505e3dc8af11904459804dec07660246 languageName: node linkType: hard @@ -2395,6 +2381,18 @@ __metadata: languageName: node linkType: hard +"@babel/plugin-transform-regexp-modifiers@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/plugin-transform-regexp-modifiers@npm:7.26.0" + dependencies: + "@babel/helper-create-regexp-features-plugin": ^7.25.9 + "@babel/helper-plugin-utils": ^7.25.9 + peerDependencies: + "@babel/core": ^7.0.0 + checksum: 726deca486bbd4b176f8a966eb0f4aabc19d9def3b8dabb8b3a656778eca0df1fda3f3c92b213aa5a184232fdafd5b7bd73b4e24ca4345c498ef6baff2bda4e1 + languageName: node + linkType: hard + "@babel/plugin-transform-reserved-words@npm:^7.25.9": version: 7.25.9 resolution: "@babel/plugin-transform-reserved-words@npm:7.25.9" @@ -2525,10 +2523,10 @@ __metadata: linkType: hard "@babel/preset-env@npm:^7.19.4, @babel/preset-env@npm:^7.20.2, @babel/preset-env@npm:^7.23.2": - version: 7.25.9 - resolution: "@babel/preset-env@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/preset-env@npm:7.26.0" dependencies: - "@babel/compat-data": ^7.25.9 + "@babel/compat-data": ^7.26.0 "@babel/helper-compilation-targets": ^7.25.9 "@babel/helper-plugin-utils": ^7.25.9 "@babel/helper-validator-option": ^7.25.9 @@ -2538,8 +2536,8 @@ __metadata: "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": ^7.25.9 "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": ^7.25.9 "@babel/plugin-proposal-private-property-in-object": 7.21.0-placeholder-for-preset-env.2 - "@babel/plugin-syntax-import-assertions": ^7.25.9 - "@babel/plugin-syntax-import-attributes": ^7.25.9 + "@babel/plugin-syntax-import-assertions": ^7.26.0 + "@babel/plugin-syntax-import-attributes": ^7.26.0 "@babel/plugin-syntax-unicode-sets-regex": ^7.18.6 "@babel/plugin-transform-arrow-functions": ^7.25.9 "@babel/plugin-transform-async-generator-functions": ^7.25.9 @@ -2547,7 +2545,7 @@ __metadata: "@babel/plugin-transform-block-scoped-functions": ^7.25.9 "@babel/plugin-transform-block-scoping": ^7.25.9 "@babel/plugin-transform-class-properties": ^7.25.9 - "@babel/plugin-transform-class-static-block": ^7.25.9 + "@babel/plugin-transform-class-static-block": ^7.26.0 "@babel/plugin-transform-classes": ^7.25.9 "@babel/plugin-transform-computed-properties": ^7.25.9 "@babel/plugin-transform-destructuring": ^7.25.9 @@ -2580,6 +2578,7 @@ __metadata: "@babel/plugin-transform-private-property-in-object": ^7.25.9 "@babel/plugin-transform-property-literals": ^7.25.9 "@babel/plugin-transform-regenerator": ^7.25.9 + "@babel/plugin-transform-regexp-modifiers": ^7.26.0 "@babel/plugin-transform-reserved-words": ^7.25.9 "@babel/plugin-transform-shorthand-properties": ^7.25.9 "@babel/plugin-transform-spread": ^7.25.9 @@ -2598,7 +2597,7 @@ __metadata: semver: ^6.3.1 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: b01081d36e36953e94eb5db8eee18dc4b93e4a3757f7c8e00333aba5b5798d00a76e0e3679382cb57aec0516dbe05f5c1ec2c67bd5482216864f6decd6359ae2 + checksum: 0c3e2b3758cc0347dcf5551b5209db702764183dce66ff20bffceff6486c090bef9175f5f7d1e68cfe5584f0d817b2aab25ab5992058a7998f061f244c8caf5f languageName: node linkType: hard @@ -2645,8 +2644,8 @@ __metadata: linkType: hard "@babel/preset-typescript@npm:^7.18.6, @babel/preset-typescript@npm:^7.21.0, @babel/preset-typescript@npm:^7.23.0": - version: 7.25.9 - resolution: "@babel/preset-typescript@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/preset-typescript@npm:7.26.0" dependencies: "@babel/helper-plugin-utils": ^7.25.9 "@babel/helper-validator-option": ^7.25.9 @@ -2655,7 +2654,7 @@ __metadata: "@babel/plugin-transform-typescript": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: bb951cfc91e6d6704a0d5be3c1150f53bb70aadb91b0b294642c5e73b5dd85f88aa3fa0e71983842655e3b7e08b952a5031620c6a2577b373b15eae919f2ca0b + checksum: 6d8641fa6efd0e10eec5e8f92cd164b916a06d57131cfa5216c281404289c87d2b4995140a1c1d9c3bad171ff6ef2226be5f0585e09577ffff349706e991ec71 languageName: node linkType: hard @@ -2674,22 +2673,22 @@ __metadata: languageName: node linkType: hard -"@babel/runtime-corejs3@npm:^7.20.7, @babel/runtime-corejs3@npm:^7.22.15, @babel/runtime-corejs3@npm:^7.24.5": - version: 7.25.9 - resolution: "@babel/runtime-corejs3@npm:7.25.9" +"@babel/runtime-corejs3@npm:^7.20.7, @babel/runtime-corejs3@npm:^7.22.15, @babel/runtime-corejs3@npm:^7.24.7": + version: 7.26.0 + resolution: "@babel/runtime-corejs3@npm:7.26.0" dependencies: core-js-pure: ^3.30.2 regenerator-runtime: ^0.14.0 - checksum: 890e8bdcb0bccb59ed05b8d453fc33ad37f8a8f88c51e313cc834c00115137cf23b7a16f80c47423419f3c6bc0dc557de85398bba800a948e5802e853f9f8e1b + checksum: c6c5adac03e33aa4b5bb636a677aa2a6e400b91d91aac5674448d20af4100b80a8bedfb742338e4236e22c092d3edeb27210efdf48bd13ec353bd899f097ff41 languageName: node linkType: hard "@babel/runtime@npm:^7.0.0, @babel/runtime@npm:^7.1.2, @babel/runtime@npm:^7.10.1, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.15.4, @babel/runtime@npm:^7.17.8, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.18.6, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.20.13, @babel/runtime@npm:^7.20.6, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.23.9, @babel/runtime@npm:^7.3.1, @babel/runtime@npm:^7.4.4, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.0, @babel/runtime@npm:^7.7.6, @babel/runtime@npm:^7.8.3, @babel/runtime@npm:^7.8.4, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": - version: 7.25.9 - resolution: "@babel/runtime@npm:7.25.9" + version: 7.26.0 + resolution: "@babel/runtime@npm:7.26.0" dependencies: regenerator-runtime: ^0.14.0 - checksum: ce1c87b166ff728eaee91658a67fb7835314ed157b7a36d49602ffdaaa37fb1fcf2784afd00b55fe1672bec53fb38cba622a056c913611af2a44503097216229 + checksum: c8e2c0504ab271b3467a261a8f119bf2603eb857a0d71e37791f4e3fae00f681365073cc79f141ddaa90c6077c60ba56448004ad5429d07ac73532be9f7cf28a languageName: node linkType: hard @@ -2719,13 +2718,13 @@ __metadata: languageName: node linkType: hard -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": - version: 7.25.9 - resolution: "@babel/types@npm:7.25.9" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.2.0, @babel/types@npm:^7.20.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.21.3, @babel/types@npm:^7.23.0, @babel/types@npm:^7.24.0, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.0, @babel/types@npm:^7.3.3, @babel/types@npm:^7.4.4": + version: 7.26.0 + resolution: "@babel/types@npm:7.26.0" dependencies: "@babel/helper-string-parser": ^7.25.9 "@babel/helper-validator-identifier": ^7.25.9 - checksum: c6e2f5bdd85351c22a395bd2359a7acec595b4b544750795836d4f69aec76c07e1c78668eab04490c6bd331776e0ece42865de2ec2c5bc7a9ddee81afd7fcac6 + checksum: a3dd37dabac693018872da96edb8c1843a605c1bfacde6c3f504fba79b972426a6f24df70aa646356c0c1b19bdd2c722c623c684a996c002381071680602280d languageName: node linkType: hard @@ -4488,35 +4487,35 @@ __metadata: linkType: hard "@backstage/plugin-events-backend@npm:^0.3.14": - version: 0.3.14 - resolution: "@backstage/plugin-events-backend@npm:0.3.14" + version: 0.3.15 + resolution: "@backstage/plugin-events-backend@npm:0.3.15" dependencies: "@backstage/backend-common": ^0.25.0 "@backstage/backend-openapi-utils": ^0.2.0 "@backstage/backend-plugin-api": ^1.0.1 "@backstage/config": ^1.2.0 "@backstage/errors": ^1.2.4 - "@backstage/plugin-events-node": ^0.4.2 + "@backstage/plugin-events-node": ^0.4.3 "@backstage/types": ^1.1.1 "@types/express": ^4.17.6 express: ^4.17.1 express-promise-router: ^4.1.0 knex: ^3.0.0 winston: ^3.2.1 - checksum: 8676109a9b0c5da84ac0e0a4f4b3c982e551fb677398b1c2b4d1f3476f9390e3e5daf603405c890e1137f64ef2de7794cab174d8401f9469522d557f899f8585 + checksum: 7a94f56ca617f3a1a6291f9752f84d7dee30ed15c6ecef8405cbcef4906b7af28170e7924dee44f3ff4d16d737a2d7246f4f2e54ec067f702385392cce753923 languageName: node linkType: hard -"@backstage/plugin-events-node@npm:^0.4.2": - version: 0.4.2 - resolution: "@backstage/plugin-events-node@npm:0.4.2" +"@backstage/plugin-events-node@npm:^0.4.2, @backstage/plugin-events-node@npm:^0.4.3": + version: 0.4.4 + resolution: "@backstage/plugin-events-node@npm:0.4.4" dependencies: "@backstage/backend-plugin-api": ^1.0.1 "@backstage/errors": ^1.2.4 "@backstage/types": ^1.1.1 cross-fetch: ^4.0.0 uri-template: ^2.0.0 - checksum: 5a2da2a0e0ef916bf431a5ec78cd50d5b272437cfa6415624dbea466e511251af541b5be7d6cc7c3fb5077c0fe6e1e985f07382ce4c001233d19cbdc6ead69df + checksum: e1d665686ae3d2462c40b773f9e005d092a18cd866624799a3174100f3b496d76e6a8abfde8888114ec346fbcb081edbc45e1b9be1e8f875e13ad62f81121a68 languageName: node linkType: hard @@ -4572,42 +4571,6 @@ __metadata: languageName: node linkType: hard -"@backstage/plugin-kubernetes@npm:^0.11.16": - version: 0.11.16 - resolution: "@backstage/plugin-kubernetes@npm:0.11.16" - dependencies: - "@backstage/catalog-model": ^1.7.0 - "@backstage/core-compat-api": ^0.3.1 - "@backstage/core-components": ^0.15.1 - "@backstage/core-plugin-api": ^1.10.0 - "@backstage/frontend-plugin-api": ^0.9.0 - "@backstage/plugin-catalog-react": ^1.14.0 - "@backstage/plugin-kubernetes-common": ^0.8.3 - "@backstage/plugin-kubernetes-react": ^0.4.4 - "@kubernetes-models/apimachinery": ^2.0.0 - "@kubernetes-models/base": ^5.0.0 - "@kubernetes/client-node": 0.20.0 - "@material-ui/core": ^4.12.2 - cronstrue: ^2.2.0 - js-yaml: ^4.0.0 - kubernetes-models: ^4.1.0 - lodash: ^4.17.21 - luxon: ^3.0.0 - xterm: ^5.2.1 - xterm-addon-attach: ^0.9.0 - xterm-addon-fit: ^0.8.0 - peerDependencies: - "@types/react": ^16.13.1 || ^17.0.0 || ^18.0.0 - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-router-dom: 6.0.0-beta.0 || ^6.3.0 - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 59bc25ccaf1c8ab521c4361c13c06ec853607fa6ac0bc7d50c103134cb090e1d5d1143b23fb2f135ce1c16b6c3b1107a31fc6a27a09ec3e3786ebf2ee0af2f90 - languageName: node - linkType: hard - "@backstage/plugin-org@npm:^0.6.31": version: 0.6.31 resolution: "@backstage/plugin-org@npm:0.6.31" @@ -5607,19 +5570,19 @@ __metadata: languageName: node linkType: hard -"@braintree/sanitize-url@npm:=7.0.2": - version: 7.0.2 - resolution: "@braintree/sanitize-url@npm:7.0.2" - checksum: d90baf41220e2c6a53005ab89d01abd2ab007ba341ee77af6f0cc7e30f0fd9c1e8b78b19f7e60ba8c0befe4ecb772dcedb464bd5d768236d7fd8c373d236c169 +"@braintree/sanitize-url@npm:=7.0.4": + version: 7.0.4 + resolution: "@braintree/sanitize-url@npm:7.0.4" + checksum: e613da3aa3e2139c3a5cf0121c7d6520c109d9b94540b3967ffff76714f3b2b0e99f4f3f7387f16cf1c189fc0041c6f010ca6e786c73d4ef3221cca0ede38f74 languageName: node linkType: hard "@bundled-es-modules/cookie@npm:^2.0.0": - version: 2.0.0 - resolution: "@bundled-es-modules/cookie@npm:2.0.0" + version: 2.0.1 + resolution: "@bundled-es-modules/cookie@npm:2.0.1" dependencies: - cookie: ^0.5.0 - checksum: 53114eabbedda20ba6c63f45dcea35c568616d22adf5d1882cef9761f65ae636bf47e0c66325572cc8e3a335e0257caf5f76ff1287990d9e9265be7bc9767a87 + cookie: ^0.7.2 + checksum: 4f210f9316a612f03a46c58f0e3de14b2598f36905433b5ac91e305a4185bd3cb0b141622fa54cff2fce18adbac0b5a8df67dca1874aabd81b7a631fc826e116 languageName: node linkType: hard @@ -5642,6 +5605,15 @@ __metadata: languageName: node linkType: hard +"@casbin/expression-eval@npm:^5.2.0": + version: 5.2.0 + resolution: "@casbin/expression-eval@npm:5.2.0" + dependencies: + jsep: ^0.3.0 + checksum: 7b1e100dd6bf97c388a449fd88fcc33e216922392996630d766ecadbbc659bbdfb565e00a9f9dc1b5f654053e4ec72698fbb5298210f207aff2d2b2e1859ec3a + languageName: node + linkType: hard + "@changesets/apply-release-plan@npm:^7.0.5": version: 7.0.5 resolution: "@changesets/apply-release-plan@npm:7.0.5" @@ -5877,8 +5849,8 @@ __metadata: linkType: hard "@codemirror/autocomplete@npm:^6.0.0": - version: 6.18.1 - resolution: "@codemirror/autocomplete@npm:6.18.1" + version: 6.18.3 + resolution: "@codemirror/autocomplete@npm:6.18.3" dependencies: "@codemirror/language": ^6.0.0 "@codemirror/state": ^6.0.0 @@ -5889,7 +5861,7 @@ __metadata: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 "@lezer/common": ^1.0.0 - checksum: d488b3f76c330cc3776ef3c766347c178aa0773afd1791d2d8a7b72c4cd8a75c413bc47daba7ec29eedab954966b11ebb7c0085d12f814999ec192f060c884a9 + checksum: 48f3a09e05a2ab236641c3df0dbd577ef4c04da8ea8c26c47bc90f5652342a62d6e736e6b89428a85ff50efe039c01f0f0864134914a40a1513a4d57024cbb76 languageName: node linkType: hard @@ -5920,11 +5892,11 @@ __metadata: linkType: hard "@codemirror/legacy-modes@npm:^6.1.0": - version: 6.4.1 - resolution: "@codemirror/legacy-modes@npm:6.4.1" + version: 6.4.2 + resolution: "@codemirror/legacy-modes@npm:6.4.2" dependencies: "@codemirror/language": ^6.0.0 - checksum: 3947842c5f06db49a152bf7dd03a626806c5f2e80abfa9840927396fef08ff8bc2dfb228e7231bd8d0b7bb1a84b7ef582df8361b2bef77419e0e04bf43cc6b7d + checksum: fe55df97efe980a573ff5572f480eae323d7652a4a61435c654a90142def7102218023590112de7cd826c495ecaadae68a89fb5e5d4323d207af267bcce1d0c1 languageName: node linkType: hard @@ -5940,13 +5912,13 @@ __metadata: linkType: hard "@codemirror/search@npm:^6.0.0": - version: 6.5.6 - resolution: "@codemirror/search@npm:6.5.6" + version: 6.5.7 + resolution: "@codemirror/search@npm:6.5.7" dependencies: "@codemirror/state": ^6.0.0 "@codemirror/view": ^6.0.0 crelt: ^1.0.5 - checksum: 19dc88d09fc750563347001e83c6194bbb2a25c874bd919d2d81809e1f98d6330222ddbd284aa9758a09eeb41fd153ec7c2cf810b2ee51452c25963d7f5833d5 + checksum: 32d98eab5b096c20e923cc2b88f1510369ec9f6c89fa3ecd79e1a965b35dfdc323624da82739ce80e675333d8e9a1564756a1ae87464e6a918a98bd12f93cbfd languageName: node linkType: hard @@ -5970,13 +5942,13 @@ __metadata: linkType: hard "@codemirror/view@npm:^6.0.0, @codemirror/view@npm:^6.17.0, @codemirror/view@npm:^6.23.0, @codemirror/view@npm:^6.27.0": - version: 6.34.1 - resolution: "@codemirror/view@npm:6.34.1" + version: 6.34.3 + resolution: "@codemirror/view@npm:6.34.3" dependencies: "@codemirror/state": ^6.4.0 style-mod: ^4.1.0 w3c-keyname: ^2.2.4 - checksum: 5c7bf199f0b45a3cc192f08c2ac89e5ab972f313cb4f2c979edf6e05b27bccd60c6cb42d5dacb6813ef3a928d75476eb0a00ffdeffd7431c8e9f44bab4f6e12e + checksum: 371c5fc6ef52a4cb0f82d6fd014ce52fa31ddbaa8f7041c019ae49a695668d98d102b67d81f7a76006f768d894d7f9504cc4b2c2a359e243b9bf5e1979a0c4a3 languageName: node linkType: hard @@ -6014,22 +5986,6 @@ __metadata: languageName: node linkType: hard -"@dagrejs/dagre@npm:1.1.2": - version: 1.1.2 - resolution: "@dagrejs/dagre@npm:1.1.2" - dependencies: - "@dagrejs/graphlib": 2.2.2 - checksum: 70d0d746be64efe7f09d18c123f0a9a83339e46b3817d56effd76530795b78838ea5ed862a92897c90643403c9181723a79768bb8b8f3e0f65139393e95027cf - languageName: node - linkType: hard - -"@dagrejs/graphlib@npm:2.2.2": - version: 2.2.2 - resolution: "@dagrejs/graphlib@npm:2.2.2" - checksum: ceb833f350a9b984dc8557bd9f4a4304e3fe7a9293295313e63f8b94a2808c8dac51cfd6bd3a17c26260507440d0c6025bfa7eb24eb8ce7eda211119929f5216 - languageName: node - linkType: hard - "@dagrejs/graphlib@npm:^2.1.13": version: 2.2.4 resolution: "@dagrejs/graphlib@npm:2.2.4" @@ -7093,20 +7049,20 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" + version: 4.4.1 + resolution: "@eslint-community/eslint-utils@npm:4.4.1" dependencies: - eslint-visitor-keys: ^3.3.0 + eslint-visitor-keys: ^3.4.3 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 + checksum: a7ffc838eb6a9ef594cda348458ccf38f34439ac77dc090fa1c120024bcd4eb911dfd74d5ef44d42063e7949fa7c5123ce714a015c4abb917d4124be1bd32bfe languageName: node linkType: hard "@eslint-community/regexpp@npm:^4.5.1, @eslint-community/regexpp@npm:^4.6.1": - version: 4.11.1 - resolution: "@eslint-community/regexpp@npm:4.11.1" - checksum: 6986685529d30e33c2640973c3d8e7ddd31bef3cc8cb10ad54ddc1dea12680779a2c23a45562aa1462c488137a3570e672d122fac7da22d82294382d915cec70 + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 languageName: node linkType: hard @@ -7158,12 +7114,12 @@ __metadata: linkType: hard "@floating-ui/dom@npm:^1.0.0": - version: 1.6.11 - resolution: "@floating-ui/dom@npm:1.6.11" + version: 1.6.12 + resolution: "@floating-ui/dom@npm:1.6.12" dependencies: "@floating-ui/core": ^1.6.0 "@floating-ui/utils": ^0.2.8 - checksum: d6413759abd06a541edfad829c45313f930310fe76a3322e74a00eb655e283db33fe3e65b5265c4072eb54db7447e11225acd355a9a02cabd1d1b0d5fc8fc21d + checksum: 956514ed100c0c853e73ace9e3c877b7e535444d7c31326f687a7690d49cb1e59ef457e9c93b76141aea0d280e83ed5a983bb852718b62eea581f755454660f6 languageName: node linkType: hard @@ -7295,8 +7251,8 @@ __metadata: linkType: hard "@google-cloud/storage@npm:^7.0.0": - version: 7.13.0 - resolution: "@google-cloud/storage@npm:7.13.0" + version: 7.14.0 + resolution: "@google-cloud/storage@npm:7.14.0" dependencies: "@google-cloud/paginator": ^5.0.0 "@google-cloud/projectify": ^4.0.0 @@ -7313,7 +7269,7 @@ __metadata: retry-request: ^7.0.0 teeny-request: ^9.0.0 uuid: ^8.0.0 - checksum: b5e61b3123f2924aae17f3b1e9aa97092e999f2097c00d90d85329212219cd6b6a63a65fd84d228791b534e4747e96d430007c4a507b37f3e1d6e42a98d4e7e2 + checksum: c239b0961bb4dfb36fe67fc35b933bf65259bb4ebcdffeb48cdee5e2d838626daef47ba78417d33eb47fda5c2536d89ad1feb33cd59ecc887d47ab992fc80a1b languageName: node linkType: hard @@ -7387,42 +7343,43 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/batch-execute@npm:^9.0.5": - version: 9.0.5 - resolution: "@graphql-tools/batch-execute@npm:9.0.5" +"@graphql-tools/batch-execute@npm:^9.0.6": + version: 9.0.6 + resolution: "@graphql-tools/batch-execute@npm:9.0.6" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 dataloader: ^2.2.2 tslib: ^2.4.0 value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 7ea4d6f59150304862fcafdab31e654b6e175666c6c5c084ce06cfc62936b0e2d02b867d4ce4de804b95b88d4a4575e4c02a5015f0d0a63b6d5eabbf49c36502 + checksum: b4551a8b9a4bbc48e726e3417d149f27383c473211960b792f2199e4f4ee8965e392a40a6f3353c6732c552310d4ec7fec12d7fc2e1d09dd92cfcd3bef652ad6 languageName: node linkType: hard -"@graphql-tools/delegate@npm:^10.0.26": - version: 10.0.26 - resolution: "@graphql-tools/delegate@npm:10.0.26" +"@graphql-tools/delegate@npm:^10.1.2": + version: 10.1.2 + resolution: "@graphql-tools/delegate@npm:10.1.2" dependencies: - "@graphql-tools/batch-execute": ^9.0.5 - "@graphql-tools/executor": ^1.3.2 - "@graphql-tools/schema": ^10.0.7 - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/batch-execute": ^9.0.6 + "@graphql-tools/executor": ^1.3.3 + "@graphql-tools/schema": ^10.0.8 + "@graphql-tools/utils": ^10.5.6 "@repeaterjs/repeater": ^3.0.6 dataloader: ^2.2.2 + dset: ^3.1.2 tslib: ^2.5.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: e43804a005b1bf3209951fc2161634080f4e2e474e0a942057df55cbe985763e00972bfd704671f5fcc9afa5213bf6cc9635085998481a3da2dcf839c6d49115 + checksum: fa801f747630c1e7a793d772225966006ddc137783aba252cc17b4b04e38315ed776574684cd05e375f4afb18eb9b0033f92d39472db2308f76abd367d9fee2c languageName: node linkType: hard -"@graphql-tools/executor-graphql-ws@npm:^1.3.1": - version: 1.3.1 - resolution: "@graphql-tools/executor-graphql-ws@npm:1.3.1" +"@graphql-tools/executor-graphql-ws@npm:^1.3.2": + version: 1.3.2 + resolution: "@graphql-tools/executor-graphql-ws@npm:1.3.2" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 "@types/ws": ^8.0.0 graphql-ws: ^5.14.0 isomorphic-ws: ^5.0.0 @@ -7430,110 +7387,110 @@ __metadata: ws: ^8.17.1 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 850cef03d4a517bd922a98a82f28e1cf5353f96e53e649403cbc394cb2ef6d3256438d1fe5bba9fb1b2e9bc4b92e4242d4ae4b8f25f393e1d43108dbbadf06b5 + checksum: 6193b3d6c68898da11eab004103c6deac1ce0c2eec7204afdf025586e95ad6798a5477cac48682e32699a03b6f663940810a37f0f1fed5c1875ec67f3dcf15b1 languageName: node linkType: hard -"@graphql-tools/executor-http@npm:^1.1.7": - version: 1.1.7 - resolution: "@graphql-tools/executor-http@npm:1.1.7" +"@graphql-tools/executor-http@npm:^1.1.9": + version: 1.1.9 + resolution: "@graphql-tools/executor-http@npm:1.1.9" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 "@repeaterjs/repeater": ^3.0.4 - "@whatwg-node/fetch": ^0.9.0 + "@whatwg-node/fetch": ^0.10.0 extract-files: ^11.0.0 meros: ^1.2.1 tslib: ^2.4.0 value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 11d5952d16ead9e0caec5a93c0b2f4c1ee3df19e9fec531b2ed3da53d24494e72e070c9ccbfb97b65966534391f6b69f4048de3f2b898a657a8f4bd8248e3004 + checksum: dd79e67e95d1256be31797f68bdfc767ba876384deaa31c6f87334abd303eb317a7bf4b8f37e4a055cfb0260951426815d454d84778d536e61887fdf54522bcb languageName: node linkType: hard -"@graphql-tools/executor-legacy-ws@npm:^1.1.1": - version: 1.1.1 - resolution: "@graphql-tools/executor-legacy-ws@npm:1.1.1" +"@graphql-tools/executor-legacy-ws@npm:^1.1.2": + version: 1.1.2 + resolution: "@graphql-tools/executor-legacy-ws@npm:1.1.2" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 "@types/ws": ^8.0.0 isomorphic-ws: ^5.0.0 tslib: ^2.4.0 ws: ^8.17.1 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 08538c986bc121a8c10168ca9a61d6d379f13b19e764b4487ce4166a54e264e2c9472b5c26e3c7b9ce3ea536af24c0bde4acfc4194bc4964b2981c531a367621 + checksum: f7000a569aea68300092c91b7777b2dafef0bd14206642c376c30c5c2b1cf612ec2ea2e5b6803b727a1b05eba6097af80ac1f6059f40c40ba649b7b826c703ac languageName: node linkType: hard -"@graphql-tools/executor@npm:^1.3.2": - version: 1.3.2 - resolution: "@graphql-tools/executor@npm:1.3.2" +"@graphql-tools/executor@npm:^1.3.3": + version: 1.3.3 + resolution: "@graphql-tools/executor@npm:1.3.3" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 "@graphql-typed-document-node/core": 3.2.0 "@repeaterjs/repeater": ^3.0.4 tslib: ^2.4.0 value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 1bc7c25f19e428bedf322d080f136d6edb113b64572dd1c8fa3f00611c957a64160057f99155715c59f6d39758090268be96b6d9a11b6921f48985d70cda862c + checksum: 2100edf274cf4a7ba7dcee1901f411d1512d15c7cedb7f3fdfa400a586388330b86c85a6693be58e87f3366dc1680533083021c3e002cee1477ab63dc1743315 languageName: node linkType: hard "@graphql-tools/graphql-file-loader@npm:^8.0.0": - version: 8.0.2 - resolution: "@graphql-tools/graphql-file-loader@npm:8.0.2" + version: 8.0.3 + resolution: "@graphql-tools/graphql-file-loader@npm:8.0.3" dependencies: - "@graphql-tools/import": 7.0.2 - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/import": 7.0.3 + "@graphql-tools/utils": ^10.5.6 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: ab963352275aeeef5ea40d2759a2c3c4259c1392db4002146cba2d27a3a31299fb97495e891f3e5fa4fc8cd09d1442e2129b3821a70d79fcee437b736c6291ca + checksum: 99418550c3439c7d04dd8365443669140561eec576d4a3dc6c51a83e11ca2cda8ded1e8a9bbdc4238c53968eb04ac389c31a30af567c3741d3ea60333a1dbb64 languageName: node linkType: hard -"@graphql-tools/import@npm:7.0.2": - version: 7.0.2 - resolution: "@graphql-tools/import@npm:7.0.2" +"@graphql-tools/import@npm:7.0.3": + version: 7.0.3 + resolution: "@graphql-tools/import@npm:7.0.3" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 resolve-from: 5.0.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: b6ee488e3720bc41710f7ccf7b499ae5cda63f80a2ebd35d6e2c80b6f36d1ff8345450c6c21f79c5aed8b001c87589c63d6a122236deb7d73ff17582038806c4 + checksum: 9ca81f590fe82b94a06a343315ab4249fa86e64306f6feee45fb7ad2f08d99842cdd5ef6a36e40da28e8c193a8b05a46bd3b0a878df99d6624d454a69e295cd0 languageName: node linkType: hard "@graphql-tools/json-file-loader@npm:^8.0.0": - version: 8.0.2 - resolution: "@graphql-tools/json-file-loader@npm:8.0.2" + version: 8.0.3 + resolution: "@graphql-tools/json-file-loader@npm:8.0.3" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 globby: ^11.0.3 tslib: ^2.4.0 unixify: ^1.0.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 56c53e22ac762ee2c668a33e1ab929cbea86b3ecb95a74290e085ac94385c22b2e7854b4d16094c8289cfaf76712c274bd99725d2f151ddad60d72edf1fdc412 + checksum: e1246a719249e6458548123c717a3e586432d4ac40d11f7083c907a789818a65c3675b6ad6fa34db30f47d2341c4d23622193344935c902b8701b58cbad35c71 languageName: node linkType: hard "@graphql-tools/load@npm:^8.0.0": - version: 8.0.3 - resolution: "@graphql-tools/load@npm:8.0.3" + version: 8.0.4 + resolution: "@graphql-tools/load@npm:8.0.4" dependencies: - "@graphql-tools/schema": ^10.0.7 - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/schema": ^10.0.8 + "@graphql-tools/utils": ^10.5.6 p-limit: 3.1.0 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: f50df2d078bd4be008dc487c6c16ed8875f24bbebde677c9f64af444310c05fc2545681d3eafd351331ab4161907e1c86491835fce30656fc7ce50d0bb2b25c2 + checksum: c7a1ef518bc53bd4119d97aa24c1ff113bc655d572f661a71b9fec5c152b8ece90d9e84d3de269f1155db43d5dbda55213e0cdd977475eaebd47f13af972581b languageName: node linkType: hard @@ -7549,29 +7506,29 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/merge@npm:^9.0.0, @graphql-tools/merge@npm:^9.0.8": - version: 9.0.8 - resolution: "@graphql-tools/merge@npm:9.0.8" +"@graphql-tools/merge@npm:^9.0.0, @graphql-tools/merge@npm:^9.0.9": + version: 9.0.9 + resolution: "@graphql-tools/merge@npm:9.0.9" dependencies: - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/utils": ^10.5.6 tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: f1441595332068d7fe6c344da5ddd0bbc114fc64858f71a6ba6c766d658e68ef20f03cf387aaba7d5f9cf7e97cbf7ebd30f21c99438b742cdd0ecaf0ccbd5719 + checksum: 6296a3c25ba706f9ce20be5c0b4cf5d4cef9939be507de3025d454b3ede6fd6df2d1776890d67365d0bae22d6849d040039dd88d06c845f8dcdd87ddc87b7ca1 languageName: node linkType: hard -"@graphql-tools/schema@npm:^10.0.7": - version: 10.0.7 - resolution: "@graphql-tools/schema@npm:10.0.7" +"@graphql-tools/schema@npm:^10.0.8": + version: 10.0.8 + resolution: "@graphql-tools/schema@npm:10.0.8" dependencies: - "@graphql-tools/merge": ^9.0.8 - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/merge": ^9.0.9 + "@graphql-tools/utils": ^10.5.6 tslib: ^2.4.0 value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: d0cf9d286755d4d1ed7d7f33b51f1f1fcf9afdcbc3470078f5face1e49253948963b5a5e8cbdcf08fecc7b016aecbac794428c2269c6c9de91422e5b4375cec1 + checksum: 9049c445747d6f231e63ef2035c8527fafa43f58e050dfb6e47715096b0d0749e43b90d2ef6834ba77390f66b667cf6b321420602ba58dd699a7491d9680e294 languageName: node linkType: hard @@ -7590,25 +7547,24 @@ __metadata: linkType: hard "@graphql-tools/url-loader@npm:^8.0.0": - version: 8.0.7 - resolution: "@graphql-tools/url-loader@npm:8.0.7" + version: 8.0.15 + resolution: "@graphql-tools/url-loader@npm:8.0.15" dependencies: "@ardatan/sync-fetch": ^0.0.1 - "@graphql-tools/delegate": ^10.0.26 - "@graphql-tools/executor-graphql-ws": ^1.3.1 - "@graphql-tools/executor-http": ^1.1.7 - "@graphql-tools/executor-legacy-ws": ^1.1.1 - "@graphql-tools/utils": ^10.5.5 - "@graphql-tools/wrap": ^10.0.10 + "@graphql-tools/executor-graphql-ws": ^1.3.2 + "@graphql-tools/executor-http": ^1.1.9 + "@graphql-tools/executor-legacy-ws": ^1.1.2 + "@graphql-tools/utils": ^10.5.6 + "@graphql-tools/wrap": ^10.0.16 "@types/ws": ^8.0.0 - "@whatwg-node/fetch": ^0.9.0 + "@whatwg-node/fetch": ^0.10.0 isomorphic-ws: ^5.0.0 tslib: ^2.4.0 value-or-promise: ^1.0.11 ws: ^8.17.1 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: 3b4eba4768f74734d7eb9cd9ad25b83830f286b0480fa1577c80fe78bdbe028c1f905cbeb301f63375a64327a0f28cda0ec891a5f6e080f132a79b25db39bde7 + checksum: 504a7186aff5c178cd0444c0b7ea35ef0ae01ed05ad03c9daa81d02e0cb0913acea7670641a5c3d356a46cda87247242ec9d50bc93420e06576a4594d93f2ea8 languageName: node linkType: hard @@ -7623,9 +7579,9 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.5.5": - version: 10.5.5 - resolution: "@graphql-tools/utils@npm:10.5.5" +"@graphql-tools/utils@npm:^10.0.0, @graphql-tools/utils@npm:^10.5.6": + version: 10.5.6 + resolution: "@graphql-tools/utils@npm:10.5.6" dependencies: "@graphql-typed-document-node/core": ^3.1.1 cross-inspect: 1.0.1 @@ -7633,7 +7589,7 @@ __metadata: tslib: ^2.4.0 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: bbc5ea58c286e1a9f82876570f98b29079e224a8b3568ca8df4720de8c790e1cb8772182d1411af99d6ac749b9082810e02f21f0813dc43c4d0438ef9e04e885 + checksum: 0cc908973006067491b74f161bf0d9f440aa583f67e485d8ed7cf23e13165aab2cac17880a23572e5ff2765cc28942a8b6222c1f9e1c8775c6d8c5a657cec87e languageName: node linkType: hard @@ -7648,18 +7604,18 @@ __metadata: languageName: node linkType: hard -"@graphql-tools/wrap@npm:^10.0.10": - version: 10.0.10 - resolution: "@graphql-tools/wrap@npm:10.0.10" +"@graphql-tools/wrap@npm:^10.0.16": + version: 10.0.16 + resolution: "@graphql-tools/wrap@npm:10.0.16" dependencies: - "@graphql-tools/delegate": ^10.0.26 - "@graphql-tools/schema": ^10.0.7 - "@graphql-tools/utils": ^10.5.5 + "@graphql-tools/delegate": ^10.1.2 + "@graphql-tools/schema": ^10.0.8 + "@graphql-tools/utils": ^10.5.6 tslib: ^2.4.0 value-or-promise: ^1.0.12 peerDependencies: graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 - checksum: ea387a5dfc7a4156f0fd50b374fc385cc95613a6d0d11a8c4c6e3d71554edb2ff2533791e5c28bb25a0dd62b52c15e568a17aff530766cb6e88a5a04f9772b57 + checksum: f29568a7d2ee33ee5f9657bd3682efcbce8b586b4912a5c7685d9f26e8423fa5034a04d1abc9c4113a1f7c7e96046ef194147b0a56980079cfb983c8df0b565e languageName: node linkType: hard @@ -7841,9 +7797,9 @@ __metadata: linkType: hard "@inquirer/figures@npm:^1.0.6": - version: 1.0.7 - resolution: "@inquirer/figures@npm:1.0.7" - checksum: 82edc998d0ace2f147eb332177f451c02e6a4a6e829d47817f5a4b3341c12cd0850b92ee3187d483328cce5824b870ed75e868850b6ac819447b9d56501f01cb + version: 1.0.8 + resolution: "@inquirer/figures@npm:1.0.8" + checksum: 24c5c70f49a5f0e9d38f5552fb6936c258d2fc545f6a4944b17ba357c9ca4a729e8cffd77666971554ebc2a57948cfe5003331271a259c406b3f2de0e9c559b7 languageName: node linkType: hard @@ -7935,63 +7891,6 @@ __metadata: languageName: unknown linkType: soft -"@janus-idp/backstage-plugin-analytics-module-matomo@workspace:plugins/analytics-module-matomo": - version: 0.0.0-use.local - resolution: "@janus-idp/backstage-plugin-analytics-module-matomo@workspace:plugins/analytics-module-matomo" - dependencies: - "@backstage/cli": 0.28.2 - "@backstage/core-app-api": 1.15.1 - "@backstage/core-plugin-api": ^1.10.0 - "@backstage/dev-utils": 1.1.2 - "@backstage/test-utils": 1.7.0 - "@redhat-developer/red-hat-developer-hub-theme": 0.4.0 - "@testing-library/jest-dom": 6.4.8 - "@testing-library/react": 14.3.1 - "@testing-library/user-event": 14.5.2 - "@types/node": 18.19.33 - cross-fetch: 4.0.0 - msw: 1.3.3 - prettier: 3.3.3 - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - languageName: unknown - linkType: soft - -"@janus-idp/backstage-plugin-analytics-provider-segment@workspace:plugins/analytics-provider-segment": - version: 0.0.0-use.local - resolution: "@janus-idp/backstage-plugin-analytics-provider-segment@workspace:plugins/analytics-provider-segment" - dependencies: - "@backstage/cli": 0.28.2 - "@backstage/config": ^1.2.0 - "@backstage/core-app-api": 1.15.1 - "@backstage/core-components": ^0.15.1 - "@backstage/core-plugin-api": ^1.10.0 - "@backstage/dev-utils": 1.1.2 - "@backstage/test-utils": 1.7.0 - "@backstage/theme": ^0.6.0 - "@material-ui/core": ^4.9.13 - "@material-ui/icons": ^4.11.3 - "@material-ui/lab": 4.0.0-alpha.61 - "@redhat-developer/red-hat-developer-hub-theme": 0.4.0 - "@segment/analytics-next": ^1.58.0 - "@testing-library/dom": 9.3.4 - "@testing-library/jest-dom": 6.4.8 - "@testing-library/react": 14.3.1 - "@testing-library/user-event": 14.5.2 - "@types/node": 18.19.34 - "@types/react": 18.3.3 - cross-fetch: 4.0.0 - msw: 1.3.3 - prettier: 3.3.3 - prop-types: ^15.8.1 - react-use: ^17.4.0 - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-router-dom: ^6.0.0 - languageName: unknown - linkType: soft - "@janus-idp/backstage-plugin-audit-log-node@^1.7.1, @janus-idp/backstage-plugin-audit-log-node@workspace:plugins/audit-log-node": version: 0.0.0-use.local resolution: "@janus-idp/backstage-plugin-audit-log-node@workspace:plugins/audit-log-node" @@ -8146,58 +8045,6 @@ __metadata: languageName: unknown linkType: soft -"@janus-idp/backstage-plugin-matomo-backend@workspace:plugins/matomo-backend": - version: 0.0.0-use.local - resolution: "@janus-idp/backstage-plugin-matomo-backend@workspace:plugins/matomo-backend" - dependencies: - "@backstage/backend-defaults": ^0.5.2 - "@backstage/backend-plugin-api": ^1.0.1 - "@backstage/cli": 0.28.2 - "@backstage/config": ^1.2.0 - "@types/express": 4.17.20 - "@types/supertest": 2.0.16 - express: ^4.18.2 - http-proxy-middleware: ^2.0.6 - msw: 1.3.3 - node-fetch: ^3.3.2 - prettier: 3.3.3 - supertest: 6.3.4 - yn: ^4.0.0 - languageName: unknown - linkType: soft - -"@janus-idp/backstage-plugin-matomo@workspace:plugins/matomo": - version: 0.0.0-use.local - resolution: "@janus-idp/backstage-plugin-matomo@workspace:plugins/matomo" - dependencies: - "@backstage/catalog-model": ^1.7.0 - "@backstage/cli": 0.28.2 - "@backstage/core-app-api": 1.15.1 - "@backstage/core-components": ^0.15.1 - "@backstage/core-plugin-api": ^1.10.0 - "@backstage/dev-utils": 1.1.2 - "@backstage/plugin-catalog-react": ^1.14.0 - "@backstage/test-utils": 1.7.0 - "@backstage/theme": ^0.6.0 - "@mui/icons-material": ^5.15.18 - "@mui/material": ^5.15.18 - "@redhat-developer/red-hat-developer-hub-theme": 0.4.0 - "@tanstack/react-query": ^4.36.1 - "@testing-library/jest-dom": 6.4.8 - "@testing-library/react": 14.3.1 - "@testing-library/user-event": 14.5.2 - "@types/node": 18.19.33 - axios: ^1.7.4 - cross-fetch: 4.0.0 - msw: 1.3.3 - prettier: 3.3.3 - react-use: ^17.4.0 - recharts: ^2.9.0 - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - languageName: unknown - linkType: soft - "@janus-idp/backstage-plugin-orchestrator-backend@workspace:plugins/orchestrator-backend": version: 0.0.0-use.local resolution: "@janus-idp/backstage-plugin-orchestrator-backend@workspace:plugins/orchestrator-backend" @@ -8441,70 +8288,6 @@ __metadata: languageName: node linkType: hard -"@janus-idp/backstage-plugin-tekton-common@^1.3.1, @janus-idp/backstage-plugin-tekton-common@workspace:plugins/tekton-common": - version: 0.0.0-use.local - resolution: "@janus-idp/backstage-plugin-tekton-common@workspace:plugins/tekton-common" - dependencies: - "@backstage/cli": 0.28.2 - prettier: 3.3.3 - peerDependencies: - "@backstage/plugin-permission-common": ^0.8.1 - languageName: unknown - linkType: soft - -"@janus-idp/backstage-plugin-tekton@workspace:plugins/tekton": - version: 0.0.0-use.local - resolution: "@janus-idp/backstage-plugin-tekton@workspace:plugins/tekton" - dependencies: - "@aonic-ui/pipelines": ^1.1.1 - "@backstage/catalog-model": ^1.7.0 - "@backstage/cli": 0.28.2 - "@backstage/core-app-api": 1.15.1 - "@backstage/core-components": ^0.15.1 - "@backstage/core-plugin-api": ^1.10.0 - "@backstage/dev-utils": 1.1.2 - "@backstage/plugin-catalog-react": ^1.14.0 - "@backstage/plugin-kubernetes": ^0.11.16 - "@backstage/plugin-kubernetes-common": ^0.8.3 - "@backstage/plugin-kubernetes-react": ^0.4.4 - "@backstage/plugin-permission-react": ^0.4.27 - "@backstage/test-utils": 1.7.0 - "@backstage/theme": ^0.6.0 - "@janus-idp/backstage-plugin-tekton-common": ^1.3.1 - "@janus-idp/shared-react": ^2.13.1 - "@kubernetes/client-node": ^0.22.1 - "@material-ui/core": ^4.9.13 - "@material-ui/icons": ^4.11.3 - "@material-ui/lab": ^4.0.0-alpha.45 - "@mui/icons-material": 5.15.17 - "@patternfly/patternfly": ^5.1.0 - "@patternfly/react-charts": ^7.1.1 - "@patternfly/react-core": ^5.1.2 - "@patternfly/react-tokens": ^5.1.2 - "@patternfly/react-topology": ^5.1.0 - "@playwright/test": 1.45.3 - "@redhat-developer/red-hat-developer-hub-theme": 0.4.0 - "@testing-library/jest-dom": 6.4.8 - "@testing-library/react": 14.3.1 - "@testing-library/react-hooks": 8.0.1 - "@testing-library/user-event": 14.5.2 - "@types/node": 18.19.34 - classnames: ^2.3.2 - cross-fetch: 4.0.0 - dagre: ^0.8.5 - lodash: ^4.17.21 - msw: 1.3.3 - prettier: 3.3.3 - react-measure: ^2.5.2 - react-use: ^17.4.0 - start-server-and-test: 2.0.8 - peerDependencies: - react: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-dom: ^16.13.1 || ^17.0.0 || ^18.0.0 - react-router-dom: ^6.0.0 - languageName: unknown - linkType: soft - "@janus-idp/backstage-plugin-web-terminal@workspace:plugins/web-terminal": version: 0.0.0-use.local resolution: "@janus-idp/backstage-plugin-web-terminal@workspace:plugins/web-terminal" @@ -8571,18 +8354,6 @@ __metadata: languageName: unknown linkType: soft -"@janus-idp/backstage-scaffolder-backend-module-quay@workspace:plugins/quay-actions": - version: 0.0.0-use.local - resolution: "@janus-idp/backstage-scaffolder-backend-module-quay@workspace:plugins/quay-actions" - dependencies: - "@backstage/backend-plugin-api": ^1.0.1 - "@backstage/cli": 0.28.2 - "@backstage/plugin-scaffolder-node": ^0.5.0 - "@backstage/plugin-scaffolder-node-test-utils": 0.1.14 - prettier: 3.3.3 - languageName: unknown - linkType: soft - "@janus-idp/cli@*, @janus-idp/cli@workspace:packages/cli": version: 0.0.0-use.local resolution: "@janus-idp/cli@workspace:packages/cli" @@ -8669,7 +8440,7 @@ __metadata: languageName: unknown linkType: soft -"@janus-idp/shared-react@^2.13.1, @janus-idp/shared-react@workspace:plugins/shared-react": +"@janus-idp/shared-react@workspace:plugins/shared-react": version: 0.0.0-use.local resolution: "@janus-idp/shared-react@workspace:plugins/shared-react" dependencies: @@ -9033,29 +8804,29 @@ __metadata: linkType: hard "@jsep-plugin/assignment@npm:^1.2.1": - version: 1.2.1 - resolution: "@jsep-plugin/assignment@npm:1.2.1" + version: 1.3.0 + resolution: "@jsep-plugin/assignment@npm:1.3.0" peerDependencies: jsep: ^0.4.0||^1.0.0 - checksum: d56fd7423c59dd269c50b0a9c22ec05f099a789ec8e8980f2307782f496ab3f0740151f1bdc7a1f3a8ee9085cdeb6f5b4def0d6b312e6b93ab160e6489b400f2 + checksum: 5549497d403a6c00969d61202a6d3dafc5a349929d190a524363dcfacb3436dbda3d9f88b2ec1330247a594ad3c5f1c17b0997769d0b206802281bad6cf9a410 languageName: node linkType: hard "@jsep-plugin/regex@npm:^1.0.1, @jsep-plugin/regex@npm:^1.0.3": - version: 1.0.3 - resolution: "@jsep-plugin/regex@npm:1.0.3" + version: 1.0.4 + resolution: "@jsep-plugin/regex@npm:1.0.4" peerDependencies: jsep: ^0.4.0||^1.0.0 - checksum: a57718ae5c86bd10ff5de51843a771b96a10a9c6b5c5f4e02aa5318257c3d5fdec96f8b389fcbe129c7a6ad6b0746d9a0fd934c949b80882230fbc14b548c922 + checksum: 78ef01554535ac6c108851a2a6d86377bce10de01a263ad7b31f9b37c8aa9fc6c49f24b753e5da7d771c5921c913e43c1c33e0bc0fa5d02562d906c83a237836 languageName: node linkType: hard "@jsep-plugin/ternary@npm:^1.0.2": - version: 1.1.3 - resolution: "@jsep-plugin/ternary@npm:1.1.3" + version: 1.1.4 + resolution: "@jsep-plugin/ternary@npm:1.1.4" peerDependencies: jsep: ^0.4.0||^1.0.0 - checksum: c05408b0302844723f98b90787425beb4e8ad14029df3d98e88b9d61343d81201a7f0bf3db5806dcf0378c7be69f5b4c9fcd04f055bda282c73f4d1b425e502a + checksum: 2b6ece0adeb9e21fc34ff0a868ca7698a89c1328b61a233dcff5b28d9eb3f86b2710ab23a9928408b50cbe69e7d8b2f73e166d8d9c0d8601baaf8a174139a185 languageName: node linkType: hard @@ -9552,18 +9323,14 @@ __metadata: linkType: hard "@kubernetes/client-node@npm:^0.22.1": - version: 0.22.1 - resolution: "@kubernetes/client-node@npm:0.22.1" + version: 0.22.2 + resolution: "@kubernetes/client-node@npm:0.22.2" dependencies: - "@types/js-yaml": ^4.0.1 - "@types/node": ^22.0.0 - "@types/request": ^2.47.1 - "@types/ws": ^8.5.3 byline: ^5.0.0 isomorphic-ws: ^5.0.0 js-yaml: ^4.1.0 jsonpath-plus: ^10.0.0 - openid-client: ^5.3.0 + openid-client: ^6.1.3 request: ^2.88.0 rfc4648: ^1.3.0 stream-buffers: ^3.0.2 @@ -9573,7 +9340,7 @@ __metadata: dependenciesMeta: openid-client: optional: true - checksum: 501377ad70681df9e30885cf18e40f9b16fd452bc50d9a46688a6f667a2a7f490238269e528b1f1804a6eaf4347f8edda57e5129b1a28a52915fe7898ea84329 + checksum: d951a2cf325bdc4f3d6fefac55b10225ddc1db3df0a6d1f1747adb6b028b7ea43291b0b2b7311cb518580e66824f4e6cbdc54cb783ae2adc543ad25d1768b98d languageName: node linkType: hard @@ -9641,22 +9408,13 @@ __metadata: languageName: node linkType: hard -"@lukeed/csprng@npm:^1.0.0, @lukeed/csprng@npm:^1.1.0": +"@lukeed/csprng@npm:^1.0.0": version: 1.1.0 resolution: "@lukeed/csprng@npm:1.1.0" checksum: 926f5f7fc629470ca9a8af355bfcd0271d34535f7be3890f69902432bddc3262029bb5dbe9025542cf6c9883d878692eef2815fc2f3ba5b92e9da1f9eba2e51b languageName: node linkType: hard -"@lukeed/uuid@npm:^2.0.0": - version: 2.0.1 - resolution: "@lukeed/uuid@npm:2.0.1" - dependencies: - "@lukeed/csprng": ^1.1.0 - checksum: f5e71e4da852dbff49b93cad27d5a2f61c2241e307bbe89b3b54b889ecb7927f2487246467f90ebb6cbdb7e0ac2a213e2e58b1182cb7990cef6e049aa7c39e7b - languageName: node - linkType: hard - "@manypkg/find-root@npm:^1.1.0": version: 1.1.0 resolution: "@manypkg/find-root@npm:1.1.0" @@ -9900,38 +9658,39 @@ __metadata: languageName: node linkType: hard -"@module-federation/bridge-react-webpack-plugin@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.6.11" +"@module-federation/bridge-react-webpack-plugin@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/bridge-react-webpack-plugin@npm:0.6.16" dependencies: - "@module-federation/sdk": 0.6.11 + "@module-federation/sdk": 0.6.16 "@types/semver": 7.5.8 semver: 7.6.3 - checksum: 8797a7c52ec7baf8269c979a1d3f45dfa3e817a99a4c14602f53c2e891affbda1fb1a796480bb5b15e6b2df133f775d62e33df178dfec9d94bf0b1b28830cb09 + checksum: 9b49f8788bc741279e80cbc7b19980aa0d75e689c5ca08f1a19879d1f921f20e23e54ffc3fdc47010b90786130266d04395f46681d15ffe89f9d57e4e7575882 languageName: node linkType: hard -"@module-federation/data-prefetch@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/data-prefetch@npm:0.6.11" +"@module-federation/data-prefetch@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/data-prefetch@npm:0.6.16" dependencies: - "@module-federation/runtime": 0.6.11 - "@module-federation/sdk": 0.6.11 + "@module-federation/runtime": 0.6.16 + "@module-federation/sdk": 0.6.16 fs-extra: 9.1.0 peerDependencies: react: ">=16.9.0" react-dom: ">=16.9.0" - checksum: ca0f62c6e5103639e42ad0bcbaabc3aa4295eda90356888482bfa58bb961172939ce4b9689c7ef2ebdbebd4c886b3b11750af3da5189ad8646501ff251b08a8b + checksum: cac7dc921abb1f3209e2afd7d4f21a21de525babcbd4afed69e61b2261cf7f18b6f1d9db4be005d1b60f968a03e222639e918253591c23f0be925fb84c952326 languageName: node linkType: hard -"@module-federation/dts-plugin@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/dts-plugin@npm:0.6.11" +"@module-federation/dts-plugin@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/dts-plugin@npm:0.6.16" dependencies: - "@module-federation/managers": 0.6.11 - "@module-federation/sdk": 0.6.11 - "@module-federation/third-party-dts-extractor": 0.6.11 + "@module-federation/error-codes": 0.6.14 + "@module-federation/managers": 0.6.16 + "@module-federation/sdk": 0.6.16 + "@module-federation/third-party-dts-extractor": 0.6.16 adm-zip: ^0.5.10 ansi-colors: ^4.1.3 axios: ^1.7.4 @@ -9950,22 +9709,22 @@ __metadata: peerDependenciesMeta: vue-tsc: optional: true - checksum: 6d2aba51294f0e9ec84c4c4c05d6f589359157332ef2c4af580ea39079198d87ad9fdc3c4e666335a64d1580c4a7a01b439de2844f471404e2900562387ff7b0 + checksum: 6d1eae570d0234f5adfb3971c8b4b09054fc6e7bff5e06241a5a7ca699c2b22b306d74d391ccaf01ed7ef71541f87c61829342d6a65bd5234f0fcbb36a21626d languageName: node linkType: hard "@module-federation/enhanced@npm:^0.6.0": - version: 0.6.11 - resolution: "@module-federation/enhanced@npm:0.6.11" - dependencies: - "@module-federation/bridge-react-webpack-plugin": 0.6.11 - "@module-federation/data-prefetch": 0.6.11 - "@module-federation/dts-plugin": 0.6.11 - "@module-federation/managers": 0.6.11 - "@module-federation/manifest": 0.6.11 - "@module-federation/rspack": 0.6.11 - "@module-federation/runtime-tools": 0.6.11 - "@module-federation/sdk": 0.6.11 + version: 0.6.16 + resolution: "@module-federation/enhanced@npm:0.6.16" + dependencies: + "@module-federation/bridge-react-webpack-plugin": 0.6.16 + "@module-federation/data-prefetch": 0.6.16 + "@module-federation/dts-plugin": 0.6.16 + "@module-federation/managers": 0.6.16 + "@module-federation/manifest": 0.6.16 + "@module-federation/rspack": 0.6.16 + "@module-federation/runtime-tools": 0.6.16 + "@module-federation/sdk": 0.6.16 btoa: ^1.2.1 upath: 2.0.1 peerDependencies: @@ -9979,44 +9738,51 @@ __metadata: optional: true webpack: optional: true - checksum: f36ea6a4b70436ba365e92704f5acfcf2aec5faa2cf2dd18767f0243c0b2b901c19e2daed8a118f18668839691f42633577ba52231a1e58c12c1ccc42d842673 + checksum: bb1f6566ed176e414816bfc22352f14b5ac45b1fa1655d8d403bde13145d8d0f9c54767d14b9b4fb2210eb5f406f3dd93826bcac1e2303be6bbaccb7eb78ab23 + languageName: node + linkType: hard + +"@module-federation/error-codes@npm:0.6.14": + version: 0.6.14 + resolution: "@module-federation/error-codes@npm:0.6.14" + checksum: d487eebb8990c0ea712dc61813f54c487c0e3549cf21239db28dfa18b5c97ae79bad5134db90aa67aee74f5af5c01d115c7aa66a66a81b098dd75f40e158fcc6 languageName: node linkType: hard -"@module-federation/managers@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/managers@npm:0.6.11" +"@module-federation/managers@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/managers@npm:0.6.16" dependencies: - "@module-federation/sdk": 0.6.11 + "@module-federation/sdk": 0.6.16 find-pkg: 2.0.0 fs-extra: 9.1.0 - checksum: fdab486ca08060203c23acb078fce0402229d379e5b0666883ab0fdf204ebcd6e597a4204b023839db048809d40ddb0eaca43885bd3594bda39345c65af1522d + checksum: 6b4e3a585aa2655134152752f2951ec1e913261510bfe714e19040da6d44a40800f7ca514d56f2ad04788d7501b886f3fcfb203900c6a25b7b8228a5459f6d33 languageName: node linkType: hard -"@module-federation/manifest@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/manifest@npm:0.6.11" +"@module-federation/manifest@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/manifest@npm:0.6.16" dependencies: - "@module-federation/dts-plugin": 0.6.11 - "@module-federation/managers": 0.6.11 - "@module-federation/sdk": 0.6.11 + "@module-federation/dts-plugin": 0.6.16 + "@module-federation/managers": 0.6.16 + "@module-federation/sdk": 0.6.16 chalk: 3.0.0 find-pkg: 2.0.0 - checksum: b9f28ccfd527b676fa71d18d846ee49129a28156591c301d95f1820b6b5b2bb41b1fcb2a5d9e4d1f637c61b39e665818d7bec3444ea64058bf46e416c9b7cf09 + checksum: fee3254347f927756fcf4d64ede32b93326f976292d7540ebb238fad5ea81c003f030a6020d042239f1f54568ed79e5eafa21e812f763d5961c6827b60be59f7 languageName: node linkType: hard -"@module-federation/rspack@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/rspack@npm:0.6.11" +"@module-federation/rspack@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/rspack@npm:0.6.16" dependencies: - "@module-federation/bridge-react-webpack-plugin": 0.6.11 - "@module-federation/dts-plugin": 0.6.11 - "@module-federation/managers": 0.6.11 - "@module-federation/manifest": 0.6.11 - "@module-federation/runtime-tools": 0.6.11 - "@module-federation/sdk": 0.6.11 + "@module-federation/bridge-react-webpack-plugin": 0.6.16 + "@module-federation/dts-plugin": 0.6.16 + "@module-federation/managers": 0.6.16 + "@module-federation/manifest": 0.6.16 + "@module-federation/runtime-tools": 0.6.16 + "@module-federation/sdk": 0.6.16 peerDependencies: typescript: ^4.9.0 || ^5.0.0 vue-tsc: ">=1.0.24" @@ -10025,54 +9791,57 @@ __metadata: optional: true vue-tsc: optional: true - checksum: 9e134f18fb0c5cf9fb411dd02709a2e936a630e7f39ac74f1fd07a7b8dfa231d9c001b15c52e9a8fbb8cd5688c2b58fa8594bd294ab561b47e283827a48b8656 + checksum: afc98f64d3270e952ff0425ddd71b13b48644306679d3a4466d38a80c855682951a4b5c1b662fa63619ffad8400d6e7029b762aefd99e7169ee431f12c278e78 languageName: node linkType: hard -"@module-federation/runtime-tools@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/runtime-tools@npm:0.6.11" +"@module-federation/runtime-tools@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/runtime-tools@npm:0.6.16" dependencies: - "@module-federation/runtime": 0.6.11 - "@module-federation/webpack-bundler-runtime": 0.6.11 - checksum: 15ab0bee1c4e02b0e07ee059410f2a166f0afc6b13b66293a9681e4fa9d185fa0aa232a762ebd3aa54f1c5f53ad0b367fdd09a5f6116f1b0fd6eadf4ca02a0a2 + "@module-federation/runtime": 0.6.16 + "@module-federation/webpack-bundler-runtime": 0.6.16 + checksum: 53aa76f2563e978e9f610e9276e6f3f6e73ecbf19f3cc349d0762955e748c43ec08a74f248cb697eb31d8109869f05f0f8dda1d6d082436ec246393d0011ac95 languageName: node linkType: hard -"@module-federation/runtime@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/runtime@npm:0.6.11" +"@module-federation/runtime@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/runtime@npm:0.6.16" dependencies: - "@module-federation/sdk": 0.6.11 - checksum: 3ddc92de3ad242177ba916f5f410b29f31017820b7c103defe8f964e8145ba8fb274b727ef8b92273c1ac4d53e1dd2cee61879c7710ea78180d8ff67387c0cf9 + "@module-federation/error-codes": 0.6.14 + "@module-federation/sdk": 0.6.16 + checksum: d247b4b8ce38f84692da6a3711cdd6d35c4de7885a4639720d4df2436900d66ba2a1b815f64064b95e6aee9fb7082e4d1c6fe1e8ccecd8ddcfaef38379153bbd languageName: node linkType: hard -"@module-federation/sdk@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/sdk@npm:0.6.11" - checksum: d77811c08fcfce7e0922112593f1990a35eafe9e1fbfc0bdd99cb044fed29a66e33669b6f31ffafcdf7f4430b25f541dc79ca94d0e52b1f4bb0d7a7ec13ce765 +"@module-federation/sdk@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/sdk@npm:0.6.16" + dependencies: + isomorphic-rslog: 0.0.5 + checksum: 4495af06a83cbf69da6f6c20b0e8b934382b7b5e9a1b56a3385756476e97750beeb0f4b2671dbc64a3c2ab4a5fdb1f99aafd7562f47a4894352fff75d9499ce8 languageName: node linkType: hard -"@module-federation/third-party-dts-extractor@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/third-party-dts-extractor@npm:0.6.11" +"@module-federation/third-party-dts-extractor@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/third-party-dts-extractor@npm:0.6.16" dependencies: find-pkg: 2.0.0 fs-extra: 9.1.0 resolve: 1.22.8 - checksum: deb3a80ff83b983b483813e40362140b486ac6a10286117270f75d66bb7c27aa4f9ec4763faeda5e351785eac1a6f1c5f82df98a737708099e9a2a5075746575 + checksum: 2f2317d3703a084a2ff11152a376276a9462954da624a6d69ab265868fb2fedeaeeb1486721f9fff0f3c15d81e3336bf71f90fabe8d4ed4cde4c4d0b5a8ff8be languageName: node linkType: hard -"@module-federation/webpack-bundler-runtime@npm:0.6.11": - version: 0.6.11 - resolution: "@module-federation/webpack-bundler-runtime@npm:0.6.11" +"@module-federation/webpack-bundler-runtime@npm:0.6.16": + version: 0.6.16 + resolution: "@module-federation/webpack-bundler-runtime@npm:0.6.16" dependencies: - "@module-federation/runtime": 0.6.11 - "@module-federation/sdk": 0.6.11 - checksum: 3b4eea61b04f966d4ac74f6d59b43d75121692b2c2b7228a890646c68b356c03f7da1560cce159a1fbb5212d5ad5a6b8431b1eafeb19b4d37f38c03df2a6fb79 + "@module-federation/runtime": 0.6.16 + "@module-federation/sdk": 0.6.16 + checksum: e78d5879eb1553c3dc96a93c7c962d9aa576b20f420fac8747fa1e3d61ab7e4ee51372924cedcd6483b829e2b4988a6f2daad4c6ddf2841c744ef69b9ba27680 languageName: node linkType: hard @@ -10315,7 +10084,7 @@ __metadata: languageName: node linkType: hard -"@mui/material@npm:^5.12.2, @mui/material@npm:^5.15.18": +"@mui/material@npm:^5.12.2": version: 5.16.7 resolution: "@mui/material@npm:5.16.7" dependencies: @@ -10446,14 +10215,14 @@ __metadata: linkType: hard "@mui/types@npm:^7.2.14, @mui/types@npm:^7.2.15": - version: 7.2.18 - resolution: "@mui/types@npm:7.2.18" + version: 7.2.19 + resolution: "@mui/types@npm:7.2.19" peerDependencies: "@types/react": ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: cf07ecc4bc8ad68a00b5afc87e4fb922664e3c34e83e9cfcc71e5de625481f652c2fd3982e77084acf47ca52e69577cd93641a9b185e7ef3afeec87f63252736 + checksum: c3b5723e6f0861d47df834c57878f19347aefecdaf948cf9a25a64b73fbc75791430693d0f540b2bdc01bdfc605dc32bf4ba738113ec415aa9eaf002ce38f064 languageName: node linkType: hard @@ -10684,8 +10453,8 @@ __metadata: linkType: hard "@octokit/auth-app@npm:^6.0.0": - version: 6.1.2 - resolution: "@octokit/auth-app@npm:6.1.2" + version: 6.1.3 + resolution: "@octokit/auth-app@npm:6.1.3" dependencies: "@octokit/auth-oauth-app": ^7.1.0 "@octokit/auth-oauth-user": ^4.1.0 @@ -10693,10 +10462,10 @@ __metadata: "@octokit/request-error": ^5.1.0 "@octokit/types": ^13.1.0 deprecation: ^2.3.1 - lru-cache: ^10.0.0 + lru-cache: "npm:@wolfy1339/lru-cache@^11.0.2-patch.1" universal-github-app-jwt: ^1.1.2 universal-user-agent: ^6.0.0 - checksum: fa9c16a9cf884a87f78ed11f4ab9b300908f3648ab9cd710037b22abbf496b3edb86440bf97acb28cf6d4ee4d64fbab4a845b75e739d0582879bc50ab0b74852 + checksum: 997a4abd2b85b3751d63034b38ecbf8b711ee212f99df32586812e8e99637fc29f50e051f51c1dec04e0f8de3f9cb8c722c65eb1890e02b6b3e3f6dc1323fa93 languageName: node linkType: hard @@ -11358,8 +11127,8 @@ __metadata: linkType: hard "@patternfly/react-charts@npm:^7.1.1": - version: 7.4.5 - resolution: "@patternfly/react-charts@npm:7.4.5" + version: 7.4.6 + resolution: "@patternfly/react-charts@npm:7.4.6" dependencies: "@patternfly/react-styles": ^5.4.1 "@patternfly/react-tokens": ^5.4.1 @@ -11386,7 +11155,7 @@ __metadata: peerDependencies: react: ^17 || ^18 react-dom: ^17 || ^18 - checksum: a841b2b1e9b31e36612e9b974f8cab4c9614b70ab925e1ec87210e3a09fe08b3670719cbabc1b869fb7dc7f9ac7510090d3cd215ff023c9b0c4e9fb88be29a63 + checksum: dc2ab0d0cc591134556e9351c405f1b17ed96c312bd18a52234d79031ac6740138d3d6543d49cef5dc3b58108b80fd91d62b6bef4637759f5a69de7c67da6fa5 languageName: node linkType: hard @@ -11407,7 +11176,7 @@ __metadata: languageName: node linkType: hard -"@patternfly/react-core@npm:6.0.0-prerelease.21, @patternfly/react-core@npm:^6.0.0-prerelease.21": +"@patternfly/react-core@npm:6.0.0-prerelease.21": version: 6.0.0-prerelease.21 resolution: "@patternfly/react-core@npm:6.0.0-prerelease.21" dependencies: @@ -11442,7 +11211,7 @@ __metadata: languageName: node linkType: hard -"@patternfly/react-core@npm:^5.1.1, @patternfly/react-core@npm:^5.1.2, @patternfly/react-core@npm:^5.4.8": +"@patternfly/react-core@npm:^5.1.1": version: 5.4.8 resolution: "@patternfly/react-core@npm:5.4.8" dependencies: @@ -11459,7 +11228,24 @@ __metadata: languageName: node linkType: hard -"@patternfly/react-icons@npm:6.0.0-prerelease.7, @patternfly/react-icons@npm:^6.0.0-prerelease.7": +"@patternfly/react-core@npm:^6.0.0-prerelease.21": + version: 6.0.0 + resolution: "@patternfly/react-core@npm:6.0.0" + dependencies: + "@patternfly/react-icons": ^6.0.0 + "@patternfly/react-styles": ^6.0.0 + "@patternfly/react-tokens": ^6.0.0 + focus-trap: 7.6.0 + react-dropzone: ^14.2.3 + tslib: ^2.7.0 + peerDependencies: + react: ^17 || ^18 + react-dom: ^17 || ^18 + checksum: 196ca777d06df73945cfa0c8c11d3d54d303012bf5b15e67fabb6b996c217a5326b58a7be6c9eaf2a7055391b71065c27ab34ddc4b88fd6cc69760b237444864 + languageName: node + linkType: hard + +"@patternfly/react-icons@npm:6.0.0-prerelease.7": version: 6.0.0-prerelease.7 resolution: "@patternfly/react-icons@npm:6.0.0-prerelease.7" peerDependencies: @@ -11489,6 +11275,16 @@ __metadata: languageName: node linkType: hard +"@patternfly/react-icons@npm:^6.0.0, @patternfly/react-icons@npm:^6.0.0-prerelease.7": + version: 6.0.0 + resolution: "@patternfly/react-icons@npm:6.0.0" + peerDependencies: + react: ^17 || ^18 + react-dom: ^17 || ^18 + checksum: 39ddcda5a0f0a3840cc8b499a9b68f0ea133ea369a6412dfaabb38af0095ed9eef5df3171de3d0990dc0130720d4fbe3e6b28d70fdb6668c1507cd1cbdc6750d + languageName: node + linkType: hard + "@patternfly/react-styles@npm:^4.92.8": version: 4.92.8 resolution: "@patternfly/react-styles@npm:4.92.8" @@ -11503,27 +11299,10 @@ __metadata: languageName: node linkType: hard -"@patternfly/react-styles@npm:^6.0.0-prerelease.6": - version: 6.0.0-prerelease.6 - resolution: "@patternfly/react-styles@npm:6.0.0-prerelease.6" - checksum: 6a4455dbd15d9137f6d756391b2d1e6d4e804f5640a7d2c8e82bdf1e61cc5e66e4e6091a9013e1cc85b65d46d2712a8079aea8571f55b6fbf96d35485d8f5a74 - languageName: node - linkType: hard - -"@patternfly/react-table@npm:^5.1.2": - version: 5.4.8 - resolution: "@patternfly/react-table@npm:5.4.8" - dependencies: - "@patternfly/react-core": ^5.4.8 - "@patternfly/react-icons": ^5.4.2 - "@patternfly/react-styles": ^5.4.1 - "@patternfly/react-tokens": ^5.4.1 - lodash: ^4.17.21 - tslib: ^2.7.0 - peerDependencies: - react: ^17 || ^18 - react-dom: ^17 || ^18 - checksum: 12c279b68367db9b3db44e01631b1d15c8dced087df1555e8327d82243236c35450e696074856381f9e3f984587a08106c48a6f2e7646abaacb1d751c2c5ab1d +"@patternfly/react-styles@npm:^6.0.0, @patternfly/react-styles@npm:^6.0.0-prerelease.6": + version: 6.0.0 + resolution: "@patternfly/react-styles@npm:6.0.0" + checksum: 40f6e169eea6b412e8bea3c220c4e29923106fa65363c5e07068db37eaa55f6088411ed0bd36c9befaa3486f108ca8d097ee39bd55276855a4387e6713d484c8 languageName: node linkType: hard @@ -11534,17 +11313,17 @@ __metadata: languageName: node linkType: hard -"@patternfly/react-tokens@npm:^5.1.2, @patternfly/react-tokens@npm:^5.4.1": +"@patternfly/react-tokens@npm:^5.4.1": version: 5.4.1 resolution: "@patternfly/react-tokens@npm:5.4.1" checksum: d6f51cbd31db797ed42b148f58ecb28bcc93bdcdf39d0f20b8db5ac40ac2998002ddfad764af38c2f00bc366ac57b1c12fdd42a55e7a30fe3b01e26739e770cf languageName: node linkType: hard -"@patternfly/react-tokens@npm:^6.0.0-prerelease.7": - version: 6.0.0-prerelease.7 - resolution: "@patternfly/react-tokens@npm:6.0.0-prerelease.7" - checksum: 1609afb85c8c607d922ef08c811f25bc6b9300fe7bf1da27789985709d5b9e1a9e043d7a2990c3092e2c10dac823419814d1b5a2d52667cfe8686a239f3a359b +"@patternfly/react-tokens@npm:^6.0.0, @patternfly/react-tokens@npm:^6.0.0-prerelease.7": + version: 6.0.0 + resolution: "@patternfly/react-tokens@npm:6.0.0" + checksum: 3390651a7ea0d2664adb1f760cb54e40200ac63b54269ba3f28002c01cd108c57a7bf142c894cfc510f400c950c239f93fb9ca47c00515dda44ec386b6aec972 languageName: node linkType: hard @@ -11575,32 +11354,6 @@ __metadata: languageName: node linkType: hard -"@patternfly/react-topology@npm:^5.1.0": - version: 5.4.0 - resolution: "@patternfly/react-topology@npm:5.4.0" - dependencies: - "@dagrejs/dagre": 1.1.2 - "@patternfly/react-core": ^5.1.1 - "@patternfly/react-icons": ^5.1.1 - "@patternfly/react-styles": ^5.1.1 - "@types/d3": ^7.4.0 - "@types/d3-force": ^1.2.1 - "@types/react-measure": ^2.0.6 - d3: ^7.8.0 - mobx: ^6.9.0 - mobx-react: ^7.6.0 - point-in-svg-path: ^1.0.1 - popper.js: ^1.16.1 - react-measure: ^2.3.0 - tslib: ^2.0.0 - webcola: 3.4.0 - peerDependencies: - react: ^17 || ^18 - react-dom: ^17 || ^18 - checksum: 3b5a4469ba7cf02499d57bc7a82e419895aeba38ce2b35579faf414e763e90ff7a0c599fc6b9b09c9ceb7313f61f2c61aad1a5c20d74fc2cf5b6ae1b299d739a - languageName: node - linkType: hard - "@patternfly/virtual-assistant@npm:2.0.0-alpha.61": version: 2.0.0-alpha.61 resolution: "@patternfly/virtual-assistant@npm:2.0.0-alpha.61" @@ -12551,8 +12304,8 @@ __metadata: linkType: hard "@radix-ui/react-tooltip@npm:^1.0.6": - version: 1.1.3 - resolution: "@radix-ui/react-tooltip@npm:1.1.3" + version: 1.1.4 + resolution: "@radix-ui/react-tooltip@npm:1.1.4" dependencies: "@radix-ui/primitive": 1.1.0 "@radix-ui/react-compose-refs": 1.1.0 @@ -12576,7 +12329,7 @@ __metadata: optional: true "@types/react-dom": optional: true - checksum: 1446d4b74270d645936fd5fd2a30ae47842b5a1ab16215127742ab192f6fd821805bf521ca057c054d6babc1386b3ea677fb1bab5b140457964d3cfe1b2e1ab5 + checksum: 4aaba9ee0a5a159f164c3ebf0b5387879504466d07c01912dd36652887898e7560dcb600c8670d32087041b17aef00106584a73f6e7932955f2d94e5c2a96047 languageName: node linkType: hard @@ -12899,8 +12652,8 @@ __metadata: linkType: hard "@rjsf/core@npm:^5.21.2": - version: 5.22.1 - resolution: "@rjsf/core@npm:5.22.1" + version: 5.22.4 + resolution: "@rjsf/core@npm:5.22.4" dependencies: lodash: ^4.17.21 lodash-es: ^4.17.21 @@ -12910,7 +12663,7 @@ __metadata: peerDependencies: "@rjsf/utils": ^5.22.x react: ^16.14.0 || >=17 - checksum: c6bda6ecb2ea948d14b30fd8a0cedcc1caa8d527bde353a958f4f78304a6ecdbccf1982424e3fbe324bccdc77fed22823a9240e937a07c8e477845b97002b2bb + checksum: cc2d6b51959be277f727a0c8398c699bc4068cb63f3f096ddd051c35e5ba685beb5745c281d81e3906f1c92329e9468bc35f81244e48026794318c98b884dac7 languageName: node linkType: hard @@ -12928,15 +12681,15 @@ __metadata: linkType: hard "@rjsf/material-ui@npm:^5.21.2": - version: 5.22.1 - resolution: "@rjsf/material-ui@npm:5.22.1" + version: 5.22.4 + resolution: "@rjsf/material-ui@npm:5.22.4" peerDependencies: "@material-ui/core": ^4.12.3 "@material-ui/icons": ^4.11.2 "@rjsf/core": ^5.22.x "@rjsf/utils": ^5.22.x react: ^16.14.0 || >=17 - checksum: 120406e0e8021f1950cf99d7db3b4e2b470f36977ea350cb78541db32c434e70717cadd70290354f80a8066a0626b5b09a3ff0d82b8e837efee8bb1aca19c8fa + checksum: c13ee94f4a3396c00f5c557c2546b9c5453daca32017e535aebbfaec601f963d11089eccda6b050c829c0bf03491b5d6189d8071f352de337d348f5d98c8a23e languageName: node linkType: hard @@ -12956,8 +12709,8 @@ __metadata: linkType: hard "@rjsf/utils@npm:^5.21.2": - version: 5.22.1 - resolution: "@rjsf/utils@npm:5.22.1" + version: 5.22.4 + resolution: "@rjsf/utils@npm:5.22.4" dependencies: json-schema-merge-allof: ^0.8.1 jsonpointer: ^5.0.1 @@ -12966,7 +12719,7 @@ __metadata: react-is: ^18.2.0 peerDependencies: react: ^16.14.0 || >=17 - checksum: d6a059e72afe3c86a22a7a49df15e2458e6a853645b75081757dee7afff1c2d5935fc87ca4f031502bf4629d403a3425375339e5e163cb94634aa462568b1aef + checksum: 7dddc74b910fb7b87ebddc564879126b100f14eee853c0fbc390faa6c5f944a70023f34925a360aa92915f4e9c56bccf57141db9fe7b3c6a97348d886794bab8 languageName: node linkType: hard @@ -12985,8 +12738,8 @@ __metadata: linkType: hard "@rjsf/validator-ajv8@npm:^5.21.2": - version: 5.22.1 - resolution: "@rjsf/validator-ajv8@npm:5.22.1" + version: 5.22.4 + resolution: "@rjsf/validator-ajv8@npm:5.22.4" dependencies: ajv: ^8.12.0 ajv-formats: ^2.1.1 @@ -12994,7 +12747,7 @@ __metadata: lodash-es: ^4.17.21 peerDependencies: "@rjsf/utils": ^5.22.x - checksum: 2f3e724542dad5ad621ad29edaff3cc91f33ce64b0b6bcc1bb5018992224c2272e640a6956daf62542a25128211b4a1b5183357b25d69811af3bef07c5ba19a8 + checksum: d316172a5fbaa6c4f1c04fd40d6af7f331487318801fc8060553faf977850e52343f2010cfeb1ac4cf47b426af323f7696a911e1e82369853fdc1ef0214a3f03 languageName: node linkType: hard @@ -13095,129 +12848,143 @@ __metadata: linkType: hard "@rollup/pluginutils@npm:^5.0.1, @rollup/pluginutils@npm:^5.0.2, @rollup/pluginutils@npm:^5.0.5, @rollup/pluginutils@npm:^5.1.0": - version: 5.1.2 - resolution: "@rollup/pluginutils@npm:5.1.2" + version: 5.1.3 + resolution: "@rollup/pluginutils@npm:5.1.3" dependencies: "@types/estree": ^1.0.0 estree-walker: ^2.0.2 - picomatch: ^2.3.1 + picomatch: ^4.0.2 peerDependencies: rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 peerDependenciesMeta: rollup: optional: true - checksum: 16c8c154fef9a32c513b52bd79c92ac427edccd05a8dc3994f10c296063940c57bf809d05903b473d9d408aa5977d75b98c701f481dd1856d5ffc37187ac0060 + checksum: a6e9bac8ae94da39679dae390b53b43fe7a218f8fa2bfecf86e59be4da4ba02ac004f166daf55f03506e49108399394f13edeb62cce090f8cfc967b29f4738bf languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.24.0" +"@rollup/rollup-android-arm-eabi@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.27.1" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-android-arm64@npm:4.24.0" +"@rollup/rollup-android-arm64@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-android-arm64@npm:4.27.1" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-arm64@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.24.0" +"@rollup/rollup-darwin-arm64@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-darwin-arm64@npm:4.27.1" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.24.0" +"@rollup/rollup-darwin-x64@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-darwin-x64@npm:4.27.1" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.24.0" +"@rollup/rollup-freebsd-arm64@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.27.1" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@rollup/rollup-freebsd-x64@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-freebsd-x64@npm:4.27.1" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@rollup/rollup-linux-arm-gnueabihf@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.27.1" conditions: os=linux & cpu=arm & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.24.0" +"@rollup/rollup-linux-arm-musleabihf@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.27.1" conditions: os=linux & cpu=arm & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.24.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.27.1" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.24.0" +"@rollup/rollup-linux-arm64-musl@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.27.1" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.24.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.27.1" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.24.0" +"@rollup/rollup-linux-riscv64-gnu@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.27.1" conditions: os=linux & cpu=riscv64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.24.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.27.1" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.24.0" +"@rollup/rollup-linux-x64-gnu@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.27.1" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.24.0" +"@rollup/rollup-linux-x64-musl@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.27.1" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.24.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.27.1" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-ia32-msvc@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.24.0" +"@rollup/rollup-win32-ia32-msvc@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.27.1" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.24.0": - version: 4.24.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.24.0" +"@rollup/rollup-win32-x64-msvc@npm:4.27.1": + version: 4.27.1 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.27.1" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -13246,79 +13013,10 @@ __metadata: languageName: node linkType: hard -"@segment/analytics-core@npm:1.8.0": - version: 1.8.0 - resolution: "@segment/analytics-core@npm:1.8.0" - dependencies: - "@lukeed/uuid": ^2.0.0 - "@segment/analytics-generic-utils": 1.2.0 - dset: ^3.1.4 - tslib: ^2.4.1 - checksum: c8e2a98670658d6400d8e517e141aff6eff581a12a4015ce8ff906185d148cf9dad79cc5bfb5376195794cc0c964a9c9ca79d36f3d4b49affeb7344251dcde1f - languageName: node - linkType: hard - -"@segment/analytics-generic-utils@npm:1.2.0": - version: 1.2.0 - resolution: "@segment/analytics-generic-utils@npm:1.2.0" - dependencies: - tslib: ^2.4.1 - checksum: f36aa093722e4f51dddd4dfa37164bd082175bb0c0960096f9b03073c482e96a17012bc99782259a9d3787e52a48f03ab3447902c6c635654a8ce544892073e5 - languageName: node - linkType: hard - -"@segment/analytics-next@npm:^1.58.0": - version: 1.75.0 - resolution: "@segment/analytics-next@npm:1.75.0" - dependencies: - "@lukeed/uuid": ^2.0.0 - "@segment/analytics-core": 1.8.0 - "@segment/analytics-generic-utils": 1.2.0 - "@segment/analytics.js-video-plugins": ^0.2.1 - "@segment/facade": ^3.4.9 - dset: ^3.1.4 - js-cookie: 3.0.1 - node-fetch: ^2.6.7 - tslib: ^2.4.1 - unfetch: ^4.1.0 - checksum: 92bc7ad1b1364e2446d8df3869a87d4014dc2a096248fdbd0c3bda9f2206e482eedbe044f348f21738f4139925d2d1997cff83df0879659c3accf1a4edf2c2b5 - languageName: node - linkType: hard - -"@segment/analytics.js-video-plugins@npm:^0.2.1": - version: 0.2.1 - resolution: "@segment/analytics.js-video-plugins@npm:0.2.1" - dependencies: - unfetch: ^3.1.1 - checksum: 284b42bb05569366ac4a7c51c90d64bcea64315b2dd330ff8b58c63fa11949443b3d2f7e92d2e3c118495e9018352249183f7d3fb05e4b904148302536d385ba - languageName: node - linkType: hard - -"@segment/facade@npm:^3.4.9": - version: 3.4.10 - resolution: "@segment/facade@npm:3.4.10" - dependencies: - "@segment/isodate-traverse": ^1.1.1 - inherits: ^2.0.4 - new-date: ^1.0.3 - obj-case: 0.2.1 - checksum: 5d10861f586ecebe3a71b25c9f37b3c922298188965047efcfd5b7e6f7147dc6967c3760726c43db99f33ef285191498e0726fc8d2556d5bdd82312a5f647ef2 - languageName: node - linkType: hard - -"@segment/isodate-traverse@npm:^1.1.1": - version: 1.1.1 - resolution: "@segment/isodate-traverse@npm:1.1.1" - dependencies: - "@segment/isodate": ^1.0.3 - checksum: 06f783623c74a7a2310bdcca50355a1f7b9cbb7a1d77f0c7408def29bd0a355dbc2ff31516d025b7cd6baebfdca7d771fb62899f446366f86cd6d34cae9a7000 - languageName: node - linkType: hard - -"@segment/isodate@npm:1.0.3, @segment/isodate@npm:^1.0.3": - version: 1.0.3 - resolution: "@segment/isodate@npm:1.0.3" - checksum: 31faf12e83fa6ab5ba7dfd5600dfaf8d224a00ab24f3a2d3d9ba7f4ecdc1683a55c00fc9246585361aa5cb67c6d7846e1d5497cc3bcca58c105902b79c91c34a +"@scarf/scarf@npm:=1.4.0": + version: 1.4.0 + resolution: "@scarf/scarf@npm:1.4.0" + checksum: def62aa403f7e63165ccb219efd2c420fc0b7357b0ba43397f635e4aa813ace1cdf3855a93fc559b4619bcc0469ae4767b8cb72af30ea5c0522bf4a2ecb18198 languageName: node linkType: hard @@ -13432,13 +13130,13 @@ __metadata: languageName: node linkType: hard -"@smithy/abort-controller@npm:^3.1.5, @smithy/abort-controller@npm:^3.1.6": - version: 3.1.6 - resolution: "@smithy/abort-controller@npm:3.1.6" +"@smithy/abort-controller@npm:^3.1.7, @smithy/abort-controller@npm:^3.1.8": + version: 3.1.8 + resolution: "@smithy/abort-controller@npm:3.1.8" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: abba34cc47b6f7951402da1f94465616b84dedf55e0b0467b53f7848b9cb3e82b94869fa637278aa2f65809613e872582791053fd23299e026edada4a5ec1c1c + checksum: edfe448be34e33120dfb11a564e87362288ed76d69eaae3449d5f1ee806def1fc844c35421caf2cf579e3bc45df97340e74e36927ec439c8c8aca5c5edf8fb85 languageName: node linkType: hard @@ -13461,171 +13159,158 @@ __metadata: languageName: node linkType: hard -"@smithy/config-resolver@npm:^3.0.10, @smithy/config-resolver@npm:^3.0.9": - version: 3.0.10 - resolution: "@smithy/config-resolver@npm:3.0.10" +"@smithy/config-resolver@npm:^3.0.11, @smithy/config-resolver@npm:^3.0.12": + version: 3.0.12 + resolution: "@smithy/config-resolver@npm:3.0.12" dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/types": ^3.6.0 + "@smithy/node-config-provider": ^3.1.11 + "@smithy/types": ^3.7.1 "@smithy/util-config-provider": ^3.0.0 - "@smithy/util-middleware": ^3.0.8 + "@smithy/util-middleware": ^3.0.10 tslib: ^2.6.2 - checksum: 55c2355db7eabfd70f0bf288d58cb0238f43b754d91f46febf7fd04617e6107d26e2899ede2b37fbd977980bb12fdbdb688fc5f53654202e946fe3c258cef5d1 + checksum: c92a10eb268b5f63aec14e68923dbdc5a58eaf3fa998e70fe8dea2636f876a1df1d64ee4627703f53f91dcfffdc20d5f6636d38b52071f2e8a439028662b18b6 languageName: node linkType: hard -"@smithy/core@npm:^2.4.8, @smithy/core@npm:^2.5.1": - version: 2.5.1 - resolution: "@smithy/core@npm:2.5.1" +"@smithy/core@npm:^2.5.2, @smithy/core@npm:^2.5.3": + version: 2.5.3 + resolution: "@smithy/core@npm:2.5.3" dependencies: - "@smithy/middleware-serde": ^3.0.8 - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 + "@smithy/middleware-serde": ^3.0.10 + "@smithy/protocol-http": ^4.1.7 + "@smithy/types": ^3.7.1 "@smithy/util-body-length-browser": ^3.0.0 - "@smithy/util-middleware": ^3.0.8 - "@smithy/util-stream": ^3.2.1 + "@smithy/util-middleware": ^3.0.10 + "@smithy/util-stream": ^3.3.1 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 9175f48eca64f6b304335e32e09c6276aadf7d26cb9180da0a120a2b07c12d8dbe51de2ccce78e98c60729ce4eefe28e7ca95c169432a8049560564d780d1a81 + checksum: cd0defc2069e2944c137e9fb6758375bbb95ba94768bd2b851d6076eb2901c58e305597258bedcee64df71c070fc486c15ddbde4038369b6afd68b289a1b9755 languageName: node linkType: hard -"@smithy/credential-provider-imds@npm:^3.2.4, @smithy/credential-provider-imds@npm:^3.2.5": - version: 3.2.5 - resolution: "@smithy/credential-provider-imds@npm:3.2.5" +"@smithy/credential-provider-imds@npm:^3.2.6, @smithy/credential-provider-imds@npm:^3.2.7": + version: 3.2.7 + resolution: "@smithy/credential-provider-imds@npm:3.2.7" dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/property-provider": ^3.1.8 - "@smithy/types": ^3.6.0 - "@smithy/url-parser": ^3.0.8 + "@smithy/node-config-provider": ^3.1.11 + "@smithy/property-provider": ^3.1.10 + "@smithy/types": ^3.7.1 + "@smithy/url-parser": ^3.0.10 tslib: ^2.6.2 - checksum: 4c8941e3c3806f605930c31e461b0b0fd6384f782c7df92b35e30581eca02d7c4c6d6f2b1c5cdb08fcf4823d98f0ceadc8481def968f1266f761df5dac672d8f + checksum: e61e1d1ab7d72d6865d8b711c69428e2df819b3daf5287e0139b5ae062934dd164753e26089961045428744bd019c531b4fb22690892fda5e5ae6053edecd0c1 languageName: node linkType: hard -"@smithy/eventstream-codec@npm:^3.1.7": - version: 3.1.7 - resolution: "@smithy/eventstream-codec@npm:3.1.7" +"@smithy/eventstream-codec@npm:^3.1.9": + version: 3.1.9 + resolution: "@smithy/eventstream-codec@npm:3.1.9" dependencies: "@aws-crypto/crc32": 5.2.0 - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 "@smithy/util-hex-encoding": ^3.0.0 tslib: ^2.6.2 - checksum: e0a3b187e984ca6a248dbd591f9c4d5b981df5018c46c4cb9ebf47cf5f354be124471a121e9dc9c25ce80e089f2ed5847a15666e89c83327d7e25ea4d46fb92e + checksum: ec5b09538a3cf5f469350d2ee3344cc878f4729ad514599138de392f9828618e62752f184369cf495110b0a7ca5649dde5ff17ddd02d8184c4768a473c67be9a languageName: node linkType: hard -"@smithy/eventstream-serde-browser@npm:^3.0.10": - version: 3.0.11 - resolution: "@smithy/eventstream-serde-browser@npm:3.0.11" +"@smithy/eventstream-serde-browser@npm:^3.0.12": + version: 3.0.13 + resolution: "@smithy/eventstream-serde-browser@npm:3.0.13" dependencies: - "@smithy/eventstream-serde-universal": ^3.0.10 - "@smithy/types": ^3.6.0 + "@smithy/eventstream-serde-universal": ^3.0.12 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: ca430cd9541889f1e22a508247c52f84387b51c1c580bdd7acd93ca74347bcaaf1cdfbf04709ce3667afcfa0e3602bbfcb018a6290b3966411a3aa48a38f3aa7 + checksum: b7d573c98f951d36c03f6054690d30d4185b3178f3365479f5fe6f5e3ec4593b1b74d49c9991d119ddc9a1433b6baf68493accd23b4e04f83091f50fe6a68109 languageName: node linkType: hard -"@smithy/eventstream-serde-config-resolver@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.8" - dependencies: - "@smithy/types": ^3.6.0 - tslib: ^2.6.2 - checksum: 44da1b399e296c713643e60ff7fbd34a62c8bba147ea515e6ba98293df11275b62ada04307750d8f8015f717bbe13d317453f47e0d02dc714debc4e043eb7105 - languageName: node - linkType: hard - -"@smithy/eventstream-serde-node@npm:^3.0.9": +"@smithy/eventstream-serde-config-resolver@npm:^3.0.9": version: 3.0.10 - resolution: "@smithy/eventstream-serde-node@npm:3.0.10" + resolution: "@smithy/eventstream-serde-config-resolver@npm:3.0.10" dependencies: - "@smithy/eventstream-serde-universal": ^3.0.10 - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 8e8f71bfa25d017f7914ad74258cf5f8c68a6bdc33ab32b126d95e0cb7ea796488d06405695f90e8af90668302e282ac8d4e66e70eca48d92d0cfa3b8e9592f2 + checksum: e615b7e8a05718e0f5c8886670e18a27a8ea0259f6c508e4493e9082dcbb478a742140edd22cafef93b43b20123a5315ad5ba41d884be011b9583615819fcafc languageName: node linkType: hard -"@smithy/eventstream-serde-universal@npm:^3.0.10": - version: 3.0.10 - resolution: "@smithy/eventstream-serde-universal@npm:3.0.10" +"@smithy/eventstream-serde-node@npm:^3.0.11": + version: 3.0.12 + resolution: "@smithy/eventstream-serde-node@npm:3.0.12" dependencies: - "@smithy/eventstream-codec": ^3.1.7 - "@smithy/types": ^3.6.0 + "@smithy/eventstream-serde-universal": ^3.0.12 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: ee3717312841438f5e173866475f47aa7a56a9426657bc89fffc497c15356617688ed17d6a09533918c11fbff68ce6f7998fd9d746030a9bc25a5e353ca8e9c0 + checksum: c68d225a5c744f22dcdb98f3b908ca8ebd8c2ad32e2431a1dd124bc58f6b4b9489001e873079496ea7a526b49304f5ec61c36769bcc237e72a37f63498b1765d languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^3.2.9": - version: 3.2.9 - resolution: "@smithy/fetch-http-handler@npm:3.2.9" +"@smithy/eventstream-serde-universal@npm:^3.0.12": + version: 3.0.12 + resolution: "@smithy/eventstream-serde-universal@npm:3.0.12" dependencies: - "@smithy/protocol-http": ^4.1.4 - "@smithy/querystring-builder": ^3.0.7 - "@smithy/types": ^3.5.0 - "@smithy/util-base64": ^3.0.0 + "@smithy/eventstream-codec": ^3.1.9 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 3b8eed12bff9d39e23989ea424e112530e01c81f983f15a3bfc4265baa06feb230267d095588705c5a8002cc4a2bfcd834b0341bff60a6236dcc24599ecf8327 + checksum: d5815e0ae953975f35c00976547835f3e87cec182fc6d05bf086dab8b5448ae42f88c222f06195d6f9a9c3c8f7ff13a10aaa4d8d9a639adeb3f8aa48ffdb4bf5 languageName: node linkType: hard -"@smithy/fetch-http-handler@npm:^4.0.0": - version: 4.0.0 - resolution: "@smithy/fetch-http-handler@npm:4.0.0" +"@smithy/fetch-http-handler@npm:^4.1.0, @smithy/fetch-http-handler@npm:^4.1.1": + version: 4.1.1 + resolution: "@smithy/fetch-http-handler@npm:4.1.1" dependencies: - "@smithy/protocol-http": ^4.1.5 - "@smithy/querystring-builder": ^3.0.8 - "@smithy/types": ^3.6.0 + "@smithy/protocol-http": ^4.1.7 + "@smithy/querystring-builder": ^3.0.10 + "@smithy/types": ^3.7.1 "@smithy/util-base64": ^3.0.0 tslib: ^2.6.2 - checksum: 43fc88515227e0d66b6b6a56a8e7a7f9c9690b32c51265859d40c1f4ace3a8a9ebba78e095715fe85a508d32c4f237c09f722e1e0c86d15a3fc81edc961a5051 + checksum: 8c36e23607bddb4088accb566a278d351435719d7137093945098d9b9fcb27cc638d2a37a5a8b883458ff238bb7e2df2b280bf130b89e50fa4235829e873bcb3 languageName: node linkType: hard -"@smithy/hash-blob-browser@npm:^3.1.6": - version: 3.1.7 - resolution: "@smithy/hash-blob-browser@npm:3.1.7" +"@smithy/hash-blob-browser@npm:^3.1.8": + version: 3.1.9 + resolution: "@smithy/hash-blob-browser@npm:3.1.9" dependencies: "@smithy/chunked-blob-reader": ^4.0.0 "@smithy/chunked-blob-reader-native": ^3.0.1 - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: d1e790e63147357f1c5b210cacf727f6ad75c78d8246c98a1d9af17a757ce9d2621a0a21e5171b4de9526ce731db15a1288c489c6f396d54314f74a29d667ae4 + checksum: a10d391c13e7d957f034c2f92db7e4e03cd2146eb6e85afb42f18e5b74f99350e9c6a3aae54282b6d8df9127b3aaa257db942f9ff7af795a7abab2267ec62750 languageName: node linkType: hard -"@smithy/hash-node@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/hash-node@npm:3.0.8" +"@smithy/hash-node@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/hash-node@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 "@smithy/util-buffer-from": ^3.0.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 9a2e2e8ea044008345e64406a5ecbc23a507b00eae42e71455f0b05c638a21da57a68e43d73254236203187d7943b864c750fc62f95825cc5340dd95767530c3 + checksum: 5ec547a09e02a591990e8a0a0bbc905ff91c44260505ecc572f5cab8c6366aadaed04aaec3912adc68da226c2beaea1f9f9fca57ecef7d8bdd6fe2efb0d2d4ce languageName: node linkType: hard -"@smithy/hash-stream-node@npm:^3.1.6": - version: 3.1.7 - resolution: "@smithy/hash-stream-node@npm:3.1.7" +"@smithy/hash-stream-node@npm:^3.1.8": + version: 3.1.9 + resolution: "@smithy/hash-stream-node@npm:3.1.9" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 2bd580a8759a68c991fa5817d47e828029648a870ad52da8ba175819d6324603934e0d34b83139ac21ddb265f9adcaffbd696105ca0783b193fd5805dc3e3ca3 + checksum: 314b6dff4f436cf21dcb13f9e163f064f7a7335968a5ac40a8739f778b622b31b5f1d800d968901f0997ed3a29830ab3d86c71a102263016f3c2e51929baa7b8 languageName: node linkType: hard -"@smithy/invalid-dependency@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/invalid-dependency@npm:3.0.8" +"@smithy/invalid-dependency@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/invalid-dependency@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: ad55921e703ea3396a7d03b4515c2c0100d3c494865594a8a73b160e2913cac442d61a2545bcb248fedf00bb150cce2c33827d1d12527e34070e7fd8e114d2d6 + checksum: 70cf24549cf85b0c7c017b9dff1a331161e22477c5c28e9150ed708ab35fb38ed53873cd65d33a2b257067f7ba8c82faf60dc24ed7c2e76537de7b5acdecabf8 languageName: node linkType: hard @@ -13647,194 +13332,194 @@ __metadata: languageName: node linkType: hard -"@smithy/md5-js@npm:^3.0.7": - version: 3.0.8 - resolution: "@smithy/md5-js@npm:3.0.8" +"@smithy/md5-js@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/md5-js@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 3159a01ff4fab7ebbfa41c2ba6baa5f4c2333dafff6232dea956fc82a6354ad97a70c67f4a28e7c919a5e6be418a3c2427073948739941b194ab9bd238e13290 + checksum: bd9a2ee50fc04871fbf3e33caef83617f1de56a50d3989908db26d56ca11085b54624dc6329efe74ce5ca166da8409e44ce13149bcac2da5bc03f91550e54231 languageName: node linkType: hard -"@smithy/middleware-content-length@npm:^3.0.9": - version: 3.0.10 - resolution: "@smithy/middleware-content-length@npm:3.0.10" +"@smithy/middleware-content-length@npm:^3.0.11": + version: 3.0.12 + resolution: "@smithy/middleware-content-length@npm:3.0.12" dependencies: - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 + "@smithy/protocol-http": ^4.1.7 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 776fd9014240109328b6823be8649322390bde7aa468750920be3e6ed268a4e380f5b3fcfbe15b2b8af1b6e4b4fedda9a446b76cc247ca252b95380646ac80b5 + checksum: 9e1418261e346dff61deb0de9685265cd8947dc97398725a9d64f52a0a8d48d08b5cce16b66b5639eb526257ab7cda114c791f661346331389c0f2979d760061 languageName: node linkType: hard -"@smithy/middleware-endpoint@npm:^3.1.4, @smithy/middleware-endpoint@npm:^3.2.1": - version: 3.2.1 - resolution: "@smithy/middleware-endpoint@npm:3.2.1" - dependencies: - "@smithy/core": ^2.5.1 - "@smithy/middleware-serde": ^3.0.8 - "@smithy/node-config-provider": ^3.1.9 - "@smithy/shared-ini-file-loader": ^3.1.9 - "@smithy/types": ^3.6.0 - "@smithy/url-parser": ^3.0.8 - "@smithy/util-middleware": ^3.0.8 +"@smithy/middleware-endpoint@npm:^3.2.2, @smithy/middleware-endpoint@npm:^3.2.3": + version: 3.2.3 + resolution: "@smithy/middleware-endpoint@npm:3.2.3" + dependencies: + "@smithy/core": ^2.5.3 + "@smithy/middleware-serde": ^3.0.10 + "@smithy/node-config-provider": ^3.1.11 + "@smithy/shared-ini-file-loader": ^3.1.11 + "@smithy/types": ^3.7.1 + "@smithy/url-parser": ^3.0.10 + "@smithy/util-middleware": ^3.0.10 tslib: ^2.6.2 - checksum: acc41e1b665b6a0c3cf2952a44b4cd1ce980866b44fe4b0ed9208a6067c3aa15ebe646623b14375be6c04ab73fa74fb95eeeca6905fc27092ce93495c77d8b9b + checksum: b9cf436634e9b49d876cbc147f35564497492a401892d6d4a302220d76ecac179845ee174a5e124e84f3e51c2544d87342c3e2ecf7cd91429e74d27d84cbd0d2 languageName: node linkType: hard -"@smithy/middleware-retry@npm:^3.0.23": - version: 3.0.25 - resolution: "@smithy/middleware-retry@npm:3.0.25" +"@smithy/middleware-retry@npm:^3.0.26": + version: 3.0.27 + resolution: "@smithy/middleware-retry@npm:3.0.27" dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/protocol-http": ^4.1.5 - "@smithy/service-error-classification": ^3.0.8 - "@smithy/smithy-client": ^3.4.2 - "@smithy/types": ^3.6.0 - "@smithy/util-middleware": ^3.0.8 - "@smithy/util-retry": ^3.0.8 + "@smithy/node-config-provider": ^3.1.11 + "@smithy/protocol-http": ^4.1.7 + "@smithy/service-error-classification": ^3.0.10 + "@smithy/smithy-client": ^3.4.4 + "@smithy/types": ^3.7.1 + "@smithy/util-middleware": ^3.0.10 + "@smithy/util-retry": ^3.0.10 tslib: ^2.6.2 uuid: ^9.0.1 - checksum: d10264cbff951b3b9585b54cc0e67de6099ed67461a34d83266e197fc48bea45fc7207ed7329c567390be6f08aeb84a6e7fef5f4fd770da9cad0028fc6f61d65 + checksum: 4e60259272e8db001d979ff2fe453d0b29805f1cff02d19c0dc944214ea3f97e85a06b4316be7546245500fec1b87887b298ab3b850e5d4c43709cd5dc684884 languageName: node linkType: hard -"@smithy/middleware-serde@npm:^3.0.7, @smithy/middleware-serde@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/middleware-serde@npm:3.0.8" +"@smithy/middleware-serde@npm:^3.0.10, @smithy/middleware-serde@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/middleware-serde@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 3d1ba269680bcf0cea6ea1c0e6d20eaf9de3597a687533607cc1ec49dad8669424e41bf3498dcdd21613f7791b0406db1846c2cdd6571682e4be8cb8055a85da + checksum: 87f17c73070d1445bbd24c6a03e32b4a06e664c86ad128677065073a27f7ca16523d976ef37c9ff6a0d26af5b3da3f5dee2b9080b471515f3d54f61bd4baebbc languageName: node linkType: hard -"@smithy/middleware-stack@npm:^3.0.7, @smithy/middleware-stack@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/middleware-stack@npm:3.0.8" +"@smithy/middleware-stack@npm:^3.0.10, @smithy/middleware-stack@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/middleware-stack@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: c4a24dcdb1db8f347d266ee97676daf1f5bb495aa6c1e59992378bebe39265be14be5c3f7cf9ae35a8ffe68476cfcfe9000a87e9b00062538359c4507f4060ea + checksum: 72d77501fc6a94f687e441d8e9ac3e25fb3f438b6a49563938652f0d25636fc65b751574b9c610fe60f45924df34c360116fcffcc8820de167aca0d56f7e64cf languageName: node linkType: hard -"@smithy/node-config-provider@npm:^3.1.8, @smithy/node-config-provider@npm:^3.1.9": - version: 3.1.9 - resolution: "@smithy/node-config-provider@npm:3.1.9" +"@smithy/node-config-provider@npm:^3.1.10, @smithy/node-config-provider@npm:^3.1.11": + version: 3.1.11 + resolution: "@smithy/node-config-provider@npm:3.1.11" dependencies: - "@smithy/property-provider": ^3.1.8 - "@smithy/shared-ini-file-loader": ^3.1.9 - "@smithy/types": ^3.6.0 + "@smithy/property-provider": ^3.1.10 + "@smithy/shared-ini-file-loader": ^3.1.11 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: fc0d27ff620475f406cb0f3e8527e8dcf56449ec3faad96b9738d26ec825d1b75a55b2f28750efbde383d163c5e25bb32ad09ba59d7d40e491898b9cc6a2eb2a + checksum: 3020ccd73f9cdec2445a75f310c1345c8e29cefc6025cc96d4df2b377efd9e9ced50f8841ed215d2056c737143f8aa195d750dfbc2d5586e898d4e0c08760062 languageName: node linkType: hard -"@smithy/node-http-handler@npm:^3.0.0, @smithy/node-http-handler@npm:^3.2.4, @smithy/node-http-handler@npm:^3.2.5": - version: 3.2.5 - resolution: "@smithy/node-http-handler@npm:3.2.5" +"@smithy/node-http-handler@npm:^3.0.0, @smithy/node-http-handler@npm:^3.3.0, @smithy/node-http-handler@npm:^3.3.1": + version: 3.3.1 + resolution: "@smithy/node-http-handler@npm:3.3.1" dependencies: - "@smithy/abort-controller": ^3.1.6 - "@smithy/protocol-http": ^4.1.5 - "@smithy/querystring-builder": ^3.0.8 - "@smithy/types": ^3.6.0 + "@smithy/abort-controller": ^3.1.8 + "@smithy/protocol-http": ^4.1.7 + "@smithy/querystring-builder": ^3.0.10 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: ea8d4148dd760f031f9eeb2aec2480685bb1a40d7ac9c482eb3170df0316cae58433a6c803d85b046c132a19b8b4874741fae054355b5584facbd46c18889c83 + checksum: 483766a6f7d9625b254a1e88f54c0bd89e83bb0c3a3518d3b298dcd9bbc2160bca2e867a859654c483aed78e8578e0c3c65ae4e0c4aa6e5e50bc04cdb7af1b37 languageName: node linkType: hard -"@smithy/property-provider@npm:^3.1.7, @smithy/property-provider@npm:^3.1.8": - version: 3.1.8 - resolution: "@smithy/property-provider@npm:3.1.8" +"@smithy/property-provider@npm:^3.1.10, @smithy/property-provider@npm:^3.1.9": + version: 3.1.10 + resolution: "@smithy/property-provider@npm:3.1.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: acf8a3cc0cad53503870580e164b41d79e34f1129c5b6fcf99d8dc09a0a89055889430f9552bead9bafc82775fed5f5f4c8eb3f7e53d91f759bb164a3a68cea5 + checksum: 5a13f0db745e370a7ac34dd3ca0ca0696c9e6b45b6371533129ff75eda909f6868705b96a317a2540dffc4ebe3b912aae467e673392240a88255c1a8a21d0787 languageName: node linkType: hard -"@smithy/protocol-http@npm:^4.1.4, @smithy/protocol-http@npm:^4.1.5": - version: 4.1.5 - resolution: "@smithy/protocol-http@npm:4.1.5" +"@smithy/protocol-http@npm:^4.1.6, @smithy/protocol-http@npm:^4.1.7": + version: 4.1.7 + resolution: "@smithy/protocol-http@npm:4.1.7" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 2e581594d03ff367ebc0a1ab0443e8b148f39a3ea810333861f4aed639239e5a261bedbb49f6555cfdb9682b88cd881715764c2dfe7e18a7a003385a0b6200d5 + checksum: 3d78a52558edb712e7b399535fcb9de5960610dc4b81ce15f1b52c7ac3ea96f47c53132974ce9e1108378dc1c5ee90333828dfa1a071dff7b49cf7b687537452 languageName: node linkType: hard -"@smithy/querystring-builder@npm:^3.0.7, @smithy/querystring-builder@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/querystring-builder@npm:3.0.8" +"@smithy/querystring-builder@npm:^3.0.10": + version: 3.0.10 + resolution: "@smithy/querystring-builder@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 "@smithy/util-uri-escape": ^3.0.0 tslib: ^2.6.2 - checksum: b07a766fb1e94e06116aef6534a31bbd4bb1bb94844d61c67615316d19aac82f94781fab779655bc03a46d70dda9caf3ad991a3e41548fbbba92783103f4f43e + checksum: a789b6f43392247880d71a4d88a89309d2da0c66e2c0f1708c9befd19db66151b8653e6ba3a13cb9aae2a9ed3889245ad394ecdb1076c25b447296b0a4d83877 languageName: node linkType: hard -"@smithy/querystring-parser@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/querystring-parser@npm:3.0.8" +"@smithy/querystring-parser@npm:^3.0.10": + version: 3.0.10 + resolution: "@smithy/querystring-parser@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 4ad9edfd96f084432157abd4953840f051ca4678963193bdc0ec7b210c79a649ddc023e327c39bd835ef7f56447dfaf2e47210738799ba9d044befacbe316a25 + checksum: 4b47ad727a33bd8a869fdac5acab7edb8f598b7b4f02113efc58462028efe1cb31e4cb1f70c0413311a7562b6c31605b6bc67724a97ffafcf20ddec336b82259 languageName: node linkType: hard -"@smithy/service-error-classification@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/service-error-classification@npm:3.0.8" +"@smithy/service-error-classification@npm:^3.0.10": + version: 3.0.10 + resolution: "@smithy/service-error-classification@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 - checksum: cba6d33eb0e7482e557c303638416ea8678f80fa5782c97dd67e5b72741f22e2446370dc0ef9b16802d73cdfb7a5e4e5587c1d4abb5aa5ca9c33525137b4cf2b + "@smithy/types": ^3.7.1 + checksum: f198cf01f8bc33c8f669e1194f7bbc07eaaf37d48a9f739fd5ef19af7ceccf0fa61670e52defdc4c8fd33360eaf2e084ce000063624d78a2368bd22e707cb656 languageName: node linkType: hard -"@smithy/shared-ini-file-loader@npm:^3.1.8, @smithy/shared-ini-file-loader@npm:^3.1.9": - version: 3.1.9 - resolution: "@smithy/shared-ini-file-loader@npm:3.1.9" +"@smithy/shared-ini-file-loader@npm:^3.1.10, @smithy/shared-ini-file-loader@npm:^3.1.11": + version: 3.1.11 + resolution: "@smithy/shared-ini-file-loader@npm:3.1.11" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 571cc785659551d875fb76c53d116bf6f3978d1b698be096e9218dbbe1dd42efbfb174e151528103888faf7c9854e66f3e5ca395b9c359e37f876c20b22a4f97 + checksum: e9f54f4165f19905701d87425b54777dfee636c66ef05ae1d0aacd72e4211ad1c9b9ed5528ffd4f725426a9c13e1d75aefa2d731314db8fca0fa1000b783f84f languageName: node linkType: hard -"@smithy/signature-v4@npm:^4.2.0": - version: 4.2.1 - resolution: "@smithy/signature-v4@npm:4.2.1" +"@smithy/signature-v4@npm:^4.2.2": + version: 4.2.3 + resolution: "@smithy/signature-v4@npm:4.2.3" dependencies: "@smithy/is-array-buffer": ^3.0.0 - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 + "@smithy/protocol-http": ^4.1.7 + "@smithy/types": ^3.7.1 "@smithy/util-hex-encoding": ^3.0.0 - "@smithy/util-middleware": ^3.0.8 + "@smithy/util-middleware": ^3.0.10 "@smithy/util-uri-escape": ^3.0.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 783d8c0a780fbb94084819ea624e75a72daf84c480fa3215b0edd7689041925dbbab3e2785acdfef564c5623631d09aae4915f27cfd1357d2bd0f26349041e56 + checksum: bc44fc257a405051f9568a1ee5496d7887750e7ad26bd57b168ca64ae52a50e10d83b4b4ee5c8c63a467dcfd6f6dbd6d8450fe96ea44bc036617e932498c7b04 languageName: node linkType: hard -"@smithy/smithy-client@npm:^3.4.0, @smithy/smithy-client@npm:^3.4.2": - version: 3.4.2 - resolution: "@smithy/smithy-client@npm:3.4.2" - dependencies: - "@smithy/core": ^2.5.1 - "@smithy/middleware-endpoint": ^3.2.1 - "@smithy/middleware-stack": ^3.0.8 - "@smithy/protocol-http": ^4.1.5 - "@smithy/types": ^3.6.0 - "@smithy/util-stream": ^3.2.1 +"@smithy/smithy-client@npm:^3.4.3, @smithy/smithy-client@npm:^3.4.4": + version: 3.4.4 + resolution: "@smithy/smithy-client@npm:3.4.4" + dependencies: + "@smithy/core": ^2.5.3 + "@smithy/middleware-endpoint": ^3.2.3 + "@smithy/middleware-stack": ^3.0.10 + "@smithy/protocol-http": ^4.1.7 + "@smithy/types": ^3.7.1 + "@smithy/util-stream": ^3.3.1 tslib: ^2.6.2 - checksum: 4b53e695e18bf0ed4805dd66839e272129be5384f6de5356a2adc03311f5c372766b490a3c001086aec8728f6c9bb90ca625a09e9b4c3fe875c1ee7567118f34 + checksum: c213bbc01dde437bcde0836712bd73270d4303b023970663eea9b84ddc03dc0af0331a702d08f224980b4c985c733c3ea00c772b12015b774890669c96a74430 languageName: node linkType: hard @@ -13847,23 +13532,23 @@ __metadata: languageName: node linkType: hard -"@smithy/types@npm:^3.5.0, @smithy/types@npm:^3.6.0": - version: 3.6.0 - resolution: "@smithy/types@npm:3.6.0" +"@smithy/types@npm:^3.7.0, @smithy/types@npm:^3.7.1": + version: 3.7.1 + resolution: "@smithy/types@npm:3.7.1" dependencies: tslib: ^2.6.2 - checksum: 4f581dc1c3e2dee8e1134fafb47de2c301330ea668214eb1a81d26b85acdb48a7e52008da0d15a402e998a79bed285a74b88949a5a4a3fe0aef38c28620ab795 + checksum: 8db4393211db97aec515cc06748fa23acfc0c26a19c5ed6d009add623e1b1b7a470603a71f55b9de31a15696a2918e4a0913cb3531bfc7951b80bc7872f594f0 languageName: node linkType: hard -"@smithy/url-parser@npm:^3.0.7, @smithy/url-parser@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/url-parser@npm:3.0.8" +"@smithy/url-parser@npm:^3.0.10, @smithy/url-parser@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/url-parser@npm:3.0.10" dependencies: - "@smithy/querystring-parser": ^3.0.8 - "@smithy/types": ^3.6.0 + "@smithy/querystring-parser": ^3.0.10 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 1bf2143b298a4afdf6a8fa40f7b018ad59eb79b717e2bafcd8634c20893485c456c12fe73659d342a3d3a51cdbb10afea61fac285e7ce5fa0f66d7695ad7d10b + checksum: 1e7289390e539d4a83c1a16e0c80f4aa789b47e713203c18ff1e84726a0fbe8baef24f19160f8890620d6e912f3d1156710583401c5ab7253a57d5f639c21071 languageName: node linkType: hard @@ -13925,42 +13610,42 @@ __metadata: languageName: node linkType: hard -"@smithy/util-defaults-mode-browser@npm:^3.0.23": - version: 3.0.25 - resolution: "@smithy/util-defaults-mode-browser@npm:3.0.25" +"@smithy/util-defaults-mode-browser@npm:^3.0.26": + version: 3.0.27 + resolution: "@smithy/util-defaults-mode-browser@npm:3.0.27" dependencies: - "@smithy/property-provider": ^3.1.8 - "@smithy/smithy-client": ^3.4.2 - "@smithy/types": ^3.6.0 + "@smithy/property-provider": ^3.1.10 + "@smithy/smithy-client": ^3.4.4 + "@smithy/types": ^3.7.1 bowser: ^2.11.0 tslib: ^2.6.2 - checksum: 87c4b346d753712f7fe501920c6bb9712d7ec56670e49aa5d6db40ebe0f0cfa58d9e1d27e96e40c6be1721cf81bd0b2f29c077efc3b8dece074e3a6d175fa1a4 + checksum: 60a2639d691f50f3db431a24e02feaf4d6edf63d3cc2672b0c78429049a27566d481ab31fc5338d063c6ef9f88a7f46a9afa655ec0f33f8b48c129c973597366 languageName: node linkType: hard -"@smithy/util-defaults-mode-node@npm:^3.0.23": - version: 3.0.25 - resolution: "@smithy/util-defaults-mode-node@npm:3.0.25" +"@smithy/util-defaults-mode-node@npm:^3.0.26": + version: 3.0.27 + resolution: "@smithy/util-defaults-mode-node@npm:3.0.27" dependencies: - "@smithy/config-resolver": ^3.0.10 - "@smithy/credential-provider-imds": ^3.2.5 - "@smithy/node-config-provider": ^3.1.9 - "@smithy/property-provider": ^3.1.8 - "@smithy/smithy-client": ^3.4.2 - "@smithy/types": ^3.6.0 + "@smithy/config-resolver": ^3.0.12 + "@smithy/credential-provider-imds": ^3.2.7 + "@smithy/node-config-provider": ^3.1.11 + "@smithy/property-provider": ^3.1.10 + "@smithy/smithy-client": ^3.4.4 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: e34c44bb5cbc8036765aa4f52e648a753b477b6653834291f7a2e0d82b7b58c1e741eac9a9a95d39b6f751c05013909c36ac0818e0015c24201af9d2e2fb0f5a + checksum: 9609c5f85b189b7cbc09f6080d6a49b5a75fbd0b2ae5f97fdb3aa49fd26e9235e56fc10ccfacb23fa4e3507afbe5413dc5a69b620659666a72d8a1cd80e4af7a languageName: node linkType: hard -"@smithy/util-endpoints@npm:^2.1.3": - version: 2.1.4 - resolution: "@smithy/util-endpoints@npm:2.1.4" +"@smithy/util-endpoints@npm:^2.1.5": + version: 2.1.6 + resolution: "@smithy/util-endpoints@npm:2.1.6" dependencies: - "@smithy/node-config-provider": ^3.1.9 - "@smithy/types": ^3.6.0 + "@smithy/node-config-provider": ^3.1.11 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 523df0a35807f3493cccaf1b76f88e14dedd3d9f29fe26a6f8c73cdfe09e57c67a1d3029cc585995b0f7fe20e07afa8b4dfa5f1d631a0c4c06c9f68075b61bad + checksum: 6edae1952334bae35eba1535935c83fb2a3427f8ae08f3dacdc0882286271a75a3f7202ceba35a60988324d1bc4ae33236961d99b0eded5ff24644da18d433ba languageName: node linkType: hard @@ -13973,40 +13658,40 @@ __metadata: languageName: node linkType: hard -"@smithy/util-middleware@npm:^3.0.7, @smithy/util-middleware@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/util-middleware@npm:3.0.8" +"@smithy/util-middleware@npm:^3.0.10, @smithy/util-middleware@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/util-middleware@npm:3.0.10" dependencies: - "@smithy/types": ^3.6.0 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 6933c012f47c8b547b4986133a9dc2b264e9d71def155c4a9bce1bd1afbd73cb8e936c50ebc80190fc1d5bb26aee73ba012c567766dcd8a13c3d06bef841ab3c + checksum: 39a557569e532152fce6b5df2138c9e99effe7a608222840ade9c668e691421482d53f1a64c7ad995bfa03fe31d68c68ed5e7f7166005b2c30edf23dc2606afa languageName: node linkType: hard -"@smithy/util-retry@npm:^3.0.7, @smithy/util-retry@npm:^3.0.8": - version: 3.0.8 - resolution: "@smithy/util-retry@npm:3.0.8" +"@smithy/util-retry@npm:^3.0.10, @smithy/util-retry@npm:^3.0.9": + version: 3.0.10 + resolution: "@smithy/util-retry@npm:3.0.10" dependencies: - "@smithy/service-error-classification": ^3.0.8 - "@smithy/types": ^3.6.0 + "@smithy/service-error-classification": ^3.0.10 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 5c0c63beb867828e6fd54f5fd83de412180df02de42f678df0f5a4412d10bfb5a74c22aa83a6f364c8292b5c82be94fe7af35d1ebe4e50a2c05946520f2ea870 + checksum: 76b7953ec32da3e8cb177bf8e8844bb4a9ad31ef589cd8140b68968153ac4618982315fa8b9683d2110c87747e38a04dedabcb1a9635321e0fb436e88fdd35f4 languageName: node linkType: hard -"@smithy/util-stream@npm:^3.1.9, @smithy/util-stream@npm:^3.2.1": - version: 3.2.1 - resolution: "@smithy/util-stream@npm:3.2.1" +"@smithy/util-stream@npm:^3.3.0, @smithy/util-stream@npm:^3.3.1": + version: 3.3.1 + resolution: "@smithy/util-stream@npm:3.3.1" dependencies: - "@smithy/fetch-http-handler": ^4.0.0 - "@smithy/node-http-handler": ^3.2.5 - "@smithy/types": ^3.6.0 + "@smithy/fetch-http-handler": ^4.1.1 + "@smithy/node-http-handler": ^3.3.1 + "@smithy/types": ^3.7.1 "@smithy/util-base64": ^3.0.0 "@smithy/util-buffer-from": ^3.0.0 "@smithy/util-hex-encoding": ^3.0.0 "@smithy/util-utf8": ^3.0.0 tslib: ^2.6.2 - checksum: 3dc2b005d48a2e5ccb0761e7a7869f8af24d34a93eaa34f0586ba42fe79f13d48efb676e4aacbf02a54f1a225eb851d2c706c016f5f9d0b4fc127d8be69f5d90 + checksum: 22fa09c0f5fdf2e89f32a08c7bef887efe0b4d1a79ceed70d367f2e38cc765f5953d44f793f7869e12d6d1300da73be8268fa7a992d9f4f752666bab2062f62d languageName: node linkType: hard @@ -14039,14 +13724,14 @@ __metadata: languageName: node linkType: hard -"@smithy/util-waiter@npm:^3.1.6": - version: 3.1.7 - resolution: "@smithy/util-waiter@npm:3.1.7" +"@smithy/util-waiter@npm:^3.1.8": + version: 3.1.9 + resolution: "@smithy/util-waiter@npm:3.1.9" dependencies: - "@smithy/abort-controller": ^3.1.6 - "@smithy/types": ^3.6.0 + "@smithy/abort-controller": ^3.1.8 + "@smithy/types": ^3.7.1 tslib: ^2.6.2 - checksum: 190d992898d0c7d776c806657703c1ebd0ba2c24f4042ed0251dc8653799aefe12848a0445ee16cdbb05b76b5c81fc803b271957954aa614aaccb99dd3338caa + checksum: 9c7abc8b702bc412d9c0cb1014750ed17c3de03a1fc745bdfa38217d701996b511302c138f6d08d6cb8975caea94536d93ec95158c3d9185abd493e8ebbd694e languageName: node linkType: hard @@ -14152,7 +13837,7 @@ __metadata: languageName: node linkType: hard -"@stoplight/json@npm:^3.17.0, @stoplight/json@npm:^3.17.1, @stoplight/json@npm:^3.21.0, @stoplight/json@npm:~3.21.0": +"@stoplight/json@npm:^3.17.0, @stoplight/json@npm:^3.17.1, @stoplight/json@npm:^3.20.1, @stoplight/json@npm:^3.21.0, @stoplight/json@npm:~3.21.0": version: 3.21.7 resolution: "@stoplight/json@npm:3.21.7" dependencies: @@ -14180,16 +13865,16 @@ __metadata: languageName: node linkType: hard -"@stoplight/spectral-core@npm:^1.18.3, @stoplight/spectral-core@npm:^1.7.0, @stoplight/spectral-core@npm:^1.8.0": - version: 1.19.1 - resolution: "@stoplight/spectral-core@npm:1.19.1" +"@stoplight/spectral-core@npm:^1.18.3, @stoplight/spectral-core@npm:^1.19.2": + version: 1.19.3 + resolution: "@stoplight/spectral-core@npm:1.19.3" dependencies: "@stoplight/better-ajv-errors": 1.0.3 "@stoplight/json": ~3.21.0 "@stoplight/path": 1.3.2 "@stoplight/spectral-parsers": ^1.0.0 "@stoplight/spectral-ref-resolver": ^1.0.4 - "@stoplight/spectral-runtime": ^1.0.0 + "@stoplight/spectral-runtime": ^1.1.2 "@stoplight/types": ~13.6.0 "@types/es-aggregate-error": ^1.0.2 "@types/json-schema": ^7.0.11 @@ -14197,96 +13882,86 @@ __metadata: ajv-errors: ~3.0.0 ajv-formats: ~2.1.0 es-aggregate-error: ^1.0.7 - jsonpath-plus: 7.1.0 + jsonpath-plus: 10.1.0 lodash: ~4.17.21 lodash.topath: ^4.5.2 minimatch: 3.1.2 - nimma: 0.2.2 - pony-cause: ^1.0.0 - simple-eval: 1.0.0 - tslib: ^2.3.0 - checksum: 35495c3f72eacd02d74b0913ad5a8cdad7573ab06c08cc9f6b44abd68e0c8b2229df9efee11cfe8a47ffeea802ce2b3bb17e378dffe5eab47504f70abd8b492c + nimma: 0.2.3 + pony-cause: ^1.1.1 + simple-eval: 1.0.1 + tslib: ^2.8.1 + checksum: 7e04c72d3d72dc774b35e3fbbbcf104a1c0c4f1823c195fcf12fe86ce038d2e5e80089b843e6af5ff79a43ebf9807eb3035468847a5b6911fd4f5429a232799a languageName: node linkType: hard -"@stoplight/spectral-formats@npm:^1.7.0": - version: 1.7.0 - resolution: "@stoplight/spectral-formats@npm:1.7.0" +"@stoplight/spectral-formats@npm:^1.8.1": + version: 1.8.2 + resolution: "@stoplight/spectral-formats@npm:1.8.2" dependencies: "@stoplight/json": ^3.17.0 - "@stoplight/spectral-core": ^1.8.0 + "@stoplight/spectral-core": ^1.19.2 "@types/json-schema": ^7.0.7 - tslib: ^2.3.1 - checksum: eccc2a6c099c7cbdd7c0b6c48b7fbfa334cdc2323958790496aa0295af27ef42ccae8b40e05c742aa3431da724b8d494c837af1af60f86d05189853b95b7c2c9 + tslib: ^2.8.1 + checksum: 1724aeaf933446cda79cc62aef4326ff9df4dad2cfa64e3e1286b001957e628235be679610cf61e4f01d53703ede11853ff389f0d038e6af367e7861219a5c2d languageName: node linkType: hard "@stoplight/spectral-functions@npm:^1.7.2": - version: 1.9.0 - resolution: "@stoplight/spectral-functions@npm:1.9.0" + version: 1.9.2 + resolution: "@stoplight/spectral-functions@npm:1.9.2" dependencies: "@stoplight/better-ajv-errors": 1.0.3 "@stoplight/json": ^3.17.1 - "@stoplight/spectral-core": ^1.7.0 - "@stoplight/spectral-formats": ^1.7.0 - "@stoplight/spectral-runtime": ^1.1.0 + "@stoplight/spectral-core": ^1.19.2 + "@stoplight/spectral-formats": ^1.8.1 + "@stoplight/spectral-runtime": ^1.1.2 ajv: ^8.17.1 ajv-draft-04: ~1.0.0 ajv-errors: ~3.0.0 ajv-formats: ~2.1.0 lodash: ~4.17.21 - tslib: ^2.3.0 - checksum: 278dc6e84b3b4fdef73f6b2b2cc7071140ade604dbc938b3946203253f37c0977659a609dc148df6f73668ddcb84a809e279643a12fd3f4372e72e97973f0058 + tslib: ^2.8.1 + checksum: 98c4b2f7db280a82bb2a3cb310c4a335482e77c635277fe620f440fbb2e7aaede22ad3e2c30cfd9acf7da8f9dd6acdd90e66d378f88c8b95a5eee5d1725ee879 languageName: node linkType: hard "@stoplight/spectral-parsers@npm:^1.0.0, @stoplight/spectral-parsers@npm:^1.0.2": - version: 1.0.4 - resolution: "@stoplight/spectral-parsers@npm:1.0.4" + version: 1.0.5 + resolution: "@stoplight/spectral-parsers@npm:1.0.5" dependencies: "@stoplight/json": ~3.21.0 "@stoplight/types": ^14.1.1 "@stoplight/yaml": ~4.3.0 - tslib: ^2.3.1 - checksum: ca88183661651d99b40da254316fec062c219253ea3054151b9379e7c492121cdeef49a2d1ac08cd89b2f89f7d16dbc4ecf9da6d7a7539979ac6418991fe804a + tslib: ^2.8.1 + checksum: 633921b78c67201a32ee99c35ecaf4425f488b9ad65e13551b16a7042704846d3d12ee8b87aa39a2525527e78b55840d40bd6b6396c22b3a4aa2aa5ce05c565b languageName: node linkType: hard "@stoplight/spectral-ref-resolver@npm:^1.0.3, @stoplight/spectral-ref-resolver@npm:^1.0.4": - version: 1.0.4 - resolution: "@stoplight/spectral-ref-resolver@npm:1.0.4" + version: 1.0.5 + resolution: "@stoplight/spectral-ref-resolver@npm:1.0.5" dependencies: "@stoplight/json-ref-readers": 1.2.2 "@stoplight/json-ref-resolver": ~3.1.6 "@stoplight/spectral-runtime": ^1.1.2 dependency-graph: 0.11.0 - tslib: ^2.3.1 - checksum: 1e9b2e211d2724e0bab7d817a5128f7b6cab9f0f5281d07223ace1d541a51a0eb3901b9f7b02d4b0484df1cb2a3f7239ec33a974321438d3d08ce7996fd6fcc4 + tslib: ^2.8.1 + checksum: 054ab74e9ed9b12b7b6d6826c8b89e7a3d46632855eca1bd454930a1e09e0d4423fda219931a021eb50098d13f22823178b0b2fae90eac08cd6b600f447e1cf2 languageName: node linkType: hard -"@stoplight/spectral-runtime@npm:^1.0.0, @stoplight/spectral-runtime@npm:^1.1.0, @stoplight/spectral-runtime@npm:^1.1.2": - version: 1.1.2 - resolution: "@stoplight/spectral-runtime@npm:1.1.2" +"@stoplight/spectral-runtime@npm:^1.1.2": + version: 1.1.3 + resolution: "@stoplight/spectral-runtime@npm:1.1.3" dependencies: - "@stoplight/json": ^3.17.0 + "@stoplight/json": ^3.20.1 "@stoplight/path": ^1.3.2 - "@stoplight/types": ^12.3.0 + "@stoplight/types": ^13.6.0 abort-controller: ^3.0.0 lodash: ^4.17.21 node-fetch: ^2.6.7 - tslib: ^2.3.1 - checksum: 35964a38f82384e6e0158988173a50ab7f473a2ed6e942073de023bd28fb696b5b913336a84d016b046346294be9cfa3a88c6a908c2622c0ceb36f16ca76e084 - languageName: node - linkType: hard - -"@stoplight/types@npm:^12.3.0": - version: 12.5.0 - resolution: "@stoplight/types@npm:12.5.0" - dependencies: - "@types/json-schema": ^7.0.4 - utility-types: ^3.10.0 - checksum: fe4a09df6e1c2f0cdb53f474b180cc7b8184e814e1ac4427d199642f10958335f597060530a908c0e5800ba2569d077afe124a51deaee466255ce942e1e03941 + tslib: ^2.8.1 + checksum: 33af5713fd98de76e8007c9969d41440ef2abbff34e92db9a4b00b37a58dc7e7d4f0a0612c45183fb1aa9cd1a42dfe5ebfa59abf3b784e22d5f4b54c9f9d3d4c languageName: node linkType: hard @@ -16183,9 +15858,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-darwin-arm64@npm:1.7.39" +"@swc/core-darwin-arm64@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-darwin-arm64@npm:1.9.2" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard @@ -16197,9 +15872,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-darwin-x64@npm:1.7.39" +"@swc/core-darwin-x64@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-darwin-x64@npm:1.9.2" conditions: os=darwin & cpu=x64 languageName: node linkType: hard @@ -16211,9 +15886,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.39" +"@swc/core-linux-arm-gnueabihf@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.9.2" conditions: os=linux & cpu=arm languageName: node linkType: hard @@ -16225,9 +15900,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.39" +"@swc/core-linux-arm64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-arm64-gnu@npm:1.9.2" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard @@ -16239,9 +15914,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.39" +"@swc/core-linux-arm64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-arm64-musl@npm:1.9.2" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard @@ -16253,9 +15928,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.39" +"@swc/core-linux-x64-gnu@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-x64-gnu@npm:1.9.2" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard @@ -16267,9 +15942,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-linux-x64-musl@npm:1.7.39" +"@swc/core-linux-x64-musl@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-linux-x64-musl@npm:1.9.2" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard @@ -16281,9 +15956,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.39" +"@swc/core-win32-arm64-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-win32-arm64-msvc@npm:1.9.2" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard @@ -16295,9 +15970,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.39" +"@swc/core-win32-ia32-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-win32-ia32-msvc@npm:1.9.2" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard @@ -16309,9 +15984,9 @@ __metadata: languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.39": - version: 1.7.39 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.39" +"@swc/core-win32-x64-msvc@npm:1.9.2": + version: 1.9.2 + resolution: "@swc/core-win32-x64-msvc@npm:1.9.2" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -16363,21 +16038,21 @@ __metadata: linkType: hard "@swc/core@npm:^1.3.46, @swc/core@npm:^1.3.82": - version: 1.7.39 - resolution: "@swc/core@npm:1.7.39" - dependencies: - "@swc/core-darwin-arm64": 1.7.39 - "@swc/core-darwin-x64": 1.7.39 - "@swc/core-linux-arm-gnueabihf": 1.7.39 - "@swc/core-linux-arm64-gnu": 1.7.39 - "@swc/core-linux-arm64-musl": 1.7.39 - "@swc/core-linux-x64-gnu": 1.7.39 - "@swc/core-linux-x64-musl": 1.7.39 - "@swc/core-win32-arm64-msvc": 1.7.39 - "@swc/core-win32-ia32-msvc": 1.7.39 - "@swc/core-win32-x64-msvc": 1.7.39 + version: 1.9.2 + resolution: "@swc/core@npm:1.9.2" + dependencies: + "@swc/core-darwin-arm64": 1.9.2 + "@swc/core-darwin-x64": 1.9.2 + "@swc/core-linux-arm-gnueabihf": 1.9.2 + "@swc/core-linux-arm64-gnu": 1.9.2 + "@swc/core-linux-arm64-musl": 1.9.2 + "@swc/core-linux-x64-gnu": 1.9.2 + "@swc/core-linux-x64-musl": 1.9.2 + "@swc/core-win32-arm64-msvc": 1.9.2 + "@swc/core-win32-ia32-msvc": 1.9.2 + "@swc/core-win32-x64-msvc": 1.9.2 "@swc/counter": ^0.1.3 - "@swc/types": ^0.1.13 + "@swc/types": ^0.1.15 peerDependencies: "@swc/helpers": "*" dependenciesMeta: @@ -16404,7 +16079,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: f9b08de1c911f787ef5d9e727f9d32afd407092ade75b7f00d7e3977320a7ab85ec9be2a23cd1579d17aaa6df5189078609aacffb5f1945afa489f261a2ca7ff + checksum: 325afca1473e371804cc420d096553a0c6b19d01296b46b23e3b75a797c8b139c712ad79bc5c876cfc6d7bd6d60014a9f81286a2e888e94f0dec70903893f0b6 languageName: node linkType: hard @@ -16416,33 +16091,33 @@ __metadata: linkType: hard "@swc/helpers@npm:^0.5.0, @swc/helpers@npm:^0.5.8": - version: 0.5.13 - resolution: "@swc/helpers@npm:0.5.13" + version: 0.5.15 + resolution: "@swc/helpers@npm:0.5.15" dependencies: - tslib: ^2.4.0 - checksum: d50c2c10da6ef940af423c6b03ad9c3c94cf9de59314b1e921a7d1bcc081a6074481c9d67b655fc8fe66a73288f98b25950743792a63882bfb5793b362494fc0 + tslib: ^2.8.0 + checksum: 1a9e0dbb792b2d1e0c914d69c201dbc96af3a0e6e6e8cf5a7f7d6a5d7b0e8b762915cd4447acb6b040e2ecc1ed49822875a7239f99a2d63c96c3c3407fb6fccf languageName: node linkType: hard "@swc/jest@npm:^0.2.22": - version: 0.2.36 - resolution: "@swc/jest@npm:0.2.36" + version: 0.2.37 + resolution: "@swc/jest@npm:0.2.37" dependencies: "@jest/create-cache-key-function": ^29.7.0 "@swc/counter": ^0.1.3 jsonc-parser: ^3.2.0 peerDependencies: "@swc/core": "*" - checksum: 14f2e696ac093e23dae1e2e57d894bbcde4de6fe80341a26c8d0d8cbae5aae31832f8fa32dc698529f128d19a76aeedf2227f59480de6dab5eb3f30bfdf9b71a + checksum: 8d9a16404068c7f7d0548bc62f9d1465592178affbc7fe105dd59d463975d82cdcab2e0582c2a542250e6d240c76828bdbc404c77c85dd4d81061eb720351c4a languageName: node linkType: hard -"@swc/types@npm:^0.1.13, @swc/types@npm:^0.1.8": - version: 0.1.13 - resolution: "@swc/types@npm:0.1.13" +"@swc/types@npm:^0.1.15, @swc/types@npm:^0.1.8": + version: 0.1.15 + resolution: "@swc/types@npm:0.1.15" dependencies: "@swc/counter": ^0.1.3 - checksum: 4d9ef0fba20e410bee38b20b60eeb284a1284c1cf6b5f84754b6f5e467e5e0621e2db67dc31e22c524a8d63f36d0a1d530126cd97752a85f140d91bf53553e01 + checksum: 19889eed42d28f5dcef7c16f3b0cf4375890984b106aca46d9455d1f5ba364156d206a8e1f73962718ee408ff9e460b84aaa79025bf8dc30e0d6ded471e1e2d2 languageName: node linkType: hard @@ -16455,66 +16130,40 @@ __metadata: languageName: node linkType: hard -"@tanstack/query-core@npm:4.36.1": - version: 4.36.1 - resolution: "@tanstack/query-core@npm:4.36.1" - checksum: 47672094da20d89402d9fe03bb7b0462be73a76ff9ca715169738bc600a719d064d106d083a8eedae22a2c22de22f87d5eb5d31ef447aba771d9190f2117ed10 - languageName: node - linkType: hard - -"@tanstack/query-core@npm:5.59.16": - version: 5.59.16 - resolution: "@tanstack/query-core@npm:5.59.16" - checksum: d01fb27718985a69fd45df178496fc1afab25324aa355ce1e1fa2068bc8ffadba68954914a5ae886c7e92d6d7b998ceae9c7a2741081c320a2482a31a62fcfda - languageName: node - linkType: hard - -"@tanstack/react-query@npm:^4.36.1": - version: 4.36.1 - resolution: "@tanstack/react-query@npm:4.36.1" - dependencies: - "@tanstack/query-core": 4.36.1 - use-sync-external-store: ^1.2.0 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-native: "*" - peerDependenciesMeta: - react-dom: - optional: true - react-native: - optional: true - checksum: 1aff0a476859386f8d32253fa0d0bde7b81769a6d4d4d9cbd78778f0f955459a3bdb7ee27a0d2ee7373090f12998b45df80db0b5b313bd0a7a39d36c6e8e51c5 +"@tanstack/query-core@npm:5.59.20": + version: 5.59.20 + resolution: "@tanstack/query-core@npm:5.59.20" + checksum: ed836033c7f34a61e7f152da1067ec170e36e861dc591e2a068f73918bcc641bb50ce90dc3b8d12e047f63f70b2842f72e3328d649c841f5c4ea51fdb95e454b languageName: node linkType: hard "@tanstack/react-query@npm:^5.59.15": - version: 5.59.16 - resolution: "@tanstack/react-query@npm:5.59.16" + version: 5.60.4 + resolution: "@tanstack/react-query@npm:5.60.4" dependencies: - "@tanstack/query-core": 5.59.16 + "@tanstack/query-core": 5.59.20 peerDependencies: react: ^18 || ^19 - checksum: ad5d3579496cfd26593f4b93b0e412ceab2effc97cf6fc4f029b1e381eb3bb544ec850bb3116e511f12e45271aaeeb4f74201a69c97ad3afe1dec179f9a12759 + checksum: 3c47ef963793e863e75a837f7faaeea5550d7b79f134211fcf52a92c6d217a843d1c6d4719b77c790db5f73f818733df8c0ae1af577ebcddc45b984efbb6ce55 languageName: node linkType: hard "@tanstack/react-virtual@npm:^3.0.0-beta.60": - version: 3.10.8 - resolution: "@tanstack/react-virtual@npm:3.10.8" + version: 3.10.9 + resolution: "@tanstack/react-virtual@npm:3.10.9" dependencies: - "@tanstack/virtual-core": 3.10.8 + "@tanstack/virtual-core": 3.10.9 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 40a5d6089908096634fec2aa0cd646ca47c044c745e1b0d190ecbf9905ad2e6266ccd56c2550ed92f47349954dc11eb6930beac1354441ce7c98af81c5454d3f + checksum: a6c90118d0b084aedf0a2b02bc718df5cc1e594fb60d1dededf8a393d3e519e574e2ba67bb7adcaf8b4d6b206f6a10b37166f006bc7e50ad566475323d545b8c languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.10.8": - version: 3.10.8 - resolution: "@tanstack/virtual-core@npm:3.10.8" - checksum: 1c5307b534bb963094acc4a2691fcc331364a865d8513abe9f5ca6be577d7bb4b2821e8dddbf259c60ee65afb2f4e5d6debab1af897b0c464ec1bd18906ecbe9 +"@tanstack/virtual-core@npm:3.10.9": + version: 3.10.9 + resolution: "@tanstack/virtual-core@npm:3.10.9" + checksum: df1c673040e3700ba12774ef1fec775f84342e80fb5f1586096a1ed347ee9d35b6db6829e665fed86fa3f08e86235a68bbd331fd5aedec4314c2a565384199ba languageName: node linkType: hard @@ -17256,6 +16905,26 @@ __metadata: languageName: node linkType: hard +"@types/eslint-scope@npm:^3.7.7": + version: 3.7.7 + resolution: "@types/eslint-scope@npm:3.7.7" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: e2889a124aaab0b89af1bab5959847c5bec09809209255de0e63b9f54c629a94781daa04adb66bffcdd742f5e25a17614fb933965093c0eea64aacda4309380e + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 9.6.1 + resolution: "@types/eslint@npm:9.6.1" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: c286e79707ab604b577cf8ce51d9bbb9780e3d6a68b38a83febe13fa05b8012c92de17c28532fac2b03d3c460123f5055d603a579685325246ca1c86828223e0 + languageName: node + linkType: hard + "@types/eslint@npm:^7.29.0 || ^8.4.1, @types/eslint@npm:^8.56.10": version: 8.56.12 resolution: "@types/eslint@npm:8.56.12" @@ -17275,7 +16944,7 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5": +"@types/estree@npm:*, @types/estree@npm:1.0.6, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.5, @types/estree@npm:^1.0.6": version: 1.0.6 resolution: "@types/estree@npm:1.0.6" checksum: 8825d6e729e16445d9a1dd2fb1db2edc5ed400799064cd4d028150701031af012ba30d6d03fe9df40f4d7a437d0de6d2b256020152b7b09bde9f2e420afdffd9 @@ -17290,14 +16959,14 @@ __metadata: linkType: hard "@types/express-serve-static-core@npm:*, @types/express-serve-static-core@npm:^5.0.0": - version: 5.0.0 - resolution: "@types/express-serve-static-core@npm:5.0.0" + version: 5.0.1 + resolution: "@types/express-serve-static-core@npm:5.0.1" dependencies: "@types/node": "*" "@types/qs": "*" "@types/range-parser": "*" "@types/send": "*" - checksum: d4e2abfc961a908098290958e43a077504ef669f3ef3c49e871932453d2281e86f5d483ae99ec3aaecd13ada0b18025a99ad5413577660587570c4e21d91c263 + checksum: e9daf9bc0d83f593aa2fdcb7c3f9c0a8747bfdf6d8a5ee48ed8d8cc4dc2ed52bdc75d20f6fec9ef00a1aa5ade4c7f16668ff1c020911b50394472844813b1cdb languageName: node linkType: hard @@ -17325,18 +16994,6 @@ __metadata: languageName: node linkType: hard -"@types/express@npm:4.17.20": - version: 4.17.20 - resolution: "@types/express@npm:4.17.20" - dependencies: - "@types/body-parser": "*" - "@types/express-serve-static-core": ^4.17.33 - "@types/qs": "*" - "@types/serve-static": "*" - checksum: bf8a97d283128e5129f9ccabbeef728ff3f0484465e0ae74a304bd0588fa6cb715ae68845650caba9a641944b7791ba125d02ddbd47a7e62aaefdd036570c6c5 - languageName: node - linkType: hard - "@types/express@npm:4.17.21, @types/express@npm:^4.17.13, @types/express@npm:^4.17.21, @types/express@npm:^4.17.6, @types/express@npm:^4.7.0": version: 4.17.21 resolution: "@types/express@npm:4.17.21" @@ -17492,12 +17149,12 @@ __metadata: linkType: hard "@types/jest@npm:^29.5.11": - version: 29.5.13 - resolution: "@types/jest@npm:29.5.13" + version: 29.5.14 + resolution: "@types/jest@npm:29.5.14" dependencies: expect: ^29.0.0 pretty-format: ^29.0.0 - checksum: 875ac23c2398cdcf22aa56c6ba24560f11d2afda226d4fa23936322dde6202f9fdbd2b91602af51c27ecba223d9fc3c1e33c9df7e47b3bf0e2aefc6baf13ce53 + checksum: 18dba4623f26661641d757c63da2db45e9524c9be96a29ef713c703a9a53792df9ecee9f7365a0858ddbd6440d98fe6b65ca67895ca5884b73cbc7ffc11f3838 languageName: node linkType: hard @@ -17591,9 +17248,9 @@ __metadata: linkType: hard "@types/lodash@npm:^4.14.167, @types/lodash@npm:^4.14.175": - version: 4.17.12 - resolution: "@types/lodash@npm:4.17.12" - checksum: 7b564e4114f09ce5ae31a2e9493592baf20bb498507f3705c5d91cf838c2298b4f6a06f2d6c8dc608fcac63e210a2b7b13388c7a5e220e15688f813521030127 + version: 4.17.13 + resolution: "@types/lodash@npm:4.17.13" + checksum: d0bf8fbd950be71946e0076b30fd40d492293baea75f05931b6b5b906fd62583708c6229abdb95b30205ad24ce1ed2f48bc9d419364f682320edd03405cc0c7e languageName: node linkType: hard @@ -17706,12 +17363,12 @@ __metadata: linkType: hard "@types/node-fetch@npm:^2.6.4": - version: 2.6.11 - resolution: "@types/node-fetch@npm:2.6.11" + version: 2.6.12 + resolution: "@types/node-fetch@npm:2.6.12" dependencies: "@types/node": "*" form-data: ^4.0.0 - checksum: 180e4d44c432839bdf8a25251ef8c47d51e37355ddd78c64695225de8bc5dc2b50b7bb855956d471c026bb84bd7295688a0960085e7158cbbba803053492568b + checksum: 9647e68f9a125a090220c38d77b3c8e669c488658ae7506f1b4f9568214beba087624b1705bba1dc76649a65281ce3fd5b400e15266cbef8088027fb88777557 languageName: node linkType: hard @@ -17724,12 +17381,12 @@ __metadata: languageName: node linkType: hard -"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^22.0.0, @types/node@npm:^22.5.5": - version: 22.7.8 - resolution: "@types/node@npm:22.7.8" +"@types/node@npm:*, @types/node@npm:>=13.7.0, @types/node@npm:^22.5.5": + version: 22.9.0 + resolution: "@types/node@npm:22.9.0" dependencies: - undici-types: ~6.19.2 - checksum: c1dd36bd0bf82588e61f82edb29a792f21ce902f90cc5485591f9fd60cec3ea9172e044bf7b1c0849e7cf3a5a01da39516db260cb65cb0b94904010e00634a1c + undici-types: ~6.19.8 + checksum: c014eb3b8a110f1b87b614a40ef288d13e6b08ae9d5dafbd38951a2eebc24d352dc55330ed9d00c97ee9e64483c3cc14c4aa914c5df7ca7b9eaa1a30b2340dbd languageName: node linkType: hard @@ -17768,27 +17425,27 @@ __metadata: linkType: hard "@types/node@npm:^16.9.2": - version: 16.18.114 - resolution: "@types/node@npm:16.18.114" - checksum: 2922009367d1c9c1a42ec11b66fc315629589455c7c5c7be5212fcdfe5c01655881ef7d1b862fe6fdad006a6b34e4fce0565a74db0d6a38f869b5d87601f6339 + version: 16.18.119 + resolution: "@types/node@npm:16.18.119" + checksum: e473300cc17a77f1369262b21caf87df1899c3a1a320d4200e464adbf12c23bb923b956499332c57ad748a27956059484732b58765f7bae3be572f4819599243 languageName: node linkType: hard "@types/node@npm:^18.0.0, @types/node@npm:^18.11.18, @types/node@npm:^18.11.9": - version: 18.19.58 - resolution: "@types/node@npm:18.19.58" + version: 18.19.64 + resolution: "@types/node@npm:18.19.64" dependencies: undici-types: ~5.26.4 - checksum: 6d9826c1ae1313b241e73bb6735e9430233fb1d76672d6bbe8279855b7c8017b8cf6bb1b0bf9eeb6d2c89a1106dd94d1d183f945e83579c39579fce430d3ebb7 + checksum: e7680215b03c9bee8a33947f03d06048e8e460f23b1b7b29c45350cf437faa5f8fcb7d8c3eb8dfec8427923e7a184df42bc710c1b6252b4852e3ed7064c6228f languageName: node linkType: hard "@types/node@npm:^20.1.1": - version: 20.16.14 - resolution: "@types/node@npm:20.16.14" + version: 20.17.6 + resolution: "@types/node@npm:20.17.6" dependencies: undici-types: ~6.19.2 - checksum: d80071cb9a808a64fc33721a705d1d8931e089efa5264f8b85d3c9203f14704af3069c8b3db9c022665bd571aad3a380b50ea620991e1739ec5e152ab1f6a374 + checksum: d51dbb9881c94d0310b32b5fd8013e3261595c61bc888fa27258469c93c3dc0b3c4d20a9f28f3f5f79562f6737e28e7f3dd04940dc8b4d966d34aaf318f7f69b languageName: node linkType: hard @@ -17844,11 +17501,11 @@ __metadata: linkType: hard "@types/passport@npm:*, @types/passport@npm:^1.0.16, @types/passport@npm:^1.0.3": - version: 1.0.16 - resolution: "@types/passport@npm:1.0.16" + version: 1.0.17 + resolution: "@types/passport@npm:1.0.17" dependencies: "@types/express": "*" - checksum: e4a02fa338536eb82694ea548689a7214b1ca98df6a896080daa2b6a8859db02a1e6244eeefaf6f3cc9c268239bb4a7912049a9ed86192144a65c10e55219f80 + checksum: b131d5963576e759f972f038bb7461dcaaa1dc484a488eb093eac6a9f8d4f51c9b7adcd432ae84e3ecb68839dfba16f6d569f36664330b6af59d36ff3c4c64e2 languageName: node linkType: hard @@ -17876,9 +17533,9 @@ __metadata: linkType: hard "@types/qs@npm:*, @types/qs@npm:^6.9.11, @types/qs@npm:^6.9.5, @types/qs@npm:^6.9.6": - version: 6.9.16 - resolution: "@types/qs@npm:6.9.16" - checksum: 2e8918150c12735630f7ee16b770c72949274938c30306025f68aaf977227f41fe0c698ed93db1099e04916d582ac5a1faf7e3c7061c8d885d9169f59a184b6c + version: 6.9.17 + resolution: "@types/qs@npm:6.9.17" + checksum: fc3beda0be70e820ddabaa361e8dfec5e09b482b8f6cf1515615479a027dd06cd5ba0ffbd612b654c2605523f45f484c8905a475623d6cd0c4cadcf5d0c517f5 languageName: node linkType: hard @@ -17956,12 +17613,12 @@ __metadata: linkType: hard "@types/react@npm:^18": - version: 18.3.11 - resolution: "@types/react@npm:18.3.11" + version: 18.3.12 + resolution: "@types/react@npm:18.3.12" dependencies: "@types/prop-types": "*" csstype: ^3.0.2 - checksum: 6cbf36673b64e758dd61b16c24139d015f58530e0d476777de26ba83f24b55e142fbf64e3b8f6b3c7b05ed9ba548551b2a62d9ffb0f95743d0a368646a619163 + checksum: 4ab1577a8c2105a5e316536f724117c90eee5f4bd5c137fc82a2253d8c1fd299dedaa07e8dfc95d6e2f04a4be3cb8b0e1b06098c6233ebd55c508d88099395b7 languageName: node linkType: hard @@ -18255,11 +17912,11 @@ __metadata: linkType: hard "@types/ws@npm:*, @types/ws@npm:^8.0.0, @types/ws@npm:^8.5.10, @types/ws@npm:^8.5.3, @types/ws@npm:^8.5.5": - version: 8.5.12 - resolution: "@types/ws@npm:8.5.12" + version: 8.5.13 + resolution: "@types/ws@npm:8.5.13" dependencies: "@types/node": "*" - checksum: ddefb6ad1671f70ce73b38a5f47f471d4d493864fca7c51f002a86e5993d031294201c5dced6d5018fb8905ad46888d65c7f20dd54fc165910b69f42fba9a6d0 + checksum: f17023ce7b89c6124249c90211803a4aaa02886e12bc2d0d2cd47fa665eeb058db4d871ce4397d8e423f6beea97dd56835dd3fdbb921030fe4d887601e37d609 languageName: node linkType: hard @@ -18376,13 +18033,13 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.11.0": - version: 8.11.0 - resolution: "@typescript-eslint/scope-manager@npm:8.11.0" +"@typescript-eslint/scope-manager@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/scope-manager@npm:8.14.0" dependencies: - "@typescript-eslint/types": 8.11.0 - "@typescript-eslint/visitor-keys": 8.11.0 - checksum: f36212ac1df6a2ed0953beda6bf66e57fd56fcc1c4b4d21149f3451ae621f63aa7ccb92aa1281615250264fdd22e56a163a5d11c5c772c857741ac0e25533325 + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 + checksum: 9c4011771e6795d00328ebfb70b1cdfc706139f0803244adf4bdf46bea5033f1508a0e19136f1d3743eb2c6b5b23d3af6de2b79db8317147c300f61a3335788e languageName: node linkType: hard @@ -18417,10 +18074,10 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/types@npm:8.11.0": - version: 8.11.0 - resolution: "@typescript-eslint/types@npm:8.11.0" - checksum: 2958f3b5b30d3a876aad79df15662e6c23fe3d0c7750c473f27adc725b2a20f303e914db785c64200bc4092c3489648407792e2bd89eccf3f7aaa4495be81681 +"@typescript-eslint/types@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/types@npm:8.14.0" + checksum: 032f1adb483a7e306ba31042afbfc219ff8471458f33529e2a1124feb7b6bfad6c7feac5c4ff07320eda5d1019ac4aa634036716f16cf6e25d4fdf0f755764e1 languageName: node linkType: hard @@ -18461,12 +18118,12 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.11.0": - version: 8.11.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.11.0" +"@typescript-eslint/typescript-estree@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/typescript-estree@npm:8.14.0" dependencies: - "@typescript-eslint/types": 8.11.0 - "@typescript-eslint/visitor-keys": 8.11.0 + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/visitor-keys": 8.14.0 debug: ^4.3.4 fast-glob: ^3.3.2 is-glob: ^4.0.3 @@ -18476,7 +18133,7 @@ __metadata: peerDependenciesMeta: typescript: optional: true - checksum: 03ae4740d4ff19ebc3ea68ac3be1a0265b4abe6348fdc48123e20d6f9206baaa70209e65c9fa4a91930da7d3952c55099a307014284c9b596b12f72bce741817 + checksum: 9412bd801fb45dd3a778f030afd871e2c5010bbd7d4bf54cb2f6e2fecaabb7e2d94960e306737b8ad48a9a0a04297e43aee03741977ecceb3a713560f5927e5a languageName: node linkType: hard @@ -18516,16 +18173,16 @@ __metadata: linkType: hard "@typescript-eslint/utils@npm:^6.0.0 || ^7.0.0 || ^8.0.0": - version: 8.11.0 - resolution: "@typescript-eslint/utils@npm:8.11.0" + version: 8.14.0 + resolution: "@typescript-eslint/utils@npm:8.14.0" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.11.0 - "@typescript-eslint/types": 8.11.0 - "@typescript-eslint/typescript-estree": 8.11.0 + "@typescript-eslint/scope-manager": 8.14.0 + "@typescript-eslint/types": 8.14.0 + "@typescript-eslint/typescript-estree": 8.14.0 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: 0a6286fb6c6aaf497bcd5657e4f8167f29c32bb913e4feab3822c504f537ac30975d626dff442cc691e040384ad197313b5685d79296fc8a42ed6c827dcb52fc + checksum: 7c432f2e29f94e6d4a3303bf841f6e3fbbf708c697df4506c9037d0be6379090b0a6d1a077dda43a27850a6bd2bfd5cb523b15450e3025b301ce24ef41b19251 languageName: node linkType: hard @@ -18549,19 +18206,19 @@ __metadata: languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.11.0": - version: 8.11.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.11.0" +"@typescript-eslint/visitor-keys@npm:8.14.0": + version: 8.14.0 + resolution: "@typescript-eslint/visitor-keys@npm:8.14.0" dependencies: - "@typescript-eslint/types": 8.11.0 + "@typescript-eslint/types": 8.14.0 eslint-visitor-keys: ^3.4.3 - checksum: 29057642bf63994646bd8c5b4baa704ae8b1ff094daa6254a6a92e9fbd252086e219b2b7e8050a131da58cd16cc4dee20bb9fc142bc0d3f22f92af2b59b5444e + checksum: 5f1279bf7cd830ed96a2769b3f27d6102bce630fc4f72c03fee92d06c599ce4e35b9648d0643d7bc9f2613d6587104731c97126bb23805548717bf99854f1094 languageName: node linkType: hard -"@uiw/codemirror-extensions-basic-setup@npm:4.23.5": - version: 4.23.5 - resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.5" +"@uiw/codemirror-extensions-basic-setup@npm:4.23.6": + version: 4.23.6 + resolution: "@uiw/codemirror-extensions-basic-setup@npm:4.23.6" dependencies: "@codemirror/autocomplete": ^6.0.0 "@codemirror/commands": ^6.0.0 @@ -18578,19 +18235,19 @@ __metadata: "@codemirror/search": ">=6.0.0" "@codemirror/state": ">=6.0.0" "@codemirror/view": ">=6.0.0" - checksum: 485fa922219c28dd31be529d8ef3a741659bc6cf3a5ab28d123dc5a8257d7c027c349c95e990a0cac0691aa1bcb8b3a3d56c5da8834984c7279fec2b41e16245 + checksum: dc5a845d80c0659883f5299150034145d9b0d1879a926d5f6a9c21d839351715ea9b5dba0272cfb869e9139d40d49e86c5df12e504874cebc8cf6e9824ec4b98 languageName: node linkType: hard "@uiw/react-codemirror@npm:^4.9.3": - version: 4.23.5 - resolution: "@uiw/react-codemirror@npm:4.23.5" + version: 4.23.6 + resolution: "@uiw/react-codemirror@npm:4.23.6" dependencies: "@babel/runtime": ^7.18.6 "@codemirror/commands": ^6.1.0 "@codemirror/state": ^6.1.1 "@codemirror/theme-one-dark": ^6.0.0 - "@uiw/codemirror-extensions-basic-setup": 4.23.5 + "@uiw/codemirror-extensions-basic-setup": 4.23.6 codemirror: ^6.0.0 peerDependencies: "@babel/runtime": ">=7.11.0" @@ -18600,7 +18257,7 @@ __metadata: codemirror: ">=6.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" - checksum: 0e93d4bf1da9cfd6ccec7f76c418aed58755301a2508b905877fe5ef9f12f8c647791c48f657cbac5325b985804b92cb3dffd904a76336a969861f72dae19927 + checksum: 83ff09c6e5df919b3fef181798b138803a987efab4bebdaad09daae1701167cb4a734fa0b18adcc043d5a2fbd3a997bbda461d1a60972bfccdbbca21803e33fe languageName: node linkType: hard @@ -18621,154 +18278,154 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/ast@npm:1.12.1" +"@webassemblyjs/ast@npm:1.14.1, @webassemblyjs/ast@npm:^1.12.1": + version: 1.14.1 + resolution: "@webassemblyjs/ast@npm:1.14.1" dependencies: - "@webassemblyjs/helper-numbers": 1.11.6 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - checksum: 31bcc64147236bd7b1b6d29d1f419c1f5845c785e1e42dc9e3f8ca2e05a029e9393a271b84f3a5bff2a32d35f51ff59e2181a6e5f953fe88576acd6750506202 + "@webassemblyjs/helper-numbers": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + checksum: f9154ad9ea14f6f2374ebe918c221fd69a4d4514126a1acc6fa4966e8d27ab28cb550a5e6880032cf620e19640578658a7e5a55bd2aad1e3db4e9d598b8f2099 languageName: node linkType: hard -"@webassemblyjs/floating-point-hex-parser@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.6" - checksum: 29b08758841fd8b299c7152eda36b9eb4921e9c584eb4594437b5cd90ed6b920523606eae7316175f89c20628da14326801090167cc7fbffc77af448ac84b7e2 +"@webassemblyjs/floating-point-hex-parser@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.13.2" + checksum: e866ec8433f4a70baa511df5e8f2ebcd6c24f4e2cc6274c7c5aabe2bcce3459ea4680e0f35d450e1f3602acf3913b6b8e4f15069c8cfd34ae8609fb9a7d01795 languageName: node linkType: hard -"@webassemblyjs/helper-api-error@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-api-error@npm:1.11.6" - checksum: e8563df85161096343008f9161adb138a6e8f3c2cc338d6a36011aa55eabb32f2fd138ffe63bc278d009ada001cc41d263dadd1c0be01be6c2ed99076103689f +"@webassemblyjs/helper-api-error@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-api-error@npm:1.13.2" + checksum: 48b5df7fd3095bb252f59a139fe2cbd999a62ac9b488123e9a0da3906ad8a2f2da7b2eb21d328c01a90da987380928706395c2897d1f3ed9e2125b6d75a920d0 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-buffer@npm:1.12.1" - checksum: c3ffb723024130308db608e86e2bdccd4868bbb62dffb0a9a1530606496f79c87f8565bd8e02805ce64912b71f1a70ee5fb00307258b0c082c3abf961d097eca +"@webassemblyjs/helper-buffer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.14.1" + checksum: b611e981dfd6a797c3d8fc3a772de29a6e55033737c2c09c31bb66c613bdbb2d25f915df1dee62a602c6acc057ca71128432fa8c3e22a893e1219dc454f14ede languageName: node linkType: hard -"@webassemblyjs/helper-numbers@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-numbers@npm:1.11.6" +"@webassemblyjs/helper-numbers@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-numbers@npm:1.13.2" dependencies: - "@webassemblyjs/floating-point-hex-parser": 1.11.6 - "@webassemblyjs/helper-api-error": 1.11.6 + "@webassemblyjs/floating-point-hex-parser": 1.13.2 + "@webassemblyjs/helper-api-error": 1.13.2 "@xtuc/long": 4.2.2 - checksum: f4b562fa219f84368528339e0f8d273ad44e047a07641ffcaaec6f93e5b76fd86490a009aa91a294584e1436d74b0a01fa9fde45e333a4c657b58168b04da424 + checksum: 49e2c9bf9b66997e480f6b44d80f895b3cde4de52ac135921d28e144565edca6903a519f627f4089b5509de1d7f9e5023f0e1a94ff78a36c9e2eb30e7c18ffd2 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.6" - checksum: 3535ef4f1fba38de3475e383b3980f4bbf3de72bbb631c2b6584c7df45be4eccd62c6ff48b5edd3f1bcff275cfd605a37679ec199fc91fd0a7705d7f1e3972dc +"@webassemblyjs/helper-wasm-bytecode@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.13.2" + checksum: 8e059e1c1f0294f4fc3df8e4eaff3c5ef6e2e1358f34ebc118eaf5070ed59e56ed7fc92b28be734ebde17c8d662d5d27e06ade686c282445135da083ae11c128 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.12.1" +"@webassemblyjs/helper-wasm-section@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.14.1" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/wasm-gen": 1.12.1 - checksum: c19810cdd2c90ff574139b6d8c0dda254d42d168a9e5b3d353d1bc085f1d7164ccd1b3c05592a45a939c47f7e403dc8d03572bb686642f06a3d02932f6f0bc8f + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/wasm-gen": 1.14.1 + checksum: 0a08d454a63192cd66abf91b6f060ac4b466cef341262246e9dcc828dd4c8536195dea9b46a1244b1eac65b59b8b502164a771a190052a92ff0a0a2ded0f8f53 languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/ieee754@npm:1.11.6" +"@webassemblyjs/ieee754@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/ieee754@npm:1.13.2" dependencies: "@xtuc/ieee754": ^1.2.0 - checksum: 13574b8e41f6ca39b700e292d7edf102577db5650fe8add7066a320aa4b7a7c09a5056feccac7a74eb68c10dea9546d4461412af351f13f6b24b5f32379b49de + checksum: d7e3520baa37a7309fa7db4d73d69fb869878853b1ebd4b168821bd03fcc4c0e1669c06231315b0039035d9a7a462e53de3ad982da4a426a4b0743b5888e8673 languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/leb128@npm:1.11.6" +"@webassemblyjs/leb128@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/leb128@npm:1.13.2" dependencies: "@xtuc/long": 4.2.2 - checksum: 7ea942dc9777d4b18a5ebfa3a937b30ae9e1d2ce1fee637583ed7f376334dd1d4274f813d2e250056cca803e0952def4b954913f1a3c9068bcd4ab4ee5143bf0 + checksum: 64083507f7cff477a6d71a9e325d95665cea78ec8df99ca7c050e1cfbe300fbcf0842ca3dcf3b4fa55028350135588a4f879398d3dd2b6a8de9913ce7faf5333 languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.11.6": - version: 1.11.6 - resolution: "@webassemblyjs/utf8@npm:1.11.6" - checksum: 807fe5b5ce10c390cfdd93e0fb92abda8aebabb5199980681e7c3743ee3306a75729bcd1e56a3903980e96c885ee53ef901fcbaac8efdfa480f9c0dae1d08713 +"@webassemblyjs/utf8@npm:1.13.2": + version: 1.13.2 + resolution: "@webassemblyjs/utf8@npm:1.13.2" + checksum: 95ec6052f30eefa8d50c9b2a3394d08b17d53a4aa52821451d41d774c126fa8f39b988fbf5bff56da86852a87c16d676e576775a4071e5e5ccf020cc85a4b281 languageName: node linkType: hard "@webassemblyjs/wasm-edit@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-edit@npm:1.12.1" + version: 1.14.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.14.1" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/helper-wasm-section": 1.12.1 - "@webassemblyjs/wasm-gen": 1.12.1 - "@webassemblyjs/wasm-opt": 1.12.1 - "@webassemblyjs/wasm-parser": 1.12.1 - "@webassemblyjs/wast-printer": 1.12.1 - checksum: ae23642303f030af888d30c4ef37b08dfec7eab6851a9575a616e65d1219f880d9223913a39056dd654e49049d76e97555b285d1f7e56935047abf578cce0692 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/helper-wasm-section": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-opt": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + "@webassemblyjs/wast-printer": 1.14.1 + checksum: 9341c3146bb1b7863f03d6050c2a66990f20384ca137388047bbe1feffacb599e94fca7b7c18287d17e2449ffb4005fdc7f41f674a6975af9ad8522756f8ffff languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-gen@npm:1.12.1" +"@webassemblyjs/wasm-gen@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.14.1" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/ieee754": 1.11.6 - "@webassemblyjs/leb128": 1.11.6 - "@webassemblyjs/utf8": 1.11.6 - checksum: 5787626bb7f0b033044471ddd00ce0c9fe1ee4584e8b73e232051e3a4c99ba1a102700d75337151c8b6055bae77eefa4548960c610a5e4a504e356bd872138ff + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 + checksum: 401b12bec7431c4fc29d9414bbe40d3c6dc5be04d25a116657c42329f5481f0129f3b5834c293f26f0e42681ceac9157bf078ce9bdb6a7f78037c650373f98b2 languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-opt@npm:1.12.1" +"@webassemblyjs/wasm-opt@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.14.1" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-buffer": 1.12.1 - "@webassemblyjs/wasm-gen": 1.12.1 - "@webassemblyjs/wasm-parser": 1.12.1 - checksum: 0e8fa8a0645304a1e18ff40d3db5a2e9233ebaa169b19fcc651d6fc9fe2cac0ce092ddee927318015ae735d9cd9c5d97c0cafb6a51dcd2932ac73587b62df991 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-buffer": 1.14.1 + "@webassemblyjs/wasm-gen": 1.14.1 + "@webassemblyjs/wasm-parser": 1.14.1 + checksum: 60c697a9e9129d8d23573856df0791ba33cea4a3bc2339044cae73128c0983802e5e50a42157b990eeafe1237eb8e7653db6de5f02b54a0ae7b81b02dcdf2ae9 languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.12.1, @webassemblyjs/wasm-parser@npm:^1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wasm-parser@npm:1.12.1" +"@webassemblyjs/wasm-parser@npm:1.14.1, @webassemblyjs/wasm-parser@npm:^1.12.1": + version: 1.14.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.14.1" dependencies: - "@webassemblyjs/ast": 1.12.1 - "@webassemblyjs/helper-api-error": 1.11.6 - "@webassemblyjs/helper-wasm-bytecode": 1.11.6 - "@webassemblyjs/ieee754": 1.11.6 - "@webassemblyjs/leb128": 1.11.6 - "@webassemblyjs/utf8": 1.11.6 - checksum: 176015de3551ac068cd4505d837414f258d9ade7442bd71efb1232fa26c9f6d7d4e11a5c816caeed389943f409af7ebff6899289a992d7a70343cb47009d21a8 + "@webassemblyjs/ast": 1.14.1 + "@webassemblyjs/helper-api-error": 1.13.2 + "@webassemblyjs/helper-wasm-bytecode": 1.13.2 + "@webassemblyjs/ieee754": 1.13.2 + "@webassemblyjs/leb128": 1.13.2 + "@webassemblyjs/utf8": 1.13.2 + checksum: 93f1fe2676da465b4e824419d9812a3d7218de4c3addd4e916c04bc86055fa134416c1b67e4b7cbde8d728c0dce2721d06cc0bfe7a7db7c093a0898009937405 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.12.1": - version: 1.12.1 - resolution: "@webassemblyjs/wast-printer@npm:1.12.1" +"@webassemblyjs/wast-printer@npm:1.14.1": + version: 1.14.1 + resolution: "@webassemblyjs/wast-printer@npm:1.14.1" dependencies: - "@webassemblyjs/ast": 1.12.1 + "@webassemblyjs/ast": 1.14.1 "@xtuc/long": 4.2.2 - checksum: 2974b5dda8d769145ba0efd886ea94a601e61fb37114c14f9a9a7606afc23456799af652ac3052f284909bd42edc3665a76bc9b50f95f0794c053a8a1757b713 + checksum: 517881a0554debe6945de719d100b2d8883a2d24ddf47552cdeda866341e2bb153cd824a864bc7e2a61190a4b66b18f9899907e0074e9e820d2912ac0789ea60 languageName: node linkType: hard @@ -18805,25 +18462,25 @@ __metadata: languageName: node linkType: hard -"@whatwg-node/fetch@npm:^0.9.0": - version: 0.9.22 - resolution: "@whatwg-node/fetch@npm:0.9.22" +"@whatwg-node/fetch@npm:^0.10.0": + version: 0.10.1 + resolution: "@whatwg-node/fetch@npm:0.10.1" dependencies: - "@whatwg-node/node-fetch": ^0.5.27 + "@whatwg-node/node-fetch": ^0.7.1 urlpattern-polyfill: ^10.0.0 - checksum: 9ec91523b467a852ee4dbfc4c21cc3e4f8f9dc646da53478679bea49aded2419adf526da88379cd2e285f036ee9e6877dc2d19e8c0661f7c942df8388c0cbe7f + checksum: 7b0c64476d1a8f7c3cd6d946dfda3f39c204049c903d6338a07f1579a1b2771f89e742f71057b7b7beef3ccf8bf8ecc2b019c072719f1fd64509386d7ca102ae languageName: node linkType: hard -"@whatwg-node/node-fetch@npm:^0.5.27": - version: 0.5.27 - resolution: "@whatwg-node/node-fetch@npm:0.5.27" +"@whatwg-node/node-fetch@npm:^0.7.1": + version: 0.7.2 + resolution: "@whatwg-node/node-fetch@npm:0.7.2" dependencies: "@kamilkisiela/fast-url-parser": ^1.1.4 busboy: ^1.6.0 fast-querystring: ^1.1.1 tslib: ^2.6.3 - checksum: 0c248ddd2f1fda21ebbe62f129884b0d30fd468480a0665ad8350bf5524c104698ad887ab157af937b6d25419f709170ad895cd3355b5b9120daa0955fc6d87f + checksum: 1bba3e512a0d69ae335c01dea0b8a246afc1ea9946ef53437ee632c54215fc044b798bd4aa1f76ed31937ccfb43624413f83dcd62282ab1fb54bd13ccaea2b14 languageName: node linkType: hard @@ -18947,7 +18604,7 @@ __metadata: languageName: node linkType: hard -"accepts@npm:^1.3.5, accepts@npm:~1.3.4, accepts@npm:~1.3.5, accepts@npm:~1.3.8": +"accepts@npm:^1.3.5, accepts@npm:~1.3.4, accepts@npm:~1.3.8": version: 1.3.8 resolution: "accepts@npm:1.3.8" dependencies: @@ -18958,9 +18615,9 @@ __metadata: linkType: hard "ace-builds@npm:^1.32.7, ace-builds@npm:^1.4.13": - version: 1.36.3 - resolution: "ace-builds@npm:1.36.3" - checksum: b64ff51ec2c48681ec0d0396d156b0c93ca16e02c4d4bed95f2235f72df17c9bed300dd39fa80338436c59e2dc4f5ef88de3ebe53c0c34a3833bde8b49f9c903 + version: 1.36.5 + resolution: "ace-builds@npm:1.36.5" + checksum: 119a20a5bcb612eea1b2b771c17e118f2bad7359b521edbf162fbaebb8249300b79d31696746426f891cf9748b5288eaa4f924b6d38d01384370b57699b321a7 languageName: node linkType: hard @@ -19027,12 +18684,12 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.12.1, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": - version: 8.13.0 - resolution: "acorn@npm:8.13.0" +"acorn@npm:^8.1.0, acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.2.4, acorn@npm:^8.4.1, acorn@npm:^8.7.1, acorn@npm:^8.8.1, acorn@npm:^8.8.2, acorn@npm:^8.9.0": + version: 8.14.0 + resolution: "acorn@npm:8.14.0" bin: acorn: bin/acorn - checksum: f1541f05eb5d6ff67990d1927290809b1ebb663ac96d9c7057c935cf29c5bcaba6d39f37bd007f4bb814f162f142b0f2b2dd4b14128b8fcfaf9f0508a6f05f1c + checksum: 8755074ba55fff94e84e81c72f1013c2d9c78e973c31231c8ae505a5f966859baf654bddd75046bffd73ce816b149298977fff5077a3033dedba0ae2aad152d4 languageName: node linkType: hard @@ -19910,10 +19567,10 @@ __metadata: languageName: node linkType: hard -"attr-accept@npm:^2.2.2": - version: 2.2.4 - resolution: "attr-accept@npm:2.2.4" - checksum: 7b0112e28e3eeb760f4f6bd4ecd8b2467fdb5df7d38d5f8b0a9e83af892023b1f84c594df337b446d5e5eb3f61e18b0470bd9f3aadf39e7853897cbd82cad20d +"attr-accept@npm:^2.2.2, attr-accept@npm:^2.2.4": + version: 2.2.5 + resolution: "attr-accept@npm:2.2.5" + checksum: e6a23183c112f5d313ebfc7e63e454de0600caffe9ab88f86e9df420d2399a48e27e6c46ee8de2fc6f34fee3541ecdb557f2b86e6d8bd7d24fd3a66cc75e6349 languageName: node linkType: hard @@ -19971,9 +19628,9 @@ __metadata: linkType: hard "axe-core@npm:^4.10.0": - version: 4.10.1 - resolution: "axe-core@npm:4.10.1" - checksum: 1e71bc4b7cdad6e99dad9e4098a174932ed69052e7400e0fb57b585fff1764cc541580db375c643755250da7d68f811ba05fe0636c31d4238aa16e3f31587869 + version: 4.10.2 + resolution: "axe-core@npm:4.10.2" + checksum: 2b9b1c93ea73ea9f206604e4e17bd771d2d835f077bde54517d73028b8865c69b209460e73d5b109968cbdb39ab3d28943efa5695189bd79e16421ce1706719e languageName: node linkType: hard @@ -20148,15 +19805,15 @@ __metadata: linkType: hard "babel-plugin-polyfill-corejs2@npm:^0.4.10": - version: 0.4.11 - resolution: "babel-plugin-polyfill-corejs2@npm:0.4.11" + version: 0.4.12 + resolution: "babel-plugin-polyfill-corejs2@npm:0.4.12" dependencies: "@babel/compat-data": ^7.22.6 - "@babel/helper-define-polyfill-provider": ^0.6.2 + "@babel/helper-define-polyfill-provider": ^0.6.3 semver: ^6.3.1 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: f098353ce7c7dde1a1d2710858e01b471e85689110c9e37813e009072347eb8c55d5f84d20d3bf1cab31755f20078ba90f8855fdc4686a9daa826a95ff280bd7 + checksum: 6e6e6a8b85fec80a310ded2f5c151385e4ac59118909dd6a952e1025e4a478eb79dda45a5a6322cc2e598fd696eb07d4e2fa52418b4101f3dc370bdf8c8939ba languageName: node linkType: hard @@ -20173,13 +19830,13 @@ __metadata: linkType: hard "babel-plugin-polyfill-regenerator@npm:^0.6.1": - version: 0.6.2 - resolution: "babel-plugin-polyfill-regenerator@npm:0.6.2" + version: 0.6.3 + resolution: "babel-plugin-polyfill-regenerator@npm:0.6.3" dependencies: - "@babel/helper-define-polyfill-provider": ^0.6.2 + "@babel/helper-define-polyfill-provider": ^0.6.3 peerDependencies: "@babel/core": ^7.4.0 || ^8.0.0-0 <8.0.0 - checksum: 150233571072b6b3dfe946242da39cba8587b7f908d1c006f7545fc88b0e3c3018d445739beb61e7a75835f0c2751dbe884a94ff9b245ec42369d9267e0e1b3f + checksum: d12696e6b3f280eb78fac551619ca4389262db62c7352cd54bf679d830df8b35596eef2de77cf00db6648eada1c99d49c4f40636dbc9c335a1e5420cfef96750 languageName: node linkType: hard @@ -20341,11 +19998,11 @@ __metadata: linkType: hard "bare-stream@npm:^2.0.0": - version: 2.3.1 - resolution: "bare-stream@npm:2.3.1" + version: 2.3.2 + resolution: "bare-stream@npm:2.3.2" dependencies: streamx: ^2.20.0 - checksum: d4f7a303f8b0ffcbfbd52d581ff0e9687590217d6c37cc3224b8da91050ddc4d4037ae062e0fb86b883d73fb2bd81c1c33b0a006d4811fc031fdb9804141ae55 + checksum: 051c817f0b74617d99002a91c61e6fa2b56bff3bb329c5ab4a817287bc1f46f3aef5f13bc11201b344a91873782a45f755d3910012381f16e47feee2194fd792 languageName: node linkType: hard @@ -20535,9 +20192,9 @@ __metadata: linkType: hard "bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 + version: 4.12.1 + resolution: "bn.js@npm:4.12.1" + checksum: f7f84a909bd07bdcc6777cccbf280b629540792e6965fb1dd1aeafba96e944f197ca10cbec2692f51e0a906ff31da1eb4317f3d1cd659d6f68b8bcd211f7ecbc languageName: node linkType: hard @@ -20775,7 +20432,7 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.0.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.23.3, browserslist@npm:^4.24.0": +"browserslist@npm:^4.0.0, browserslist@npm:^4.18.1, browserslist@npm:^4.21.10, browserslist@npm:^4.21.4, browserslist@npm:^4.24.0, browserslist@npm:^4.24.2": version: 4.24.2 resolution: "browserslist@npm:4.24.2" dependencies: @@ -20929,13 +20586,6 @@ __metadata: languageName: node linkType: hard -"bytes@npm:3.0.0": - version: 3.0.0 - resolution: "bytes@npm:3.0.0" - checksum: a2b386dd8188849a5325f58eef69c3b73c51801c08ffc6963eddc9be244089ba32d19347caf6d145c86f315ae1b1fc7061a32b0c1aa6379e6a719090287ed101 - languageName: node - linkType: hard - "bytes@npm:3.1.2": version: 3.1.2 resolution: "bytes@npm:3.1.2" @@ -21095,22 +20745,22 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30001669": - version: 1.0.30001669 - resolution: "caniuse-lite@npm:1.0.30001669" - checksum: 8ed0c69d0c6aa3b1cbc5ba4e5f5330943e7b7165e257f6955b8b73f043d07ad922265261f2b54d9bbaf02886bbdba5e6f5b16662310a13f91f17035af3212de1 + version: 1.0.30001680 + resolution: "caniuse-lite@npm:1.0.30001680" + checksum: 2641d2b18c5ab0a6663cb350c5adc81e5ede1a7677d1c7518a8053ada87bf6f206419e1820a2608f76fa5e4f7bea327cbe47df423783e571569a88c0ea645270 languageName: node linkType: hard "casbin@npm:^5.27.0, casbin@npm:^5.27.1": - version: 5.32.0 - resolution: "casbin@npm:5.32.0" + version: 5.34.0 + resolution: "casbin@npm:5.34.0" dependencies: + "@casbin/expression-eval": ^5.2.0 await-lock: ^2.0.1 buffer: ^6.0.3 csv-parse: ^5.3.5 - expression-eval: ^5.0.0 minimatch: ^7.4.2 - checksum: 1611af0ceed0b353ffa82745df6110f2a4d269739a47d0a846d8523794eb063a42a8e7524bd5c51b938437f3228832b45ec1a5d2d423ccd68ea07c2600fc6170 + checksum: bf5f9f68fe039da4c82a7db0a98f7a9a7a9bc37dca1218d39e39c8f23f5e1f7b834e96b655e6fc32aa78e9f20af94b106c6d16bc1f616edd2c5f6bc2d08abd52 languageName: node linkType: hard @@ -21542,7 +21192,7 @@ __metadata: languageName: node linkType: hard -"clsx@npm:^2.0.0, clsx@npm:^2.1.0, clsx@npm:^2.1.1": +"clsx@npm:^2.1.0, clsx@npm:^2.1.1": version: 2.1.1 resolution: "clsx@npm:2.1.1" checksum: acd3e1ab9d8a433ecb3cc2f6a05ab95fe50b4a3cfc5ba47abb6cbf3754585fcb87b84e90c822a1f256c4198e3b41c7f6c391577ffc8678ad587fc0976b24fd57 @@ -21856,9 +21506,9 @@ __metadata: linkType: hard "complex.js@npm:^2.1.1": - version: 2.3.0 - resolution: "complex.js@npm:2.3.0" - checksum: 8a230999a0ba8bce1dfdd046245775ec38f3cf0615c365c1eae8e6a7e8a193714074c02bff5b65d48ae9b72d2824fc584fb1b345920cf83aa0d78d87b920927a + version: 2.4.2 + resolution: "complex.js@npm:2.4.2" + checksum: 989332b1ca2ac4c71cb42e79501b535f5c95e2356570a027a47cd03e515ff1ddfe4ea497dc26edf249610e097fe730092f498995306f02ad0443f9a5a7b6e5f3 languageName: node linkType: hard @@ -21906,7 +21556,7 @@ __metadata: languageName: node linkType: hard -"compressible@npm:~2.0.16": +"compressible@npm:~2.0.18": version: 2.0.18 resolution: "compressible@npm:2.0.18" dependencies: @@ -21916,17 +21566,17 @@ __metadata: linkType: hard "compression@npm:^1.7.4": - version: 1.7.4 - resolution: "compression@npm:1.7.4" + version: 1.7.5 + resolution: "compression@npm:1.7.5" dependencies: - accepts: ~1.3.5 - bytes: 3.0.0 - compressible: ~2.0.16 + bytes: 3.1.2 + compressible: ~2.0.18 debug: 2.6.9 + negotiator: ~0.6.4 on-headers: ~1.0.2 - safe-buffer: 5.1.2 + safe-buffer: 5.2.1 vary: ~1.1.2 - checksum: 35c0f2eb1f28418978615dc1bc02075b34b1568f7f56c62d60f4214d4b7cc00d0f6d282b5f8a954f59872396bd770b6b15ffd8aa94c67d4bce9b8887b906999b + checksum: d624b5562492518eee82c4f1381ea36f69f1f10b4283bfc2dcafd7d4d7eeed17c3f0e8f2951798594b7064db7ac5a6198df34816bde2d56bb7c75ce1570880e9 languageName: node linkType: hard @@ -22152,7 +21802,7 @@ __metadata: languageName: node linkType: hard -"cookie@npm:0.7.2, cookie@npm:^0.7.0, cookie@npm:~0.7.2": +"cookie@npm:0.7.2, cookie@npm:^0.7.0, cookie@npm:^0.7.2, cookie@npm:~0.7.2": version: 0.7.2 resolution: "cookie@npm:0.7.2" checksum: 9bf8555e33530affd571ea37b615ccad9b9a34febbf2c950c86787088eb00a8973690833b0f8ebd6b69b753c62669ea60cec89178c1fb007bf0749abed74f93e @@ -22166,10 +21816,10 @@ __metadata: languageName: node linkType: hard -"cookie@npm:^0.5.0": - version: 0.5.0 - resolution: "cookie@npm:0.5.0" - checksum: 1f4bd2ca5765f8c9689a7e8954183f5332139eb72b6ff783d8947032ec1fdf43109852c178e21a953a30c0dd42257828185be01b49d1eb1a67fd054ca588a180 +"cookie@npm:^1.0.1": + version: 1.0.1 + resolution: "cookie@npm:1.0.1" + checksum: e2ff4879d816ea27dab69651c06d328b1f4214ccefa1023b6ebf85787bc23b3cad777ed51b4e54c01d161c374a05fc86e45e51ee3d9fafb48a836439c56b2458 languageName: node linkType: hard @@ -22200,18 +21850,18 @@ __metadata: linkType: hard "core-js-compat@npm:^3.38.0, core-js-compat@npm:^3.38.1": - version: 3.38.1 - resolution: "core-js-compat@npm:3.38.1" + version: 3.39.0 + resolution: "core-js-compat@npm:3.39.0" dependencies: - browserslist: ^4.23.3 - checksum: a0a5673bcd59f588f0cd0b59cdacd4712b82909738a87406d334dd412eb3d273ae72b275bdd8e8fef63fca9ef12b42ed651be139c7c44c8a1acb423c8906992e + browserslist: ^4.24.2 + checksum: 2d7d087c3271d711d03a55203d4756f6288317a1ce35cdc8bafaf1833ef21fd67a92a50cff8dcf7df1325ac63720906ab3cf514c85b238c95f65fca1040f6ad6 languageName: node linkType: hard "core-js-pure@npm:^3.23.3, core-js-pure@npm:^3.30.2": - version: 3.38.1 - resolution: "core-js-pure@npm:3.38.1" - checksum: 95ca2e75df371571b0d41cba81e1f6335a2ba1f080e80f8edfa124ad3041880fe72e10f2144527a700a3d993dbf9f7cada3e04a927a66604bc49d0c4951567fb + version: 3.39.0 + resolution: "core-js-pure@npm:3.39.0" + checksum: cdcb1eec4eb9308fcf5cfe18a95322c388b05c11e66b5b0ac296a08f8f2106b458ecfe8aca0155d62ed2c5e150485b68073937e7b0a563fbc287563c4475a7c1 languageName: node linkType: hard @@ -22223,9 +21873,9 @@ __metadata: linkType: hard "core-js@npm:^3.6.5": - version: 3.38.1 - resolution: "core-js@npm:3.38.1" - checksum: 55703c2f6fcd537e47a5cc83e9dc9884efef61861bbefb4a96a8c95e87956db980ce314628465dd49f14e626c5e633b9e3433f3e4a1f628404a14da420eb2556 + version: 3.39.0 + resolution: "core-js@npm:3.39.0" + checksum: 7a3670e9a2a89e0a049daa288d742d09f6e16d27a8945c5e2ef6fc45dc57e5c4bc5db589da05947486f54ae978d14cf27bd3fb1db0b9907000a611e8af37355b languageName: node linkType: hard @@ -22431,21 +22081,21 @@ __metadata: linkType: hard "cron@npm:^3.0.0": - version: 3.1.7 - resolution: "cron@npm:3.1.7" + version: 3.2.1 + resolution: "cron@npm:3.2.1" dependencies: "@types/luxon": ~3.4.0 - luxon: ~3.4.0 - checksum: d98ee5297543c138221d96dd49270bf6576db80134e6041f4ce4a3c0cb6060863d76910209b34fee66fbf134461449ec3bd283d6a76d1c50da220cde7fc10c65 + luxon: ~3.5.0 + checksum: 349419d702385e9a6ad08d2b571d544df97009be37cde6a4c4e5b31118ca806d9501d784d74e84236a49233c7469e322c3d2c14867009a7a3b2e644b7ade0a0e languageName: node linkType: hard -"cronstrue@npm:^2.2.0, cronstrue@npm:^2.32.0": - version: 2.50.0 - resolution: "cronstrue@npm:2.50.0" +"cronstrue@npm:^2.32.0": + version: 2.51.0 + resolution: "cronstrue@npm:2.51.0" bin: cronstrue: bin/cli.js - checksum: bf6e51c4b9ab28d7ba928a392a76b7d97bd3c3dc8da5618db8424480dc6213cafed658ea835925675767fe5497931d1325e51634eeb8e2556f0630a62eb29cc3 + checksum: 7487eeb7bdb9bc8882ede5d3f1cadf73dec44f1da8d29b8ebb0312f85413cd300842ce0c6c49beb66e549917d48f699dfd8b9585d00050c5571c3f8cbf091ac6 languageName: node linkType: hard @@ -22488,13 +22138,13 @@ __metadata: linkType: hard "cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" + version: 7.0.5 + resolution: "cross-spawn@npm:7.0.5" dependencies: path-key: ^3.1.0 shebang-command: ^2.0.0 which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + checksum: 55c50004cb6bbea3649784caac6e7b8ddd03fa8c1e14dbd5a1f15896708378006eb7526a52a0f48770c768c9b8aed48a5888eb8e785ff59ff7749e74f66cd96b languageName: node linkType: hard @@ -23235,13 +22885,6 @@ __metadata: languageName: node linkType: hard -"data-uri-to-buffer@npm:^4.0.0": - version: 4.0.1 - resolution: "data-uri-to-buffer@npm:4.0.1" - checksum: 0d0790b67ffec5302f204c2ccca4494f70b4e2d940fea3d36b09f0bb2b8539c2e86690429eb1f1dc4bcc9e4df0644193073e63d9ee48ac9fce79ec1506e4aa4c - languageName: node - linkType: hard - "data-uri-to-buffer@npm:^6.0.2": version: 6.0.2 resolution: "data-uri-to-buffer@npm:6.0.2" @@ -23404,13 +23047,6 @@ __metadata: languageName: node linkType: hard -"decimal.js-light@npm:^2.4.1": - version: 2.5.1 - resolution: "decimal.js-light@npm:2.5.1" - checksum: f5a2c7eac1c4541c8ab8a5c8abea64fc1761cefc7794bd5f8afd57a8a78d1b51785e0c4e4f85f4895a043eaa90ddca1edc3981d1263eb6ddce60f32bf5fe66c9 - languageName: node - linkType: hard - "decimal.js@npm:^10.2.1, decimal.js@npm:^10.4.2, decimal.js@npm:^10.4.3": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" @@ -24126,10 +23762,10 @@ __metadata: languageName: node linkType: hard -"dompurify@npm:=3.1.4": - version: 3.1.4 - resolution: "dompurify@npm:3.1.4" - checksum: 7b8d55d6e091c69cccfef73d066bd1bc82de32c81bc050b2c396b502afda0c853152760553aeb4d7ef86e7cf46bf49720fcb0c42a49ce939125cf40d7720ebb8 +"dompurify@npm:=3.1.6": + version: 3.1.6 + resolution: "dompurify@npm:3.1.6" + checksum: cc4fc4ccd9261fbceb2a1627a985c70af231274a26ddd3f643fd0616a0a44099bd9e4480940ce3655612063be4a1fe9f5e9309967526f8c0a99f931602323866 languageName: node linkType: hard @@ -24141,9 +23777,9 @@ __metadata: linkType: hard "dompurify@npm:^3.0.0": - version: 3.1.7 - resolution: "dompurify@npm:3.1.7" - checksum: 0a9b811bbc94f3dba60cf6486962362b0f1a5b4ab789f5e1cbd4749b6ba1a1fad190a677a962dc8850ce28764424765fe425e9d6508e4e93ba648ef15d54bc24 + version: 3.2.0 + resolution: "dompurify@npm:3.2.0" + checksum: 54bd8e113474c1444dbabae5ea404e0d4a1bf042004070bcda2de3ea6c209f8c40686aebf60caff144bdae84175784504a42d7ac7f484fd6932d7bc4a53bf378 languageName: node linkType: hard @@ -24200,7 +23836,7 @@ __metadata: languageName: node linkType: hard -"dset@npm:^3.1.2, dset@npm:^3.1.4": +"dset@npm:^3.1.2": version: 3.1.4 resolution: "dset@npm:3.1.4" checksum: 9a7677e9ffd3c13ad850f7cf367aa94b39984006510e84c3c09b7b88bba0a5b3b7196d85a99d0c4cae4e47d67bdeca43dc1834a41d80f31bcdc86dd26121ecec @@ -24304,15 +23940,15 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.5.41": - version: 1.5.42 - resolution: "electron-to-chromium@npm:1.5.42" - checksum: 8527f6e050b7f869d0135869587b3273fefa1cc2cbb9799bff552e10586b61860139758ee9824c803cdce632e24d4897bb7f67dcecf1c2bef279977fdfa9afa1 + version: 1.5.60 + resolution: "electron-to-chromium@npm:1.5.60" + checksum: 049764e0d3a459a312e203c8812e99041be510236467e4bc22d1fec67073e8191e6710b24b4dff980819effe3877b0666f00f5243d411cd1e5419886e7f904f6 languageName: node linkType: hard "elliptic@npm:^6.5.3, elliptic@npm:^6.5.5": - version: 6.5.7 - resolution: "elliptic@npm:6.5.7" + version: 6.6.1 + resolution: "elliptic@npm:6.6.1" dependencies: bn.js: ^4.11.9 brorand: ^1.1.0 @@ -24321,7 +23957,7 @@ __metadata: inherits: ^2.0.4 minimalistic-assert: ^1.0.1 minimalistic-crypto-utils: ^1.0.1 - checksum: af0ffddffdbc2fea4eeec74388cd73e62ed5a0eac6711568fb28071566319785df529c968b0bf1250ba4bc628e074b2d64c54a633e034aa6f0c6b152ceb49ab8 + checksum: 27b14a52f68bbbc0720da259f712cb73e953f6d2047958cd02fb0d0ade2e83849dc39fb4af630889c67df8817e24237428cf59c4f4c07700f755b401149a7375 languageName: node linkType: hard @@ -24500,8 +24136,8 @@ __metadata: linkType: hard "es-abstract@npm:^1.17.5, es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" + version: 1.23.5 + resolution: "es-abstract@npm:1.23.5" dependencies: array-buffer-byte-length: ^1.0.1 arraybuffer.prototype.slice: ^1.0.3 @@ -24518,7 +24154,7 @@ __metadata: function.prototype.name: ^1.1.6 get-intrinsic: ^1.2.4 get-symbol-description: ^1.0.2 - globalthis: ^1.0.3 + globalthis: ^1.0.4 gopd: ^1.0.1 has-property-descriptors: ^1.0.2 has-proto: ^1.0.3 @@ -24534,10 +24170,10 @@ __metadata: is-string: ^1.0.7 is-typed-array: ^1.1.13 is-weakref: ^1.0.2 - object-inspect: ^1.13.1 + object-inspect: ^1.13.3 object-keys: ^1.1.1 object.assign: ^4.1.5 - regexp.prototype.flags: ^1.5.2 + regexp.prototype.flags: ^1.5.3 safe-array-concat: ^1.1.2 safe-regex-test: ^1.0.3 string.prototype.trim: ^1.2.9 @@ -24549,7 +24185,7 @@ __metadata: typed-array-length: ^1.0.6 unbox-primitive: ^1.0.2 which-typed-array: ^1.1.15 - checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae + checksum: 17c81f8a42f0322fd11e0025d3c2229ecfd7923560c710906b8e68660e19c42322750dcedf8ba5cf28bae50d5befd8174d3903ac50dbabb336d3efc3aabed2ee languageName: node linkType: hard @@ -24602,9 +24238,9 @@ __metadata: languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.19, es-iterator-helpers@npm:^1.1.0": - version: 1.1.0 - resolution: "es-iterator-helpers@npm:1.1.0" +"es-iterator-helpers@npm:^1.1.0": + version: 1.2.0 + resolution: "es-iterator-helpers@npm:1.2.0" dependencies: call-bind: ^1.0.7 define-properties: ^1.2.1 @@ -24614,13 +24250,14 @@ __metadata: function-bind: ^1.1.2 get-intrinsic: ^1.2.4 globalthis: ^1.0.4 + gopd: ^1.0.1 has-property-descriptors: ^1.0.2 has-proto: ^1.0.3 has-symbols: ^1.0.3 internal-slot: ^1.0.7 iterator.prototype: ^1.1.3 safe-array-concat: ^1.1.2 - checksum: 4ba3a32ab7ba05b85f0ae30604feeb8ffd801fe762e9df9577bd220a96b9eaa2e90af8e6bdc498e523051f293955e2f7d2bddd34de71e1428a1b8ff3fd961016 + checksum: c5f5ff10d57f956539581aca7a2d8726c5a8a3e49e6285700d74dcd8b64c7a337b9ab5e81b459b079dac745d2fe02e4f6b80a842e3df45d9cfe3f12325fda8c0 languageName: node linkType: hard @@ -25339,8 +24976,8 @@ __metadata: linkType: hard "eslint-plugin-jest@npm:^28.0.0": - version: 28.8.3 - resolution: "eslint-plugin-jest@npm:28.8.3" + version: 28.9.0 + resolution: "eslint-plugin-jest@npm:28.9.0" dependencies: "@typescript-eslint/utils": ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependencies: @@ -25352,13 +24989,13 @@ __metadata: optional: true jest: optional: true - checksum: e371fcbe2127a403824b6c23b66f6b2e2cc54074c3c70a9965d48bdcdfb461670965a7d7cdddab68f09e703d3a09a281d05591b1cb4315f5246d27fd8baa84ac + checksum: 90863fab5f3f2f033d98042b13769dc82504c489506872ae9926a1d2b6bcc25c5dc41105e28643f5eb81943aff1aa1cd4d44ada5c1add0a43f1c7a619adbc3d2 languageName: node linkType: hard "eslint-plugin-jsx-a11y@npm:^6.5.1": - version: 6.10.1 - resolution: "eslint-plugin-jsx-a11y@npm:6.10.1" + version: 6.10.2 + resolution: "eslint-plugin-jsx-a11y@npm:6.10.2" dependencies: aria-query: ^5.3.2 array-includes: ^3.1.8 @@ -25368,7 +25005,6 @@ __metadata: axobject-query: ^4.1.0 damerau-levenshtein: ^1.0.8 emoji-regex: ^9.2.2 - es-iterator-helpers: ^1.1.0 hasown: ^2.0.2 jsx-ast-utils: ^3.3.5 language-tags: ^1.0.9 @@ -25378,7 +25014,7 @@ __metadata: string.prototype.includes: ^2.0.1 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - checksum: 6399ed556306edd454c3d835fee475e6a286aa44c8fb95b4e9245717ff26f7a251f38d75e194293d78fdbc8f2fdbf223573ac2c82dc1e2db3d5d6c137632b6ec + checksum: 0cc861398fa26ada61ed5703eef5b335495fcb96253263dcd5e399488ff019a2636372021baacc040e3560d1a34bfcd5d5ad9f1754f44cd0509c956f7df94050 languageName: node linkType: hard @@ -25392,15 +25028,15 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.28.0": - version: 7.37.1 - resolution: "eslint-plugin-react@npm:7.37.1" + version: 7.37.2 + resolution: "eslint-plugin-react@npm:7.37.2" dependencies: array-includes: ^3.1.8 array.prototype.findlast: ^1.2.5 array.prototype.flatmap: ^1.3.2 array.prototype.tosorted: ^1.1.4 doctrine: ^2.1.0 - es-iterator-helpers: ^1.0.19 + es-iterator-helpers: ^1.1.0 estraverse: ^5.3.0 hasown: ^2.0.2 jsx-ast-utils: ^2.4.1 || ^3.0.0 @@ -25415,7 +25051,7 @@ __metadata: string.prototype.repeat: ^1.0.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: 22d1bdf0dd4cdbf8c57ce563c58d43c5f5e1da0b08d27d0a69d7126d9e8afcb74a5befae97dab4019b4c6029ae617b6a0af1709cb9e0439d5757b01b392d2ca7 + checksum: 7f5203afee7fbe3702b27fdd2b9a3c0ccbbb47d0672f58311b9d8a08dea819c9da4a87c15e8bd508f2562f327a9d29ee8bd9cd189bf758d8dc903de5648b0bfa languageName: node linkType: hard @@ -25717,7 +25353,7 @@ __metadata: languageName: node linkType: hard -"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.1, eventemitter3@npm:^4.0.4": +"eventemitter3@npm:^4.0.0, eventemitter3@npm:^4.0.4": version: 4.0.7 resolution: "eventemitter3@npm:4.0.7" checksum: 1875311c42fcfe9c707b2712c32664a245629b42bb0a5a84439762dd0fd637fc54d078155ea83c2af9e0323c9ac13687e03cfba79b03af9f40c89b4960099374 @@ -25836,8 +25472,8 @@ __metadata: linkType: hard "express-openapi-validator@npm:^5.0.4": - version: 5.3.7 - resolution: "express-openapi-validator@npm:5.3.7" + version: 5.3.9 + resolution: "express-openapi-validator@npm:5.3.9" dependencies: "@apidevtools/json-schema-ref-parser": ^11.7.0 "@types/multer": ^1.4.12 @@ -25854,7 +25490,7 @@ __metadata: path-to-regexp: ^8.1.0 peerDependencies: express: "*" - checksum: 28be61484f68bbad3f2ec8304bf310e1c962ceefd21b9feea5e52187670715257a30e1d87173c773e36b1a182a10760ca16987f16649bf0b91f4bcca0b58cfbd + checksum: 0469b383b769f070dfad9c9148b18857c5aaa9aa14c596e1ada155dac63e1c355e455d42f3c81af62c4aefd3db4ad8b892d34a432e170e4eb7af73d7dbd2f644 languageName: node linkType: hard @@ -25969,15 +25605,6 @@ __metadata: languageName: node linkType: hard -"expression-eval@npm:^5.0.0": - version: 5.0.1 - resolution: "expression-eval@npm:5.0.1" - dependencies: - jsep: ^0.3.0 - checksum: 1318726337fa5ef980a565cd02800aadb3e0b09a01378dd5a33d6525a6a726667d931a5851de9c792a6043857409d06d6ce48d62dbf61636ba9eba46fc8f6dde - languageName: node - linkType: hard - "extend@npm:3.0.2, extend@npm:^3.0.0, extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -26059,13 +25686,6 @@ __metadata: languageName: node linkType: hard -"fast-equals@npm:^5.0.1": - version: 5.0.1 - resolution: "fast-equals@npm:5.0.1" - checksum: fbb3b6a74f3a0fa930afac151ff7d01639159b4fddd2678b5d50708e0ba38e9ec14602222d10dadb8398187342692c04fbef5a62b1cfcc7942fe03e754e064bc - languageName: node - linkType: hard - "fast-fifo@npm:^1.2.0, fast-fifo@npm:^1.3.2": version: 1.3.2 resolution: "fast-fifo@npm:1.3.2" @@ -26277,16 +25897,6 @@ __metadata: languageName: node linkType: hard -"fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": - version: 3.2.0 - resolution: "fetch-blob@npm:3.2.0" - dependencies: - node-domexception: ^1.0.0 - web-streams-polyfill: ^3.0.3 - checksum: f19bc28a2a0b9626e69fd7cf3a05798706db7f6c7548da657cbf5026a570945f5eeaedff52007ea35c8bcd3d237c58a20bf1543bc568ab2422411d762dd3d5bf - languageName: node - linkType: hard - "fetch-retry@npm:^5.0.2": version: 5.0.6 resolution: "fetch-retry@npm:5.0.6" @@ -26337,6 +25947,15 @@ __metadata: languageName: node linkType: hard +"file-selector@npm:^2.1.0": + version: 2.1.0 + resolution: "file-selector@npm:2.1.0" + dependencies: + tslib: ^2.7.0 + checksum: f15203e72483ba263424540ca6ad672973f3ede03e73ff16de75325e4bbf93594ad0ea63e464e784e3b4f72762ed07aab31fbcd6cc571141a3d5860e436d584c + languageName: node + linkType: hard + "file-stream-rotator@npm:^0.6.1": version: 0.6.1 resolution: "file-stream-rotator@npm:0.6.1" @@ -26609,9 +26228,9 @@ __metadata: linkType: hard "flow-parser@npm:0.*": - version: 0.250.0 - resolution: "flow-parser@npm:0.250.0" - checksum: db4b5a6056e9853d83e2743621fa32311aa6af9633ac4eb083a51bcf4bc62dbac7df29dd9514006b4137c0a339d572d17ec6feeaa443782ed40aee17f8124d4a + version: 0.253.0 + resolution: "flow-parser@npm:0.253.0" + checksum: aec28d36de6847d1f110c6106aab4c18533cec2f9c4f18f93a9f879a61b725c8fb91f2a409b3533690aaa4915d98a6b134311cd83ee9b835b5c9dd4e26b3ac10 languageName: node linkType: hard @@ -26878,15 +26497,6 @@ __metadata: languageName: node linkType: hard -"formdata-polyfill@npm:^4.0.10": - version: 4.0.10 - resolution: "formdata-polyfill@npm:4.0.10" - dependencies: - fetch-blob: ^3.1.2 - checksum: 82a34df292afadd82b43d4a740ce387bc08541e0a534358425193017bf9fb3567875dc5f69564984b1da979979b70703aa73dee715a17b6c229752ae736dd9db - languageName: node - linkType: hard - "formidable@npm:^2.1.2": version: 2.1.2 resolution: "formidable@npm:2.1.2" @@ -26914,8 +26524,8 @@ __metadata: linkType: hard "framer-motion@npm:^11.3.28": - version: 11.11.9 - resolution: "framer-motion@npm:11.11.9" + version: 11.11.17 + resolution: "framer-motion@npm:11.11.17" dependencies: tslib: ^2.4.0 peerDependencies: @@ -26929,7 +26539,7 @@ __metadata: optional: true react-dom: optional: true - checksum: d2918aa3de0746cadb60af7f940c72d17b0d2869b66992f47d6a187abc3599cbf6520188ea8131c9fd7fe65cd87783fbfce3d2115f833b1488a8d73509e5789a + checksum: 5d81b814938132e45472088e45a28d9187267817387729b89c048c1789bae5da9ed9a7a484d4e0ad7b5dfb1a39ebb8fade3cbcd55ded86b218195759a4417727 languageName: node linkType: hard @@ -27598,8 +27208,8 @@ __metadata: linkType: hard "google-auth-library@npm:^9.0.0, google-auth-library@npm:^9.3.0, google-auth-library@npm:^9.6.3": - version: 9.14.2 - resolution: "google-auth-library@npm:9.14.2" + version: 9.15.0 + resolution: "google-auth-library@npm:9.15.0" dependencies: base64-js: ^1.3.0 ecdsa-sig-formatter: ^1.0.11 @@ -27607,7 +27217,7 @@ __metadata: gcp-metadata: ^6.1.0 gtoken: ^7.0.0 jws: ^4.0.0 - checksum: 64b3a6c1b1b14f1c891dbcfb850bc4db63dc8fae17e70197636244d00c83b539ac3da8688aae0bd1f09c884fc538d203945ae751edbabf666b41066385d86e30 + checksum: 7ff63ff755ce43601a1780cfbe6d8b523792bfd2b653a27180e41735b9f0ba5689668eb8b079c915300041e412ec00b7635b5c26e0f2139fecacb346b6f9f12f languageName: node linkType: hard @@ -27738,11 +27348,11 @@ __metadata: linkType: hard "graphql-http@npm:^1.22.0": - version: 1.22.1 - resolution: "graphql-http@npm:1.22.1" + version: 1.22.2 + resolution: "graphql-http@npm:1.22.2" peerDependencies: graphql: ">=0.11 <=16" - checksum: b514ed17837c7622834ab306d886586296cc504abb1055223cb50ec145804ba4769a9d0b523504d79e955cc3e9469cf29f8153353d8715a94ee0c98fa5c54a3b + checksum: 980897a6b47717865cf9946ae13389a9cce816f3bbecf6da6a301d839444cd09358a5ca71d7751420fcfccd994eb88baa0e3fddd9fb06d23ee6f4021e6ff4b81 languageName: node linkType: hard @@ -28256,8 +27866,8 @@ __metadata: linkType: hard "html-webpack-plugin@npm:^5.3.1, html-webpack-plugin@npm:^5.5.0": - version: 5.6.2 - resolution: "html-webpack-plugin@npm:5.6.2" + version: 5.6.3 + resolution: "html-webpack-plugin@npm:5.6.3" dependencies: "@types/html-minifier-terser": ^6.0.0 html-minifier-terser: ^6.0.2 @@ -28272,7 +27882,7 @@ __metadata: optional: true webpack: optional: true - checksum: c579ce8b34ef1cd903829402aa6a62a6c92fe1cdfcd81d17ebc87f39eaab1381438b9d805a63457b255238db8f2865d71f48cd382375aa28718881e3ab2d2f9a + checksum: 59e7d971b0cfd9ba34c7acaa3c161e43c62596474dd8cd35d7b690498ff5891f21296de0aa1d2e7810348caa657e938461267155dda47913b5eeca7124406270 languageName: node linkType: hard @@ -28400,7 +28010,7 @@ __metadata: languageName: node linkType: hard -"http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.3, http-proxy-middleware@npm:^2.0.6": +"http-proxy-middleware@npm:^2.0.0, http-proxy-middleware@npm:^2.0.3": version: 2.0.7 resolution: "http-proxy-middleware@npm:2.0.7" dependencies: @@ -29591,9 +29201,9 @@ __metadata: linkType: hard "isbinaryfile@npm:^5.0.0": - version: 5.0.3 - resolution: "isbinaryfile@npm:5.0.3" - checksum: 950820d813a664a5c17dcb52e9a10454da4f51918369388be428de47a33f51de38637df2cff91a95f212551170c8045c2156c99bab23a042ab3ef1a775bee1b9 + version: 5.0.4 + resolution: "isbinaryfile@npm:5.0.4" + checksum: d88982a889369d83a5937b4b4d2288ed3b3dbbcee8fc74db40058f3c089a2c7beb9e5305b7177e82d87ff38fb62be8d60960f7a2d669ca08240ef31c1435b884 languageName: node linkType: hard @@ -29669,6 +29279,13 @@ __metadata: languageName: node linkType: hard +"isomorphic-rslog@npm:0.0.5": + version: 0.0.5 + resolution: "isomorphic-rslog@npm:0.0.5" + checksum: ba3d8a5ca4691ae4e6ef8a50c404b94658618c87bd2ac7618946f8ea067489ee4a16a152b74afe24bcbdfe975e3b3a63e3c5149bf2a929aa781bdd7eb3f1370f + languageName: node + linkType: hard + "isomorphic-ws@npm:5.0.0, isomorphic-ws@npm:^5.0.0": version: 5.0.0 resolution: "isomorphic-ws@npm:5.0.0" @@ -30348,11 +29965,11 @@ __metadata: linkType: hard "jiti@npm:^2.0.0": - version: 2.3.3 - resolution: "jiti@npm:2.3.3" + version: 2.4.0 + resolution: "jiti@npm:2.4.0" bin: jiti: lib/jiti-cli.mjs - checksum: f1a2b87d937569c966f00a8c9153c8f3e02445b31e034fdaed1b9639a4ecfae3c4df24c7644d5b4764c566f8dee09132a5b55cd049b48e618024accd31d8e6b3 + checksum: b7d8c441214e48f6c1be2952a83f40e2b1eb6e94fe81b1fd89370d11a7e322c61eb3fbd9a8d47029e14338414091ebbb575e1a92c645ab30fea6240c5c4957c7 languageName: node linkType: hard @@ -30383,7 +30000,7 @@ __metadata: languageName: node linkType: hard -"jose@npm:^5.0.0": +"jose@npm:^5.0.0, jose@npm:^5.9.6": version: 5.9.6 resolution: "jose@npm:5.9.6" checksum: 4b536da0201858ed4c4582e8bb479081f11e0c63dd0f5e473adde16fc539785e1f2f0409bc1fc7cbbb5b68026776c960b4952da3a06f6fdfff0b9764c9127ae0 @@ -30404,13 +30021,6 @@ __metadata: languageName: node linkType: hard -"js-cookie@npm:3.0.1": - version: 3.0.1 - resolution: "js-cookie@npm:3.0.1" - checksum: bb48de67e2a6bd1ae3dfd6b2d5a167c33dd0c5a37e909206161eb0358c98f17cb55acd55827a58e9eea3630d89444e7479f7938ef4420dda443218b8c434a4c3 - languageName: node - linkType: hard - "js-cookie@npm:^2.2.1": version: 2.2.1 resolution: "js-cookie@npm:2.2.1" @@ -30642,10 +30252,10 @@ __metadata: languageName: node linkType: hard -"jsep@npm:^1.1.2, jsep@npm:^1.2.0, jsep@npm:^1.3.9": - version: 1.3.9 - resolution: "jsep@npm:1.3.9" - checksum: d1f3e2cc00209f67a989b73c2a89d2ccbea908d950ec959e2448c6449b134c6367b47eef4e1292767cb490f0b5b72e7309080b93ee4c7398684df2514dbd33a3 +"jsep@npm:^1.2.0, jsep@npm:^1.3.6, jsep@npm:^1.3.9": + version: 1.4.0 + resolution: "jsep@npm:1.4.0" + checksum: 8e7af5ecb91483b227092b87a3e85b5df3e848dbe6f201b19efcb18047567530d21dfeecb0978e09d1f66554fcfaed84176819eeacdfc86f61dc05c40c18f824 languageName: node linkType: hard @@ -30855,14 +30465,7 @@ __metadata: languageName: node linkType: hard -"jsonpath-plus@npm:7.1.0": - version: 7.1.0 - resolution: "jsonpath-plus@npm:7.1.0" - checksum: a4005dc860c6b7e339229842537ceb6eb839d87a3447f989792b9c64f2564bbbd40663515f9481fb5a1b6cb0f988afba5b0b150e0285c463b794a45ed1aaf555 - languageName: node - linkType: hard - -"jsonpath-plus@npm:^10.0.0": +"jsonpath-plus@npm:10.1.0, jsonpath-plus@npm:^10.0.0, jsonpath-plus@npm:^6.0.1 || ^10.1.0": version: 10.1.0 resolution: "jsonpath-plus@npm:10.1.0" dependencies: @@ -30876,13 +30479,6 @@ __metadata: languageName: node linkType: hard -"jsonpath-plus@npm:^6.0.1": - version: 6.0.1 - resolution: "jsonpath-plus@npm:6.0.1" - checksum: bddec34b742249c5b38077dfcd8eb479fab4e077943253017326503ce4f527ef66938288c728712fd923907493d6eaba69a43015dc3dd9fdf48d89028ae7f466 - languageName: node - linkType: hard - "jsonpath-plus@npm:^7.2.0": version: 7.2.0 resolution: "jsonpath-plus@npm:7.2.0" @@ -31190,11 +30786,11 @@ __metadata: linkType: hard "keyv@npm:*": - version: 5.1.2 - resolution: "keyv@npm:5.1.2" + version: 5.2.1 + resolution: "keyv@npm:5.2.1" dependencies: "@keyv/serialize": "*" - checksum: 959978b3574e704edf3772f9b447dc779c24a53c09c0297912ac55595013d8b6cbfa529f2019b3952deeadafe82257cc7fac2fdc0077d242553a74015a36d198 + checksum: 92f02ce8a61d3f832c72bc305a0a3408ab3ba322702175c8f23ddb7b317cdef6525fa084135ca4218f40afe17397f2b5b0f38fb1f0758fb47e8cd5d2699963d2 languageName: node linkType: hard @@ -31315,7 +30911,7 @@ __metadata: languageName: node linkType: hard -"kubernetes-models@npm:^4.1.0, kubernetes-models@npm:^4.3.1": +"kubernetes-models@npm:^4.3.1": version: 4.4.0 resolution: "kubernetes-models@npm:4.4.0" dependencies: @@ -31335,8 +30931,8 @@ __metadata: linkType: hard "langsmith@npm:^0.1.56-rc.1": - version: 0.1.66 - resolution: "langsmith@npm:0.1.66" + version: 0.1.68 + resolution: "langsmith@npm:0.1.68" dependencies: "@types/uuid": ^10.0.0 commander: ^10.0.1 @@ -31349,7 +30945,7 @@ __metadata: peerDependenciesMeta: openai: optional: true - checksum: 9c0cb365e2278a255dc0d045402fbec67cf3a6314e7858b398a267b1e97d3f24e5b4ba5286c80a3fe6c13443ac1fca8fd1555f3a0990b74b7c6be8c608581394 + checksum: b5422f9d52d22992b928089704233d7c67581744058f141f78dc9e7e0b789bf0b7cd7e0a964a23d7777d9d5bc55e3a0f2f86f760d6b23844817b2ad80367d704 languageName: node linkType: hard @@ -31905,9 +31501,9 @@ __metadata: languageName: node linkType: hard -"logform@npm:^2.3.2, logform@npm:^2.4.0, logform@npm:^2.6.0, logform@npm:^2.6.1": - version: 2.6.1 - resolution: "logform@npm:2.6.1" +"logform@npm:^2.3.2, logform@npm:^2.4.0, logform@npm:^2.7.0": + version: 2.7.0 + resolution: "logform@npm:2.7.0" dependencies: "@colors/colors": 1.6.0 "@types/triple-beam": ^1.3.2 @@ -31915,7 +31511,7 @@ __metadata: ms: ^2.1.1 safe-stable-stringify: ^2.3.1 triple-beam: ^1.3.0 - checksum: 0c6b95fa8350ccc33c7c33d77de2a9920205399706fc1b125151c857b61eb90873f4670d9e0e58e58c165b68a363206ae670d6da8b714527c838da3c84449605 + checksum: a202d10897254735ead75a640f889998f9b91a0c36be9cac3f5471fa740d36bc2fbbcf9d113dcdadec4ddf09e257393ff800e6aab80019bdc7456363d6ea21f6 languageName: node linkType: hard @@ -31984,7 +31580,14 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^10.0.0, lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": +"lru-cache@npm:@wolfy1339/lru-cache@^11.0.2-patch.1": + version: 11.0.2-patch.1 + resolution: "@wolfy1339/lru-cache@npm:11.0.2-patch.1" + checksum: 60cc2839abbae0fa50152fde143da5ac1141773cefb3505602956074dfa358ec87e107987cad7fd2292768663855497160a2c1e449d7f4e8b4684fb08f89dc25 + languageName: node + linkType: hard + +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": version: 10.4.3 resolution: "lru-cache@npm:10.4.3" checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a @@ -32047,20 +31650,13 @@ __metadata: languageName: node linkType: hard -"luxon@npm:^3.0.0, luxon@npm:^3.2.1": +"luxon@npm:^3.0.0, luxon@npm:^3.2.1, luxon@npm:~3.5.0": version: 3.5.0 resolution: "luxon@npm:3.5.0" checksum: f290fe5788c8e51e748744f05092160d4be12150dca70f9fadc0d233e53d60ce86acd82e7d909a114730a136a77e56f0d3ebac6141bbb82fd310969a4704825b languageName: node linkType: hard -"luxon@npm:~3.4.0": - version: 3.4.4 - resolution: "luxon@npm:3.4.4" - checksum: 36c1f99c4796ee4bfddf7dc94fa87815add43ebc44c8934c924946260a58512f0fd2743a629302885df7f35ccbd2d13f178c15df046d0e3b6eb71db178f1c60c - languageName: node - linkType: hard - "lz-string@npm:^1.5.0": version: 1.5.0 resolution: "lz-string@npm:1.5.0" @@ -32214,11 +31810,11 @@ __metadata: linkType: hard "markdown-to-jsx@npm:^7.1.8, markdown-to-jsx@npm:^7.4.1": - version: 7.5.0 - resolution: "markdown-to-jsx@npm:7.5.0" + version: 7.6.2 + resolution: "markdown-to-jsx@npm:7.6.2" peerDependencies: react: ">= 0.14.0" - checksum: c9c6f1bfad5f2d9b1d3476eb0313ae3dffd0a9f14011c74efdd7c664fd32ee1842ef48abb16a496046f90361af49aa80a827e9d9c0bc04824a1986fdeb4d1852 + checksum: 0ae24df87678c880d97d886461eca3d3cd69a2f418c04535bbabc48e9a357c6842e87e9af7d11fbeb0b86682a42126c6c568fe7ae5dae7a8d1f347932a22d344 languageName: node linkType: hard @@ -32350,8 +31946,8 @@ __metadata: linkType: hard "mdast-util-from-markdown@npm:^2.0.0": - version: 2.0.1 - resolution: "mdast-util-from-markdown@npm:2.0.1" + version: 2.0.2 + resolution: "mdast-util-from-markdown@npm:2.0.2" dependencies: "@types/mdast": ^4.0.0 "@types/unist": ^3.0.0 @@ -32365,7 +31961,7 @@ __metadata: micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 unist-util-stringify-position: ^4.0.0 - checksum: 2e50be71272a1503558c599cd5766cf2743935a021f82e32bc2ae5da44f6c7dcabb9da3a6eee76ede0ec8ad2b122d1192f4fe89890aac90c76463f049f8a835d + checksum: 1ad19f48b30ac6e0cb756070c210c78ad93c26876edfb3f75127783bc6df8b9402016d8f3e9964f3d1d5430503138ec65c145e869438727e1aa7f3cebf228fba languageName: node linkType: hard @@ -32634,18 +32230,19 @@ __metadata: linkType: hard "mdast-util-to-markdown@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-to-markdown@npm:2.1.0" + version: 2.1.2 + resolution: "mdast-util-to-markdown@npm:2.1.2" dependencies: "@types/mdast": ^4.0.0 "@types/unist": ^3.0.0 longest-streak: ^3.0.0 mdast-util-phrasing: ^4.0.0 mdast-util-to-string: ^4.0.0 + micromark-util-classify-character: ^2.0.0 micromark-util-decode-string: ^2.0.0 unist-util-visit: ^5.0.0 zwitch: ^2.0.0 - checksum: 3a2cf3957e23b34e2e092e6e76ae72ee0b8745955bd811baba6814cf3a3d916c3fd52264b4b58f3bb3d512a428f84a1e998b6fc7e28434e388a9ae8fb6a9c173 + checksum: 288d152bd50c00632e6e01c610bb904a220d1e226c8086c40627877959746f83ab0b872f4150cb7d910198953b1bf756e384ac3fee3e7b0ddb4517f9084c5803 languageName: node linkType: hard @@ -32846,8 +32443,8 @@ __metadata: linkType: hard "micromark-core-commonmark@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-core-commonmark@npm:2.0.1" + version: 2.0.2 + resolution: "micromark-core-commonmark@npm:2.0.2" dependencies: decode-named-character-reference: ^1.0.0 devlop: ^1.0.0 @@ -32865,7 +32462,7 @@ __metadata: micromark-util-subtokenize: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 6a9891cc883a531e090dc8dab6669945f3df9448e84216a8f2a91f9258281e6abea5ae3940fde2bd77a57dc3e0d67f2add6762aed63a378f37b09eaf7e7426c4 + checksum: e49d78429baf72533a02d06ae83e5a24d4d547bc832173547ffbae93c0960a7dbf0d8896058301498fa4297f280070a5a66891e0e6160040d6c5ef9bc5d9cd51 languageName: node linkType: hard @@ -33067,13 +32664,13 @@ __metadata: linkType: hard "micromark-factory-destination@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-destination@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-destination@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: d36e65ed1c072ff4148b016783148ba7c68a078991154625723e24bda3945160268fb91079fb28618e1613c2b6e70390a8ddc544c45410288aa27b413593071a + checksum: 9c4baa9ca2ed43c061bbf40ddd3d85154c2a0f1f485de9dea41d7dd2ad994ebb02034a003b2c1dbe228ba83a0576d591f0e90e0bf978713f84ee7d7f3aa98320 languageName: node linkType: hard @@ -33090,14 +32687,14 @@ __metadata: linkType: hard "micromark-factory-label@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-label@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-label@npm:2.0.1" dependencies: devlop: ^1.0.0 micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: c021dbd0ed367610d35f2bae21209bc804d1a6d1286ffce458fd6a717f4d7fe581a7cba7d5c2d7a63757c44eb927c80d6a571d6ea7969fae1b48ab6461d109c4 + checksum: bd03f5a75f27cdbf03b894ddc5c4480fc0763061fecf9eb927d6429233c930394f223969a99472df142d570c831236134de3dc23245d23d9f046f9d0b623b5c2 languageName: node linkType: hard @@ -33112,12 +32709,12 @@ __metadata: linkType: hard "micromark-factory-space@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-space@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-space@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 4ffdcdc2f759887bbb356500cb460b3915ecddcb5d85c3618d7df68ad05d13ed02b1153ee1845677b7d8126df8f388288b84fcf0d943bd9c92bcc71cd7222e37 + checksum: 1bd68a017c1a66f4787506660c1e1c5019169aac3b1cb075d49ac5e360e0b2065e984d4e1d6e9e52a9d44000f2fa1c98e66a743d7aae78b4b05616bf3242ed71 languageName: node linkType: hard @@ -33134,14 +32731,14 @@ __metadata: linkType: hard "micromark-factory-title@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-title@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-title@npm:2.0.1" dependencies: micromark-factory-space: ^2.0.0 micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 39e1ac23af3554e6e652e56065579bc7faf21ade7b8704b29c175871b4152b7109b790bb3cae0f7e088381139c6bac9553b8400772c3d322e4fa635f813a3578 + checksum: b4d2e4850a8ba0dff25ce54e55a3eb0d43dda88a16293f53953153288f9d84bcdfa8ca4606b2cfbb4f132ea79587bbb478a73092a349f893f5264fbcdbce2ee1 languageName: node linkType: hard @@ -33158,14 +32755,14 @@ __metadata: linkType: hard "micromark-factory-whitespace@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-whitespace@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-whitespace@npm:2.0.1" dependencies: micromark-factory-space: ^2.0.0 micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 9587c2546d1a58b4d5472b42adf05463f6212d0449455285662d63cd8eaed89c6b159ac82713fcee5f9dd88628c24307d9533cccd8971a2f3f4d48702f8f850a + checksum: 67b3944d012a42fee9e10e99178254a04d48af762b54c10a50fcab988688799993efb038daf9f5dbc04001a97b9c1b673fc6f00e6a56997877ab25449f0c8650 languageName: node linkType: hard @@ -33180,12 +32777,12 @@ __metadata: linkType: hard "micromark-util-character@npm:^2.0.0": - version: 2.1.0 - resolution: "micromark-util-character@npm:2.1.0" + version: 2.1.1 + resolution: "micromark-util-character@npm:2.1.1" dependencies: micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 36ee910f84077cf16626fa618cfe46ac25956b3242e3166b8e8e98c5a8c524af7e5bf3d70822264b1fd2d297a36104a7eb7e3462c19c28353eaca7b0d8717594 + checksum: e9e409efe4f2596acd44587e8591b722bfc041c1577e8fe0d9c007a4776fb800f9b3637a22862ad2ba9489f4bdf72bb547fce5767dbbfe0a5e6760e2a21c6495 languageName: node linkType: hard @@ -33199,11 +32796,11 @@ __metadata: linkType: hard "micromark-util-chunked@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-chunked@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-chunked@npm:2.0.1" dependencies: micromark-util-symbol: ^2.0.0 - checksum: 324f95cccdae061332a8241936eaba6ef0782a1e355bac5c607ad2564fd3744929be7dc81651315a2921535747a33243e6a5606bcb64b7a56d49b6d74ea1a3d4 + checksum: f8cb2a67bcefe4bd2846d838c97b777101f0043b9f1de4f69baf3e26bb1f9885948444e3c3aec66db7595cad8173bd4567a000eb933576c233d54631f6323fe4 languageName: node linkType: hard @@ -33219,13 +32816,13 @@ __metadata: linkType: hard "micromark-util-classify-character@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-classify-character@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-classify-character@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 086e52904deffebb793fb1c08c94aabb8901f76958142dfc3a6282890ebaa983b285e69bd602b9d507f1b758ed38e75a994d2ad9fbbefa7de2584f67a16af405 + checksum: 4d8bbe3a6dbf69ac0fc43516866b5bab019fe3f4568edc525d4feaaaf78423fa54e6b6732b5bccbeed924455279a3758ffc9556954aafb903982598a95a02704 languageName: node linkType: hard @@ -33240,12 +32837,12 @@ __metadata: linkType: hard "micromark-util-combine-extensions@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-combine-extensions@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-combine-extensions@npm:2.0.1" dependencies: micromark-util-chunked: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 107c47700343f365b4ed81551e18bc3458b573c500e56ac052b2490bd548adc475216e41d2271633a8867fac66fc22ba3e0a2d74a31ed79b9870ca947eb4e3ba + checksum: 5d22fb9ee37e8143adfe128a72b50fa09568c2cc553b3c76160486c96dbbb298c5802a177a10a215144a604b381796071b5d35be1f2c2b2ee17995eda92f0c8e languageName: node linkType: hard @@ -33259,11 +32856,11 @@ __metadata: linkType: hard "micromark-util-decode-numeric-character-reference@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" + version: 2.0.2 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2" dependencies: micromark-util-symbol: ^2.0.0 - checksum: 9512507722efd2033a9f08715eeef787fbfe27e23edf55db21423d46d82ab46f76c89b4f960be3f5e50a2d388d89658afc0647989cf256d051e9ea01277a1adb + checksum: ee11c8bde51e250e302050474c4a2adca094bca05c69f6cdd241af12df285c48c88d19ee6e022b9728281c280be16328904adca994605680c43af56019f4b0b6 languageName: node linkType: hard @@ -33280,14 +32877,14 @@ __metadata: linkType: hard "micromark-util-decode-string@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-decode-string@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-decode-string@npm:2.0.1" dependencies: decode-named-character-reference: ^1.0.0 micromark-util-character: ^2.0.0 micromark-util-decode-numeric-character-reference: ^2.0.0 micromark-util-symbol: ^2.0.0 - checksum: a75daf32a4a6b549e9f19b4d833ebfeb09a32a9a1f9ce50f35dec6b6a3e4f9f121f49024ba7f9c91c55ebe792f7c7a332fc9604795181b6a612637df0df5b959 + checksum: e9546ae53f9b5a4f9aa6aaf3e750087100d3429485ca80dbacec99ff2bb15a406fa7d93784a0fc2fe05ad7296b9295e75160ef71faec9e90110b7be2ae66241a languageName: node linkType: hard @@ -33299,9 +32896,9 @@ __metadata: linkType: hard "micromark-util-encode@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-encode@npm:2.0.0" - checksum: 853a3f33fce72aaf4ffa60b7f2b6fcfca40b270b3466e1b96561b02185d2bd8c01dd7948bc31a24ac014f4cc854e545ca9a8e9cf7ea46262f9d24c9e88551c66 + version: 2.0.1 + resolution: "micromark-util-encode@npm:2.0.1" + checksum: be890b98e78dd0cdd953a313f4148c4692cc2fb05533e56fef5f421287d3c08feee38ca679f318e740530791fc251bfe8c80efa926fcceb4419b269c9343d226 languageName: node linkType: hard @@ -33313,9 +32910,9 @@ __metadata: linkType: hard "micromark-util-html-tag-name@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-html-tag-name@npm:2.0.0" - checksum: d786d4486f93eb0ac5b628779809ca97c5dc60f3c9fc03eb565809831db181cf8cb7f05f9ac76852f3eb35461af0f89fa407b46f3a03f4f97a96754d8dc540d8 + version: 2.0.1 + resolution: "micromark-util-html-tag-name@npm:2.0.1" + checksum: dea365f5ad28ad74ff29fcb581f7b74fc1f80271c5141b3b2bc91c454cbb6dfca753f28ae03730d657874fcbd89d0494d0e3965dfdca06d9855f467c576afa9d languageName: node linkType: hard @@ -33329,11 +32926,11 @@ __metadata: linkType: hard "micromark-util-normalize-identifier@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-normalize-identifier@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-normalize-identifier@npm:2.0.1" dependencies: micromark-util-symbol: ^2.0.0 - checksum: b36da2d3fd102053dadd953ce5c558328df12a63a8ac0e5aad13d4dda8e43b6a5d4a661baafe0a1cd8a260bead4b4a8e6e0e74193dd651e8484225bd4f4e68aa + checksum: 1eb9a289d7da067323df9fdc78bfa90ca3207ad8fd893ca02f3133e973adcb3743b233393d23d95c84ccaf5d220ae7f5a28402a644f135dcd4b8cfa60a7b5f84 languageName: node linkType: hard @@ -33347,11 +32944,11 @@ __metadata: linkType: hard "micromark-util-resolve-all@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-resolve-all@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-resolve-all@npm:2.0.1" dependencies: micromark-util-types: ^2.0.0 - checksum: 31fe703b85572cb3f598ebe32750e59516925c7ff1f66cfe6afaebe0771a395a9eaa770787f2523d3c46082ea80e6c14f83643303740b3d650af7c96ebd30ccc + checksum: 9275f3ddb6c26f254dd2158e66215d050454b279707a7d9ce5a3cd0eba23201021cedcb78ae1a746c1b23227dcc418ee40dd074ade195359506797a5493550cc languageName: node linkType: hard @@ -33367,13 +32964,13 @@ __metadata: linkType: hard "micromark-util-sanitize-uri@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-sanitize-uri@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-sanitize-uri@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-encode: ^2.0.0 micromark-util-symbol: ^2.0.0 - checksum: ea4c28bbffcf2430e9aff2d18554296789a8b0a1f54ac24020d1dde76624a7f93e8f2a83e88cd5a846b6d2c4287b71b1142d1b89fa7f1b0363a9b33711a141fe + checksum: d01517840c17de67aaa0b0f03bfe05fac8a41d99723cd8ce16c62f6810e99cd3695364a34c335485018e5e2c00e69031744630a1b85c6868aa2f2ca1b36daa2f languageName: node linkType: hard @@ -33390,14 +32987,14 @@ __metadata: linkType: hard "micromark-util-subtokenize@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-util-subtokenize@npm:2.0.1" + version: 2.0.2 + resolution: "micromark-util-subtokenize@npm:2.0.2" dependencies: devlop: ^1.0.0 micromark-util-chunked: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 5d338883ad8889c63f9b262b9cae0c02a42088201981d820ae7af7aa6d38fab6585b89fd4cf2206a46a7c4002e41ee6c70e1a3e0ceb3ad8b7adcffaf166b1511 + checksum: 8583cfdde2bf2d126f306d1c131284e646314d02a34babfdee33cd7c1db323059580e44f707f1d20797b7f4a68cb58b73ecb9a5db24fa5ff4aa89e436b08ec5f languageName: node linkType: hard @@ -33409,9 +33006,9 @@ __metadata: linkType: hard "micromark-util-symbol@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-symbol@npm:2.0.0" - checksum: fa4a05bff575d9fbf0ad96a1013003e3bb6087ed6b34b609a141b6c0d2137b57df594aca409a95f4c5fda199f227b56a7d8b1f82cea0768df161d8a3a3660764 + version: 2.0.1 + resolution: "micromark-util-symbol@npm:2.0.1" + checksum: fb7346950550bc85a55793dda94a8b3cb3abc068dbd7570d1162db7aee803411d06c0a5de4ae59cd945f46143bdeadd4bba02a02248fa0d18cc577babaa00044 languageName: node linkType: hard @@ -33423,9 +33020,9 @@ __metadata: linkType: hard "micromark-util-types@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-types@npm:2.0.0" - checksum: 819fef3ab5770c37893d2a60381fb2694396c8d22803b6e103c830c3a1bc1490363c2b0470bb2acaaddad776dfbc2fc1fcfde39cb63c4f54d95121611672e3d0 + version: 2.0.1 + resolution: "micromark-util-types@npm:2.0.1" + checksum: 630aac466628a360962f478f69421599c53ff8b3080765201b7be3b3a4be7f4c5b73632b9a6dd426b9e06035353c18acccee637d6c43d9b0bf1c31111bbb88a7 languageName: node linkType: hard @@ -33455,8 +33052,8 @@ __metadata: linkType: hard "micromark@npm:^4.0.0": - version: 4.0.0 - resolution: "micromark@npm:4.0.0" + version: 4.0.1 + resolution: "micromark@npm:4.0.1" dependencies: "@types/debug": ^4.0.0 debug: ^4.0.0 @@ -33475,7 +33072,7 @@ __metadata: micromark-util-subtokenize: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: b84ab5ab1a0b28c063c52e9c2c9d7d44b954507235c10c9492d66e0b38f7de24bf298f914a1fbdf109f2a57a88cf0412de217c84cfac5fd60e3e42a74dbac085 + checksum: 83ea084e8bf84442cc70c1207e916df11f0fde0ebd9daf978c895a1466c47a1dd4ed42b21b6e65bcc0d268fcbec24b4b1b28bc59c548940fe690929b8e0e7732 languageName: node linkType: hard @@ -33594,14 +33191,14 @@ __metadata: linkType: hard "mini-css-extract-plugin@npm:^2.4.2": - version: 2.9.1 - resolution: "mini-css-extract-plugin@npm:2.9.1" + version: 2.9.2 + resolution: "mini-css-extract-plugin@npm:2.9.2" dependencies: schema-utils: ^4.0.0 tapable: ^2.2.1 peerDependencies: webpack: ^5.0.0 - checksum: 036b0fbb207cf9a56e2f5f5dce5e35100cbd255e5b5a920a5357ec99215af16a77136020729b2d004a041d04ebb0a544b2f442535cbb982704dcd50297014c9e + checksum: 67a1f75359371a7776108999d472ae0942ccd904401e364e3a2c710d4b6fec61c4f53288594fcac35891f009e6df8825a00dfd3bfe4bcec0f862081d1f7cad50 languageName: node linkType: hard @@ -33839,14 +33436,14 @@ __metadata: linkType: hard "mlly@npm:^1.7.2": - version: 1.7.2 - resolution: "mlly@npm:1.7.2" + version: 1.7.3 + resolution: "mlly@npm:1.7.3" dependencies: - acorn: ^8.12.1 + acorn: ^8.14.0 pathe: ^1.1.2 - pkg-types: ^1.2.0 + pkg-types: ^1.2.1 ufo: ^1.5.4 - checksum: 66a92b0ac4f76cac22d2d6688338fece01f2ac4afd7816cd4224525c1f9032c452075730c54c3ef7558485455d704b7141060e517785c93b276b2faa3bb04199 + checksum: 60d309c7ce2ac162224a087fcd683a891260511f57011b2f436b54dfef146b8aae7473013958a58d5b6039f2a8692c32a2599c8390c5b307d1119ad0d917b414 languageName: node linkType: hard @@ -33906,8 +33503,8 @@ __metadata: linkType: hard "mockttp@npm:^3.13.0": - version: 3.15.3 - resolution: "mockttp@npm:3.15.3" + version: 3.15.4 + resolution: "mockttp@npm:3.15.4" dependencies: "@graphql-tools/schema": ^8.5.0 "@graphql-tools/utils": ^8.8.0 @@ -33953,7 +33550,7 @@ __metadata: ws: ^8.8.0 bin: mockttp: dist/admin/admin-bin.js - checksum: cce4001d771d7baccf966467e2b71fcd0505b0cc9c2c0f2492d58b298cfe47f558eb138dbaa9daad3e4c2d7f7f8fda208920a867e2b494d333644867df6842d8 + checksum: a143a05ea77e674f0c813d32e4ee7a3875fce94861852142d9cd83d4d446ea6bdb0e7754bc4939409fd6fe659d267e55daf9be8c97149c5b5d15cac8c9c5247d languageName: node linkType: hard @@ -34291,8 +33888,8 @@ __metadata: linkType: hard "mysql2@npm:^3.0.0": - version: 3.11.3 - resolution: "mysql2@npm:3.11.3" + version: 3.11.4 + resolution: "mysql2@npm:3.11.4" dependencies: aws-ssl-profiles: ^1.1.1 denque: ^2.1.0 @@ -34303,7 +33900,7 @@ __metadata: named-placeholders: ^1.1.3 seq-queue: ^0.0.5 sqlstring: ^2.3.2 - checksum: ae62b5b997da429a33f0762158db965d22daece0030e75ac8e822b0b342ad082fa5f1ead87d922d0ba93595e9d5491036916ef91457c762517f25f41afa6e2d9 + checksum: b4415028fad374b5bd5303968c28fc95feee60c1c946ef47f3581e0303c0e5978a306f44d6f665e3fdada5d6a0dd6c55515427a195700b90943d188f6db2f7ed languageName: node linkType: hard @@ -34431,7 +34028,7 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": +"negotiator@npm:^0.6.3, negotiator@npm:~0.6.4": version: 0.6.4 resolution: "negotiator@npm:0.6.4" checksum: 7ded10aa02a0707d1d12a9973fdb5954f98547ca7beb60e31cb3a403cc6e8f11138db7a3b0128425cf836fc85d145ec4ce983b2bdf83dca436af879c2d683510 @@ -34459,31 +34056,22 @@ __metadata: languageName: node linkType: hard -"new-date@npm:^1.0.3": - version: 1.0.3 - resolution: "new-date@npm:1.0.3" - dependencies: - "@segment/isodate": 1.0.3 - checksum: 5bc778542276f5d947b77654f10ad796c7502b184bd7f9b87749064a3f69a5cb5631acfceb234b433b3408cfe151de34ee484d5751d1fd87a74d6ec1e7e1ac9c - languageName: node - linkType: hard - -"nimma@npm:0.2.2": - version: 0.2.2 - resolution: "nimma@npm:0.2.2" +"nimma@npm:0.2.3": + version: 0.2.3 + resolution: "nimma@npm:0.2.3" dependencies: "@jsep-plugin/regex": ^1.0.1 "@jsep-plugin/ternary": ^1.0.2 astring: ^1.8.1 jsep: ^1.2.0 - jsonpath-plus: ^6.0.1 + jsonpath-plus: ^6.0.1 || ^10.1.0 lodash.topath: ^4.5.2 dependenciesMeta: jsonpath-plus: optional: true lodash.topath: optional: true - checksum: 09369253a962e6cdddd37c4994d414a5fa00abc955c4d91946140b45b57465749a9f05663a64812ad5ac70caacb7ca22a8fc7c8db002032d0768c83dbba7b3ad + checksum: cafa172f78fca7c0f8e7126659dd47f39bbe09d69b7ef60a7363b65d990934dd57e769afe1fac6a89affc30d47e25a725290025b13e452d3d23e7d3cdab972fb languageName: node linkType: hard @@ -34596,17 +34184,6 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^3.3.2": - version: 3.3.2 - resolution: "node-fetch@npm:3.3.2" - dependencies: - data-uri-to-buffer: ^4.0.0 - fetch-blob: ^3.1.4 - formdata-polyfill: ^4.0.10 - checksum: 06a04095a2ddf05b0830a0d5302699704d59bda3102894ea64c7b9d4c865ecdff2d90fd042df7f5bc40337266961cb6183dcc808ea4f3000d024f422b462da92 - languageName: node - linkType: hard - "node-forge@npm:^1, node-forge@npm:^1.2.1, node-forge@npm:^1.3.1": version: 1.3.1 resolution: "node-forge@npm:1.3.1" @@ -34902,6 +34479,13 @@ __metadata: languageName: node linkType: hard +"oauth4webapi@npm:^3.1.1": + version: 3.1.3 + resolution: "oauth4webapi@npm:3.1.3" + checksum: 9d6e94522f5dccf9193009a4af0f6ef7eed59bfd4dbf3551f80d95d03d1b792edc9b1a8a10dd6a33472dedad406b0b9e269393b6ee7e8126c69f05d79368e0ce + languageName: node + linkType: hard + "oauth@npm:0.10.x": version: 0.10.0 resolution: "oauth@npm:0.10.0" @@ -34916,13 +34500,6 @@ __metadata: languageName: node linkType: hard -"obj-case@npm:0.2.1": - version: 0.2.1 - resolution: "obj-case@npm:0.2.1" - checksum: 2726b29d054027c52c6ac1a18531c3f995fcc313047847c7f7357889a56cf07bd88bef459bd4645c139fa56f9432c282806e0f1c7ab444d6cbdb662e39073e36 - languageName: node - linkType: hard - "object-assign@npm:^4, object-assign@npm:^4.0.1, object-assign@npm:^4.1.0, object-assign@npm:^4.1.1": version: 4.1.1 resolution: "object-assign@npm:4.1.1" @@ -34944,10 +34521,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1": - version: 1.13.2 - resolution: "object-inspect@npm:1.13.2" - checksum: 9f850b3c045db60e0e97746e809ee4090d6ce62195af17dd1e9438ac761394a7d8ec4f7906559aea5424eaf61e35d3e53feded2ccd5f62fcc7d9670d3c8eb353 +"object-inspect@npm:^1.13.1, object-inspect@npm:^1.13.3": + version: 1.13.3 + resolution: "object-inspect@npm:1.13.3" + checksum: 8c962102117241e18ea403b84d2521f78291b774b03a29ee80a9863621d88265ffd11d0d7e435c4c2cea0dc2a2fbf8bbc92255737a05536590f2df2e8756f297 languageName: node linkType: hard @@ -35190,8 +34767,8 @@ __metadata: linkType: hard "openai@npm:^4.52.6, openai@npm:^4.57.3": - version: 4.68.1 - resolution: "openai@npm:4.68.1" + version: 4.72.0 + resolution: "openai@npm:4.72.0" dependencies: "@types/node": ^18.11.18 "@types/node-fetch": ^2.6.4 @@ -35207,25 +34784,25 @@ __metadata: optional: true bin: openai: bin/cli - checksum: 46b16c06b9e9698b02dcb222421bcd9f94b82436defb2412fbf0091cb0a7c68df06147e9f9cbec6ca036a6e96b4f139f03edff2f3de1289668cebea0a39d0d22 + checksum: 483fac9ea6b3215b50be054b16c35d181563d0d2ac5dd9d802d373742dbe2a499d6531bb3d3267ea8835a1563dc185e64b0aecf541b508e576bea8db5884bcf0 languageName: node linkType: hard "openapi-backend@npm:^5.10.5": - version: 5.11.0 - resolution: "openapi-backend@npm:5.11.0" + version: 5.11.1 + resolution: "openapi-backend@npm:5.11.1" dependencies: "@apidevtools/json-schema-ref-parser": ^11.1.0 ajv: ^8.6.2 bath-es5: ^3.0.3 - cookie: ^0.5.0 + cookie: ^1.0.1 dereference-json-schema: ^0.2.1 lodash: ^4.17.15 mock-json-schema: ^1.0.7 openapi-schema-validator: ^12.0.0 openapi-types: ^12.0.2 qs: ^6.9.3 - checksum: 8efcd315b542adb1912088e24fe2fbd1197e529623f392aa50c72bb431cbdf0e1e806c36fbbaf8d42bb3575e6e19a76042596b493616abeddc754c058f1cb4eb + checksum: cd51379e21a6fc89e8497e11dcacff398ccab54366b70e7e91740367411ce295de170957ca172c5063094786b0af854f88db85de9928d6edf89444134be667ff languageName: node linkType: hard @@ -35315,6 +34892,16 @@ __metadata: languageName: node linkType: hard +"openid-client@npm:^6.1.3": + version: 6.1.3 + resolution: "openid-client@npm:6.1.3" + dependencies: + jose: ^5.9.6 + oauth4webapi: ^3.1.1 + checksum: bad5eb382236dfa5e751d3e577ea113b11a209052aaac4e142e3ae31b2f8da29510f143207ebbab78e98073941de4af70dceef3c46a1407cd7c60502e36f7276 + languageName: node + linkType: hard + "optionator@npm:^0.8.1": version: 0.8.3 resolution: "optionator@npm:0.8.3" @@ -35536,13 +35123,13 @@ __metadata: linkType: hard "p-retry@npm:^6.2.0": - version: 6.2.0 - resolution: "p-retry@npm:6.2.0" + version: 6.2.1 + resolution: "p-retry@npm:6.2.1" dependencies: "@types/retry": 0.12.2 is-network-error: ^1.0.0 retry: ^0.13.1 - checksum: 6003573c559ee812329c9c3ede7ba12a783fdc8dd70602116646e850c920b4597dc502fe001c3f9526fca4e93275045db7a27341c458e51db179c1374a01ac44 + checksum: 73acd269544b1359b7f2aa5f907f6f8cd4947c596bc43cc25fecce2678e2f190095179407eb874f0e09fc5956ae7952c39ebb08c3d9334f59d41ae0b2d73ee6b languageName: node linkType: hard @@ -35754,11 +35341,11 @@ __metadata: linkType: hard "parse5@npm:^7.0.0, parse5@npm:^7.1.1": - version: 7.2.0 - resolution: "parse5@npm:7.2.0" + version: 7.2.1 + resolution: "parse5@npm:7.2.1" dependencies: entities: ^4.5.0 - checksum: 78a3286521d5ae09837ed3112a3c817cc718ee444951aced617c46a229b9872b10b7b20941d4d0ca7176c7f37f13dbf013206abe2e5e533563d635d36a9a3dc6 + checksum: 11253cf8aa2e7fc41c004c64cba6f2c255f809663365db65bd7ad0e8cf7b89e436a563c20059346371cc543a6c1b567032088883ca6a2cbc88276c666b68236d languageName: node linkType: hard @@ -36177,8 +35764,8 @@ __metadata: linkType: hard "pg@npm:^8.11.3": - version: 8.13.0 - resolution: "pg@npm:8.13.0" + version: 8.13.1 + resolution: "pg@npm:8.13.1" dependencies: pg-cloudflare: ^1.1.1 pg-connection-string: ^2.7.0 @@ -36194,7 +35781,7 @@ __metadata: peerDependenciesMeta: pg-native: optional: true - checksum: 81560755ff4ee62b71bf1204dd696f66451574d1db56cbd5aa514ce91c6474030ee8078461b3cb85cce8d2f185be5846e0a7a707a818f5e2e3fb198a7ea795ea + checksum: 22cb97fcbee3348d5ee0b195071cc572f9c88eb40cbb61fe6726af68d55d5962121b2d630509bb907703e1c8bdc33de775462029c5399e2a841fa9e6c9da0242 languageName: node linkType: hard @@ -36214,7 +35801,7 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0": +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.0, picocolors@npm:^1.1.1": version: 1.1.1 resolution: "picocolors@npm:1.1.1" checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 @@ -36235,6 +35822,13 @@ __metadata: languageName: node linkType: hard +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464 + languageName: node + linkType: hard + "pidtree@npm:~0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" @@ -36366,7 +35960,7 @@ __metadata: languageName: node linkType: hard -"pkg-types@npm:^1.2.0": +"pkg-types@npm:^1.2.0, pkg-types@npm:^1.2.1": version: 1.2.1 resolution: "pkg-types@npm:1.2.1" dependencies: @@ -36447,7 +36041,7 @@ __metadata: languageName: node linkType: hard -"pony-cause@npm:^1.0.0": +"pony-cause@npm:^1.1.1": version: 1.1.1 resolution: "pony-cause@npm:1.1.1" checksum: 5ff8878b808be48db801d52246a99d7e4789e52d20575ba504ede30c818fd85d38a033915e02c15fa9b6dce72448836dc1a47094acf8f1c21c4f04a4603b0cfb @@ -36674,26 +36268,26 @@ __metadata: linkType: hard "postcss-modules-local-by-default@npm:^4.0.0, postcss-modules-local-by-default@npm:^4.0.5": - version: 4.0.5 - resolution: "postcss-modules-local-by-default@npm:4.0.5" + version: 4.1.0 + resolution: "postcss-modules-local-by-default@npm:4.1.0" dependencies: icss-utils: ^5.0.0 - postcss-selector-parser: ^6.0.2 + postcss-selector-parser: ^7.0.0 postcss-value-parser: ^4.1.0 peerDependencies: postcss: ^8.1.0 - checksum: ca9b01f4a0a3dfb33e016299e2dfb7e85c3123292f7aec2efc0c6771b9955648598bfb4c1561f7ee9732fb27fb073681233661b32eef98baab43743f96735452 + checksum: 64ac4803c21dd82e227179cf0a8489c645ea99a8c514475da028c9afe5d5b915485d00d8efbe94295d688a23a172965cc15f20d550168d1fed272dbdbbe053f0 languageName: node linkType: hard "postcss-modules-scope@npm:^3.0.0, postcss-modules-scope@npm:^3.2.0": - version: 3.2.0 - resolution: "postcss-modules-scope@npm:3.2.0" + version: 3.2.1 + resolution: "postcss-modules-scope@npm:3.2.1" dependencies: - postcss-selector-parser: ^6.0.4 + postcss-selector-parser: ^7.0.0 peerDependencies: postcss: ^8.1.0 - checksum: 2ffe7e98c1fa993192a39c8dd8ade93fc4f59fbd1336ce34fcedaee0ee3bafb29e2e23fb49189256895b30e4f21af661c6a6a16ef7b17ae2c859301e4a4459ae + checksum: 085f65863bb7d8bf08209a979ceb22b2b07bb466574e0e698d34aaad832d614957bb05f2418348a14e4035f65e23b2be2951369d26ea429dd5762c6a020f0f7c languageName: node linkType: hard @@ -36860,7 +36454,7 @@ __metadata: languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.2, postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": +"postcss-selector-parser@npm:^6.0.4, postcss-selector-parser@npm:^6.0.5, postcss-selector-parser@npm:^6.0.9": version: 6.1.2 resolution: "postcss-selector-parser@npm:6.1.2" dependencies: @@ -36870,6 +36464,16 @@ __metadata: languageName: node linkType: hard +"postcss-selector-parser@npm:^7.0.0": + version: 7.0.0 + resolution: "postcss-selector-parser@npm:7.0.0" + dependencies: + cssesc: ^3.0.0 + util-deprecate: ^1.0.2 + checksum: f906b7449fcbe9fa6ae739b6fc324ee3c6201aaf5224f26da27de64ccba68d878d734dd182a467881e463f7ede08972d0129b0cc4d6b671d78c6492cddcef154 + languageName: node + linkType: hard + "postcss-svgo@npm:^5.1.0": version: 5.1.0 resolution: "postcss-svgo@npm:5.1.0" @@ -36901,13 +36505,13 @@ __metadata: linkType: hard "postcss@npm:^8.1.0, postcss@npm:^8.2.13, postcss@npm:^8.4.33": - version: 8.4.47 - resolution: "postcss@npm:8.4.47" + version: 8.4.49 + resolution: "postcss@npm:8.4.49" dependencies: nanoid: ^3.3.7 - picocolors: ^1.1.0 + picocolors: ^1.1.1 source-map-js: ^1.2.1 - checksum: f78440a9d8f97431dd2ab1ab8e1de64f12f3eff38a3d8d4a33919b96c381046a314658d2de213a5fa5eb296b656de76a3ec269fdea27f16d5ab465b916a0f52c + checksum: eb5d6cbdca24f50399aafa5d2bea489e4caee4c563ea1edd5a2485bc5f84e9ceef3febf170272bc83a99c31d23a316ad179213e853f34c2a7a8ffa534559d63a languageName: node linkType: hard @@ -37260,9 +36864,11 @@ __metadata: linkType: hard "psl@npm:^1.1.28, psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d + version: 1.10.0 + resolution: "psl@npm:1.10.0" + dependencies: + punycode: ^2.3.1 + checksum: e2662c74def5f4a4db214363be905835da1e989fc66b07a95c9c4bc3e733aada0045f031777d28510a241f7d682f792163a44a7cbbf20a953cdb6e981e3b565c languageName: node linkType: hard @@ -37332,7 +36938,7 @@ __metadata: languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.0": +"punycode@npm:^2.1.0, punycode@npm:^2.1.1, punycode@npm:^2.3.0, punycode@npm:^2.3.1": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 @@ -37465,9 +37071,9 @@ __metadata: linkType: hard "rambda@npm:^9.1.0": - version: 9.3.0 - resolution: "rambda@npm:9.3.0" - checksum: 9ab615c7f00dd8f4165887a92c34e752244b7c197ffd283255e3cd4f78c57a3832fef63ec9deda5bbeb66199f822add7d124acd8d85edb173839481ee809bd30 + version: 9.4.0 + resolution: "rambda@npm:9.4.0" + checksum: 85a58859435f45c13d2ac94ebe990bd4381ddb91ab290d4b921fe83025cfddeb56379f0bbfcd87901baf29d72c874633febf48d6f8962be7d4886099513157b3 languageName: node linkType: hard @@ -37836,15 +37442,15 @@ __metadata: linkType: hard "react-dropzone@npm:^14.2.3": - version: 14.2.10 - resolution: "react-dropzone@npm:14.2.10" + version: 14.3.5 + resolution: "react-dropzone@npm:14.3.5" dependencies: - attr-accept: ^2.2.2 - file-selector: ^0.6.0 + attr-accept: ^2.2.4 + file-selector: ^2.1.0 prop-types: ^15.8.1 peerDependencies: react: ">= 16.8 || 18.0.0" - checksum: af6b80295680854d072a9123b6027dad20642eb7a14927304861c1c51c2b5dc20776232600e8cf2d9a15ac89a791042cdfd11afe6020524d52cbf12e934acc2d + checksum: 9eae7e91f1a786f74234c3a9fcf905691494531861d0c568f260abb770c35edaab7d1e43fe6cb413d77ae56ba286ac1c1606bade46ec15421fd41059f985f6ee languageName: node linkType: hard @@ -37902,11 +37508,11 @@ __metadata: linkType: hard "react-hook-form@npm:^7.12.2": - version: 7.53.1 - resolution: "react-hook-form@npm:7.53.1" + version: 7.53.2 + resolution: "react-hook-form@npm:7.53.2" peerDependencies: react: ^16.8.0 || ^17 || ^18 || ^19 - checksum: 6c0cb09335fda48dd533b5d144c9a7a5692de1d8af0ac4f1fffedefc9ccfb995e44f9213dd2c13a72b7b7cb46c55ab05dfed884c5e64e174b137ecc658da04b5 + checksum: 37e2dd0e79cd8d3376a7a2cb72ad7b59f0594be499daa898d2c6bec896fc30c2f86e62e8b41bc9d325f77220bd8d76cb31e917f77f1c92ad5740adb1a4cc69e2 languageName: node linkType: hard @@ -38069,7 +37675,7 @@ __metadata: languageName: node linkType: hard -"react-measure@npm:^2.3.0, react-measure@npm:^2.5.2": +"react-measure@npm:^2.3.0": version: 2.5.2 resolution: "react-measure@npm:2.5.2" dependencies: @@ -38248,20 +37854,6 @@ __metadata: languageName: node linkType: hard -"react-smooth@npm:^4.0.0": - version: 4.0.1 - resolution: "react-smooth@npm:4.0.1" - dependencies: - fast-equals: ^5.0.1 - prop-types: ^15.8.1 - react-transition-group: ^4.4.5 - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 42c17803dcb3892a284bbb692d745d438e3bb204ecfc3c9f4f3ff808253ab783f6c64de85a0e84a20c2ea20cf0af39e78b947417ced328164d8dd4eca2918e01 - languageName: node - linkType: hard - "react-sparklines@npm:^1.7.0": version: 1.7.0 resolution: "react-sparklines@npm:1.7.0" @@ -38317,15 +37909,15 @@ __metadata: linkType: hard "react-textarea-autosize@npm:^8.3.2": - version: 8.5.4 - resolution: "react-textarea-autosize@npm:8.5.4" + version: 8.5.5 + resolution: "react-textarea-autosize@npm:8.5.5" dependencies: "@babel/runtime": ^7.20.13 use-composed-ref: ^1.3.0 use-latest: ^1.2.1 peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: a28f84e17505423fa2002b99bb17cb7396ac6fb18f81621af87d246abc6529caa0172f9a6cbf01e87e1f0b60fc50a1aa2e19bc8d09019e5f0f8560dffa1bb720 + checksum: 21a3f08d44da37857ef6251b49e56654f3a221efe70a05b6b3308afb16a58c71d26dcd5d54aea90d88a60289ad40f035f58b5031e7812f8e1cbf447812c1405b languageName: node linkType: hard @@ -38455,7 +38047,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0": +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.0.6, readable-stream@npm:^3.1.1, readable-stream@npm:^3.4.0, readable-stream@npm:^3.5.0, readable-stream@npm:^3.6.0, readable-stream@npm:^3.6.2": version: 3.6.2 resolution: "readable-stream@npm:3.6.2" dependencies: @@ -38481,7 +38073,7 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:^4.0.0, readable-stream@npm:^4.4.2, readable-stream@npm:^4.5.2": +"readable-stream@npm:^4.0.0, readable-stream@npm:^4.4.2": version: 4.5.2 resolution: "readable-stream@npm:4.5.2" dependencies: @@ -38544,34 +38136,6 @@ __metadata: languageName: node linkType: hard -"recharts-scale@npm:^0.4.4": - version: 0.4.5 - resolution: "recharts-scale@npm:0.4.5" - dependencies: - decimal.js-light: ^2.4.1 - checksum: e970377190a610e684a32c7461c7684ac3603c2e0ac0020bbba1eea9d099b38138143a8e80bf769bb49c0b7cecf22a2f5c6854885efed2d56f4540d4aa7052bd - languageName: node - linkType: hard - -"recharts@npm:^2.9.0": - version: 2.13.0 - resolution: "recharts@npm:2.13.0" - dependencies: - clsx: ^2.0.0 - eventemitter3: ^4.0.1 - lodash: ^4.17.21 - react-is: ^18.3.1 - react-smooth: ^4.0.0 - recharts-scale: ^0.4.4 - tiny-invariant: ^1.3.1 - victory-vendor: ^36.6.8 - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.0.0 || ^17.0.0 || ^18.0.0 - checksum: b4a53895fba5cf152dd9147030c227183eee2b67d0e21ba738ae3782e625d1ebdebe5ced57a6f00d4ef51e418fc50e1c816a0801648039166f3929b412d22847 - languageName: node - linkType: hard - "rechoir@npm:^0.8.0": version: 0.8.0 resolution: "rechoir@npm:0.8.0" @@ -38734,7 +38298,7 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2": +"regexp.prototype.flags@npm:^1.5.1, regexp.prototype.flags@npm:^1.5.2, regexp.prototype.flags@npm:^1.5.3": version: 1.5.3 resolution: "regexp.prototype.flags@npm:1.5.3" dependencies: @@ -38768,13 +38332,13 @@ __metadata: linkType: hard "regjsparser@npm:^0.11.0": - version: 0.11.1 - resolution: "regjsparser@npm:0.11.1" + version: 0.11.2 + resolution: "regjsparser@npm:0.11.2" dependencies: jsesc: ~3.0.2 bin: regjsparser: bin/parser - checksum: 231d60810ca12a760393d65d149aa9501ea28b02c27a61c551b4f9162fe3cf48b289423515b73b1aea52949346e78c76cd552ac7169817d31f34df348db90fb4 + checksum: 500ab99d6174aef18b43518f4b1f217192459621b0505ad6e8cbbec8135a83e64491077843b4ad06249a207ffecd6566f3db1895a7c5df98f786b4b0edcc9820 languageName: node linkType: hard @@ -39009,7 +38573,7 @@ __metadata: languageName: node linkType: hard -"reselect@npm:^5.1.0": +"reselect@npm:^5.1.1": version: 5.1.1 resolution: "reselect@npm:5.1.1" checksum: 5d32d48be29071ddda21a775945c2210cf4ca3fccde1c4a0e1582ac3bf99c431c6c2330ef7ca34eae4c06feea617e7cb2c275c4b33ccf9a930836dfc98b49b13 @@ -39414,25 +38978,27 @@ __metadata: linkType: hard "rollup@npm:^4.0.0": - version: 4.24.0 - resolution: "rollup@npm:4.24.0" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.24.0 - "@rollup/rollup-android-arm64": 4.24.0 - "@rollup/rollup-darwin-arm64": 4.24.0 - "@rollup/rollup-darwin-x64": 4.24.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.24.0 - "@rollup/rollup-linux-arm-musleabihf": 4.24.0 - "@rollup/rollup-linux-arm64-gnu": 4.24.0 - "@rollup/rollup-linux-arm64-musl": 4.24.0 - "@rollup/rollup-linux-powerpc64le-gnu": 4.24.0 - "@rollup/rollup-linux-riscv64-gnu": 4.24.0 - "@rollup/rollup-linux-s390x-gnu": 4.24.0 - "@rollup/rollup-linux-x64-gnu": 4.24.0 - "@rollup/rollup-linux-x64-musl": 4.24.0 - "@rollup/rollup-win32-arm64-msvc": 4.24.0 - "@rollup/rollup-win32-ia32-msvc": 4.24.0 - "@rollup/rollup-win32-x64-msvc": 4.24.0 + version: 4.27.1 + resolution: "rollup@npm:4.27.1" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.27.1 + "@rollup/rollup-android-arm64": 4.27.1 + "@rollup/rollup-darwin-arm64": 4.27.1 + "@rollup/rollup-darwin-x64": 4.27.1 + "@rollup/rollup-freebsd-arm64": 4.27.1 + "@rollup/rollup-freebsd-x64": 4.27.1 + "@rollup/rollup-linux-arm-gnueabihf": 4.27.1 + "@rollup/rollup-linux-arm-musleabihf": 4.27.1 + "@rollup/rollup-linux-arm64-gnu": 4.27.1 + "@rollup/rollup-linux-arm64-musl": 4.27.1 + "@rollup/rollup-linux-powerpc64le-gnu": 4.27.1 + "@rollup/rollup-linux-riscv64-gnu": 4.27.1 + "@rollup/rollup-linux-s390x-gnu": 4.27.1 + "@rollup/rollup-linux-x64-gnu": 4.27.1 + "@rollup/rollup-linux-x64-musl": 4.27.1 + "@rollup/rollup-win32-arm64-msvc": 4.27.1 + "@rollup/rollup-win32-ia32-msvc": 4.27.1 + "@rollup/rollup-win32-x64-msvc": 4.27.1 "@types/estree": 1.0.6 fsevents: ~2.3.2 dependenciesMeta: @@ -39444,6 +39010,10 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true + "@rollup/rollup-freebsd-arm64": + optional: true + "@rollup/rollup-freebsd-x64": + optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true "@rollup/rollup-linux-arm-musleabihf": @@ -39472,7 +39042,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: b7e915b0cc43749c2c71255ff58858496460b1a75148db2abecc8e9496af83f488517768593826715f610e20e480a5ae7f1132a1408eb1d364830d6b239325cf + checksum: 86aa545098f05c27209c84e9e8f4599d9eb4684efa905c4567855cd41dd9f10f5a8729764aa80b0700c7b5b5ac863c13e6b8a1425bc38cd3395882bac1399b42 languageName: node linkType: hard @@ -40115,12 +39685,12 @@ __metadata: languageName: node linkType: hard -"simple-eval@npm:1.0.0": - version: 1.0.0 - resolution: "simple-eval@npm:1.0.0" +"simple-eval@npm:1.0.1": + version: 1.0.1 + resolution: "simple-eval@npm:1.0.1" dependencies: - jsep: ^1.1.2 - checksum: 0f0719ae3a84d4b9c19366dc03065b1fe9638c982ed3e9d44ba541d25e3454e99419e3239034974fd6c5074b79c119419168b8f343fef4da6d7e35227cfd1f87 + jsep: ^1.3.6 + checksum: 280207cfe4538c500f6b41e4d88576cf250337b0042bec8f9f5cf025b3a70e07974e522edd01e69d378767dd73068765d4f46ad55db5c94943c8f3585bff95af languageName: node linkType: hard @@ -40881,8 +40451,8 @@ __metadata: linkType: hard "streamx@npm:^2.15.0, streamx@npm:^2.20.0": - version: 2.20.1 - resolution: "streamx@npm:2.20.1" + version: 2.20.2 + resolution: "streamx@npm:2.20.2" dependencies: bare-events: ^2.2.0 fast-fifo: ^1.3.2 @@ -40891,7 +40461,7 @@ __metadata: dependenciesMeta: bare-events: optional: true - checksum: 48605ddd3abdd86d2e3ee945ec7c9317f36abb5303347a8fff6e4c7926a72c33ec7ac86b50734ccd1cf65602b6a38e247966e8199b24e5a7485d9cec8f5327bd + checksum: 4e18ed425e42f800463c0c891f0b773a76a2e64921a9857abe58f89197af484956fc3105df80658a69f5e5797c67f6de7b66628e34bbe1ace50151e0c85fbcf1 languageName: node linkType: hard @@ -41392,11 +40962,12 @@ __metadata: languageName: node linkType: hard -"swagger-client@npm:^3.28.1": - version: 3.29.4 - resolution: "swagger-client@npm:3.29.4" +"swagger-client@npm:^3.31.0": + version: 3.31.0 + resolution: "swagger-client@npm:3.31.0" dependencies: "@babel/runtime-corejs3": ^7.22.15 + "@scarf/scarf": =1.4.0 "@swagger-api/apidom-core": ">=1.0.0-alpha.9 <1.0.0-beta.0" "@swagger-api/apidom-error": ">=1.0.0-alpha.9 <1.0.0-beta.0" "@swagger-api/apidom-json-pointer": ">=1.0.0-alpha.9 <1.0.0-beta.0" @@ -41413,21 +40984,22 @@ __metadata: openapi-server-url-templating: ^1.0.0 ramda: ^0.30.1 ramda-adjunct: ^5.0.0 - checksum: 62fba05a225901b01fa9ce767efa623a95d0bdb79753214f533476682644788e4629aa88d3e0cf4d86696fc6e14784095156a214ddfeeb82b940c2325a3c2a51 + checksum: 86b414dda317d5e9ca6efac8c04355016106e9e637b9b0bfb7a27c43f4b14e18a18c93ac108798ecc0e00c1937036f79fe103b98f551ef1e24fd54e0c3b756b0 languageName: node linkType: hard "swagger-ui-react@npm:^5.0.0": - version: 5.17.14 - resolution: "swagger-ui-react@npm:5.17.14" + version: 5.18.2 + resolution: "swagger-ui-react@npm:5.18.2" dependencies: - "@babel/runtime-corejs3": ^7.24.5 - "@braintree/sanitize-url": =7.0.2 + "@babel/runtime-corejs3": ^7.24.7 + "@braintree/sanitize-url": =7.0.4 + "@scarf/scarf": =1.4.0 base64-js: ^1.5.1 classnames: ^2.5.1 css.escape: 1.5.1 deep-extend: 0.6.0 - dompurify: =3.1.4 + dompurify: =3.1.6 ieee754: ^1.2.1 immutable: ^3.x.x js-file-download: ^0.4.12 @@ -41446,10 +41018,10 @@ __metadata: redux: ^5.0.1 redux-immutable: ^4.0.0 remarkable: ^2.0.1 - reselect: ^5.1.0 + reselect: ^5.1.1 serialize-error: ^8.1.0 sha.js: ^2.4.11 - swagger-client: ^3.28.1 + swagger-client: ^3.31.0 url-parse: ^1.5.10 xml: =1.0.1 xml-but-prettier: ^1.0.1 @@ -41457,7 +41029,7 @@ __metadata: peerDependencies: react: ">=16.8.0 <19" react-dom: ">=16.8.0 <19" - checksum: 1283b23feb91b475ab036f219342374853b6113090c47c49df4576fa9f187a6df05825e7df059d862b8fcf3be51c25691a8da380084f4ca84bc6b5d0ee0ef744 + checksum: 8ad40bda044c9ff5a940b4e76f88dd740dae183266dc2d48cd88b73877a0ad464f26ad41459de7d7562c5e1a0030ed5a15b99fe57d3f2919acc7ddb126c07447 languageName: node linkType: hard @@ -41749,8 +41321,8 @@ __metadata: linkType: hard "testcontainers@npm:^10.0.0": - version: 10.13.2 - resolution: "testcontainers@npm:10.13.2" + version: 10.14.0 + resolution: "testcontainers@npm:10.14.0" dependencies: "@balena/dockerignore": ^1.0.2 "@types/dockerode": ^3.3.29 @@ -41767,7 +41339,7 @@ __metadata: tar-fs: ^3.0.6 tmp: ^0.2.3 undici: ^5.28.4 - checksum: dd115745369981d159b9e74ce2461c2d7c9f3cfbe747e021c8268913b0b20beb5234cb160f22743cb40b38442dbcdfb5f985c63aa14d3b367493d0bfece6afe3 + checksum: 8d83bf259748b07aac2913a41875be15df7cbb2f8b2b6a2535e0de8705a9ca3838ae8112de79fb698cdb12d33ebdb9ff45de37abab69e0c3ccbfe95ba6f0c999 languageName: node linkType: hard @@ -41973,9 +41545,9 @@ __metadata: linkType: hard "tocbot@npm:^4.20.1": - version: 4.31.0 - resolution: "tocbot@npm:4.31.0" - checksum: 227961edf32f5407c607658885ed361e54ba2995ed28522256441150b31f2abd6c58fe38c262db48b73429459f7bc621f8a5123ab75d56c907d16920e291326e + version: 4.32.2 + resolution: "tocbot@npm:4.32.2" + checksum: 428d6344849d2cc5d24f9de40310c45e27179c73ab73ff28a6b8e63397a2800426eb92c5bd8de714cccd87e3d9c140306a48f8176787d0e4cbd6ff9ae8becb94 languageName: node linkType: hard @@ -42167,11 +41739,11 @@ __metadata: linkType: hard "ts-api-utils@npm:^1.0.1, ts-api-utils@npm:^1.3.0": - version: 1.3.0 - resolution: "ts-api-utils@npm:1.3.0" + version: 1.4.0 + resolution: "ts-api-utils@npm:1.4.0" peerDependencies: typescript: ">=4.2.0" - checksum: c746ddabfdffbf16cb0b0db32bb287236a19e583057f8649ee7c49995bb776e1d3ef384685181c11a1a480369e022ca97512cb08c517b2d2bd82c83754c97012 + checksum: 477601317dc8a6d961788663ee76984005ed20c70689bd6f807eed2cad258d3731edcc4162d438ce04782ca62a05373ba51e484180fc2a081d8dab2bf693a5af languageName: node linkType: hard @@ -42307,10 +41879,10 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.7.0": - version: 2.8.0 - resolution: "tslib@npm:2.8.0" - checksum: de852ecd81adfdb4870927e250763345f07dc13fe7f395ce261424966bb122a0992ad844c3ec875c9e63e72afe2220a150712984e44dfd1a8a7e538a064e3d46 +"tslib@npm:^2.0.0, tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.1.0, tslib@npm:^2.2.0, tslib@npm:^2.3.0, tslib@npm:^2.3.1, tslib@npm:^2.4.0, tslib@npm:^2.4.1, tslib@npm:^2.5.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2, tslib@npm:^2.6.3, tslib@npm:^2.7.0, tslib@npm:^2.8.0, tslib@npm:^2.8.1": + version: 2.8.1 + resolution: "tslib@npm:2.8.1" + checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a languageName: node linkType: hard @@ -42550,9 +42122,9 @@ __metadata: linkType: hard "type-fest@npm:^4.4.0, type-fest@npm:^4.9.0": - version: 4.26.1 - resolution: "type-fest@npm:4.26.1" - checksum: 7188db3bca82afa62c69a8043fb7c5eb74e63c45e7e28efb986da1629d844286f7181bc5a8185f38989fffff0d6c96be66fd13529b01932d1b6ebe725181d31a + version: 4.27.0 + resolution: "type-fest@npm:4.27.0" + checksum: 9da0c71b55392f37b437514a09b9968bedf981df6cb854390e2da4ace8fa1c5355b9049cf33996e2e9db4f67dc8042c18c6b51dd12d00ea1f3c65a8847bb7fa7 languageName: node linkType: hard @@ -43004,7 +42576,7 @@ __metadata: languageName: node linkType: hard -"undici-types@npm:~6.19.2": +"undici-types@npm:~6.19.2, undici-types@npm:~6.19.8": version: 6.19.8 resolution: "undici-types@npm:6.19.8" checksum: de51f1b447d22571cf155dfe14ff6d12c5bdaec237c765085b439c38ca8518fc360e88c70f99469162bf2e14188a7b0bcb06e1ed2dc031042b984b0bb9544017 @@ -43020,20 +42592,6 @@ __metadata: languageName: node linkType: hard -"unfetch@npm:^3.1.1": - version: 3.1.2 - resolution: "unfetch@npm:3.1.2" - checksum: 5529f0021c51ffa52b5eb36b7b7824f5cbb2167c4a7a09365d071af7534a87a7968a93f1d71f8cdb1aab930af5692af10f53521100999021a05bfb738ff859ab - languageName: node - linkType: hard - -"unfetch@npm:^4.1.0": - version: 4.2.0 - resolution: "unfetch@npm:4.2.0" - checksum: 6a4b2557e1d921eaa80c4425ce27a404945ec26491ed06e62598f333996a91a44c7908cb26dc7c2746d735762b13276cf4aa41829b4c8f438dde63add3045d7a - languageName: node - linkType: hard - "unicode-canonical-property-names-ecmascript@npm:^2.0.0": version: 2.0.1 resolution: "unicode-canonical-property-names-ecmascript@npm:2.0.1" @@ -43308,17 +42866,12 @@ __metadata: linkType: hard "unplugin@npm:^1.3.1": - version: 1.14.1 - resolution: "unplugin@npm:1.14.1" + version: 1.16.0 + resolution: "unplugin@npm:1.16.0" dependencies: - acorn: ^8.12.1 + acorn: ^8.14.0 webpack-virtual-modules: ^0.6.2 - peerDependencies: - webpack-sources: ^3 - peerDependenciesMeta: - webpack-sources: - optional: true - checksum: fa0bedf5e6e311418e30a788828221ab211700a480a397890062ba867aa1474bb06e4fe0ede16f5bd8512d25041dd1988d4108a918343030f638231de2bf7af1 + checksum: 84bff88dd8fd6ba88bd21dad1b170fea2a91f7ff8ddcfadf826297cf77dfe305f3428f1612c0637f30d7ac10d668491f15fdf8f378dd56def370fdbc16edd85e languageName: node linkType: hard @@ -43793,40 +43346,40 @@ __metadata: linkType: hard "victory-area@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-area@npm:37.2.0" + version: 37.3.2 + resolution: "victory-area@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 - victory-vendor: 37.2.0 + victory-core: 37.3.2 + victory-vendor: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 0edbb47f82f19f5b2126e45fe3f02a925df78b0f9f19b25db6783e47e1a37d9021d7889eca3b0da428559ee413405b232dc65178171310165d0d7120b6467432 + checksum: ec8b89880940e533f94c6c1169893caa90da5738ddde63cdf899eccabff939b85e5182947e7ce34b43891c34aa6aee714333bb0341f26614a71d1c4e8d6e00fe languageName: node linkType: hard -"victory-axis@npm:37.2.0, victory-axis@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-axis@npm:37.2.0" +"victory-axis@npm:37.3.2, victory-axis@npm:^37.1.1": + version: 37.3.2 + resolution: "victory-axis@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 7422f9e34c5759b9fefd96002c16d40b879eff48b9dec80ab6582a34985e1ba903fea47ab67a6c45746366bb2c11a2f2ed66655db39688289246f26578c25a2f + checksum: 3de190930417555ca9ef8b123a3403c1feec80738ec7c20f6e7033929c6b1286c4061f077dacf2afa1ccd33519fd9cb4656509c04cce6d9c3b630da5dea71b5c languageName: node linkType: hard "victory-bar@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-bar@npm:37.2.0" + version: 37.3.2 + resolution: "victory-bar@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 - victory-vendor: 37.2.0 + victory-core: 37.3.2 + victory-vendor: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: e22e55367d094d939e125a26e5397c05aae273cc5aa2f59673e599b3afc0c363a4c53dd8c92989409241530ebbfb5b50e4e3f5d8cceaeece92b3142f36e1bb23 + checksum: 83778ccef4c6f1659295a62576ca3d8f3c6bf106ca075e219dd1e1047063d76b49e307150b9493020f6b6aeabd1d0bcc35b0f335abe2bee76008317e559b31fc languageName: node linkType: hard @@ -43844,57 +43397,57 @@ __metadata: linkType: hard "victory-box-plot@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-box-plot@npm:37.2.0" + version: 37.3.2 + resolution: "victory-box-plot@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 - victory-vendor: 37.2.0 + victory-core: 37.3.2 + victory-vendor: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 89c3bf4ad4a9fca734897eef553ca92fc4b165712f2692ab19947598973a5b0a39dd1ab65622294f2cfba8b31d259daddc990647172cda291bd856e5cd6a3659 + checksum: a110a8d8067642958c40fde77b97fb0668098ca086fe9b2e68e0d346beffe10b0df92be9700a9a0459e0d35d6a7cd035c4a111b67caeea5b577a6d553d1c343a languageName: node linkType: hard -"victory-brush-container@npm:37.2.0": - version: 37.2.0 - resolution: "victory-brush-container@npm:37.2.0" +"victory-brush-container@npm:37.3.2": + version: 37.3.2 + resolution: "victory-brush-container@npm:37.3.2" dependencies: lodash: ^4.17.19 react-fast-compare: ^3.2.0 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: c6f800e4fa4cea923e23cf6610cc123f850d6cf95f071cca14a1ac0848058c8a7c1813b0d85e1b4fde4da01cb9491ba9ed4e3e2c48bf46f9c0fc45c05531359a + checksum: 614bf8dc0002e177de4f1883bd80609e42b8363951c365a4db245501d1f4421e0bb2c1dce4bd7dbdb560baa05826ea31ce6a0cd8ed3cef1885339a99596a3906 languageName: node linkType: hard "victory-chart@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-chart@npm:37.2.0" + version: 37.3.2 + resolution: "victory-chart@npm:37.3.2" dependencies: lodash: ^4.17.19 react-fast-compare: ^3.2.0 - victory-axis: 37.2.0 - victory-core: 37.2.0 - victory-polar-axis: 37.2.0 - victory-shared-events: 37.2.0 + victory-axis: 37.3.2 + victory-core: 37.3.2 + victory-polar-axis: 37.3.2 + victory-shared-events: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: d6a2b7201cdafdd54bd4b92f84fe5f520d4cc89226c2b0624e160d47f735c6f31133f3ca63cfd5018121865f040d38ed6fcd29b29a8cc63a43f2f3a8987fb6a0 + checksum: 487b7593735cba0f2f42626dc3e43d59c74135a6dc791792c80d4842c4882cd60d744c9732ff0dddee4ab4b1c33d7482f581f93115ef9471993e7e7ddeca1a25 languageName: node linkType: hard -"victory-core@npm:37.2.0, victory-core@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-core@npm:37.2.0" +"victory-core@npm:37.3.2, victory-core@npm:^37.1.1": + version: 37.3.2 + resolution: "victory-core@npm:37.3.2" dependencies: lodash: ^4.17.21 react-fast-compare: ^3.2.0 - victory-vendor: 37.2.0 + victory-vendor: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 47644c180379afda738755b0ad1b8698af0c3aade43d739c52ed7d68076856837d7b1e1587831040b44053d1780e66df4f34cbd7eb51ec1d8255efd5b00013b9 + checksum: e20075ebcfd2df37b48e81144f2f3c7d7c793742d1a705cdf31b82b3c238ef2686d653b7b3576e7438813e22f002bf09315572882577482ed06999a5e4098f43 languageName: node linkType: hard @@ -43912,159 +43465,159 @@ __metadata: linkType: hard "victory-create-container@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-create-container@npm:37.2.0" + version: 37.3.2 + resolution: "victory-create-container@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-brush-container: 37.2.0 - victory-core: 37.2.0 - victory-cursor-container: 37.2.0 - victory-selection-container: 37.2.0 - victory-voronoi-container: 37.2.0 - victory-zoom-container: 37.2.0 + victory-brush-container: 37.3.2 + victory-core: 37.3.2 + victory-cursor-container: 37.3.2 + victory-selection-container: 37.3.2 + victory-voronoi-container: 37.3.2 + victory-zoom-container: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 395e6c726786f495f05d96aa7b17b32c4458662cd03b9d69b000cd642f9edd14b47bd3758661b02b2cff94b6d0d151c0af895fea889ee6ca786d95bcb13f8dc4 + checksum: 5eb7ff9ba1f4f17277cdab70c08e33966b093e038c776d18891e98855bfd80d7a7b2d0edc11b11d09cd49679db61c85b41ed253978961d89b66b82fc6b592a1a languageName: node linkType: hard -"victory-cursor-container@npm:37.2.0, victory-cursor-container@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-cursor-container@npm:37.2.0" +"victory-cursor-container@npm:37.3.2, victory-cursor-container@npm:^37.1.1": + version: 37.3.2 + resolution: "victory-cursor-container@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 4f62b6c9b70f065d528c123d611d8f4bf2559a8daa4aa4ca1ffd6ebf40e580d630c7ad88cd228f23c33f09abce57f4587e1976daa9bc0e48993dc1667e4f4eb8 + checksum: d779c12844ccc66bf17e407aa4fac33cfb120bcc3933c5c4438cf877584b3a49668f4a60de52a21dfbe027bb15b9b8be0ee26803b7ed01634e50c335c81c9c8f languageName: node linkType: hard "victory-group@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-group@npm:37.2.0" + version: 37.3.2 + resolution: "victory-group@npm:37.3.2" dependencies: lodash: ^4.17.19 react-fast-compare: ^3.2.0 - victory-core: 37.2.0 - victory-shared-events: 37.2.0 + victory-core: 37.3.2 + victory-shared-events: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 376595d35e742cb90c46a8777d0593841673f6f17564aa616a19426c7bc26f2da6973d2821d33ceaf060d5e5436402f7714c364f801dfb5975c2797b39b738b0 + checksum: a503bf725c8e64cb2bbda1c8577ccee58414bcc586960680261c6d1ff20d147d02045d04f25c03a08df80d37786e4f10765c7f7d63dec4e8677bde2f78bc642e languageName: node linkType: hard "victory-legend@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-legend@npm:37.2.0" + version: 37.3.2 + resolution: "victory-legend@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 584ea8f9afc9cd32e40fd4b3f2bcbdf540ada134eb1ef4f8f89b1a81be8a46486c9c657a4737fbce49feb76c6ccfa1958ceb2dc817b407375faa4e4ba3575544 + checksum: ad2b17ec00c4eb8dcd140cfbffa80276e6ec4ea0cf360d38a0d875d2915f608c12bc6731fb491414190fc1e8d32116e33e1cbf06f065a7911851376bd8989516 languageName: node linkType: hard "victory-line@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-line@npm:37.2.0" + version: 37.3.2 + resolution: "victory-line@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 - victory-vendor: 37.2.0 + victory-core: 37.3.2 + victory-vendor: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 07fda67703677ef1eca8424b2da8074aca229f671afe24399677c1e4e180db6ae459bc4a996684fd143daacdf9b74e10a9d77eef85c7d968b9283cc08ca91098 + checksum: d7ca3cab06433e9bcc47a13ca0b676274465ecddf65e60ca492d6c3c7f8f85b319791d7d36655cc52079383f8cd51163c0da6c0026e8dd8dd093b187bf5a6935 languageName: node linkType: hard "victory-pie@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-pie@npm:37.2.0" + version: 37.3.2 + resolution: "victory-pie@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 - victory-vendor: 37.2.0 + victory-core: 37.3.2 + victory-vendor: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 1e096e95e87d8a6981165592e83bf5820d297fb4cb10e23603df77f479382e2defe84fb8b5a1871886a618d286c49ec6b312aef0a742725ad70557dd0778499b + checksum: 652304f7926927122e7e1397effc71997a65d7c5e754dc5a1ee9e488c7b4de1d36adddbfb0e94ee1edb80bae17f5fd2bba83f2d439d955d5c8c65cbb6ca5eb8d languageName: node linkType: hard -"victory-polar-axis@npm:37.2.0": - version: 37.2.0 - resolution: "victory-polar-axis@npm:37.2.0" +"victory-polar-axis@npm:37.3.2": + version: 37.3.2 + resolution: "victory-polar-axis@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 94795794d5e04cb569ff30f640d7ab0985dce6908f055df6fca6239607d3fee8d4b198406b51ac9f9706cf78de464682f0bd9dcd38cdbe869fdb3a360bd8f465 + checksum: cb682ee70f89df5a414d5ef21cfcd282d2fabaa959225a5f8cdfe34f251f674e180959351c48a30b2ad6033d522774a262e2469fda72ce638318207d28c90ec7 languageName: node linkType: hard "victory-scatter@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-scatter@npm:37.2.0" + version: 37.3.2 + resolution: "victory-scatter@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 8af329cc2111665a3958992086710a0d99bdcac9710839c9a358166eae4d6822115df24683dddcdaae193c9aaa97030732e86947dfd09a674322077d73f9eb9b + checksum: 6f9c3b64e64f980e9d861e1863785641f21e63ab995b000c7ab3dff7d5989ad0d7bb0bdb1664ffa4ca813ea726542dfc20f9b57f2808e00bc367b8da08878d4c languageName: node linkType: hard -"victory-selection-container@npm:37.2.0": - version: 37.2.0 - resolution: "victory-selection-container@npm:37.2.0" +"victory-selection-container@npm:37.3.2": + version: 37.3.2 + resolution: "victory-selection-container@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 99c1c29555cd60b30f4d8ed10ccf9f4bb5407e1f9e5a1ada1be69dc102738118c8abf2a9dfe89230723102ca377ba63c49cb68475f3ab555758f8aa081361234 + checksum: 05c729b272381739ff5dfced30a2dcf4dd7f01a01f720cb3c185aadaa991334fefbbb2ab368a13a6424e5b36c22d12b086b60d3f7ac236546a8487e71b5766df languageName: node linkType: hard -"victory-shared-events@npm:37.2.0": - version: 37.2.0 - resolution: "victory-shared-events@npm:37.2.0" +"victory-shared-events@npm:37.3.2": + version: 37.3.2 + resolution: "victory-shared-events@npm:37.3.2" dependencies: json-stringify-safe: ^5.0.1 lodash: ^4.17.19 react-fast-compare: ^3.2.0 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 02d9d3eb9965a218455f86073d6460a0054f81c16ad007d451f84b27a261fbe24c1267158bd2167c92a71ac07e1b0bc396a2d2517a41d3363e30eef5a7db9344 + checksum: 8363c27443701f9fa25911ac0210848c95d4a1ed248aae2bc688ebfebe39fa5ddd41fe2aa1e2a3e7eea237bd86ca8661dd1994b1af1139272e7c5e6c1a2d9560 languageName: node linkType: hard "victory-stack@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-stack@npm:37.2.0" + version: 37.3.2 + resolution: "victory-stack@npm:37.3.2" dependencies: lodash: ^4.17.19 react-fast-compare: ^3.2.0 - victory-core: 37.2.0 - victory-shared-events: 37.2.0 + victory-core: 37.3.2 + victory-shared-events: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: e31348a7e2114cf357c8c2eaf18ccbb27804c698e408c6dbc9d3b2038c4d43eac878d77561a9f8d211aa5e6352223a21af80d69dddb4d673fc44cf8cafa58d49 + checksum: 9a700b29f209edbe9a1ccafc9361e139cbaf935ac1f7181cb94986db1f33fb251f49914e2b5a0f251fc3a7bbfe540a3b6a70fa9a33602dd4ba6d5eb37e5914f3 languageName: node linkType: hard -"victory-tooltip@npm:37.2.0, victory-tooltip@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-tooltip@npm:37.2.0" +"victory-tooltip@npm:37.3.2, victory-tooltip@npm:^37.1.1": + version: 37.3.2 + resolution: "victory-tooltip@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 4b66c533473beafb0ecfab4accffdd52f752bc6e616ccd567811b2c510514809ac6b1be6cbbfd365413c15e64a7c8e3c8ed670b6d5fc5adb37f13ab28eebd467 + checksum: a81d7d891685bd4b8274314bffc91b69e059cc7c20bf2a17c8a5d8e5a57c56942c085de268192ca7ada1533d1dd37bdb63aee34ee26fd99f68b4e84c707c602b languageName: node linkType: hard @@ -44080,9 +43633,9 @@ __metadata: languageName: node linkType: hard -"victory-vendor@npm:37.2.0": - version: 37.2.0 - resolution: "victory-vendor@npm:37.2.0" +"victory-vendor@npm:37.3.2": + version: 37.3.2 + resolution: "victory-vendor@npm:37.3.2" dependencies: "@types/d3-array": ^3.0.3 "@types/d3-ease": ^3.0.0 @@ -44098,11 +43651,11 @@ __metadata: d3-shape: ^3.1.0 d3-time: ^3.0.0 d3-timer: ^3.0.1 - checksum: d3f20903bda938b0ecc8fea999b293d14df619544a54cb291d4c9839f290260c0bb46d9f52938dd51ae36b2fde523b0762b8ce9c55d169438e5320b1a86a393d + checksum: a88ddfa8f3be78730e0533e44d2b90425884db91ed420f693607836a89bbf7f877b22a44e0a7b6dc0c8e1ac379957fd3229bd9bccd66523af658cca191337a83 languageName: node linkType: hard -"victory-vendor@npm:^36.6.8, victory-vendor@npm:^36.9.2": +"victory-vendor@npm:^36.9.2": version: 36.9.2 resolution: "victory-vendor@npm:36.9.2" dependencies: @@ -44124,18 +43677,18 @@ __metadata: languageName: node linkType: hard -"victory-voronoi-container@npm:37.2.0, victory-voronoi-container@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-voronoi-container@npm:37.2.0" +"victory-voronoi-container@npm:37.3.2, victory-voronoi-container@npm:^37.1.1": + version: 37.3.2 + resolution: "victory-voronoi-container@npm:37.3.2" dependencies: delaunay-find: 0.0.6 lodash: ^4.17.19 react-fast-compare: ^3.2.0 - victory-core: 37.2.0 - victory-tooltip: 37.2.0 + victory-core: 37.3.2 + victory-tooltip: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: 331e4d3d4101931170b3876013ce81d7ed55308acaadf4e1ebb0f21cc0a5e81004166f314a8058ae5b40eeb134bcd8c2c32b0d9c71902c5fae9f1dc6979f2654 + checksum: c9a7c84248cf5671e7242d9b84b4dbabb776261ed434fdad57ea47091f1f9fe40c6269079907f3a45b4c2fe840f1c3ead782764ed73f86bfa139bda2823771f3 languageName: node linkType: hard @@ -44154,15 +43707,15 @@ __metadata: languageName: node linkType: hard -"victory-zoom-container@npm:37.2.0, victory-zoom-container@npm:^37.1.1": - version: 37.2.0 - resolution: "victory-zoom-container@npm:37.2.0" +"victory-zoom-container@npm:37.3.2, victory-zoom-container@npm:^37.1.1": + version: 37.3.2 + resolution: "victory-zoom-container@npm:37.3.2" dependencies: lodash: ^4.17.19 - victory-core: 37.2.0 + victory-core: 37.3.2 peerDependencies: react: ">=16.6.0" - checksum: d99ddade3a022c44c65beda6410ff2f31a468c79af5ad575eb018ce81fa3775a0d06fba6ccc054802ce767c9578b1acb17a822dbb64a238109663a7bb3a95414 + checksum: 9fb9ff1ab238d604088a560bf195407beb0fdc9718ec54a528fc1c9e7fe673dc729ae538ebec80d1c687c324e29fa8ceabfdecae138c5dfb7d14e1cc3beb5988 languageName: node linkType: hard @@ -44672,16 +44225,16 @@ __metadata: linkType: hard "webpack@npm:5, webpack@npm:^5.89.0, webpack@npm:^5.94.0": - version: 5.95.0 - resolution: "webpack@npm:5.95.0" + version: 5.96.1 + resolution: "webpack@npm:5.96.1" dependencies: - "@types/estree": ^1.0.5 + "@types/eslint-scope": ^3.7.7 + "@types/estree": ^1.0.6 "@webassemblyjs/ast": ^1.12.1 "@webassemblyjs/wasm-edit": ^1.12.1 "@webassemblyjs/wasm-parser": ^1.12.1 - acorn: ^8.7.1 - acorn-import-attributes: ^1.9.5 - browserslist: ^4.21.10 + acorn: ^8.14.0 + browserslist: ^4.24.0 chrome-trace-event: ^1.0.2 enhanced-resolve: ^5.17.1 es-module-lexer: ^1.2.1 @@ -44703,7 +44256,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 0c3dfe288de4d62f8f3dc25478a618894883cab739121330763b7847e43304630ea2815ae2351a5f8ff6ab7c9642caf530d503d89bda261fe2cd220e524dd5d1 + checksum: ec3662f64895fae408440a997f87299e374c9d9f911f77b880bab46402f52221c7836bdf101fc2556338d07fc7cb86da50661f944eb1d1041a8361a5b9247876 languageName: node linkType: hard @@ -44936,14 +44489,14 @@ __metadata: languageName: node linkType: hard -"winston-transport@npm:^4.5.0, winston-transport@npm:^4.7.0": - version: 4.8.0 - resolution: "winston-transport@npm:4.8.0" +"winston-transport@npm:^4.5.0, winston-transport@npm:^4.7.0, winston-transport@npm:^4.9.0": + version: 4.9.0 + resolution: "winston-transport@npm:4.9.0" dependencies: - logform: ^2.6.1 - readable-stream: ^4.5.2 + logform: ^2.7.0 + readable-stream: ^3.6.2 triple-beam: ^1.3.0 - checksum: f84092188176d49a6f4f75321ba3e50107ac0942a51a6d7e36b80af19dafb22b57258aaa6d8220763044ea23e30bffd597d3280d2a2298e6a491fe424896bac7 + checksum: f5fd06a27def7597229925ba2b8b9ffa61b5b8748f994c8325064744e4e36dfea19868a16c16b3806f9b98bb7da67c25f08ae6fba3bdc6db4a9555673474a972 languageName: node linkType: hard @@ -44967,21 +44520,21 @@ __metadata: linkType: hard "winston@npm:^3.2.1": - version: 3.15.0 - resolution: "winston@npm:3.15.0" + version: 3.17.0 + resolution: "winston@npm:3.17.0" dependencies: "@colors/colors": ^1.6.0 "@dabh/diagnostics": ^2.0.2 async: ^3.2.3 is-stream: ^2.0.0 - logform: ^2.6.0 + logform: ^2.7.0 one-time: ^1.0.0 readable-stream: ^3.4.0 safe-stable-stringify: ^2.3.1 stack-trace: 0.0.x triple-beam: ^1.3.0 - winston-transport: ^4.7.0 - checksum: 2ae6f3a3359fadd90f69a4db20d78aba6901e18114648e48c8538e925511e4820f8d488f19b1c026096ece614732338aa138f4a0fa2c5e29e8fbc53029f55473 + winston-transport: ^4.9.0 + checksum: ba772c25937007cea6cdeddc931de18a1ea336ae7b3aff2c15de762de5c559b2d310ca2e7a911c209711d325e47d653485e33271ddfb27cd73179e35c7d52267 languageName: node linkType: hard @@ -45264,7 +44817,7 @@ __metadata: languageName: node linkType: hard -"xterm@npm:^5.2.1, xterm@npm:^5.3.0": +"xterm@npm:^5.3.0": version: 5.3.0 resolution: "xterm@npm:5.3.0" checksum: 1bdfdfe4cae4412128376180d85e476b43fb021cdd1114b18acad821c9ea44b5b600e0d88febf2b3572f38fad7741e5161ce0178a44369617cf937222cc6e011 @@ -45393,12 +44946,12 @@ __metadata: linkType: hard "yauzl@npm:^3.0.0": - version: 3.1.3 - resolution: "yauzl@npm:3.1.3" + version: 3.2.0 + resolution: "yauzl@npm:3.2.0" dependencies: buffer-crc32: ~0.2.3 pend: ~1.2.0 - checksum: 5b782f6e99361a9c715e7a82e7aae3d983b6ddff6ebe3a66d2dd3f4ee601ec41c55fa88587bf6de0acbc013aac0b2cac84f9f0cd48372fd5329ee5e273f46f2c + checksum: d16440447bbc4973cf60c455290d6a394c47b82d449193098b10c69a6cc8f3eb003e361a512d1885ca67c96c95351aadb46bfcc47ee2c73a5134743d99275554 languageName: node linkType: hard @@ -45536,11 +45089,11 @@ __metadata: linkType: hard "zod-to-json-schema@npm:^3.20.4, zod-to-json-schema@npm:^3.21.4, zod-to-json-schema@npm:^3.22.3": - version: 3.23.3 - resolution: "zod-to-json-schema@npm:3.23.3" + version: 3.23.5 + resolution: "zod-to-json-schema@npm:3.23.5" peerDependencies: zod: ^3.23.3 - checksum: 0d51cf64b54fd39e86434cd5d2239c2981808e6461d022e4c68a1dec67fff28ef2b7bb5733dfd40eb50d6ce6d252288f3989d67134fa81401c36469bb26f13ec + checksum: 3ac37128d1b989b027e55684201e1da90237f0955dc9bb40da013bc60f2ed23c57026df2fdc14da187be4d53873daad08210807c28c0dde4375c9df0e5fe7901 languageName: node linkType: hard