diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 01f325c5e..17e8484c9 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -39,4 +39,4 @@ updates: open-pull-requests-limit: 10 labels: - "type/dependencies" - - "scope/infrastructure" + - "scope/infra" diff --git a/.github/workflows/aws_publisher.yaml b/.github/workflows/aws_publisher.yml similarity index 98% rename from .github/workflows/aws_publisher.yaml rename to .github/workflows/aws_publisher.yml index 6b87e25ad..6aa70fa91 100644 --- a/.github/workflows/aws_publisher.yaml +++ b/.github/workflows/aws_publisher.yml @@ -31,7 +31,7 @@ jobs: echo "Packer will be triggered in this dir $WORK_DIR" - name: Configure AWS credentials for Kafka-UI account - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_AMI_PUBLISH_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_AMI_PUBLISH_KEY_SECRET }} diff --git a/.github/workflows/backend_main.yml b/.github/workflows/backend_main.yml new file mode 100644 index 000000000..b0c7f8ab4 --- /dev/null +++ b/.github/workflows/backend_main.yml @@ -0,0 +1,25 @@ +name: "Backend: Main: Build and test" + +on: + push: + branches: [ "main" ] + paths: + - "pom.xml" + - "contract/**" + - "api/**" + - "serde-api/**" + +permissions: + contents: read + checks: write + pull-requests: write + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + uses: ./.github/workflows/backend_tests.yml + with: + event_name: ${{ github.event_name }} diff --git a/.github/workflows/backend_pr.yml b/.github/workflows/backend_pr.yml new file mode 100644 index 000000000..3570dfa97 --- /dev/null +++ b/.github/workflows/backend_pr.yml @@ -0,0 +1,26 @@ +name: "Backend: PR: Build and test" + +on: + + pull_request_target: + types: [ "opened", "reopened", "synchronize" ] + paths: + - "pom.xml" + - "contract/**" + - "api/**" + - "serde-api/**" + +permissions: + contents: read + checks: write + pull-requests: write + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + uses: ./.github/workflows/backend_tests.yml + with: + event_name: ${{ github.event_name }} diff --git a/.github/workflows/backend.yml b/.github/workflows/backend_tests.yml similarity index 77% rename from .github/workflows/backend.yml rename to .github/workflows/backend_tests.yml index 6b10cb43a..8a3ffe2d3 100644 --- a/.github/workflows/backend.yml +++ b/.github/workflows/backend_tests.yml @@ -1,19 +1,15 @@ -name: "Backend: PR/main build & test" +name: "Backend: build and test" on: - push: - branches: [ "main" ] - paths: &backend_paths - - "pom.xml" - - "contract/**" - - "api/**" - - "serde-api/**" - - pull_request_target: - types: [ "opened", "reopened", "synchronize" ] - paths: *backend_paths + workflow_call: + inputs: + event_name: + description: 'Original github.event_name' + required: true + type: string permissions: + contents: read checks: write pull-requests: write @@ -25,7 +21,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} @@ -43,8 +39,8 @@ jobs: key: ${{ runner.os }}-sonar restore-keys: ${{ runner.os }}-sonar - - name: Build and analyze pull request target - if: ${{ github.event_name == 'pull_request' }} + - name: "Pull request: Maven tests & sonar" + if: ${{ inputs.event_name == 'pull_request' || inputs.event_name == 'pull_request_target' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_BACKEND }} @@ -60,8 +56,8 @@ jobs: -Dsonar.pullrequest.branch=$HEAD_REF \ -Dsonar.pullrequest.base=$BASE_REF - - name: Build and analyze push main - if: ${{ github.event_name == 'push' }} + - name: "Main: Maven tests & sonar" + if: ${{ inputs.event_name == 'push' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN_BACKEND }} diff --git a/.github/workflows/branch-deploy.yml b/.github/workflows/branch-deploy.yml index 383599d40..107a93116 100644 --- a/.github/workflows/branch-deploy.yml +++ b/.github/workflows/branch-deploy.yml @@ -1,20 +1,23 @@ name: "Infra: Feature Testing: Init env" + on: workflow_dispatch: pull_request: types: ['labeled'] + +permissions: + contents: read + jobs: build: if: ${{ github.event.label.name == 'status/feature_testing' || github.event.label.name == 'status/feature_testing_public' }} runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: get branch name id: extract_branch run: | @@ -48,7 +51,7 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - name: Configure AWS credentials for Kafka-UI account - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/branch-remove.yml b/.github/workflows/branch-remove.yml index 00b329167..d700ea976 100644 --- a/.github/workflows/branch-remove.yml +++ b/.github/workflows/branch-remove.yml @@ -1,18 +1,21 @@ name: "Infra: Feature Testing: Destroy env" + on: workflow_dispatch: pull_request: types: ['unlabeled', 'closed'] + +permissions: + contents: read + jobs: remove: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read if: ${{ (github.event.label.name == 'status/feature_testing' || github.event.label.name == 'status/feature_testing_public') || (github.event.action == 'closed' && (contains(github.event.pull_request.labels.*.name, 'status/feature_testing') || contains(github.event.pull_request.labels.*.name, 'status/feature_testing_public'))) }} steps: - uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: clone run: | git clone https://infra-tech:${{ secrets.INFRA_USER_ACCESS_TOKEN }}@github.com/kafbat/ui-infra.git --branch envs diff --git a/.github/workflows/build-public-image.yml b/.github/workflows/build-public-image.yml index 29346adcb..86f90ad9c 100644 --- a/.github/workflows/build-public-image.yml +++ b/.github/workflows/build-public-image.yml @@ -1,19 +1,22 @@ name: "Infra: Image Testing: Deploy" + on: workflow_dispatch: pull_request: types: ['labeled'] + +permissions: + contents: read + jobs: build: if: ${{ github.event.label.name == 'status/image_testing' }} runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: get branch name id: extract_branch run: | @@ -45,7 +48,7 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - name: Configure AWS credentials for Kafka-UI account - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -68,7 +71,7 @@ jobs: cache-from: type=local,src=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache - name: make comment with private deployment link - uses: peter-evans/create-or-update-comment@v3 + uses: peter-evans/create-or-update-comment@v4 with: issue-number: ${{ github.event.pull_request.number }} body: | diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 72ecea786..57f5a0251 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -17,12 +17,13 @@ on: schedule: - cron: '39 15 * * 6' +permissions: + contents: read + jobs: analyze: name: Analyze runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read strategy: fail-fast: false matrix: @@ -32,10 +33,10 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: Initialize CodeQL - uses: github/codeql-action/init@v2 + uses: github/codeql-action/init@v3 with: languages: ${{ matrix.language }} @@ -47,7 +48,7 @@ jobs: cache: 'maven' - name: Autobuild - uses: github/codeql-action/autobuild@v2 + uses: github/codeql-action/autobuild@v3 - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v2 + uses: github/codeql-action/analyze@v3 diff --git a/.github/workflows/cve.yaml b/.github/workflows/cve.yml similarity index 93% rename from .github/workflows/cve.yaml rename to .github/workflows/cve.yml index 1075bef1c..d53913521 100644 --- a/.github/workflows/cve.yaml +++ b/.github/workflows/cve.yml @@ -5,15 +5,17 @@ on: # * is a special character in YAML so you have to quote this string - cron: '0 8 15 * *' +permissions: + contents: read + jobs: build-and-test: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read + steps: - uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: Set up JDK uses: actions/setup-java@v3 diff --git a/.github/workflows/delete-public-image.yml b/.github/workflows/delete-public-image.yml index c9509c32b..8e3f2dd7c 100644 --- a/.github/workflows/delete-public-image.yml +++ b/.github/workflows/delete-public-image.yml @@ -15,7 +15,7 @@ jobs: tag='${{ github.event.pull_request.number }}' echo "tag=${tag}" >> $GITHUB_OUTPUT - name: Configure AWS credentials for Kafka-UI account - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/e2e-automation.yml b/.github/workflows/e2e-automation.yml index b631d5b86..6303001a3 100644 --- a/.github/workflows/e2e-automation.yml +++ b/.github/workflows/e2e-automation.yml @@ -16,18 +16,19 @@ on: required: false type: string +permissions: + contents: read + jobs: build-and-test: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read steps: - uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} ref: ${{ github.sha }} - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -88,4 +89,4 @@ jobs: target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }} - name: Dump Docker logs on failure if: failure() - uses: jwalton/gh-docker-logs@v2.2.1 + uses: jwalton/gh-docker-logs@v2.2.2 diff --git a/.github/workflows/e2e-manual.yml b/.github/workflows/e2e-manual.yml index 96f76bc96..d554bdaa2 100644 --- a/.github/workflows/e2e-manual.yml +++ b/.github/workflows/e2e-manual.yml @@ -15,15 +15,16 @@ on: required: true type: string +permissions: + contents: read + jobs: build-and-test: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read steps: - uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} ref: ${{ github.sha }} - name: Set up environment id: set_env_values diff --git a/.github/workflows/e2e-tests.yaml b/.github/workflows/e2e-tests.yml similarity index 94% rename from .github/workflows/e2e-tests.yaml rename to .github/workflows/e2e-tests.yml index 0e28e6b51..72e7c92e1 100644 --- a/.github/workflows/e2e-tests.yaml +++ b/.github/workflows/e2e-tests.yml @@ -10,9 +10,9 @@ on: - "frontend/**" - "e2e-tests/**" -permissions: # TODO remove when public - statuses: write +permissions: contents: read + statuses: write jobs: build-and-test: @@ -20,10 +20,10 @@ jobs: steps: - uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} ref: ${{ github.event.pull_request.head.sha }} - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.S3_AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.S3_AWS_SECRET_ACCESS_KEY }} @@ -84,4 +84,4 @@ jobs: target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }} - name: Dump docker logs on failure if: failure() - uses: jwalton/gh-docker-logs@v2.2.1 + uses: jwalton/gh-docker-logs@v2.2.2 diff --git a/.github/workflows/e2e-weekly.yml b/.github/workflows/e2e-weekly.yml index 64e478f88..d8275e473 100644 --- a/.github/workflows/e2e-weekly.yml +++ b/.github/workflows/e2e-weekly.yml @@ -3,18 +3,19 @@ on: schedule: - cron: '0 1 * * 1' +permissions: + contents: read + jobs: build-and-test: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read steps: - uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} ref: ${{ github.sha }} - name: Configure AWS credentials - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} @@ -75,4 +76,4 @@ jobs: target_url: http://kafkaui-allure-reports.s3-website.eu-central-1.amazonaws.com/${{ github.run_number }} - name: Dump Docker logs on failure if: failure() - uses: jwalton/gh-docker-logs@v2.2.1 + uses: jwalton/gh-docker-logs@v2.2.2 diff --git a/.github/workflows/frontend_main.yml b/.github/workflows/frontend_main.yml new file mode 100644 index 000000000..b680a7334 --- /dev/null +++ b/.github/workflows/frontend_main.yml @@ -0,0 +1,19 @@ +name: "Frontend: Main: Build and test" + +on: + push: + branches: [ "main" ] + paths: + - "contract/**" + - "frontend/**" + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + uses: ./.github/workflows/frontend_tests.yml diff --git a/.github/workflows/frontend_pr.yml b/.github/workflows/frontend_pr.yml new file mode 100644 index 000000000..22a4d6f5f --- /dev/null +++ b/.github/workflows/frontend_pr.yml @@ -0,0 +1,20 @@ +name: "Frontend: PR: Build and test" + +on: + + pull_request_target: + types: [ "opened", "reopened", "synchronize" ] + paths: + - "contract/**" + - "frontend/**" + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + uses: ./.github/workflows/frontend_tests.yml diff --git a/.github/workflows/frontend.yaml b/.github/workflows/frontend_tests.yml similarity index 77% rename from .github/workflows/frontend.yaml rename to .github/workflows/frontend_tests.yml index 6daeaf313..4be3239d4 100644 --- a/.github/workflows/frontend.yaml +++ b/.github/workflows/frontend_tests.yml @@ -1,16 +1,10 @@ -name: "Frontend: PR/main build & test" +name: "Frontend: build and test" + on: - push: - branches: [ "main" ] - paths: - - "contract/**" - - "frontend/**" + workflow_call: - pull_request_target: - types: [ "opened", "reopened", "synchronize" ] - paths: - - "contract/**" - - "frontend/**" +permissions: + contents: read jobs: build-and-test: @@ -18,16 +12,14 @@ jobs: CI: true NODE_ENV: dev runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read steps: - uses: actions/checkout@v4 with: # Disabling shallow clone is recommended for improving relevancy of reporting fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - token: ${{ github.token }} # TODO remove when public - - uses: pnpm/action-setup@v2.4.0 + token: ${{ github.token }} + - uses: pnpm/action-setup@v3.0.0 with: version: 8.6.12 - name: Install node diff --git a/.github/workflows/main.yaml b/.github/workflows/main.yml similarity index 94% rename from .github/workflows/main.yaml rename to .github/workflows/main.yml index bb4143d48..503656b2d 100644 --- a/.github/workflows/main.yaml +++ b/.github/workflows/main.yml @@ -5,11 +5,14 @@ on: push: branches: [ "main" ] +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest permissions: - contents: read # TODO remove when public + contents: read packages: write steps: @@ -17,7 +20,7 @@ jobs: uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: Set up JDK uses: actions/setup-java@v3 diff --git a/.github/workflows/md-links.yaml b/.github/workflows/md-links.yml similarity index 85% rename from .github/workflows/md-links.yaml rename to .github/workflows/md-links.yml index c033794ba..b885e014d 100644 --- a/.github/workflows/md-links.yaml +++ b/.github/workflows/md-links.yml @@ -9,15 +9,17 @@ on: paths: - '**.md' +permissions: + contents: read + jobs: build-and-test: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read + steps: - uses: actions/checkout@v4 with: - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: Check URLs in files uses: urlstechie/urlchecker-action@0.0.34 with: diff --git a/.github/workflows/pr-checks.yaml b/.github/workflows/pr_linter.yml similarity index 100% rename from .github/workflows/pr-checks.yaml rename to .github/workflows/pr_linter.yml diff --git a/.github/workflows/release-serde-api.yaml b/.github/workflows/release-serde-api.yml similarity index 88% rename from .github/workflows/release-serde-api.yaml rename to .github/workflows/release-serde-api.yml index 642801e29..af5b1db0d 100644 --- a/.github/workflows/release-serde-api.yaml +++ b/.github/workflows/release-serde-api.yml @@ -1,16 +1,19 @@ name: "Infra: Release: Serde API" + on: workflow_dispatch +permissions: + contents: read + jobs: release-serde-api: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read + steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - run: | git config user.name github-actions diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yml similarity index 95% rename from .github/workflows/release.yaml rename to .github/workflows/release.yml index 115e30141..2ae221180 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yml @@ -3,10 +3,13 @@ on: release: types: [ published ] +permissions: + contents: read + jobs: release: runs-on: ubuntu-latest - permissions: # TODO remove when public + permissions: contents: write packages: write outputs: @@ -16,7 +19,7 @@ jobs: with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - run: | git config user.name github-actions @@ -99,6 +102,6 @@ jobs: uses: peter-evans/repository-dispatch@v2 with: token: ${{ secrets.CHARTS_ACTIONS_TOKEN }} - repository: kafbat/-ui-charts + repository: kafbat/helm-charts event-type: prepare-helm-release client-payload: '{"appversion": "${{ needs.release.outputs.version }}"}' diff --git a/.github/workflows/separate_env_public_create.yml b/.github/workflows/separate_env_public_create.yml index 8532dc73b..b7bb630e1 100644 --- a/.github/workflows/separate_env_public_create.yml +++ b/.github/workflows/separate_env_public_create.yml @@ -7,16 +7,18 @@ on: required: true default: 'demo' +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read + steps: - uses: actions/checkout@v4 with: ref: ${{ github.event.pull_request.head.sha }} - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: get branch name id: extract_branch run: | @@ -50,7 +52,7 @@ jobs: restore-keys: | ${{ runner.os }}-buildx- - name: Configure AWS credentials for Kafka-UI account - uses: aws-actions/configure-aws-credentials@v3 + uses: aws-actions/configure-aws-credentials@v4 with: aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }} aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} diff --git a/.github/workflows/workflow_linter.yaml b/.github/workflows/workflow_linter.yml similarity index 80% rename from .github/workflows/workflow_linter.yaml rename to .github/workflows/workflow_linter.yml index bb6889bd0..728aaa251 100644 --- a/.github/workflows/workflow_linter.yaml +++ b/.github/workflows/workflow_linter.yml @@ -5,17 +5,19 @@ on: paths: - ".github/workflows/**" +permissions: + contents: read + jobs: build-and-test: runs-on: ubuntu-latest - permissions: # TODO remove when public - contents: read + steps: - uses: actions/checkout@v4 with: fetch-depth: 0 ref: ${{ github.event.pull_request.head.sha }} - token: ${{ github.token }} # TODO remove when public + token: ${{ github.token }} - name: Install yamllint run: sudo apt install -y yamllint - name: Validate workflow yaml files diff --git a/api/pom.xml b/api/pom.xml index 65f5789c5..79dcba395 100644 --- a/api/pom.xml +++ b/api/pom.xml @@ -12,7 +12,7 @@ api - 0.8.10 + 0.8.11 jacoco reuseReports ${project.basedir}/target/jacoco.exec diff --git a/api/src/main/java/io/kafbat/ui/model/rbac/AccessContext.java b/api/src/main/java/io/kafbat/ui/model/rbac/AccessContext.java index 04b210f46..9ccc10ccf 100644 --- a/api/src/main/java/io/kafbat/ui/model/rbac/AccessContext.java +++ b/api/src/main/java/io/kafbat/ui/model/rbac/AccessContext.java @@ -1,5 +1,7 @@ package io.kafbat.ui.model.rbac; +import static io.kafbat.ui.model.rbac.permission.SchemaAction.MODIFY_GLOBAL_COMPATIBILITY; + import com.google.common.base.Preconditions; import io.kafbat.ui.model.rbac.permission.AclAction; import io.kafbat.ui.model.rbac.permission.ApplicationConfigAction; @@ -132,7 +134,7 @@ public AccessContextBuilder schemaActions(String schema, SchemaAction... actions } public AccessContextBuilder schemaGlobalCompatChange() { - accessedResources.add(new SingleResourceAccess(Resource.SCHEMA, List.of(SchemaAction.MODIFY_GLOBAL_COMPATIBILITY))); + accessedResources.add(new SingleResourceAccess(Resource.SCHEMA, List.of(MODIFY_GLOBAL_COMPATIBILITY))); return this; } diff --git a/e2e-tests/pom.xml b/e2e-tests/pom.xml index 97e87686b..9516808fd 100644 --- a/e2e-tests/pom.xml +++ b/e2e-tests/pom.xml @@ -12,17 +12,17 @@ e2e-tests - 3.0.0-M8 + 3.2.5 ${project.version} - 1.17.6 + 1.19.5 5.2.1 4.8.1 6.12.3 - 7.7.1 + 7.9.0 2.25.0 3.0.5 1.9.9.1 - 3.24.2 + 3.25.3 2.2 2.0.7 3.3.1 diff --git a/frontend/package.json b/frontend/package.json index 263d7c1ac..cb7919927 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -21,7 +21,7 @@ "fetch-mock": "^9.11.0", "jest": "^29.4.3", "jest-watch-typeahead": "^2.2.2", - "json-schema-faker": "^0.5.0-rcv.44", + "json-schema-faker": "^0.5.6", "jsonpath-plus": "^7.2.0", "lodash": "^4.17.21", "lossless-json": "^2.0.8", @@ -41,7 +41,7 @@ "sass": "^1.52.3", "styled-components": "^5.3.1", "use-debounce": "^9.0.3", - "vite": "^4.0.0", + "vite": "^4.5.2", "vite-tsconfig-paths": "^4.0.2", "whatwg-fetch": "^3.6.2", "yup": "^1.0.0", @@ -108,5 +108,18 @@ "engines": { "node": "v18.17.1", "pnpm": "^8.6.12" + }, + "pnpm": { + "overrides": { + "postcss@<8.4.31": ">=8.4.31", + "@adobe/css-tools@<4.3.1": ">=4.3.1", + "@babel/traverse@<7.23.2": ">=7.23.2", + "@adobe/css-tools@<4.3.2": ">=4.3.2", + "vite@>=4.0.0 <=4.5.1": ">=4.5.2", + "follow-redirects@<1.15.4": ">=1.15.4", + "json5@>=2.0.0 <2.2.2": ">=2.2.2", + "semver@>=7.0.0 <7.5.2": ">=7.5.2", + "axios@>=0.8.1 <0.28.0": ">=0.28.0" + } } } diff --git a/frontend/pnpm-lock.yaml b/frontend/pnpm-lock.yaml index 59ee4122e..757bbc622 100644 --- a/frontend/pnpm-lock.yaml +++ b/frontend/pnpm-lock.yaml @@ -4,6 +4,17 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + postcss@<8.4.31: '>=8.4.31' + '@adobe/css-tools@<4.3.1': '>=4.3.1' + '@babel/traverse@<7.23.2': '>=7.23.2' + '@adobe/css-tools@<4.3.2': '>=4.3.2' + vite@>=4.0.0 <=4.5.1: '>=4.5.2' + follow-redirects@<1.15.4: '>=1.15.4' + json5@>=2.0.0 <2.2.2: '>=2.2.2' + semver@>=7.0.0 <7.5.2: '>=7.5.2' + axios@>=0.8.1 <0.28.0: '>=0.28.0' + dependencies: '@floating-ui/react': specifier: ^0.19.2 @@ -57,8 +68,8 @@ dependencies: specifier: ^2.2.2 version: 2.2.2(jest@29.6.4) json-schema-faker: - specifier: ^0.5.0-rcv.44 - version: 0.5.3 + specifier: ^0.5.6 + version: 0.5.6 jsonpath-plus: specifier: ^7.2.0 version: 7.2.0 @@ -117,11 +128,11 @@ dependencies: specifier: ^9.0.3 version: 9.0.4(react@18.2.0) vite: - specifier: ^4.0.0 - version: 4.0.5(@types/node@20.11.17)(sass@1.66.1) + specifier: ^4.5.2 + version: 4.5.2(@types/node@20.11.17)(sass@1.66.1) vite-tsconfig-paths: specifier: ^4.0.2 - version: 4.2.1(typescript@4.7.4)(vite@4.0.5) + version: 4.3.1(typescript@4.7.4)(vite@4.5.2) whatwg-fetch: specifier: ^3.6.2 version: 3.6.2 @@ -144,7 +155,7 @@ devDependencies: version: 1.3.38 '@swc/jest': specifier: ^0.2.24 - version: 0.2.24(@swc/core@1.3.38) + version: 0.2.36(@swc/core@1.3.38) '@testing-library/dom': specifier: ^9.0.0 version: 9.3.1 @@ -189,7 +200,7 @@ devDependencies: version: 5.62.0(eslint@8.48.0)(typescript@4.7.4) '@vitejs/plugin-react-swc': specifier: ^3.0.0 - version: 3.0.0(vite@4.0.5) + version: 3.0.0(vite@4.5.2) dotenv: specifier: ^16.0.1 version: 16.4.2 @@ -210,10 +221,10 @@ devDependencies: version: 0.3.9 eslint-import-resolver-typescript: specifier: ^3.2.7 - version: 3.2.7(eslint-plugin-import@2.29.1)(eslint@8.48.0) + version: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) eslint-plugin-import: specifier: ^2.26.0 - version: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0) + version: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) eslint-plugin-jest-dom: specifier: ^4.0.3 version: 4.0.3(eslint@8.48.0) @@ -264,8 +275,8 @@ packages: engines: {node: '>=0.10.0'} dev: true - /@adobe/css-tools@4.2.0: - resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} + /@adobe/css-tools@4.3.3: + resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} dev: true /@ampproject/remapping@2.2.0: @@ -282,6 +293,13 @@ packages: dependencies: '@babel/highlight': 7.18.6 + /@babel/code-frame@7.23.5: + resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/highlight': 7.23.4 + chalk: 2.4.2 + /@babel/compat-data@7.18.8: resolution: {integrity: sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==} engines: {node: '>=6.9.0'} @@ -299,12 +317,12 @@ packages: '@babel/helpers': 7.18.9 '@babel/parser': 7.18.9 '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.18.9 convert-source-map: 1.7.0 debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -322,12 +340,12 @@ packages: '@babel/helpers': 7.18.9 '@babel/parser': 7.18.9 '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.18.9 convert-source-map: 1.7.0 debug: 4.3.4(supports-color@5.5.0) gensync: 1.0.0-beta.2 - json5: 2.2.1 + json5: 2.2.3 semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -340,6 +358,16 @@ packages: '@babel/types': 7.18.9 '@jridgewell/gen-mapping': 0.3.2 jsesc: 2.5.2 + dev: false + + /@babel/generator@7.23.6: + resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + '@jridgewell/gen-mapping': 0.3.2 + '@jridgewell/trace-mapping': 0.3.19 + jsesc: 2.5.2 /@babel/helper-annotate-as-pure@7.18.6: resolution: {integrity: sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==} @@ -376,19 +404,24 @@ packages: /@babel/helper-environment-visitor@7.18.9: resolution: {integrity: sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==} engines: {node: '>=6.9.0'} + dev: false - /@babel/helper-function-name@7.18.9: - resolution: {integrity: sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==} + /@babel/helper-environment-visitor@7.22.20: + resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} + engines: {node: '>=6.9.0'} + + /@babel/helper-function-name@7.23.0: + resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/template': 7.18.6 - '@babel/types': 7.18.9 + '@babel/template': 7.23.9 + '@babel/types': 7.23.9 - /@babel/helper-hoist-variables@7.18.6: - resolution: {integrity: sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==} + /@babel/helper-hoist-variables@7.22.5: + resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.18.9 + '@babel/types': 7.23.9 /@babel/helper-module-imports@7.16.7: resolution: {integrity: sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==} @@ -412,7 +445,7 @@ packages: '@babel/helper-split-export-declaration': 7.18.6 '@babel/helper-validator-identifier': 7.18.6 '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.18.9 transitivePeerDependencies: - supports-color @@ -435,11 +468,26 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.18.9 + dev: false + + /@babel/helper-split-export-declaration@7.22.6: + resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/types': 7.23.9 + + /@babel/helper-string-parser@7.23.4: + resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} + engines: {node: '>=6.9.0'} /@babel/helper-validator-identifier@7.18.6: resolution: {integrity: sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==} engines: {node: '>=6.9.0'} + /@babel/helper-validator-identifier@7.22.20: + resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} + engines: {node: '>=6.9.0'} + /@babel/helper-validator-option@7.18.6: resolution: {integrity: sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==} engines: {node: '>=6.9.0'} @@ -450,7 +498,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/template': 7.18.6 - '@babel/traverse': 7.18.9 + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@babel/types': 7.18.9 transitivePeerDependencies: - supports-color @@ -464,12 +512,28 @@ packages: chalk: 2.4.2 js-tokens: 4.0.0 + /@babel/highlight@7.23.4: + resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-validator-identifier': 7.22.20 + chalk: 2.4.2 + js-tokens: 4.0.0 + /@babel/parser@7.18.9: resolution: {integrity: sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==} engines: {node: '>=6.0.0'} hasBin: true dependencies: '@babel/types': 7.18.9 + dev: false + + /@babel/parser@7.23.9: + resolution: {integrity: sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA==} + engines: {node: '>=6.0.0'} + hasBin: true + dependencies: + '@babel/types': 7.23.9 /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.18.9): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -619,41 +683,32 @@ packages: '@babel/code-frame': 7.18.6 '@babel/parser': 7.18.9 '@babel/types': 7.18.9 + dev: false - /@babel/traverse@7.18.2(supports-color@5.5.0): - resolution: {integrity: sha512-9eNwoeovJ6KH9zcCNnENY7DMFwTU9JdGCFtqNLfUAqtUHRCOsTOqWoffosP8vKmNYeSBUv3yVJXjfd8ucwOjUA==} + /@babel/template@7.23.9: + resolution: {integrity: sha512-+xrD2BWLpvHKNmX2QbpdpsBaWnRxahMwJjO+KZk2JOElj5nSmKezyS1B4u+QbHMTX69t4ukm6hh9lsYQ7GHCKA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.9 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 - debug: 4.3.4(supports-color@5.5.0) - globals: 11.12.0 - transitivePeerDependencies: - - supports-color + '@babel/code-frame': 7.23.5 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 - /@babel/traverse@7.18.9: - resolution: {integrity: sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==} + /@babel/traverse@7.23.9(supports-color@5.5.0): + resolution: {integrity: sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.18.6 - '@babel/generator': 7.18.9 - '@babel/helper-environment-visitor': 7.18.9 - '@babel/helper-function-name': 7.18.9 - '@babel/helper-hoist-variables': 7.18.6 - '@babel/helper-split-export-declaration': 7.18.6 - '@babel/parser': 7.18.9 - '@babel/types': 7.18.9 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.6 + '@babel/helper-environment-visitor': 7.22.20 + '@babel/helper-function-name': 7.23.0 + '@babel/helper-hoist-variables': 7.22.5 + '@babel/helper-split-export-declaration': 7.22.6 + '@babel/parser': 7.23.9 + '@babel/types': 7.23.9 debug: 4.3.4(supports-color@5.5.0) globals: 11.12.0 transitivePeerDependencies: - supports-color - dev: false /@babel/types@7.18.9: resolution: {integrity: sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==} @@ -662,6 +717,14 @@ packages: '@babel/helper-validator-identifier': 7.18.6 to-fast-properties: 2.0.0 + /@babel/types@7.23.9: + resolution: {integrity: sha512-dQjSq/7HaSjRM43FFGnv5keM2HsxpmyV1PfaSVm0nzzjwwTmjOe6J4bC8e3+pTEIgHaHj+1ZlLThRJ2auc/w1Q==} + engines: {node: '>=6.9.0'} + dependencies: + '@babel/helper-string-parser': 7.23.4 + '@babel/helper-validator-identifier': 7.22.20 + to-fast-properties: 2.0.0 + /@bcoe/v8-coverage@0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} dev: false @@ -686,176 +749,176 @@ packages: /@emotion/unitless@0.7.5: resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - /@esbuild/android-arm64@0.16.4: - resolution: {integrity: sha512-VPuTzXFm/m2fcGfN6CiwZTlLzxrKsWbPkG7ArRFpuxyaHUm/XFHQPD4xNwZT6uUmpIHhnSjcaCmcla8COzmZ5Q==} + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - /@esbuild/android-arm@0.16.4: - resolution: {integrity: sha512-rZzb7r22m20S1S7ufIc6DC6W659yxoOrl7sKP1nCYhuvUlnCFHVSbATG4keGUtV8rDz11sRRDbWkvQZpzPaHiw==} + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - /@esbuild/android-x64@0.16.4: - resolution: {integrity: sha512-MW+B2O++BkcOfMWmuHXB15/l1i7wXhJFqbJhp82IBOais8RBEQv2vQz/jHrDEHaY2X0QY7Wfw86SBL2PbVOr0g==} + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - /@esbuild/darwin-arm64@0.16.4: - resolution: {integrity: sha512-a28X1O//aOfxwJVZVs7ZfM8Tyih2Za4nKJrBwW5Wm4yKsnwBy9aiS/xwpxiiTRttw3EaTg4Srerhcm6z0bu9Wg==} + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@esbuild/darwin-x64@0.16.4: - resolution: {integrity: sha512-e3doCr6Ecfwd7VzlaQqEPrnbvvPjE9uoTpxG5pyLzr2rI2NMjDHmvY1E5EO81O/e9TUOLLkXA5m6T8lfjK9yAA==} + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@esbuild/freebsd-arm64@0.16.4: - resolution: {integrity: sha512-Oup3G/QxBgvvqnXWrBed7xxkFNwAwJVHZcklWyQt7YCAL5bfUkaa6FVWnR78rNQiM8MqqLiT6ZTZSdUFuVIg1w==} + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/freebsd-x64@0.16.4: - resolution: {integrity: sha512-vAP+eYOxlN/Bpo/TZmzEQapNS8W1njECrqkTpNgvXskkkJC2AwOXwZWai/Kc2vEFZUXQttx6UJbj9grqjD/+9Q==} + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - /@esbuild/linux-arm64@0.16.4: - resolution: {integrity: sha512-2zXoBhv4r5pZiyjBKrOdFP4CXOChxXiYD50LRUU+65DkdS5niPFHbboKZd/c81l0ezpw7AQnHeoCy5hFrzzs4g==} + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-arm@0.16.4: - resolution: {integrity: sha512-A47ZmtpIPyERxkSvIv+zLd6kNIOtJH03XA0Hy7jaceRDdQaQVGSDt4mZqpWqJYgDk9rg96aglbF6kCRvPGDSUA==} + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ia32@0.16.4: - resolution: {integrity: sha512-uxdSrpe9wFhz4yBwt2kl2TxS/NWEINYBUFIxQtaEVtglm1eECvsj1vEKI0KX2k2wCe17zDdQ3v+jVxfwVfvvjw==} + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} cpu: [ia32] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-loong64@0.16.4: - resolution: {integrity: sha512-peDrrUuxbZ9Jw+DwLCh/9xmZAk0p0K1iY5d2IcwmnN+B87xw7kujOkig6ZRcZqgrXgeRGurRHn0ENMAjjD5DEg==} + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-mips64el@0.16.4: - resolution: {integrity: sha512-sD9EEUoGtVhFjjsauWjflZklTNr57KdQ6xfloO4yH1u7vNQlOfAlhEzbyBKfgbJlW7rwXYBdl5/NcZ+Mg2XhQA==} + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-ppc64@0.16.4: - resolution: {integrity: sha512-X1HSqHUX9D+d0l6/nIh4ZZJ94eQky8d8z6yxAptpZE3FxCWYWvTDd9X9ST84MGZEJx04VYUD/AGgciddwO0b8g==} + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-riscv64@0.16.4: - resolution: {integrity: sha512-97ANpzyNp0GTXCt6SRdIx1ngwncpkV/z453ZuxbnBROCJ5p/55UjhbaG23UdHj88fGWLKPFtMoU4CBacz4j9FA==} + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-s390x@0.16.4: - resolution: {integrity: sha512-pUvPQLPmbEeJRPjP0DYTC1vjHyhrnCklQmCGYbipkep+oyfTn7GTBJXoPodR7ZS5upmEyc8lzAkn2o29wD786A==} + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - /@esbuild/linux-x64@0.16.4: - resolution: {integrity: sha512-N55Q0mJs3Sl8+utPRPBrL6NLYZKBCLLx0bme/+RbjvMforTGGzFvsRl4xLTZMUBFC1poDzBEPTEu5nxizQ9Nlw==} + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@esbuild/netbsd-x64@0.16.4: - resolution: {integrity: sha512-LHSJLit8jCObEQNYkgsDYBh2JrJT53oJO2HVdkSYLa6+zuLJh0lAr06brXIkljrlI+N7NNW1IAXGn/6IZPi3YQ==} + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - /@esbuild/openbsd-x64@0.16.4: - resolution: {integrity: sha512-nLgdc6tWEhcCFg/WVFaUxHcPK3AP/bh+KEwKtl69Ay5IBqUwKDaq/6Xk0E+fh/FGjnLwqFSsarsbPHeKM8t8Sw==} + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - /@esbuild/sunos-x64@0.16.4: - resolution: {integrity: sha512-08SluG24GjPO3tXKk95/85n9kpyZtXCVwURR2i4myhrOfi3jspClV0xQQ0W0PYWHioJj+LejFMt41q+PG3mlAQ==} + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - /@esbuild/win32-arm64@0.16.4: - resolution: {integrity: sha512-yYiRDQcqLYQSvNQcBKN7XogbrSvBE45FEQdH8fuXPl7cngzkCvpsG2H9Uey39IjQ6gqqc+Q4VXYHsQcKW0OMjQ==} + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-ia32@0.16.4: - resolution: {integrity: sha512-5rabnGIqexekYkh9zXG5waotq8mrdlRoBqAktjx2W3kb0zsI83mdCwrcAeKYirnUaTGztR5TxXcXmQrEzny83w==} + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@esbuild/win32-x64@0.16.4: - resolution: {integrity: sha512-sN/I8FMPtmtT2Yw+Dly8Ur5vQ5a/RmC8hW7jO9PtPSQUPkowxWpcUZnqOggU7VwyT3Xkj6vcXWd3V/qTXwultQ==} + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -1046,11 +1109,11 @@ packages: - ts-node dev: false - /@jest/create-cache-key-function@27.5.1: - resolution: {integrity: sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + /@jest/create-cache-key-function@29.7.0: + resolution: {integrity: sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==} + engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@jest/types': 27.5.1 + '@jest/types': 29.6.3 dev: true /@jest/environment@29.6.4: @@ -1196,17 +1259,6 @@ packages: - supports-color dev: false - /@jest/types@27.5.1: - resolution: {integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==} - engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} - dependencies: - '@types/istanbul-lib-coverage': 2.0.3 - '@types/istanbul-reports': 3.0.1 - '@types/node': 16.11.7 - '@types/yargs': 16.0.4 - chalk: 4.1.2 - dev: true - /@jest/types@29.6.3: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1274,7 +1326,7 @@ packages: rxjs: ^6.0.0 || ^7.0.0 dependencies: '@nestjs/common': 9.3.11(reflect-metadata@0.1.13)(rxjs@7.8.0) - axios: 0.27.2 + axios: 1.6.7 reflect-metadata: 0.1.13 rxjs: 7.8.0 transitivePeerDependencies: @@ -1401,18 +1453,6 @@ packages: - encoding dev: true - /@pkgr/utils@2.3.0: - resolution: {integrity: sha512-7dIJ9CRVzBnqyEl7diUHPUFJf/oty2SeoVzcMocc5PeOUDK9KGzvgIBjGRRzzlRDaOjh3ADwH0WeibQvi3ls2Q==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - dependencies: - cross-spawn: 7.0.3 - is-glob: 4.0.3 - open: 8.4.0 - picocolors: 1.0.0 - tiny-glob: 0.2.9 - tslib: 2.5.0 - dev: true - /@popperjs/core@2.9.2: resolution: {integrity: sha512-VZMYa7+fXHdwIq1TDhSXoVmSPEGM/aa+6Aiq3nVVJ9bXr24zScr+NlKFKC3iPljA7ho/GAZr+d2jOf5GIRC30Q==} @@ -1549,14 +1589,19 @@ packages: '@swc/core-win32-ia32-msvc': 1.3.38 '@swc/core-win32-x64-msvc': 1.3.38 - /@swc/jest@0.2.24(@swc/core@1.3.38): - resolution: {integrity: sha512-fwgxQbM1wXzyKzl1+IW0aGrRvAA8k0Y3NxFhKigbPjOJ4mCKnWEcNX9HQS3gshflcxq8YKhadabGUVfdwjCr6Q==} + /@swc/counter@0.1.3: + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + dev: true + + /@swc/jest@0.2.36(@swc/core@1.3.38): + resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: - '@jest/create-cache-key-function': 27.5.1 + '@jest/create-cache-key-function': 29.7.0 '@swc/core': 1.3.38 + '@swc/counter': 0.1.3 jsonc-parser: 3.2.0 dev: true @@ -1643,7 +1688,7 @@ packages: resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} engines: {node: '>=8', npm: '>=6', yarn: '>=1'} dependencies: - '@adobe/css-tools': 4.2.0 + '@adobe/css-tools': 4.3.3 '@babel/runtime': 7.17.9 '@types/testing-library__jest-dom': 5.14.5 aria-query: 5.0.0 @@ -1685,7 +1730,7 @@ packages: /@ts-morph/common@0.12.3: resolution: {integrity: sha512-4tUmeLyXJnJWvTFOKtcNJ1yh0a3SsTLi2MUoyj8iUNznFRN1ZquaNe7Oukqrnki2FzZkm0J9adCNLDZxUzvj+w==} dependencies: - fast-glob: 3.2.11 + fast-glob: 3.3.2 minimatch: 3.1.2 mkdirp: 1.0.4 path-browserify: 1.0.1 @@ -1885,12 +1930,6 @@ packages: /@types/yargs-parser@20.2.0: resolution: {integrity: sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==} - /@types/yargs@16.0.4: - resolution: {integrity: sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==} - dependencies: - '@types/yargs-parser': 20.2.0 - dev: true - /@types/yargs@17.0.10: resolution: {integrity: sha512-gmEaFwpj/7f/ROdtIlci1R1VYU1J4j95m8T+Tj3iBgiBFKg1foE/PSl93bBd5T9LDXNPo8UlNN6W0qwD8O5OaA==} dependencies: @@ -1916,7 +1955,7 @@ packages: functional-red-black-tree: 1.0.1 ignore: 5.2.0 regexpp: 3.2.0 - semver: 7.3.7 + semver: 7.5.4 tsutils: 3.21.0(typescript@4.7.4) typescript: 4.7.4 transitivePeerDependencies: @@ -2064,13 +2103,13 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@vitejs/plugin-react-swc@3.0.0(vite@4.0.5): + /@vitejs/plugin-react-swc@3.0.0(vite@4.5.2): resolution: {integrity: sha512-vYlodz/mjYRbxMGbHzDgR8aPR+z8n7K/enWkyBGH096xrL2DIPCuTvQVRYPTXGyy6wO7OFiMxZ3r4nKQD1sH0A==} peerDependencies: vite: ^4.0.0 dependencies: '@swc/core': 1.3.38 - vite: 4.0.5(@types/node@20.11.17)(sass@1.66.1) + vite: 4.5.2(@types/node@20.11.17)(sass@1.66.1) dev: true /abab@2.0.6: @@ -2377,11 +2416,12 @@ packages: engines: {node: '>=4'} dev: true - /axios@0.27.2: - resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + /axios@1.6.7: + resolution: {integrity: sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.5 form-data: 4.0.0 + proxy-from-env: 1.1.0 transitivePeerDependencies: - debug dev: true @@ -2926,11 +2966,6 @@ packages: clone: 1.0.4 dev: true - /define-lazy-prop@2.0.0: - resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} - engines: {node: '>=8'} - dev: true - /define-properties@1.2.0: resolution: {integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==} engines: {node: '>= 0.4'} @@ -3036,8 +3071,8 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /enhanced-resolve@5.10.0: - resolution: {integrity: sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==} + /enhanced-resolve@5.15.0: + resolution: {integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==} engines: {node: '>=10.13.0'} dependencies: graceful-fs: 4.2.10 @@ -3136,34 +3171,34 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.16.4: - resolution: {integrity: sha512-qQrPMQpPTWf8jHugLWHoGqZjApyx3OEm76dlTXobHwh/EBbavbRdjXdYi/GWr43GyN0sfpap14GPkb05NH3ROA==} + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': 0.16.4 - '@esbuild/android-arm64': 0.16.4 - '@esbuild/android-x64': 0.16.4 - '@esbuild/darwin-arm64': 0.16.4 - '@esbuild/darwin-x64': 0.16.4 - '@esbuild/freebsd-arm64': 0.16.4 - '@esbuild/freebsd-x64': 0.16.4 - '@esbuild/linux-arm': 0.16.4 - '@esbuild/linux-arm64': 0.16.4 - '@esbuild/linux-ia32': 0.16.4 - '@esbuild/linux-loong64': 0.16.4 - '@esbuild/linux-mips64el': 0.16.4 - '@esbuild/linux-ppc64': 0.16.4 - '@esbuild/linux-riscv64': 0.16.4 - '@esbuild/linux-s390x': 0.16.4 - '@esbuild/linux-x64': 0.16.4 - '@esbuild/netbsd-x64': 0.16.4 - '@esbuild/openbsd-x64': 0.16.4 - '@esbuild/sunos-x64': 0.16.4 - '@esbuild/win32-arm64': 0.16.4 - '@esbuild/win32-ia32': 0.16.4 - '@esbuild/win32-x64': 0.16.4 + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} @@ -3204,7 +3239,7 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.48.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) object.assign: 4.1.4 object.entries: 1.1.7 semver: 6.3.1 @@ -3222,7 +3257,7 @@ packages: '@typescript-eslint/parser': 5.62.0(eslint@8.48.0)(typescript@4.7.4) eslint: 8.48.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.48.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) dev: true /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.7.1)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.30.1)(eslint@8.48.0): @@ -3237,7 +3272,7 @@ packages: dependencies: eslint: 8.48.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.48.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) eslint-plugin-jsx-a11y: 6.7.1(eslint@8.48.0) eslint-plugin-react: 7.30.1(eslint@8.48.0) eslint-plugin-react-hooks: 4.6.0(eslint@8.48.0) @@ -3264,27 +3299,30 @@ packages: - supports-color dev: true - /eslint-import-resolver-typescript@3.2.7(eslint-plugin-import@2.29.1)(eslint@8.48.0): - resolution: {integrity: sha512-WvcsRy3aPmwVsuS/XVliAJWpIdTlaFXXZPZk3TCbvvF8RtaAkjAhcLL5bl5VEoTmE+XnTHjIbWMzNZcOQpK/DA==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} + /eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0): + resolution: {integrity: sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==} + engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '*' eslint-plugin-import: '*' dependencies: debug: 4.3.4(supports-color@5.5.0) - enhanced-resolve: 5.10.0 + enhanced-resolve: 5.15.0 eslint: 8.48.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0) - get-tsconfig: 4.2.0 - globby: 13.1.2 - is-core-module: 2.9.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) + fast-glob: 3.3.2 + get-tsconfig: 4.7.2 + is-core-module: 2.13.1 is-glob: 4.0.3 - synckit: 0.8.1 transitivePeerDependencies: + - '@typescript-eslint/parser' + - eslint-import-resolver-node + - eslint-import-resolver-webpack - supports-color dev: true - /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0): + /eslint-module-utils@2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): resolution: {integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==} engines: {node: '>=4'} peerDependencies: @@ -3309,12 +3347,12 @@ packages: debug: 3.2.7 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.2.7(eslint-plugin-import@2.29.1)(eslint@8.48.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1)(eslint@8.48.0) transitivePeerDependencies: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -3333,7 +3371,7 @@ packages: doctrine: 2.1.0 eslint: 8.48.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.2.7)(eslint@8.48.0) + eslint-module-utils: 2.8.0(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.48.0) hasown: 2.0.0 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -3606,8 +3644,8 @@ packages: resolution: {integrity: sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==} dev: true - /fast-glob@3.2.11: - resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==} + /fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} dependencies: '@nodelib/fs.stat': 2.0.5 @@ -3717,8 +3755,8 @@ packages: resolution: {integrity: sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==} dev: true - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.5: + resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -3819,8 +3857,10 @@ packages: get-intrinsic: 1.2.1 dev: true - /get-tsconfig@4.2.0: - resolution: {integrity: sha512-X8u8fREiYOE6S8hLbq99PeykTDoLVnxvF4DjWKJmz9xy2nNRdUcV8ZN9tniJFeKyTU3qnC9lL8n4Chd6LmVKHg==} + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 dev: true /glob-parent@5.1.2: @@ -3889,35 +3929,21 @@ packages: define-properties: 1.2.0 dev: true - /globalyzer@0.1.0: - resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} - dev: true - /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} engines: {node: '>=10'} dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.2.11 + fast-glob: 3.3.2 ignore: 5.2.0 merge2: 1.4.1 slash: 3.0.0 dev: true - /globby@13.1.2: - resolution: {integrity: sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.2.11 - ignore: 5.2.0 - merge2: 1.4.1 - slash: 4.0.0 - dev: true - /globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} + dev: false /goober@2.1.10(csstype@3.1.2): resolution: {integrity: sha512-7PpuQMH10jaTWm33sQgBQvz45pHR8N4l3Cu3WMGEWmHShAcTuuP7I+5/DwKo39fwti5A80WAjvqgz6SSlgWmGA==} @@ -4165,24 +4191,12 @@ packages: dependencies: hasown: 2.0.0 - /is-core-module@2.9.0: - resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} - dependencies: - has: 1.0.3 - dev: true - /is-date-object@1.0.5: resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} engines: {node: '>= 0.4'} dependencies: has-tostringtag: 1.0.0 - /is-docker@2.2.1: - resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} - engines: {node: '>=8'} - hasBin: true - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} @@ -4294,13 +4308,6 @@ packages: call-bind: 1.0.2 get-intrinsic: 1.2.1 - /is-wsl@2.2.0: - resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} - engines: {node: '>=8'} - dependencies: - is-docker: 2.2.1 - dev: true - /isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -4802,7 +4809,7 @@ packages: peerDependencies: styled-components: '>= 5' dependencies: - '@adobe/css-tools': 4.2.0 + '@adobe/css-tools': 4.3.3 styled-components: 5.3.1(react-dom@18.1.0)(react-is@18.2.0)(react@18.2.0) dev: true @@ -4972,8 +4979,8 @@ packages: /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} - /json-schema-faker@0.5.3: - resolution: {integrity: sha512-BeIrR0+YSrTbAR9dOMnjbFl1MvHyXnq+Wpdw1FpWZDHWKLzK229hZ5huyPcmzFUfVq1ODwf40WdGVoE266UBUg==} + /json-schema-faker@0.5.6: + resolution: {integrity: sha512-u/cFC26/GDxh2vPiAC8B8xVvpXAW+QYtG2mijEbKrimCk8IHtiwQBjCE8TwvowdhALWq9IcdIWZ+/8ocXvdL3Q==} hasBin: true dependencies: json-schema-ref-parser: 6.1.0 @@ -5008,8 +5015,8 @@ packages: minimist: 1.2.6 dev: true - /json5@2.2.1: - resolution: {integrity: sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==} + /json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true @@ -5251,8 +5258,8 @@ packages: resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} dev: true - /nanoid@3.3.4: - resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} + /nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -5418,15 +5425,6 @@ packages: format-util: 1.0.5 dev: false - /open@8.4.0: - resolution: {integrity: sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==} - engines: {node: '>=12'} - dependencies: - define-lazy-prop: 2.0.0 - is-docker: 2.2.1 - is-wsl: 2.2.0 - dev: true - /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} engines: {node: '>= 0.8.0'} @@ -5592,11 +5590,11 @@ packages: /postcss-value-parser@4.1.0: resolution: {integrity: sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==} - /postcss@8.4.20: - resolution: {integrity: sha512-6Q04AXR1212bXr5fh03u8aAwbLxAQNGQ/Q1LNa0VfOI06ZAlhPHtQvE4OIdpj4kLThXilalPnmDSOD65DcHt+g==} + /postcss@8.4.35: + resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==} engines: {node: ^10 || ^12 || >=14} dependencies: - nanoid: 3.3.4 + nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 @@ -5665,6 +5663,10 @@ packages: resolution: {integrity: sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA==} dev: false + /proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + dev: true + /psl@1.8.0: resolution: {integrity: sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==} dev: true @@ -5994,19 +5996,15 @@ packages: engines: {node: '>=8'} dev: false + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + dev: true + /resolve.exports@2.0.1: resolution: {integrity: sha512-OEJWVeimw8mgQuj3HfkNl4KqRevH7lzeQNaWRPfx0PPse7Jk6ozcsG4FKVgtzDsC1KUF+YlTHh17NcgHOPykLw==} engines: {node: '>=10'} dev: false - /resolve@1.22.1: - resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - /resolve@1.22.4: resolution: {integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==} hasBin: true @@ -6050,8 +6048,8 @@ packages: glob: 9.2.1 dev: true - /rollup@3.7.3: - resolution: {integrity: sha512-7e68MQbAWCX6mI4/0lG1WHd+NdNAlVamg0Zkd+8LZ/oXojligdGnCNyHlzXqXCZObyjs5FRc3AH0b17iJESGIQ==} + /rollup@3.29.4: + resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: @@ -6136,14 +6134,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - /semver@7.3.7: - resolution: {integrity: sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==} - engines: {node: '>=10'} - hasBin: true - dependencies: - lru-cache: 6.0.0 - dev: true - /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} engines: {node: '>=10'} @@ -6182,11 +6172,6 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - /slash@4.0.0: - resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} - engines: {node: '>=12'} - dev: true - /slash@5.0.0: resolution: {integrity: sha512-n6KkmvKS0623igEVj3FF0OZs1gYYJ0o0Hj939yc1fyxl2xt+xYpLnzJB6xBSqOfV9ZFLEWodBBN/heZJahuIJQ==} engines: {node: '>=14.16'} @@ -6343,7 +6328,7 @@ packages: react-is: '>= 16.8.0' dependencies: '@babel/helper-module-imports': 7.16.7 - '@babel/traverse': 7.18.2(supports-color@5.5.0) + '@babel/traverse': 7.23.9(supports-color@5.5.0) '@emotion/is-prop-valid': 0.8.8 '@emotion/stylis': 0.8.5 '@emotion/unitless': 0.7.5 @@ -6382,14 +6367,6 @@ packages: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} dev: true - /synckit@0.8.1: - resolution: {integrity: sha512-rJEeygO5PNmcZICmrgnbOd2usi5zWE1ESc0Gn5tTmJlongoU8zCTwMFQtar2UgMSiR68vK9afPQ+uVs2lURSIA==} - engines: {node: ^14.18.0 || >=16.0.0} - dependencies: - '@pkgr/utils': 2.3.0 - tslib: 2.5.0 - dev: true - /tabbable@6.1.1: resolution: {integrity: sha512-4kl5w+nCB44EVRdO0g/UGoOp3vlwgycUVtkk/7DPyeLZUCuNFFKCFG6/t/DgHLrUPHjrZg6s5tNm+56Q2B0xyg==} dev: false @@ -6420,13 +6397,6 @@ packages: resolution: {integrity: sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==} dev: false - /tiny-glob@0.2.9: - resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} - dependencies: - globalyzer: 0.1.0 - globrex: 0.1.2 - dev: true - /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -6533,18 +6503,18 @@ packages: dependencies: commander: 6.2.1 cosmiconfig: 7.0.1 - json5: 2.2.1 + json5: 2.2.3 lodash: 4.17.21 true-myth: 4.1.1 ts-morph: 13.0.3 dev: true - /tsconfck@2.1.2(typescript@4.7.4): - resolution: {integrity: sha512-ghqN1b0puy3MhhviwO2kGF8SeMDNhEbnKxjK7h6+fvY9JAxqvXi8y5NAHSQv687OVboS2uZIByzGd45/YxrRHg==} - engines: {node: ^14.13.1 || ^16 || >=18} + /tsconfck@3.0.2(typescript@4.7.4): + resolution: {integrity: sha512-6lWtFjwuhS3XI4HsX4Zg0izOI3FU/AI9EGVlPEUMDIhvLPMD4wkiof0WCoDgW7qY+Dy198g4d9miAqUHWHFH6Q==} + engines: {node: ^18 || >=20} hasBin: true peerDependencies: - typescript: ^4.3.5 || ^5.0.0 + typescript: ^5.0.0 peerDependenciesMeta: typescript: optional: true @@ -6742,8 +6712,8 @@ packages: ejs: 3.1.8 dev: true - /vite-tsconfig-paths@4.2.1(typescript@4.7.4)(vite@4.0.5): - resolution: {integrity: sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==} + /vite-tsconfig-paths@4.3.1(typescript@4.7.4)(vite@4.5.2): + resolution: {integrity: sha512-cfgJwcGOsIxXOLU/nELPny2/LUD/lcf1IbfyeKTv2bsupVbTH/xpFtdQlBmIP1GEK2CjjLxYhFfB+QODFAx5aw==} peerDependencies: vite: '*' peerDependenciesMeta: @@ -6752,20 +6722,21 @@ packages: dependencies: debug: 4.3.4(supports-color@5.5.0) globrex: 0.1.2 - tsconfck: 2.1.2(typescript@4.7.4) - vite: 4.0.5(@types/node@20.11.17)(sass@1.66.1) + tsconfck: 3.0.2(typescript@4.7.4) + vite: 4.5.2(@types/node@20.11.17)(sass@1.66.1) transitivePeerDependencies: - supports-color - typescript dev: false - /vite@4.0.5(@types/node@20.11.17)(sass@1.66.1): - resolution: {integrity: sha512-7m87RC+caiAxG+8j3jObveRLqaWA/neAdCat6JAZwMkSWqFHOvg8MYe5fAQxVBRAuKAQ1S6XDh3CBQuLNbY33w==} + /vite@4.5.2(@types/node@20.11.17)(sass@1.66.1): + resolution: {integrity: sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==} engines: {node: ^14.18.0 || >=16.0.0} hasBin: true peerDependencies: '@types/node': '>= 14' less: '*' + lightningcss: ^1.21.0 sass: '*' stylus: '*' sugarss: '*' @@ -6775,6 +6746,8 @@ packages: optional: true less: optional: true + lightningcss: + optional: true sass: optional: true stylus: @@ -6785,10 +6758,9 @@ packages: optional: true dependencies: '@types/node': 20.11.17 - esbuild: 0.16.4 - postcss: 8.4.20 - resolve: 1.22.1 - rollup: 3.7.3 + esbuild: 0.18.20 + postcss: 8.4.35 + rollup: 3.29.4 sass: 1.66.1 optionalDependencies: fsevents: 2.3.2 diff --git a/frontend/src/components/Brokers/BrokersList/BrokersList.tsx b/frontend/src/components/Brokers/BrokersList/BrokersList.tsx index f869269fa..bdc1f9c00 100644 --- a/frontend/src/components/Brokers/BrokersList/BrokersList.tsx +++ b/frontend/src/components/Brokers/BrokersList/BrokersList.tsx @@ -1,27 +1,15 @@ -import React from 'react'; +import React, { useMemo } from 'react'; import { ClusterName } from 'redux/interfaces'; import { useNavigate } from 'react-router-dom'; import PageHeading from 'components/common/PageHeading/PageHeading'; -import * as Metrics from 'components/common/Metrics'; import useAppParams from 'lib/hooks/useAppParams'; +import Table from 'components/common/NewTable'; +import { clusterBrokerPath } from 'lib/paths'; import { useBrokers } from 'lib/hooks/api/brokers'; import { useClusterStats } from 'lib/hooks/api/clusters'; -import Table, { LinkCell, SizeCell } from 'components/common/NewTable'; -import CheckMarkRoundIcon from 'components/common/Icons/CheckMarkRoundIcon'; -import { ColumnDef } from '@tanstack/react-table'; -import { clusterBrokerPath } from 'lib/paths'; -import { keyBy } from 'lib/functions/keyBy'; -import Tooltip from 'components/common/Tooltip/Tooltip'; -import ColoredCell from 'components/common/NewTable/ColoredCell'; - -import SkewHeader from './SkewHeader/SkewHeader'; -import * as S from './BrokersList.styled'; -const NA = 'N/A'; -const NA_DISK_USAGE = { - segmentCount: NA, - segmentSize: NA, -}; +import { BrokersMetrics } from './BrokersMetrics/BrokersMetrics'; +import { getBrokersTableColumns, getBrokersTableRows } from './lib'; const BrokersList: React.FC = () => { const navigate = useNavigate(); @@ -41,202 +29,35 @@ const BrokersList: React.FC = () => { version, } = clusterStats; - const rows = React.useMemo(() => { - if (!brokers || brokers.length === 0) { - return []; - } - - const diskUsageByBroker = keyBy(diskUsage, 'brokerId'); - - return brokers.map((broker) => { - const diskUse = diskUsageByBroker[broker.id] || NA_DISK_USAGE; - - return { - brokerId: broker.id, - size: diskUse.segmentSize, - count: diskUse.segmentCount, - port: broker.port, - host: broker.host, - partitionsLeader: broker.partitionsLeader, - partitionsSkew: broker.partitionsSkew, - leadersSkew: broker.leadersSkew, - inSyncPartitions: broker.inSyncPartitions, - }; - }); - }, [diskUsage, brokers]); - - const columns = React.useMemo[]>( - () => [ - { - header: 'Broker ID', - accessorKey: 'brokerId', - // eslint-disable-next-line react/no-unstable-nested-components - cell: ({ getValue }) => ( - - ()}`} - to={encodeURIComponent(`${getValue()}`)} - /> - {getValue() === activeControllers && ( - } - content="Active Controller" - placement="right" - /> - )} - - ), - }, - { - header: 'Disk usage', - accessorKey: 'size', - // eslint-disable-next-line react/no-unstable-nested-components - cell: ({ getValue, table, cell, column, renderValue, row }) => - getValue() === NA ? ( - NA - ) : ( - - ), - }, - { - // eslint-disable-next-line react/no-unstable-nested-components - header: () => , - accessorKey: 'partitionsSkew', - // eslint-disable-next-line react/no-unstable-nested-components - cell: ({ getValue }) => { - const value = getValue(); - return ( - = 10 && value < 20} - attention={value >= 20} - /> - ); - }, - }, - { header: 'Leaders', accessorKey: 'partitionsLeader' }, - { - header: 'Leader skew', - accessorKey: 'leadersSkew', - // eslint-disable-next-line react/no-unstable-nested-components - cell: ({ getValue }) => { - const value = getValue(); - return ( - = 10 && value < 20} - attention={value >= 20} - /> - ); - }, - }, - { - header: 'Online partitions', - accessorKey: 'inSyncPartitions', - // eslint-disable-next-line react/no-unstable-nested-components - cell: ({ getValue, row }) => { - const value = getValue(); - return ( - - ); - }, - }, - { header: 'Port', accessorKey: 'port' }, - { - header: 'Host', - accessorKey: 'host', - }, - ], - [] + const rows = useMemo( + () => + getBrokersTableRows({ + brokers, + diskUsage, + activeControllers, + onlinePartitionCount, + offlinePartitionCount, + }), + [diskUsage, activeControllers, brokers] ); - const replicas = (inSyncReplicasCount ?? 0) + (outOfSyncReplicasCount ?? 0); - const areAllInSync = inSyncReplicasCount && replicas === inSyncReplicasCount; - const partitionIsOffline = offlinePartitionCount && offlinePartitionCount > 0; - - const isActiveControllerUnKnown = typeof activeControllers === 'undefined'; + const columns = useMemo(() => getBrokersTableColumns(), []); return ( <> - - - - {brokerCount} - - - {isActiveControllerUnKnown ? ( - No Active Controller - ) : ( - activeControllers - )} - - {version} - - - - {partitionIsOffline ? ( - {onlinePartitionCount} - ) : ( - onlinePartitionCount - )} - - {` of ${ - (onlinePartitionCount || 0) + (offlinePartitionCount || 0) - } - `} - - - - {!underReplicatedPartitionCount ? ( - - {underReplicatedPartitionCount} - - ) : ( - {underReplicatedPartitionCount} - )} - - - {areAllInSync ? ( - replicas - ) : ( - {inSyncReplicasCount} - )} - of {replicas} - - - {outOfSyncReplicasCount} - - - + + + theme.circularAlert.color.error}; +`; diff --git a/frontend/src/components/Brokers/BrokersList/BrokersMetrics/BrokersMetrics.tsx b/frontend/src/components/Brokers/BrokersList/BrokersMetrics/BrokersMetrics.tsx new file mode 100644 index 000000000..5c1600806 --- /dev/null +++ b/frontend/src/components/Brokers/BrokersList/BrokersMetrics/BrokersMetrics.tsx @@ -0,0 +1,105 @@ +import React from 'react'; +import * as Metrics from 'components/common/Metrics'; + +import * as S from './BrokersMetrics.styled'; + +type BrokersMetricsProps = { + brokerCount: number | undefined; + inSyncReplicasCount: number | undefined; + outOfSyncReplicasCount: number | undefined; + offlinePartitionCount: number | undefined; + activeControllers: number | undefined; + onlinePartitionCount: number | undefined; + underReplicatedPartitionCount: number | undefined; + version: string | undefined; +}; + +export const BrokersMetrics = ({ + brokerCount, + version, + activeControllers, + outOfSyncReplicasCount, + inSyncReplicasCount, + offlinePartitionCount, + underReplicatedPartitionCount, + onlinePartitionCount, +}: BrokersMetricsProps) => { + const replicas = (inSyncReplicasCount ?? 0) + (outOfSyncReplicasCount ?? 0); + const areAllInSync = inSyncReplicasCount && replicas === inSyncReplicasCount; + const partitionIsOffline = offlinePartitionCount && offlinePartitionCount > 0; + + const isActiveControllerUnKnown = typeof activeControllers === 'undefined'; + + return ( + + + + {brokerCount} + + + + {isActiveControllerUnKnown ? ( + No Active Controller + ) : ( + activeControllers + )} + + + {version} + + + + + {partitionIsOffline ? ( + {onlinePartitionCount} + ) : ( + onlinePartitionCount + )} + + {` of ${(onlinePartitionCount || 0) + (offlinePartitionCount || 0)} + `} + + + + + {!underReplicatedPartitionCount ? ( + + {underReplicatedPartitionCount} + + ) : ( + {underReplicatedPartitionCount} + )} + + + + {areAllInSync ? ( + replicas + ) : ( + {inSyncReplicasCount} + )} + of {replicas} + + + + {outOfSyncReplicasCount} + + + + ); +}; diff --git a/frontend/src/components/Brokers/BrokersList/BrokersList.styled.ts b/frontend/src/components/Brokers/BrokersList/TableCells/TableCells.styled.ts similarity index 64% rename from frontend/src/components/Brokers/BrokersList/BrokersList.styled.ts rename to frontend/src/components/Brokers/BrokersList/TableCells/TableCells.styled.ts index 964e64368..718f952eb 100644 --- a/frontend/src/components/Brokers/BrokersList/BrokersList.styled.ts +++ b/frontend/src/components/Brokers/BrokersList/TableCells/TableCells.styled.ts @@ -10,7 +10,3 @@ export const RowCell = styled.div` padding-left: 6px; } `; - -export const DangerText = styled.span` - color: ${({ theme }) => theme.circularAlert.color.error}; -`; diff --git a/frontend/src/components/Brokers/BrokersList/TableCells/TableCells.tsx b/frontend/src/components/Brokers/BrokersList/TableCells/TableCells.tsx new file mode 100644 index 000000000..5d6039fbf --- /dev/null +++ b/frontend/src/components/Brokers/BrokersList/TableCells/TableCells.tsx @@ -0,0 +1,97 @@ +import React from 'react'; +import { BrokersTableRow } from 'components/Brokers/BrokersList/lib/types'; +import { CellContext } from '@tanstack/react-table'; +import { LinkCell } from 'components/common/NewTable'; +import Tooltip from 'components/common/Tooltip/Tooltip'; +import CheckMarkRoundIcon from 'components/common/Icons/CheckMarkRoundIcon'; +import { NA } from 'components/Brokers/BrokersList/lib'; +import ColoredCell from 'components/common/NewTable/ColoredCell'; +import SizeCellCount from 'components/common/NewTable/SizeCellCount'; + +import * as S from './TableCells.styled'; + +type BrokerIdProps = CellContext; + +export const BrokerId = ({ getValue, row }: BrokerIdProps) => { + const { activeControllers } = row.original; + const brokerId = getValue(); + + return ( + + + {brokerId === activeControllers && ( + } + content="Active Controller" + placement="right" + /> + )} + + ); +}; + +type DiscUsageProps = CellContext; + +export const DiscUsage = ({ + getValue, + table, + cell, + column, + renderValue, + row, +}: DiscUsageProps) => { + if (getValue() === undefined) return NA; + + return ( + + ); +}; + +type ScewProps = CellContext< + BrokersTableRow, + BrokersTableRow['partitionsSkew'] | BrokersTableRow['leadersSkew'] +>; + +export const Skew = ({ getValue }: ScewProps) => { + const skew = getValue(); + const value = skew ? `${skew.toFixed(2)}%` : '-'; + + return ( + = 10 && skew < 20} + attention={skew !== undefined && skew >= 20} + /> + ); +}; + +type OnlinePartitionsProps = CellContext< + BrokersTableRow, + BrokersTableRow['onlinePartitionCount'] +>; + +export const OnlinePartitions = ({ row }: OnlinePartitionsProps) => { + const { onlinePartitionCount, offlinePartitionCount } = row.original; + + if ( + onlinePartitionCount === undefined || + offlinePartitionCount === undefined + ) { + return null; + } + + return ( + 0} + /> + ); +}; diff --git a/frontend/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx b/frontend/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx index e98f28e52..9dc40591e 100644 --- a/frontend/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx +++ b/frontend/src/components/Brokers/BrokersList/__test__/BrokersList.spec.tsx @@ -72,11 +72,13 @@ describe('BrokersList Component', () => { }, })); renderComponent(); - const onlineWidget = screen.getByText( + const onlineWidgets = screen.getAllByText( clusterStatsPayload.onlinePartitionCount ); - expect(onlineWidget).toBeInTheDocument(); - expect(onlineWidget).toHaveStyle({ color: '#E51A1A' }); + onlineWidgets.forEach((widget) => { + expect(widget).toBeInTheDocument(); + expect(widget).toHaveStyle({ color: '#E51A1A' }); + }); }); it('shows right count when offlinePartitionCount > 0', async () => { (useClusterStats as jest.Mock).mockImplementation(() => ({ @@ -154,49 +156,24 @@ describe('BrokersList Component', () => { expect(screen.queryByRole('tooltip')).not.toBeInTheDocument() ); }); + }); + }); - describe('when diskUsage', () => { - describe('is empty', () => { - beforeEach(() => { - (useClusterStats as jest.Mock).mockImplementation(() => ({ - data: { ...clusterStatsPayload, diskUsage: undefined }, - })); - }); - - it('renders list of all brokers', async () => { - renderComponent(); - expect(screen.getByRole('table')).toBeInTheDocument(); - expect(screen.getAllByRole('row').length).toEqual(3); - }); - }); - - describe('was NOT set for second broker', () => { - beforeEach(() => { - (useClusterStats as jest.Mock).mockImplementation(() => ({ - data: { - ...clusterStatsPayload, - diskUsage: [clusterStatsPayload.diskUsage[0]], - }, - })); - }); - - it('renders list of all brokers', async () => { - renderComponent(); - expect(screen.getByRole('table')).toBeInTheDocument(); - expect(screen.getAllByRole('row').length).toEqual(3); - }); - }); - }); + describe('when diskUsage is empty', () => { + beforeEach(() => { + (useBrokers as jest.Mock).mockImplementation(() => ({ + data: brokersPayload, + })); + (useClusterStats as jest.Mock).mockImplementation(() => ({ + data: { ...clusterStatsPayload, diskUsage: undefined }, + })); }); - describe('when the brokers list is empty', () => { + describe('when it has no brokers', () => { beforeEach(() => { (useBrokers as jest.Mock).mockImplementation(() => ({ data: [], })); - (useClusterStats as jest.Mock).mockImplementation(() => ({ - data: clusterStatsPayload, - })); }); it('renders empty table', async () => { @@ -207,6 +184,22 @@ describe('BrokersList Component', () => { ).toBeInTheDocument(); }); }); + + it('renders list of all brokers', async () => { + renderComponent(); + expect(screen.getByRole('table')).toBeInTheDocument(); + expect(screen.getAllByRole('row').length).toEqual(3); + }); + it('opens broker when row clicked', async () => { + renderComponent(); + await userEvent.click(screen.getByRole('cell', { name: '100' })); + + await waitFor(() => + expect(mockedUsedNavigate).toBeCalledWith( + clusterBrokerPath(clusterName, '100') + ) + ); + }); }); }); }); diff --git a/frontend/src/components/Brokers/BrokersList/lib/constants.ts b/frontend/src/components/Brokers/BrokersList/lib/constants.ts new file mode 100644 index 000000000..48e4e0cb4 --- /dev/null +++ b/frontend/src/components/Brokers/BrokersList/lib/constants.ts @@ -0,0 +1,5 @@ +export const NA = 'N/A'; +export const NA_DISK_USAGE = { + segmentCount: NA, + segmentSize: NA, +}; diff --git a/frontend/src/components/Brokers/BrokersList/lib/index.ts b/frontend/src/components/Brokers/BrokersList/lib/index.ts new file mode 100644 index 000000000..7a616f8d2 --- /dev/null +++ b/frontend/src/components/Brokers/BrokersList/lib/index.ts @@ -0,0 +1,3 @@ +export * from './utils'; +export * from './constants'; +export * from './types'; diff --git a/frontend/src/components/Brokers/BrokersList/lib/types.ts b/frontend/src/components/Brokers/BrokersList/lib/types.ts new file mode 100644 index 000000000..7928862a1 --- /dev/null +++ b/frontend/src/components/Brokers/BrokersList/lib/types.ts @@ -0,0 +1,13 @@ +export type BrokersTableRow = { + brokerId: number; + size: number | undefined; + count: number | undefined; + port: number | undefined; + host: string | undefined; + partitionsLeader: number | undefined; + partitionsSkew: number | undefined; + leadersSkew: number | undefined; + onlinePartitionCount: number | undefined; + offlinePartitionCount: number | undefined; + activeControllers: number | undefined; +}; diff --git a/frontend/src/components/Brokers/BrokersList/lib/utils.ts b/frontend/src/components/Brokers/BrokersList/lib/utils.ts new file mode 100644 index 000000000..1eb6b2886 --- /dev/null +++ b/frontend/src/components/Brokers/BrokersList/lib/utils.ts @@ -0,0 +1,78 @@ +import { Broker, BrokerDiskUsage } from 'generated-sources'; +import * as Cell from 'components/Brokers/BrokersList/TableCells/TableCells'; +import { createColumnHelper } from '@tanstack/react-table'; +import { keyBy } from 'lib/functions/keyBy'; +import SkewHeader from 'components/Brokers/BrokersList/SkewHeader/SkewHeader'; + +import { BrokersTableRow } from './types'; +import { NA_DISK_USAGE } from './constants'; + +type GetBrokersTableRowsParams = { + brokers: Broker[] | undefined; + diskUsage: BrokerDiskUsage[] | undefined; + activeControllers: number | undefined; + onlinePartitionCount: number | undefined; + offlinePartitionCount: number | undefined; +}; + +export const getBrokersTableRows = ({ + brokers = [], + diskUsage = [], + activeControllers, + onlinePartitionCount, + offlinePartitionCount, +}: GetBrokersTableRowsParams): BrokersTableRow[] => { + if (!brokers || brokers.length === 0) { + return []; + } + + const diskUsageByBroker = keyBy(diskUsage, 'brokerId'); + + return brokers.map((broker) => { + const diskUse = diskUsageByBroker[broker.id] || NA_DISK_USAGE; + + return { + brokerId: broker.id, + size: diskUse.segmentSize, + count: diskUse.segmentCount, + port: broker.port, + host: broker.host, + partitionsLeader: broker.partitionsLeader, + partitionsSkew: broker.partitionsSkew, + leadersSkew: broker.leadersSkew, + onlinePartitionCount, + offlinePartitionCount, + activeControllers, + }; + }); +}; + +export const getBrokersTableColumns = () => { + const columnHelper = createColumnHelper(); + + return [ + columnHelper.accessor('brokerId', { + header: 'Broker ID', + cell: Cell.BrokerId, + }), + columnHelper.accessor('size', { + header: 'Disk usage', + cell: Cell.DiscUsage, + }), + columnHelper.accessor('partitionsSkew', { + header: SkewHeader, + cell: Cell.Skew, + }), + columnHelper.accessor('partitionsLeader', { header: 'Leaders' }), + columnHelper.accessor('leadersSkew', { + header: 'Leader skew', + cell: Cell.Skew, + }), + columnHelper.accessor('onlinePartitionCount', { + header: 'Online partitions', + cell: Cell.OnlinePartitions, + }), + columnHelper.accessor('port', { header: 'Port' }), + columnHelper.accessor('host', { header: 'Host' }), + ]; +}; diff --git a/frontend/src/components/NavBar/__tests__/NavBar.spec.tsx b/frontend/src/components/NavBar/__tests__/NavBar.spec.tsx index 2e37613ba..9b3e4528f 100644 --- a/frontend/src/components/NavBar/__tests__/NavBar.spec.tsx +++ b/frontend/src/components/NavBar/__tests__/NavBar.spec.tsx @@ -20,7 +20,7 @@ describe('NavBar', () => { })), }); - render(); + render(); }); it('correctly renders header', () => { diff --git a/frontend/src/components/PageContainer/__tests__/PageContainer.spec.tsx b/frontend/src/components/PageContainer/__tests__/PageContainer.spec.tsx index ca91cd207..b6d654ea5 100644 --- a/frontend/src/components/PageContainer/__tests__/PageContainer.spec.tsx +++ b/frontend/src/components/PageContainer/__tests__/PageContainer.spec.tsx @@ -9,9 +9,11 @@ import { Cluster, ServerStatus } from 'generated-sources'; const burgerButtonOptions = { name: 'burger' }; jest.mock('components/Version/Version', () => () =>
Version
); + interface DataType { data: Cluster[] | undefined; } + jest.mock('lib/hooks/api/clusters'); const mockedNavigate = jest.fn(); jest.mock('react-router-dom', () => ({ @@ -30,7 +32,7 @@ describe('Page Container', () => { })), }); render( - +
child
, { diff --git a/frontend/src/components/Topics/Topic/Messages/Filters/Filters.tsx b/frontend/src/components/Topics/Topic/Messages/Filters/Filters.tsx index 347623d22..99eb6bac4 100644 --- a/frontend/src/components/Topics/Topic/Messages/Filters/Filters.tsx +++ b/frontend/src/components/Topics/Topic/Messages/Filters/Filters.tsx @@ -13,7 +13,7 @@ import { } from 'generated-sources'; import React, { useContext } from 'react'; import omitBy from 'lodash/omitBy'; -import { useNavigate, useLocation, useSearchParams } from 'react-router-dom'; +import { useLocation, useNavigate, useSearchParams } from 'react-router-dom'; import MultiSelect from 'components/common/MultiSelect/MultiSelect.styled'; import { Option } from 'react-multi-select-component'; import BytesFormatted from 'components/common/BytesFormatted/BytesFormatted'; @@ -55,11 +55,17 @@ export interface FiltersProps { meta: TopicMessageConsuming; isFetching: boolean; messageEventType?: string; + addMessage(content: { message: TopicMessage; prepend: boolean }): void; + resetMessages(): void; + updatePhase(phase: string): void; + updateMeta(meta: TopicMessageConsuming): void; + setIsFetching(status: boolean): void; + setMessageType(messageType: string): void; } @@ -152,7 +158,7 @@ const Filters: React.FC = ({ const [queryType, setQueryType] = React.useState( activeFilter.name - ? MessageFilterType.GROOVY_SCRIPT + ? MessageFilterType.CEL_SCRIPT : MessageFilterType.STRING_CONTAINS ); const [query, setQuery] = React.useState(searchParams.get('q') || ''); @@ -205,10 +211,7 @@ const Filters: React.FC = ({ const handleFiltersSubmit = (currentOffset: string) => { const nextAttempt = Number(searchParams.get('attempt') || 0) + 1; const props: Query = { - q: - queryType === MessageFilterType.GROOVY_SCRIPT - ? activeFilter.code - : query, + q: queryType === MessageFilterType.CEL_SCRIPT ? activeFilter.code : query, filterQueryType: queryType, attempt: nextAttempt, limit: PER_PAGE, @@ -309,7 +312,7 @@ const Filters: React.FC = ({ JSON.stringify({ index, ...newActiveFilter }) ); setActiveFilter({ index, ...newActiveFilter }); - setQueryType(MessageFilterType.GROOVY_SCRIPT); + setQueryType(MessageFilterType.CEL_SCRIPT); }; const composeMessageFilter = (filter: FilterEdit): ActiveMessageFilter => ({ diff --git a/frontend/src/components/common/NewTable/SizeCell.tsx b/frontend/src/components/common/NewTable/SizeCell.tsx index 7a230be81..4b472b5bd 100644 --- a/frontend/src/components/common/NewTable/SizeCell.tsx +++ b/frontend/src/components/common/NewTable/SizeCell.tsx @@ -2,16 +2,15 @@ import React from 'react'; import { CellContext } from '@tanstack/react-table'; import BytesFormatted from 'components/common/BytesFormatted/BytesFormatted'; -// eslint-disable-next-line @typescript-eslint/no-explicit-any -type AsAny = any; - -const SizeCell: React.FC< - CellContext & { renderSegments?: boolean; precision?: number } -> = ({ getValue, row, renderSegments = false, precision = 0 }) => ( - <> +const SizeCell = ({ + getValue, + precision = 0, +}: CellContext & { + precision?: number; +}) => { + return ( ()} precision={precision} /> - {renderSegments ? `, ${row?.original.count} segment(s)` : null} - -); + ); +}; export default SizeCell; diff --git a/frontend/src/components/common/NewTable/SizeCellCount.tsx b/frontend/src/components/common/NewTable/SizeCellCount.tsx new file mode 100644 index 000000000..80df59b9f --- /dev/null +++ b/frontend/src/components/common/NewTable/SizeCellCount.tsx @@ -0,0 +1,23 @@ +import React from 'react'; +import { CellContext } from '@tanstack/react-table'; +import BytesFormatted from 'components/common/BytesFormatted/BytesFormatted'; + +const SizeCellCount = ({ + getValue, + row, + precision = 0, +}: CellContext & { + precision?: number; +}) => { + return ( + <> + ()} + precision={precision} + /> + {`, ${row.original.count} segment(s)`} + + ); +}; + +export default SizeCellCount; diff --git a/frontend/src/components/common/NewTable/Table.tsx b/frontend/src/components/common/NewTable/Table.tsx index 42d406b4f..df4421c98 100644 --- a/frontend/src/components/common/NewTable/Table.tsx +++ b/frontend/src/components/common/NewTable/Table.tsx @@ -1,20 +1,20 @@ import React from 'react'; +import type { + ColumnDef, + OnChangeFn, + PaginationState, + Row, + SortingState, +} from '@tanstack/react-table'; import { flexRender, getCoreRowModel, getExpandedRowModel, + getPaginationRowModel, getSortedRowModel, useReactTable, - getPaginationRowModel, } from '@tanstack/react-table'; -import type { - Row, - SortingState, - OnChangeFn, - PaginationState, - ColumnDef, -} from '@tanstack/react-table'; -import { useSearchParams, useLocation } from 'react-router-dom'; +import { useLocation, useSearchParams } from 'react-router-dom'; import { PER_PAGE } from 'lib/constants'; import { Button } from 'components/common/Button/Button'; import Input from 'components/common/Input/Input'; @@ -26,10 +26,13 @@ import ExpanderCell from './ExpanderCell'; import SelectRowCell from './SelectRowCell'; import SelectRowHeader from './SelectRowHeader'; -export interface TableProps { +export interface TableProps { data: TData[]; pageCount?: number; - columns: ColumnDef[]; + + // https://github.com/TanStack/table/issues/4382 + // eslint-disable-next-line @typescript-eslint/no-explicit-any + columns: ColumnDef[]; // Server-side processing: sorting, pagination serverSideProcessing?: boolean; @@ -118,7 +121,7 @@ const getSortingFromSearchParams = (searchParams: URLSearchParams) => { * - use URLSearchParams to get the pagination and sorting state from the url for your server side processing. */ -function Table({ +function Table({ data, pageCount, columns, @@ -134,7 +137,7 @@ function Table({ onRowHover, onMouseLeave, setRowId, -}: TableProps) { +}: TableProps) { const [searchParams, setSearchParams] = useSearchParams(); const location = useLocation(); const [rowSelection, setRowSelection] = React.useState({}); diff --git a/frontend/src/lib/hooks/api/__tests__/topics.spec.ts b/frontend/src/lib/hooks/api/__tests__/topics.spec.ts index 34b864fd4..802368495 100644 --- a/frontend/src/lib/hooks/api/__tests__/topics.spec.ts +++ b/frontend/src/lib/hooks/api/__tests__/topics.spec.ts @@ -77,7 +77,6 @@ describe('Topics hooks', () => { minInSyncReplicas: 0, cleanupPolicy: '', retentionMs: 0, - retentionBytes: 0, maxMessageBytes: 0, customParams: [], }; diff --git a/pom.xml b/pom.xml index 557f35335..84637da9b 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 4.12.0 2.12.0 - 3.19.0 + 3.25.3 1.11.1 1.12.19 7.4.0 @@ -47,16 +47,16 @@ 3.1.3 1.0.0 0.1.17 - 0.1.26 + 0.1.39 20230227 0.3.0 - 31.0.1-jre + 33.0.0-jre 5.9.1 5.3.1 4.10.0 - 1.17.5 + 1.19.5 v18.17.1