From b9e0b7c25ca089e295f304bb4fbf00816ad0b81d Mon Sep 17 00:00:00 2001 From: Barrett Falk Date: Wed, 10 Jan 2024 10:14:02 -0800 Subject: [PATCH] feat: artifactory (#17) --- .github/dependabot.yml | 8 - .github/workflows/.deploy.yml | 132 + .github/workflows/.push-helm-chart.yml | 132 + .github/workflows/.tests.yml | 74 + .github/workflows/analysis.yml | 106 +- .github/workflows/merge.yml | 254 +- .github/workflows/pr-close.yml | 84 +- .github/workflows/pr-open.yml | 127 +- .github/workflows/scheduled.yml | 110 + .gitignore | 6 +- .graphics/template.png | Bin 39102 -> 39709 bytes README.md | 29 +- backend/Dockerfile | 2 +- backend/db/Dockerfile | 12 - backend/openshift.deploy.yml | 251 - backend/package-lock.json | 4205 ++++++------- backend/package.json | 26 +- .../nr-compliance-enforcement-cm}/.helmignore | 0 .../nr-compliance-enforcement-cm/Chart.yaml | 31 + charts/nr-compliance-enforcement-cm/README.md | 5228 +++++++++++++++++ .../README.md.gotmpl | 12 + .../charts/component/.helmignore | 23 + .../charts/component}/Chart.yaml | 9 +- .../charts/component/templates/_helpers.tpl | 111 + .../charts/component/templates/configmap.yaml | 14 + .../charts/component/templates/cronjob.yaml | 162 + .../component/templates/deployment.yaml | 352 ++ .../charts/component/templates/hpa.yaml | 37 + .../component/templates/imagestreams.yaml | 61 + .../charts/component/templates/ingress.yaml | 63 + .../charts/component/templates/pvc.yaml | 20 + .../charts/component/templates/route.yaml | 19 + .../charts/component/templates/service.yaml | 15 + .../component/templates/serviceaccount.yaml | 12 + .../templates/_helpers.tpl | 48 + .../templates/knp.yaml | 63 + .../templates/secret.yaml | 28 + .../nr-compliance-enforcement-cm/values.yaml | 567 ++ database/Dockerfile | 5 - database/charts/templates/NOTES.txt | 9 - database/charts/templates/_helpers.tpl | 72 - database/charts/templates/backups.yaml | 82 - database/charts/templates/database.yaml | 127 - database/charts/templates/secret.yaml | 18 - database/charts/values.schema.json | 20 - database/charts/values.yaml | 35 - database/openshift.deploy.yml | 361 -- database/postgis/Dockerfile | 9 - docker-compose.yml | 2 +- frontend/.eslintrc.yml | 2 +- frontend/Dockerfile | 4 +- frontend/cypress/e2e/home-page.cy.ts | 2 +- frontend/index.html | 4 +- frontend/openshift.deploy.yml | 176 - frontend/package-lock.json | 3617 ++++++++---- frontend/package.json | 17 +- frontend/src/__tests__/App.test.tsx | 2 +- frontend/src/components/Header.tsx | 2 +- frontend/src/test-setup.ts | 8 +- integration-tests/package-lock.json | 12 +- migrations/Dockerfile | 12 + .../sql}/V1.0.0__init.sql | 0 .../sql}/V1.0.1__alter_user_seq.sql | 0 renovate.json | 6 +- 64 files changed, 12227 insertions(+), 4810 deletions(-) delete mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/.deploy.yml create mode 100644 .github/workflows/.push-helm-chart.yml create mode 100644 .github/workflows/.tests.yml create mode 100644 .github/workflows/scheduled.yml delete mode 100644 backend/db/Dockerfile delete mode 100644 backend/openshift.deploy.yml rename {database/charts => charts/nr-compliance-enforcement-cm}/.helmignore (100%) create mode 100644 charts/nr-compliance-enforcement-cm/Chart.yaml create mode 100644 charts/nr-compliance-enforcement-cm/README.md create mode 100644 charts/nr-compliance-enforcement-cm/README.md.gotmpl create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/.helmignore rename {database/charts => charts/nr-compliance-enforcement-cm/charts/component}/Chart.yaml (86%) create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/_helpers.tpl create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/configmap.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/cronjob.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/deployment.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/hpa.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/imagestreams.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/ingress.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/pvc.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/route.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/service.yaml create mode 100644 charts/nr-compliance-enforcement-cm/charts/component/templates/serviceaccount.yaml create mode 100644 charts/nr-compliance-enforcement-cm/templates/_helpers.tpl create mode 100644 charts/nr-compliance-enforcement-cm/templates/knp.yaml create mode 100644 charts/nr-compliance-enforcement-cm/templates/secret.yaml create mode 100644 charts/nr-compliance-enforcement-cm/values.yaml delete mode 100644 database/Dockerfile delete mode 100644 database/charts/templates/NOTES.txt delete mode 100644 database/charts/templates/_helpers.tpl delete mode 100644 database/charts/templates/backups.yaml delete mode 100644 database/charts/templates/database.yaml delete mode 100644 database/charts/templates/secret.yaml delete mode 100644 database/charts/values.schema.json delete mode 100644 database/charts/values.yaml delete mode 100644 database/openshift.deploy.yml delete mode 100644 database/postgis/Dockerfile delete mode 100644 frontend/openshift.deploy.yml create mode 100644 migrations/Dockerfile rename {backend/db/migrations => migrations/sql}/V1.0.0__init.sql (100%) rename {backend/db/migrations => migrations/sql}/V1.0.1__alter_user_seq.sql (100%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 0c6a0f92..00000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,8 +0,0 @@ -# Dependency updates for GitHub Actions and npm -# https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot -version: 2 -updates: - - package-ecosystem: github-actions - directory: / - schedule: - interval: daily diff --git a/.github/workflows/.deploy.yml b/.github/workflows/.deploy.yml new file mode 100644 index 00000000..3f4d78e3 --- /dev/null +++ b/.github/workflows/.deploy.yml @@ -0,0 +1,132 @@ +name: .Deploys + +on: + workflow_call: + inputs: + ### Required + release: + description: Deployment release; usually PR number, test or prod + required: true + type: string + + ### Typical / recommended + autoscaling: + description: Autoscaling enabled or not for the deployments + required: false + type: string + default: true + environment: + description: Environment name; omit for PRs + required: false + type: string + tag: + description: Container tag; usually PR number + required: false + type: string + default: ${{ github.event.number }} + triggers: + description: Paths to trigger a deploy; omit=always; e.g. ('backend/' 'frontend/') + required: false + type: string + + ### Usually a bad idea / not recommended + directory: + description: 'Chart directory' + default: 'charts/${{ github.event.repository.name }}' + required: false + type: string + timeout-minutes: + description: 'Timeout minutes' + default: 10 + required: false + type: number + values: + description: 'Values file' + default: 'values.yaml' + required: false + type: string + params: + description: 'Extra parameters to pass to helm upgrade' + default: '' + required: false + type: string + +env: + repo_release: ${{ github.event.repository.name }}-${{ inputs.release }} + package_tag: ${{ inputs.tag }} + +jobs: + deploys: + name: Helm + environment: ${{ inputs.environment }} + runs-on: ubuntu-22.04 + timeout-minutes: ${{ inputs.timeout-minutes }} + steps: + - uses: actions/checkout@v4 + - name: Check Deployment Triggers + id: triggers + run: | + # Expand for trigger processing + + # Always deploy if no triggers are provided + if [ -z "${{ inputs.triggers }}" ]; then + echo "Always deploy when no triggers are provided" + echo "triggered=true" >> $GITHUB_OUTPUT + exit 0 + fi + + # Deploy if changed files (git diff) match triggers + TRIGGERS=${{ inputs.triggers }} + git fetch origin ${{ github.event.repository.default_branch }} + while read -r check; do + for t in "${TRIGGERS[@]}"; do + if [[ "${check}" =~ "${t}" ]]; then + echo "Build triggered based on git diff" + echo -e "${t}\n --> ${check}" + echo "triggered=true" >> $GITHUB_OUTPUT + exit 0 + fi + done + done < <(git diff origin/${{ github.event.repository.default_branch }} --name-only) + + # If here skip deployment + echo "No triggers have fired, deployment skipped" + + - name: Deploy if Triggers Fired + if: ${{ steps.triggers.outputs.triggered == 'true' }} + working-directory: ${{ inputs.directory }} + shell: bash + run: | + oc login --token=${{ secrets.oc_token }} --server=${{ vars.oc_server }} + oc project ${{ vars.OC_NAMESPACE }} # Safeguard! + + # Interrupt any previous jobs (status = pending-upgrade) + PREVIOUS=$(helm status ${{ env.repo_release }} -o json | jq .info.status || true) + if [[ ${PREVIOUS} =~ pending ]]; then + echo "Rollback triggered" + helm rollback ${{ env.repo_release }} || \ + helm uninstall ${{ env.repo_release }} + fi + + # Deploy Helm Chart + helm dependency update + helm package --app-version="${{ env.package_tag }}" --version=${{ inputs.tag }} . + + helm upgrade \ + --set global.autoscaling=${{ inputs.autoscaling }} \ + --set-string global.repository=${{ github.repository }} \ + --set-string global.secrets.databasePassword=${{ secrets.DB_PASSWORD }} \ + --set-string backend.containers[0].tag="${{ env.package_tag }}" \ + --set-string backend.initContainers[0].tag="${{ env.package_tag }}" \ + --set-string frontend.containers[0].tag="${{ env.package_tag }}" \ + ${{ inputs.params }} \ + --install --wait --atomic ${{ env.repo_release }} \ + --timeout ${{ inputs.timeout-minutes }}m \ + --values ${{ inputs.values }} \ + ./${{ github.event.repository.name }}-${{ inputs.tag }}.tgz + + # print history + helm history ${{ env.repo_release }} + + # Remove old build runs, build pods and deployment pods + oc delete po --field-selector=status.phase==Succeeded diff --git a/.github/workflows/.push-helm-chart.yml b/.github/workflows/.push-helm-chart.yml new file mode 100644 index 00000000..71506f16 --- /dev/null +++ b/.github/workflows/.push-helm-chart.yml @@ -0,0 +1,132 @@ +name: .Deploys + +on: + workflow_call: + inputs: + ### Required + release: + description: Deployment release; usually PR number, test or prod + required: true + type: string + + ### Typical / recommended + autoscaling: + description: Autoscaling enabled or not for the deployments + required: false + type: string + default: true + environment: + description: Environment name; omit for PRs + required: false + type: string + tag: + description: Container tag; usually PR number + required: false + type: string + default: ${{ github.event.number }} + triggers: + description: Paths to trigger a deploy; omit=always; e.g. ('backend/' 'frontend/') + required: false + type: string + + ### Usually a bad idea / not recommended + directory: + description: 'Chart directory' + default: 'charts/${{ github.event.repository.name }}' + required: false + type: string + timeout-minutes: + description: 'Timeout minutes' + default: 10 + required: false + type: number + values: + description: 'Values file' + default: 'values.yaml' + required: false + type: string + params: + description: 'Extra parameters to pass to helm upgrade' + default: '' + required: false + type: string + +env: + repo_release: ${{ github.event.repository.name }}-${{ inputs.release }} + package_tag: ${{ inputs.tag }} + +jobs: + deploys: + name: Helm + environment: ${{ inputs.environment }} + runs-on: ubuntu-22.04 + timeout-minutes: ${{ inputs.timeout-minutes }} + steps: + - name: Checkout source repository + uses: actions/checkout@v2 + with: + path: source-repo + + - name: Clean up target repository directory + run: | + if [ -d "target-repo" ]; then + rm -rf target-repo + fi + + - name: Setup SSH for Target Repository + run: | + mkdir -p ~/.ssh + echo "${{ secrets.MANIFEST_REPO_DEPLOY_KEY }}" > ~/.ssh/id_rsa + echo "${{ secrets.MANIFEST_REPO_DEPLOY_KEY_PUB }}" > ~/.ssh/id_rsa.pub + chmod 600 ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa.pub + ssh-keyscan -t rsa github.com >> ~/.ssh/known_hosts + + - name: Checkout target repository using SSH + uses: actions/checkout@v2 + with: + repository: ${{ vars.GITOPS_REPO}} + ssh-key: ${{ secrets.MANIFEST_REPO_DEPLOY_KEY }} + path: 'target-repo' + + - name: Create or Checkout Existing Branch in Target Repository + run: | + cd target-repo + BRANCH_NAME="update-helm-chart-${{ env.package_tag }}" + git fetch origin + if git rev-parse --verify origin/$BRANCH_NAME; then + git checkout $BRANCH_NAME + git merge origin/$BRANCH_NAME -X ours + else + git checkout -b $BRANCH_NAME + fi + + - name: Copy folder from source to target + run: | + if [ -d "source-repo/charts" ]; then + mkdir -p target-repo/helm-chart + cp -r source-repo/charts/nr-compliance-enforcement-cm/* target-repo/helm-chart/ + else + echo "Directory 'charts' does not exist in source repository" + exit 1 + fi + + - name: Commit and Push changes + run: | + cd target-repo + git config --global user.name "${{ vars.GLOBAL_USER}}" + git config --global user.email "${{ vars.GLOBAL_EMAIL}}" + git add . + git commit -m "update helm chart ${{ inputs.tag }}" || true # Avoids failure if there's nothing to commit + git push --set-upstream origin update-helm-chart-${{ inputs.tag }} + + - name: Create Pull Request via GitHub API + env: + GITHUB_TOKEN: ${{ secrets.GITOPS_PAT }} + run: | + curl \ + -X POST \ + -H "Authorization: token $GITHUB_TOKEN" \ + -H "Accept: application/vnd.github.v3+json" \ + https://api.github.com/repos/${{ vars.GITOPS_REPO }}/pulls \ + -d "{\"title\": \"Update Helm Chart\", \"head\": \"update-helm-chart-${{ inputs.tag }}\", \"base\": \"main\", \"body\": \"Automated update of Helm chart\"}" diff --git a/.github/workflows/.tests.yml b/.github/workflows/.tests.yml new file mode 100644 index 00000000..cb4d148c --- /dev/null +++ b/.github/workflows/.tests.yml @@ -0,0 +1,74 @@ +name: .Tests + +on: + workflow_call: + inputs: + ### Required + target: + description: PR number, test or prod + required: true + type: string + +jobs: + integration-tests: + name: Integration Tests + runs-on: ubuntu-22.04 + timeout-minutes: 1 + steps: + - uses: actions/checkout@v4 + - id: cache-npm + uses: actions/cache@v3 + with: + path: ~/.npm + key: ${{ runner.os }}-build-cache-node-modules-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-cache-node-modules- + ${{ runner.os }}-build- + ${{ runner.os }}- + + - name: Integration tests + env: + API_NAME: nest + BASE_URL: https://${{ github.event.repository.name }}-${{ inputs.target }}-frontend.apps.silver.devops.gov.bc.ca + run: | + cd integration-tests + npm ci + node src/main.js + + cypress-e2e: + name: E2E Tests + runs-on: ubuntu-22.04 + defaults: + run: + working-directory: frontend + strategy: + matrix: + browser: [chrome, firefox, edge] + timeout-minutes: 5 + steps: + - uses: actions/checkout@v4 + - id: cache-npm + uses: actions/cache@v3 + with: + path: ~/.npm + key: ${{ runner.os }}-build-cache-node-modules-${{ hashFiles('**/package-lock.json') }} + restore-keys: | + ${{ runner.os }}-build-cache-node-modules- + ${{ runner.os }}-build- + ${{ runner.os }}- + + - uses: cypress-io/github-action@v6 + name: Cypress run + env: + CYPRESS_baseUrl: https://${{ github.event.repository.name }}-${{ inputs.target }}-frontend.apps.silver.devops.gov.bc.ca/ + with: + config: pageLoadTimeout=10000 + working-directory: ./frontend + browser: ${{ matrix.browser }} + + - uses: actions/upload-artifact@v3 + if: failure() + with: + name: cypress-screenshots + path: ./cypress/screenshots + if-no-files-found: ignore # 'warn' or 'error' are also available, defaults to `warn` diff --git a/.github/workflows/analysis.yml b/.github/workflows/analysis.yml index e319a056..f8dc48df 100644 --- a/.github/workflows/analysis.yml +++ b/.github/workflows/analysis.yml @@ -3,6 +3,7 @@ name: Analysis on: push: branches: [main] + merge_group: pull_request: types: [opened, reopened, synchronize, ready_for_review] schedule: @@ -16,8 +17,9 @@ concurrency: jobs: codeql: name: CodeQL - if: github.event_name != 'pull_request' || !github.event.pull_request.draft + if: ${{ ! github.event.pull_request.draft }} runs-on: ubuntu-22.04 + timeout-minutes: 5 steps: - uses: actions/checkout@v4 - uses: github/codeql-action/init@v2 @@ -32,12 +34,13 @@ jobs: # https://github.com/marketplace/actions/aqua-security-trivy trivy: name: Trivy Security Scan - if: github.event_name != 'pull_request' || !github.event.pull_request.draft + if: ${{ ! github.event.pull_request.draft }} runs-on: ubuntu-22.04 + timeout-minutes: 1 steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.12.0 + uses: aquasecurity/trivy-action@0.15.0 with: format: "sarif" output: "trivy-results.sarif" @@ -51,50 +54,53 @@ jobs: with: sarif_file: "trivy-results.sarif" - # tests: - # name: Tests - # if: github.event_name != 'pull_request' || !github.event.pull_request.draft - # runs-on: ubuntu-22.04 - # services: - # postgres: - # image: postgres - # env: - # POSTGRES_DB: postgres - # POSTGRES_USER: postgres - # POSTGRES_PASSWORD: postgres - # options: >- - # --health-cmd pg_isready - # --health-interval 10s - # --health-timeout 5s - # --health-retries 5 - # ports: - # - 5432:5432 - # strategy: - # matrix: - # dir: [backend, frontend] - # include: - # - dir: backend - # sonar_projectKey: nr-compliance-enforcement-cm_backend - # token: SONAR_TOKEN_BACKEND - # triggers: ('backend/') - # - dir: frontend - # sonar_projectKey: nr-compliance-enforcement-cm_frontend - # token: SONAR_TOKEN_FRONTEND - # triggers: ('frontend/') - # steps: - # - uses: bcgov-nr/action-test-and-analyse@v1.1.0 - # with: - # commands: | - # npm ci - # npm run test:cov - # dir: ${{ matrix.dir }} - # node_version: "20" - # sonar_args: > - # -Dsonar.exclusions=**/coverage/**,**/node_modules/**,**/*spec.ts - # -Dsonar.organization=bcgov-sonarcloud - # -Dsonar.projectKey=${{ matrix.sonar_projectKey }} - # -Dsonar.sources=src - # -Dsonar.tests.inclusions=**/*spec.ts - # -Dsonar.javascript.lcov.reportPaths=./coverage/lcov.info - # sonar_token: ${{ secrets[matrix.token] }} - # triggers: ${{ matrix.triggers }} + tests: + name: Tests + if: ${{ ! github.event.pull_request.draft }} + runs-on: ubuntu-22.04 + timeout-minutes: 5 + services: + postgres: + image: postgres + env: + POSTGRES_PASSWORD: postgres + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + strategy: + matrix: + dir: [backend, frontend] + include: + - dir: backend + token: SONAR_TOKEN_BACKEND + - dir: frontend + token: SONAR_TOKEN_FRONTEND + steps: + - uses: bcgov-nr/action-test-and-analyse@v1.1.0 + with: + commands: | + npm ci + npm run test:cov + dir: ${{ matrix.dir }} + node_version: "20" + sonar_args: > + -Dsonar.exclusions=**/coverage/**,**/node_modules/**,**/*spec.ts + -Dsonar.organization=bcgov-sonarcloud + -Dsonar.projectKey=nr-compliance-enforcement-cm-openshift_${{ matrix.dir }} + -Dsonar.sources=src + -Dsonar.tests.inclusions=**/*spec.ts + -Dsonar.javascript.lcov.reportPaths=./coverage/lcov.info + sonar_token: ${{ secrets[matrix.token] }} + triggers: ('${{ matrix.dir }}/') + + results: + name: Results + needs: [codeql, trivy, tests] + runs-on: ubuntu-22.04 + timeout-minutes: 1 + steps: + - run: echo "Success!" diff --git a/.github/workflows/merge.yml b/.github/workflows/merge.yml index fc4d3488..6e3516aa 100644 --- a/.github/workflows/merge.yml +++ b/.github/workflows/merge.yml @@ -1,221 +1,77 @@ name: Merge on: - workflow_run: - workflows: [PR Closed] - types: [completed] + push: + branches: [main] + paths-ignore: + - '*.md' + - '.github/**' + - '.graphics/**' + - '!.github/workflows/.deploy.yml' + - '!.github/workflows/merge.yml' workflow_dispatch: - -concurrency: - group: ${{ github.workflow }} - cancel-in-progress: true + inputs: + pr_no: + description: "PR-numbered container set to deploy" + type: number + required: true jobs: - deploys-test: - name: TEST Deploys - environment: test + vars: + name: Set Variables + outputs: + pr: ${{ steps.pr.outputs.pr }} runs-on: ubuntu-22.04 - permissions: - issues: write - strategy: - matrix: - name: [database, backend, frontend] - include: - - name: database - file: database/openshift.deploy.yml - overwrite: false - - name: backend - file: backend/openshift.deploy.yml - parameters: -p PROMOTE_MIGRATION=${{ github.repository }}/migrations:test - overwrite: true - verification_path: /api - - name: frontend - file: frontend/openshift.deploy.yml - overwrite: true + timeout-minutes: 1 steps: - - uses: bcgov-nr/action-deployer-openshift@v2.0.0 - with: - file: ${{ matrix.file }} - oc_namespace: ${{ vars.OC_NAMESPACE }} - oc_server: ${{ vars.OC_SERVER }} - oc_token: ${{ secrets.OC_TOKEN }} - overwrite: ${{ matrix.overwrite }} - parameters: - -p ZONE=test -p PROMOTE=${{ github.repository }}/${{ matrix.name }}:test - -p NAME=${{ github.event.repository.name }} ${{ matrix.parameters }} - penetration_test: true - name: ${{ matrix.name }} - penetration_test_token: ${{ secrets.GITHUB_TOKEN }} - verification_path: ${{ matrix.verification_path }} + # Get PR number for squash merges to main + - name: PR Number + id: pr + uses: bcgov-nr/action-get-pr@v0.0.1 - integration-tests: - needs: [deploys-test] - name: Integration Tests for APIs - defaults: - run: - working-directory: integration-tests - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@v4 - - id: cache-npm - uses: actions/cache@v3 - with: - path: ~/.npm - key: ${{ runner.os }}-build-cache-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-cache-node-modules- - ${{ runner.os }}-build- - ${{ runner.os }}- - - if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} - name: List the state of node modules - continue-on-error: true - run: npm list - - name: Install dependencies - run: npm ci - - name: Run integration tests - run: BASE_URL=https://nr-compliance-enforcement-cm-test-backend.apps.silver.devops.gov.bc.ca API_NAME=nest node src/main.js - - cypress-e2e: - name: Cypress end to end test - needs: [deploys-test] - runs-on: ubuntu-22.04 - defaults: - run: - working-directory: frontend - strategy: - matrix: - browser: [chrome, firefox, edge] - steps: - - uses: actions/checkout@v4 - - id: cache-npm - uses: actions/cache@v3 - with: - path: ~/.npm - key: ${{ runner.os }}-build-cache-node-modules-${{ hashFiles('**/package-lock.json') }} - restore-keys: | - ${{ runner.os }}-build-cache-node-modules- - ${{ runner.os }}-build- - ${{ runner.os }}- - - if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }} - name: List the state of node modules - continue-on-error: true - run: npm list - - uses: cypress-io/github-action@v6 - name: Cypress run - with: - config: pageLoadTimeout=10000,baseUrl=https://nr-compliance-enforcement-cm-test-frontend.apps.silver.devops.gov.bc.ca/ - working-directory: ./frontend - browser: ${{ matrix.browser }} - - uses: actions/upload-artifact@v3 - if: failure() - with: - name: cypress-screenshots - path: ./cypress/screenshots - if-no-files-found: ignore # 'warn' or 'error' are also available, defaults to `warn` + deploy-test: + name: Deploy (test) + needs: [vars] + uses: ./.github/workflows/.deploy.yml + secrets: inherit + with: + autoscaling: false + environment: test + tag: ${{ needs.vars.outputs.pr }} + release: test - ghcr-cleanup: - name: GHCR Cleanup - runs-on: ubuntu-latest - strategy: - matrix: - name: [database, migrations, backend, frontend] - steps: - - name: Keep last 50 - uses: actions/delete-package-versions@v4 - with: - package-name: "${{ github.event.repository.name }}/${{ matrix.name }}" - package-type: "container" - min-versions-to-keep: 50 - ignore-versions: "^(prod|test)$" + integration-e2e: + name: Integration and E2E Tests + needs: [deploy-test, vars] + uses: ./.github/workflows/.tests.yml + with: + target: test - deploys-prod: - name: PROD Deploys - needs: [integration-tests, cypress-e2e] - environment: prod - runs-on: ubuntu-22.04 - strategy: - matrix: - name: [database, backend, frontend] - include: - - name: database - file: database/openshift.deploy.yml - overwrite: false - - name: backend - file: backend/openshift.deploy.yml - parameters: -p PROMOTE_MIGRATION=${{ github.repository }}/migrations:test - overwrite: true - verification_path: /api - - name: frontend - file: frontend/openshift.deploy.yml - overwrite: true - steps: - - uses: bcgov-nr/action-deployer-openshift@v2.0.0 - with: - file: ${{ matrix.file }} - oc_namespace: ${{ vars.OC_NAMESPACE }} - oc_server: ${{ vars.OC_SERVER }} - oc_token: ${{ secrets.OC_TOKEN }} - overwrite: ${{ matrix.overwrite }} - parameters: - -p ZONE=prod -p PROMOTE=${{ github.repository }}/${{ matrix.name }}:test - -p NAME=${{ github.event.repository.name }} ${{ matrix.parameters }} - penetration_test: false - verification_path: ${{ matrix.verification_path }} + deploy-prod: + name: Deploy (prod) + needs: [integration-e2e, vars] + uses: ./.github/workflows/.deploy.yml + secrets: inherit + with: + environment: prod + tag: ${{ needs.vars.outputs.pr }} + release: prod + params: --set backend.deploymentStrategy.type=RollingUpdate --set frontend.deploymentStrategy.type=RollingUpdate - image-promotions: - name: Promote images - needs: [deploys-prod] + promote: + name: Promote Images + needs: [deploy-prod, vars] runs-on: ubuntu-22.04 permissions: packages: write strategy: matrix: - component: [database, backend, frontend] + package: [migrations, backend, frontend] + timeout-minutes: 1 steps: - uses: shrink/actions-docker-registry-tag@v3 with: registry: ghcr.io - repository: ${{ github.repository }}/${{ matrix.component }} - target: test + repository: ${{ github.repository }}/${{ matrix.package }} + target: ${{ needs.vars.outputs.pr }} tags: prod - - generate-schema-spy: - name: Generate SchemaSpy Documentation - runs-on: ubuntu-22.04 - services: - postgres: - image: postgres - env: - POSTGRES_DB: default - POSTGRES_USER: default - POSTGRES_PASSWORD: default - options: >- - --health-cmd pg_isready - --health-interval 10s - --health-timeout 5s - --health-retries 5 - ports: - - 5432:5432 - steps: - - uses: actions/checkout@v4 - - uses: joshuaavalon/flyway-action@v3.0.0 - name: Generate SchemaSpy docs for node backend - with: - url: jdbc:postgresql://postgres:5432/default - user: default - password: default - env: - FLYWAY_VALIDATE_MIGRATION_NAMING: true - FLYWAY_LOCATIONS: filesystem:./backend/db/migrations - FLYWAY_DEFAULT_SCHEMA: "users" - - name: Create Output Folder - run: | - mkdir output - chmod a+rwx -R output - - name: Run Schemaspy - run: docker run --network host -v "$PWD/output:/output" schemaspy/schemaspy:6.2.4 -t pgsql -db default -host 127.0.0.1 -port 5432 -u default -p default -schemas users - - name: Deploy to Pages - uses: JamesIves/github-pages-deploy-action@v4 - with: - folder: output - target-folder: schemaspy diff --git a/.github/workflows/pr-close.yml b/.github/workflows/pr-close.yml index e3c7057a..e3b94244 100644 --- a/.github/workflows/pr-close.yml +++ b/.github/workflows/pr-close.yml @@ -1,44 +1,50 @@ -name: PR Closed +# name: PR Closed -on: - pull_request: - branches: [main] - types: [closed] +# on: +# pull_request: +# types: [closed] -concurrency: - # PR open and close use the same group, allowing only one at a time - group: pr-${{ github.workflow }}-${{ github.event.number }} - cancel-in-progress: true +# concurrency: +# # PR open and close use the same group, allowing only one at a time +# group: pr-${{ github.workflow }}-${{ github.event.number }} +# cancel-in-progress: true -jobs: - # Clean up OpenShift when PR closed, no conditions - cleanup-openshift: - name: Cleanup OpenShift - if: "!github.event.pull_request.head.repo.fork" - runs-on: ubuntu-22.04 - steps: - - name: Remove OpenShift artifacts - run: | - oc login --token=${{ secrets.OC_TOKEN }} --server=${{ vars.OC_SERVER }} - oc project ${{ vars.OC_NAMESPACE }} +# jobs: +# # Clean up OpenShift when PR closed, no conditions +# cleanup-openshift: +# name: Cleanup OpenShift +# env: +# release: ${{ github.event.repository.name }}-${{ github.event.number }} +# runs-on: ubuntu-22.04 +# timeout-minutes: 10 +# steps: +# - name: Remove OpenShift artifacts +# run: | +# oc login --token=${{ secrets.OC_TOKEN }} --server=${{ vars.OC_SERVER }} +# oc project ${{ vars.OC_NAMESPACE }} # Safeguard! - # Remove old build runs, build pods and deployment pods - oc delete all,pvc,secret -l app=${{ github.event.repository.name }}-${{ github.event.number }} +# # If found, then remove +# helm status ${{ env.release }} && helm uninstall --no-hooks ${{ env.release }} || \ +# echo "Not found: ${{ env.release }}" - # If merged into main, then handle any image promotions - image-promotions: - name: Image Promotions - if: github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main' - runs-on: ubuntu-22.04 - permissions: - packages: write - strategy: - matrix: - package: [database, migrations, backend, frontend] - steps: - - uses: shrink/actions-docker-registry-tag@v3 - with: - registry: ghcr.io - repository: ${{ github.repository }}/${{ matrix.package }} - target: ${{ github.event.number }} - tags: test +# # Remove Bitnami Crunchy PVCs +# oc delete pvc data-${{ env.release }}-bitnami-pg-0 || \ +# echo "Not found: pvc data-${{ env.release }}-bitnami-pg-0" + +# # Add tags to PR image +# retags: +# name: Promote Images +# runs-on: ubuntu-22.04 +# permissions: +# packages: write +# strategy: +# matrix: +# package: [migrations, backend, frontend] +# timeout-minutes: 1 +# steps: +# - uses: shrink/actions-docker-registry-tag@v3 +# with: +# registry: ghcr.io +# repository: ${{ github.repository }}/${{ matrix.package }} +# target: ${{ github.event.number }} +# tags: latest diff --git a/.github/workflows/pr-open.yml b/.github/workflows/pr-open.yml index ad8d0246..2952fb8b 100644 --- a/.github/workflows/pr-open.yml +++ b/.github/workflows/pr-open.yml @@ -2,114 +2,93 @@ name: PR on: pull_request: - branches: [main] - workflow_dispatch: + merge_group: concurrency: - # PR open and close use the same group, allowing only one at a time - group: pr-${{ github.workflow }}-${{ github.event.number }} + # Cancel in progress for PR open and close, but not merge_group + group: ${{ github.workflow }}-${{ github.event.number || github.event.merge_group.base_sha }} cancel-in-progress: true jobs: - pr-greeting: - if: "!github.event.pull_request.head.repo.fork" - name: PR Greeting + # PR only, skip for merge_group + conventional-commits: + name: Conventional Commits + if: github.event_name == 'pull_request' + runs-on: ubuntu-22.04 + steps: + - uses: amannn/action-semantic-pull-request@v5.4.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # PR only, skip for merge_group + pr-description-add: + name: PR Description Add + if: github.event_name == 'pull_request' env: DOMAIN: apps.silver.devops.gov.bc.ca - PREFIX: ${{ github.event.repository.name }}-${{ github.event.number }} + PREFIX: ${{ github.event.repository.name }} runs-on: ubuntu-22.04 permissions: pull-requests: write + timeout-minutes: 1 steps: - - name: PR Greeting - uses: bcgov-nr/action-pr-description-add@v1.1.0 + - uses: bcgov-nr/action-pr-description-add@v1.1.0 with: - github_token: ${{ secrets.GITHUB_TOKEN }} add_markdown: | --- Thanks for the PR! Deployments, as required, will be available below: - - [Frontend](https://${{ env.PREFIX }}-frontend.${{ env.DOMAIN }}) - - [Backend](https://${{ env.PREFIX }}-backend.${{ env.DOMAIN }}) + - [Frontend](https://${{ env.PREFIX }}-${{ github.event.number }}-frontend.${{ env.DOMAIN }}) + - [Backend](https://${{ env.PREFIX }}-${{ github.event.number }}-frontend.${{ env.DOMAIN }}/api) Please create PRs in draft mode. Mark as ready to enable: - [Analysis Workflow](https://github.com/${{ github.repository }}/actions/workflows/analysis.yml) - After merge, new images are promoted to: - - [Merge Workflow](https://github.com/${{ github.repository }}/actions/workflows/merge-main.yml) + After merge, new images are deployed in: + - [Merge Workflow](https://github.com/${{ github.repository }}/actions/workflows/merge.yml) + + # Find initial PR number (for merge queues) + vars: + name: Set Variables + outputs: + pr: ${{ steps.pr.outputs.pr }} + runs-on: ubuntu-22.04 + steps: + # Get PR number for merge queues, otherwise use github.event.number + - name: PR Number + id: pr + uses: bcgov-nr/action-get-pr@v0.0.1 # https://github.com/bcgov-nr/action-builder-ghcr builds: name: Builds - if: "!github.event.pull_request.head.repo.fork" + needs: [vars] runs-on: ubuntu-22.04 permissions: packages: write strategy: matrix: - package: [database, migrations, backend, frontend] - include: - - package: database - triggers: ('database/') - - package: migrations - build_context: ./backend/db - build_file: ./backend/db/Dockerfile - triggers: ('backend/db') - - package: backend - triggers: ('backend/') - - package: frontend - triggers: ('frontend/') + package: [migrations, backend, frontend] + timeout-minutes: 10 steps: - - uses: bcgov-nr/action-builder-ghcr@v1.3.0 + - uses: bcgov-nr/action-builder-ghcr@v2.0.1 with: + keep_versions: 50 package: ${{ matrix.package }} - tag: ${{ github.event.number }} - tag_fallback: test - token: ${{ secrets.GITHUB_TOKEN }} - triggers: ${{ matrix.triggers }} - build_context: ${{ matrix.build_context }} - build_file: ${{ matrix.build_file }} + tag: ${{ needs.vars.outputs.pr }} + tag_fallback: latest + triggers: ('${{ matrix.package }}/') - # https://github.com/bcgov-nr/action-deployer-openshift deploys: name: Deploys - if: "!github.event.pull_request.head.repo.fork" - needs: [builds] - runs-on: ubuntu-22.04 - strategy: - matrix: - name: [database, backend, frontend] - include: - - name: database - file: database/openshift.deploy.yml - overwrite: false - triggers: ('database/' 'backend/' 'frontend/') - - name: backend - file: backend/openshift.deploy.yml - overwrite: true - parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2 - -p PROMOTE_MIGRATION=${{ github.repository }}/migrations:${{ github.event.number }} - triggers: ('database/' 'backend/' 'frontend/') - verification_path: /api - - name: frontend - file: frontend/openshift.deploy.yml - overwrite: true - parameters: -p MIN_REPLICAS=1 -p MAX_REPLICAS=2 - triggers: ('database/' 'backend/' 'frontend/') - steps: - - uses: bcgov-nr/action-deployer-openshift@v2.0.0 - with: - file: ${{ matrix.file }} - oc_namespace: ${{ vars.OC_NAMESPACE }} - oc_server: ${{ vars.OC_SERVER }} - oc_token: ${{ secrets.OC_TOKEN }} - overwrite: ${{ matrix.overwrite }} - penetration_test: false - parameters: - -p ZONE=${{ github.event.number }} -p NAME=${{ github.event.repository.name }} - -p PROMOTE=${{ github.repository }}/${{ matrix.name }}:${{ github.event.number }} - ${{ matrix.parameters }} - triggers: ${{ matrix.triggers }} - verification_path: ${{ matrix.verification_path }} + needs: [builds, vars] + uses: ./.github/workflows/.push-helm-chart.yml + secrets: inherit + with: + autoscaling: false + directory: charts/nr-compliance-enforcement-cm + tag: ${{ needs.vars.outputs.pr }} + release: ${{ needs.vars.outputs.pr }} + triggers: ('backend/' 'frontend/' 'migrations/' 'charts/') \ No newline at end of file diff --git a/.github/workflows/scheduled.yml b/.github/workflows/scheduled.yml new file mode 100644 index 00000000..20aa0a9a --- /dev/null +++ b/.github/workflows/scheduled.yml @@ -0,0 +1,110 @@ +name: Scheduled + +on: + schedule: [cron: "0 11 * * 6"] # 3 AM PST = 12 PM UDT, Saturdays + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + zap_scan: + runs-on: ubuntu-latest + name: Penetration Tests + env: + DOMAIN: apps.silver.devops.gov.bc.ca + PREFIX: ${{ github.event.repository.name }}-test + strategy: + matrix: + name: [backend, frontend] + steps: + - name: ZAP Scan + uses: zaproxy/action-full-scan@v0.8.0 + with: + allow_issue_writing: true + artifact_name: "zap_${{ matrix.name }}" + cmd_options: "-a" + issue_title: "ZAP: ${{ matrix.name }}" + target: https://${{ env.PREFIX }}-${{ matrix.name }}.${{ env.DOMAIN }} + + generate-schema-spy: + name: Generate SchemaSpy Documentation + runs-on: ubuntu-22.04 + services: + postgres: + image: postgres + env: + POSTGRES_DB: default + POSTGRES_USER: default + POSTGRES_PASSWORD: default + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + ports: + - 5432:5432 + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - uses: joshuaavalon/flyway-action@v3.0.0 + name: Generate SchemaSpy docs for node backend + with: + url: jdbc:postgresql://postgres:5432/default + user: default + password: default + env: + FLYWAY_VALIDATE_MIGRATION_NAMING: true + FLYWAY_LOCATIONS: filesystem:./migrations + FLYWAY_DEFAULT_SCHEMA: "users" + + - name: Create Output Folder + run: | + mkdir output + chmod a+rwx -R output + + - name: Run Schemaspy + run: docker run --network host -v "$PWD/output:/output" schemaspy/schemaspy:6.2.4 -t pgsql -db default -host 127.0.0.1 -port 5432 -u default -p default -schemas users + - name: Deploy to Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: output + target-folder: schemaspy + + ageOutPRs: + name: PR Env Purge + env: + # https://tecadmin.net/getting-yesterdays-date-in-bash/ + CUTOFF: "1 week ago" + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - name: Clean up Helm Releases + run: | + oc login --token=${{ secrets.OC_TOKEN }} --server=${{ vars.OC_SERVER }} + oc project ${{ vars.OC_NAMESPACE }} # Safeguard! + + # Echos + echo "Delete stale Helm releases" + echo "Cutoff: ${{ env.CUTOFF }}" + + # Before date, list of releases + BEFORE=$(date +%s -d "${{ env.CUTOFF }}") + RELEASES=$(helm ls -aq) + + # If releases, then iterate + [ -z "${RELEASES}" ]|| for r in ${RELEASES[@]}; do + + # Get last update and convert the date + UPDATED=$(date "+%s" -d <<< echo $(helm status $r -o json | jq -r .info.last_deployed)) + + # Compare to cutoff and delete as necessary + if [[ ${UPDATED} < ${BEFORE} ]]; then + echo -e "\nOlder than cutoff: ${r}" + helm uninstall --no-hooks ${r} + else + echo -e "\nNewer than cutoff: ${r}" + echo "No need to delete" + fi + done diff --git a/.gitignore b/.gitignore index 4298d017..66a05f95 100644 --- a/.gitignore +++ b/.gitignore @@ -64,9 +64,6 @@ typings/ # Optional REPL history .node_repl_history -# Output of 'npm pack' -*.tgz - # Yarn Integrity file .yarn-integrity @@ -120,3 +117,6 @@ test-report.xml # VSCode .vscode/ + +# Mac +.DS_Store \ No newline at end of file diff --git a/.graphics/template.png b/.graphics/template.png index b04b353a2a4d38edb5125f9c6d2899f4c44c25f1..7841f9c9e6d99cc41a34db6ed489ec00e0fafe0d 100644 GIT binary patch literal 39709 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 Im94}759Pd!RR910 literal 39102 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 R39JAB002ovPDHLkV1f+0b4UOH diff --git a/README.md b/README.md index c96b2a94..fbf01262 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,9 @@ [![MIT License](https://img.shields.io/github/license/bcgov/quickstart-openshift.svg)](/LICENSE.md) [![Lifecycle](https://img.shields.io/badge/Lifecycle-Experimental-339999)](https://github.com/bcgov/repomountie/blob/master/doc/lifecycle-badges.md) -[![Merge](https://github.com/bcgov/quickstart-openshift/actions/workflows/merge.yml/badge.svg)](https://github.com/bcgov/quickstart-openshift/actions/workflows/merge-main.yml) + +[![Merge](https://github.com/bcgov/quickstart-openshift/actions/workflows/merge.yml/badge.svg)](https://github.com/bcgov/quickstart-openshift/actions/workflows/merge.yml) [![Analysis](https://github.com/bcgov/quickstart-openshift/actions/workflows/analysis.yml/badge.svg)](https://github.com/bcgov/quickstart-openshift/actions/workflows/analysis.yml) +[![Scheduled](https://github.com/bcgov/quickstart-openshift/actions/workflows/scheduled.yml/badge.svg)](https://github.com/bcgov/quickstart-openshift/actions/workflows/scheduled.yml) ##### Frontend (JavaScript/TypeScript) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=quickstart-openshift_frontend&metric=bugs)](https://sonarcloud.io/summary/new_code?id=quickstart-openshift_frontend) @@ -36,9 +38,10 @@ Features: * Sandboxed development environments * Gateable production deployments * Container publishing (ghcr.io) and importing (OpenShift) -* Security, vulnerability, infrastructure and container scan tools +* Security, vulnerability, infrastructure, and container scan tools * Automatic dependency patching available from [bcgov/nr-renovate](https://github.com/bcgov/nr-renovate) * Enforced code reviews and workflow jobs (pass|fail) +* Helm Package Manager for atomic deployments * Sample application stack: * Database: Postgres, PostGIS, backups * Frontend: TypeScript, Caddy Server @@ -164,23 +167,23 @@ Environments provide a [number of features](https://docs.github.com/en/actions/d Dependabot and Mend Renovate can both provide dependency updates using pull requests. Dependabot is simpler to configure, while Renovate is much more configurable and lighter on resources. -### Self-Hosted Renovate +### Renovate -Renovate is provided by DevOps at the Natural Resources. Support is best effort. It is our recommended path, due to being highly configurable and light on resources. +A config file (`renovate.json`) is included with this template. It can source config from our [renovate repository](https://github.com/bcgov/renovate-config). Renovate can be [self-hosted](https://github.com/renovatebot/github-action) or run using the GitHub App managed at the organization level. For BC Government the OCIO controls this application, so please opt in with them using a GitHub issue. To opt-in: - * Provide our bot, `bcgov-renovate`, write access to a repository - * Sign up with us by [pick one]: - * Add your repository to our [list](https://github.com/bcgov/nr-renovate/blob/main/renovate.json#L21) using a pull request - * OR write us [an issue](https://github.com/bcgov/nr-renovate/issues/new/choose) providing your repository name +* Visit [BCDevOps Requests](https://github.com/BCDevOps/devops-requests) +* Select [Issues](https://github.com/BCDevOps/devops-requests/issues) +* Select [New Issue](https://github.com/BCDevOps/devops-requests/issues/new/choose) +* Select [Request for integrating a GitHub App](https://github.com/BCDevOps/devops-requests/issues/new?assignees=MonicaG%2C+oomIRL%2C+SHIHO-I&labels=github-app%2C+pending&projects=&template=github_integration_request.md&title=) +* Create a meaningful title, e.g. `Request to add X repo to Renovate App` +* Fill out the description providing a repository name +* Select "Submit new issue" +* Wait for Renovate to start sending pull requests to your repository ### Dependabot -Dependabot is configurable from the following file. More information is available [here](https://docs.github.com/en/code-security/dependabot/working-with-dependabot/keeping-your-actions-up-to-date-with-dependabot). - -Please be aware that Dependabot requires its own set of secrets to be configured. Navigation: - -> Click Settings > Secrets and Variables > Actions > Variables > New repository variable +Dependabot is no longer recommended as an alternative to Renovate for generating security, vulnerability and dependency pull requests. It can still be used to generate warnings under the GitHub Security tab, which is only viewable by repository administrators. ## Repository Configuration diff --git a/backend/Dockerfile b/backend/Dockerfile index 09b93273..a1108a50 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,6 +1,6 @@ # Build static files # Node Bullseye has npm -FROM node:20.7.0-bullseye-slim AS build +FROM node:20.10.0-bullseye-slim AS build # Install packages, build and keep only prod packages WORKDIR /app diff --git a/backend/db/Dockerfile b/backend/db/Dockerfile deleted file mode 100644 index adc8bd74..00000000 --- a/backend/db/Dockerfile +++ /dev/null @@ -1,12 +0,0 @@ -FROM flyway/flyway:9.22-alpine - -# Non-root user -RUN adduser -D app -USER app - -# Copy migrations -COPY ./migrations /flyway/sql - -# Startup and health check -CMD ["info","migrate","info"] -HEALTHCHECK --interval=300s --timeout=30s CMD info diff --git a/backend/openshift.deploy.yml b/backend/openshift.deploy.yml deleted file mode 100644 index df18fb0c..00000000 --- a/backend/openshift.deploy.yml +++ /dev/null @@ -1,251 +0,0 @@ -apiVersion: template.openshift.io/v1 -kind: Template -parameters: - - name: NAME - description: Module name - value: nr-compliance-enforcement-cm - - name: COMPONENT - description: Component name - value: backend - - name: ZONE - description: Deployment zone, e.g. pr-### or prod - required: true - - name: IMAGE_TAG - description: Image tag to use - value: latest - - name: DOMAIN - value: apps.silver.devops.gov.bc.ca - - name: CPU_REQUEST - value: "25m" - - name: MEMORY_REQUEST - value: "50Mi" - - name: CPU_LIMIT - value: "75m" - - name: MEMORY_LIMIT - value: "150Mi" - - name: CPU_REQUEST_INIT - value: "125m" - - name: MEMORY_REQUEST_INIT - value: "100Mi" - - name: CPU_LIMIT_INIT - value: "250m" - - name: MEMORY_LIMIT_INIT - value: "250Mi" - - name: MIN_REPLICAS - description: The minimum amount of replicas for the horizontal pod autoscaler. - value: "3" - - name: MAX_REPLICAS - description: The maximum amount of replicas for the horizontal pod autoscaler. - value: "5" - - name: REGISTRY - description: Container registry to import from (internal is image-registry.openshift-image-registry.svc:5000) - value: ghcr.io - - name: ORG_NAME - description: Organization name, e.g. bcgov - value: bcgov - - name: PROMOTE - description: Image (namespace/name:tag) to promote/import - value: bcgov/nr-compliance-enforcement-cm/backend:test - - name: PROMOTE_MIGRATION - description: Image (namespace/name:tag) for migration to promote/import - value: bcgov/nr-compliance-enforcement-cm/migrations:test - - name: COMPONENT_DB_MIGRATION - description: Component name for database migrations - value: migrations -objects: - - apiVersion: v1 - kind: ImageStream - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - lookupPolicy: - local: false - tags: - - name: "${IMAGE_TAG}" - from: - kind: DockerImage - name: "${REGISTRY}/${PROMOTE}" - referencePolicy: - type: Local - - apiVersion: v1 - kind: ImageStream - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT_DB_MIGRATION}" - spec: - lookupPolicy: - local: false - tags: - - name: "${IMAGE_TAG}" - from: - kind: DockerImage - name: "${REGISTRY}/${PROMOTE_MIGRATION}" - referencePolicy: - type: Local - - apiVersion: v1 - kind: DeploymentConfig - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - replicas: 1 - triggers: - - type: ConfigChange - - type: ImageChange - imageChangeParams: - automatic: true - containerNames: - - "${NAME}" - from: - kind: ImageStreamTag - name: "${NAME}-${ZONE}-${COMPONENT}:${IMAGE_TAG}" - - type: ImageChange - imageChangeParams: - automatic: true - containerNames: - - "${NAME}-${COMPONENT_DB_MIGRATION}" - from: - kind: ImageStreamTag - name: "${NAME}-${ZONE}-${COMPONENT_DB_MIGRATION}:${IMAGE_TAG}" - selector: - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - strategy: - type: Rolling - template: - metadata: - labels: - app: "${NAME}-${ZONE}" - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - spec: - containers: - - image: "${NAME}-${ZONE}-${COMPONENT}:${IMAGE_TAG}" - imagePullPolicy: Always - name: "${NAME}" - env: - - name: POSTGRES_HOST - value: "${NAME}-${ZONE}-database" - - name: POSTGRES_DATABASE - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: database-name - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: database-password - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: database-user - ports: - - containerPort: 3000 - protocol: TCP - resources: - requests: - cpu: "${CPU_REQUEST}" - memory: "${MEMORY_REQUEST}" - limits: - cpu: "${CPU_LIMIT}" - memory: "${MEMORY_LIMIT}" - readinessProbe: - httpGet: - path: /api - port: 3000 - scheme: HTTP - initialDelaySeconds: 5 - periodSeconds: 2 - timeoutSeconds: 2 - successThreshold: 1 - failureThreshold: 30 - livenessProbe: - successThreshold: 1 - failureThreshold: 3 - httpGet: - path: /api - port: 3000 - scheme: HTTP - initialDelaySeconds: 60 - periodSeconds: 30 - timeoutSeconds: 5 - initContainers: - - name: "${NAME}-${COMPONENT_DB_MIGRATION}" - image: "${NAME}-${ZONE}-${COMPONENT_DB_MIGRATION}:${IMAGE_TAG}" - env: - - name: FLYWAY_URL - value: "jdbc:postgresql://${NAME}-${ZONE}-database:5432/${NAME}" - - name: FLYWAY_USER - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: database-user - - name: FLYWAY_PASSWORD - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: database-password - - name: FLYWAY_BASELINE_ON_MIGRATE - value: "true" - - name: FLYWAY_DEFAULT_SCHEMA - value: "USERS" - resources: - requests: - cpu: "${CPU_REQUEST_INIT}" - memory: "${MEMORY_REQUEST_INIT}" - limits: - cpu: "${CPU_LIMIT_INIT}" - memory: "${MEMORY_LIMIT_INIT}" - - apiVersion: v1 - kind: Service - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - ports: - - name: 3000-tcp - protocol: TCP - port: 80 - targetPort: 3000 - selector: - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - - apiVersion: route.openshift.io/v1 - kind: Route - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - host: "${NAME}-${ZONE}-${COMPONENT}.${DOMAIN}" - port: - targetPort: 3000-tcp - to: - kind: Service - name: "${NAME}-${ZONE}-${COMPONENT}" - weight: 100 - tls: - termination: edge - insecureEdgeTerminationPolicy: Redirect - - apiVersion: autoscaling/v2 - kind: HorizontalPodAutoscaler - metadata: - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - scaleTargetRef: - apiVersion: apps.openshift.io/v1 - kind: DeploymentConfig - name: "${NAME}-${ZONE}-${COMPONENT}" - minReplicas: "${{MIN_REPLICAS}}" - maxReplicas: "${{MAX_REPLICAS}}" - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 100 diff --git a/backend/package-lock.json b/backend/package-lock.json index 15ecb71b..4ae99454 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -17,19 +17,19 @@ "@nestjs/typeorm": "^10.0.0", "dotenv": "^16.0.1", "helmet": "^7.0.0", - "nest-winston": "^1.9.3", - "pg": "^8.7.3", + "nest-winston": "^1.9.4", + "pg": "^8.11.3", "reflect-metadata": "^0.1.13", "rimraf": "^5.0.0", "rxjs": "^7.8.0", "swagger-ui-express": "^5.0.0", "typeorm": "^0.3.17", - "winston": "^3.9.0" + "winston": "^3.11.0" }, "devDependencies": { "@types/express": "^4.17.15", "@types/jest": "^29.0.0", - "@types/node": "^18.17.12", + "@types/node": "^20.0.0", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^6.5.0", "@typescript-eslint/parser": "^6.5.0", @@ -42,18 +42,27 @@ "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^6.1.1", "istanbul-badges-readme": "^1.8.4", - "jest": "^29.0.0", + "jest": "^29.7.0", "jest-badges": "^0.1.3", "jest-sonar-reporter": "^2.0.0", - "lint-staged": "^14.0.0", - "prettier": "^3.0.0", - "source-map-support": "^0.5.20", + "lint-staged": "^15.0.2", + "prettier": "^3.0.3", + "source-map-support": "^0.5.21", "supertest": "^6.3.3", - "ts-jest": "^29.0.5", - "ts-loader": "^9.4.2", - "ts-node": "^10.3.0", - "tsconfig-paths": "^4.1.2", - "typescript": "^4.9.4" + "ts-jest": "^29.1.1", + "ts-loader": "^9.5.0", + "ts-node": "^10.9.1", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.2.2" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, "node_modules/@ampproject/remapping": { @@ -70,13 +79,14 @@ } }, "node_modules/@angular-devkit/core": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.1.0.tgz", - "integrity": "sha512-mrWpuDvttmhrCGcLc68RIXKtTzUhkBTsE5ZZFZNO1+FSC+vO/ZpyCpPd6C+6coM68NfXYjHlms5XF6KbxeGn/Q==", + "version": "16.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.8.tgz", + "integrity": "sha512-PTGozYvh1Bin5lB15PwcXa26Ayd17bWGLS3H8Rs0s+04mUDvfNofmweaX1LgumWWy3nCUTDuwHxX10M3G0wE2g==", "dependencies": { "ajv": "8.12.0", "ajv-formats": "2.1.1", "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", "rxjs": "7.8.1", "source-map": "0.7.4" }, @@ -95,13 +105,13 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.1.0.tgz", - "integrity": "sha512-LM35PH9DT3eQRSZgrkk2bx1ZQjjVh8BCByTlr37/c+FnF9mNbeBsa1YkxrlsN/CwO+045OwEwRHnkM9Zcx0U/A==", + "version": "16.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.8.tgz", + "integrity": "sha512-MBiKZOlR9/YMdflALr7/7w/BGAfo/BGTrlkqsIB6rDWV1dYiCgxI+033HsiNssLS6RQyCFx/e7JA2aBBzu9zEg==", "dependencies": { - "@angular-devkit/core": "16.1.0", + "@angular-devkit/core": "16.2.8", "jsonc-parser": "3.2.0", - "magic-string": "0.30.0", + "magic-string": "0.30.1", "ora": "5.4.1", "rxjs": "7.8.1" }, @@ -112,12 +122,12 @@ } }, "node_modules/@angular-devkit/schematics-cli": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-16.2.0.tgz", - "integrity": "sha512-f3HjrDvSrRMvESogLsqsZXsEg//trIBySCHRXCglPrWLVdBbIRctGOhXqZoclRxXimIKUx14zLsOWzDwZG8+HQ==", + "version": "16.2.8", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics-cli/-/schematics-cli-16.2.8.tgz", + "integrity": "sha512-EXURJCzWTVYCipiTT4vxQQOrF63asOUDbeOy3OtiSh7EwIUvxm3BPG6hquJqngEnI/N6bA75NJ1fBhU6Hrh7eA==", "dependencies": { - "@angular-devkit/core": "16.2.0", - "@angular-devkit/schematics": "16.2.0", + "@angular-devkit/core": "16.2.8", + "@angular-devkit/schematics": "16.2.8", "ansi-colors": "4.1.3", "inquirer": "8.2.4", "symbol-observable": "4.0.0", @@ -132,48 +142,6 @@ "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/schematics-cli/node_modules/@angular-devkit/core": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.0.tgz", - "integrity": "sha512-l1k6Rqm3YM16BEn3CWyQKrk9xfu+2ux7Bw3oS+h1TO4/RoxO2PgHj8LLRh/WNrYVarhaqO7QZ5ePBkXNMkzJ1g==", - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@angular-devkit/schematics-cli/node_modules/@angular-devkit/schematics": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.0.tgz", - "integrity": "sha512-QMDJXPE0+YQJ9Ap3MMzb0v7rx6ZbBEokmHgpdIjN3eILYmbAdsSGE8HTV8NjS9nKmcyE9OGzFCMb7PFrDTlTAw==", - "dependencies": { - "@angular-devkit/core": "16.2.0", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.1", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, "node_modules/@angular-devkit/schematics-cli/node_modules/inquirer": { "version": "8.2.4", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", @@ -199,58 +167,128 @@ "node": ">=12.0.0" } }, - "node_modules/@angular-devkit/schematics-cli/node_modules/magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "node_modules/@angular-devkit/schematics-cli/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/@babel/code-frame": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz", - "integrity": "sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.18.6" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/compat-data": { - "version": "7.21.7", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.21.7.tgz", - "integrity": "sha512-KYMqFYTaenzMK4yUtf4EW9wc4N9ef80FsbMtkwool5zpwl4YrT1SdWYSTRcT94KO4hannogdS+LxY7L+arP3gA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.21.8.tgz", - "integrity": "sha512-YeM22Sondbo523Sz0+CirSPnbj9bG3P0CdHcBZdqUuaeOaYEFbOLoGU7lebvGP6P5J/WE9wOn7u7C4J9HvS1xQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-compilation-targets": "^7.21.5", - "@babel/helper-module-transforms": "^7.21.5", - "@babel/helpers": "^7.21.5", - "@babel/parser": "^7.21.8", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", - "semver": "^6.3.0" + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" @@ -260,12 +298,6 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -276,12 +308,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.5.tgz", - "integrity": "sha512-SrKK/sRv8GesIW1bDagf9cCG38IOMYZusoe1dfg0D8aiUe3Amvoj1QtjTPAWcfrZFvIwlleLb0gxzQidL9w14w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dev": true, "dependencies": { - "@babel/types": "^7.21.5", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -291,22 +323,19 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.21.5.tgz", - "integrity": "sha512-1RkbFGUKex4lvsB9yhIfWltJM5cZKUftB2eNajaDv3dCMEp49iBG0K14uH8NnX9IPux2+mK7JGEOB0jn48/J6w==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.21.5", - "@babel/helper-validator-option": "^7.21.0", - "browserslist": "^4.21.3", + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", "lru-cache": "^5.1.1", - "semver": "^6.3.0" + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-compilation-targets/node_modules/semver": { @@ -319,150 +348,150 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.21.5.tgz", - "integrity": "sha512-IYl4gZ3ETsWocUWgsFZLM5i1BYx9SoemminVEXadgLBa9TdeorzgLKm8wWLA6J1N/kT3Kch8XIk1laNzYoHKvQ==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.21.0.tgz", - "integrity": "sha512-HfK1aMRanKHpxemaY2gqBmL04iAPOPRj7DxtNbiDOrJK+gdwkiNRVpCpUJYbUT+aZyemKN8brqTOxzCaG6ExRg==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/types": "^7.21.0" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz", - "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dev": true, "dependencies": { - "@babel/types": "^7.21.4" + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.5.tgz", - "integrity": "sha512-bI2Z9zBGY2q5yMHoBvJ2a9iX3ZOAzJPm7Q8Yz6YeoUjU/Cvhmi2G4QyTNyPBqqXSgTjUxRg3L0xV45HvkNWWBw==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-module-imports": "^7.21.4", - "@babel/helper-simple-access": "^7.21.5", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.19.1", - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.21.5.tgz", - "integrity": "sha512-0WDaIlXKOX/3KfBK/dwP1oQGiPh6rjMkT7HIRv7i5RR2VUMwrx5ZL0dwBkKx7+SW1zwNdgjHd34IMk5ZjTeHVg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz", - "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==", + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", "dev": true, "dependencies": { - "@babel/types": "^7.21.5" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", "dev": true, "dependencies": { - "@babel/types": "^7.18.6" + "@babel/types": "^7.22.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.21.5.tgz", - "integrity": "sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz", - "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.21.5.tgz", - "integrity": "sha512-BSY+JSlHxOmGsPTydUkPf1MdMQ3M81x5xGCOVgWM3G8XH77sJ292Y2oqcp0CbbgxhqBuI46iUz1tT7hqP7EfgA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dev": true, "dependencies": { - "@babel/template": "^7.20.7", - "@babel/traverse": "^7.21.5", - "@babel/types": "^7.21.5" + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", "js-tokens": "^4.0.0" }, "engines": { @@ -534,9 +563,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.21.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.8.tgz", - "integrity": "sha512-6zavDGdzG3gUqAdWvlLFfk+36RilI+Pwyuuh7HItyeScCWP3k6i8vKclAQ0bM/0y/Kz/xiwvxhMv9MgTJP5gmA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -606,12 +635,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz", - "integrity": "sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -708,12 +737,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.21.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.21.4.tgz", - "integrity": "sha512-xz0D39NvhQn4t4RNsHmDnnsaQizIlUkdtYvLs8La1BlfjQ6JEwxkJGeqJMW2tAXx+q6H+WFuUTXNdYVpEya0YA==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2" + "@babel/helper-plugin-utils": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -723,9 +752,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -734,33 +763,33 @@ } }, "node_modules/@babel/template": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", - "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.5.tgz", - "integrity": "sha512-AhQoI3YjWi6u/y/ntv7k48mcrCXmus0t79J9qPNlk/lAsFlCiJ047RmbfMOawySTHtywXhbXgpx/8nXMYd+oFw==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.21.4", - "@babel/generator": "^7.21.5", - "@babel/helper-environment-visitor": "^7.21.5", - "@babel/helper-function-name": "^7.21.0", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.21.5", - "@babel/types": "^7.21.5", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", + "@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.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -778,13 +807,13 @@ } }, "node_modules/@babel/types": { - "version": "7.21.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.5.tgz", - "integrity": "sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.21.5", - "@babel/helper-validator-identifier": "^7.19.1", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -801,6 +830,7 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "optional": true, "engines": { "node": ">=0.1.90" } @@ -853,23 +883,23 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.1.tgz", - "integrity": "sha512-Z5ba73P98O1KUYCCJTUeVpja9RcGoMdncZ6T49FCUl2lN38JtCJ+3WgIDBv0AuY4WChU5PmtJmOCTlN6FZTFKQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", - "espree": "^9.5.1", + "espree": "^9.6.0", "globals": "^13.19.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", @@ -907,21 +937,21 @@ "dev": true }, "node_modules/@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -943,9 +973,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@isaacs/cliui": { @@ -1008,9 +1038,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -1146,16 +1176,16 @@ } }, "node_modules/@jest/console": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz", - "integrity": "sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -1163,37 +1193,37 @@ } }, "node_modules/@jest/core": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz", - "integrity": "sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, "dependencies": { - "@jest/console": "^29.5.0", - "@jest/reporters": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "ci-info": "^3.2.0", "exit": "^0.1.2", "graceful-fs": "^4.2.9", - "jest-changed-files": "^29.5.0", - "jest-config": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-resolve-dependencies": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "jest-watcher": "^29.5.0", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-ansi": "^6.0.0" }, @@ -1210,89 +1240,89 @@ } }, "node_modules/@jest/environment": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz", - "integrity": "sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dev": true, "dependencies": { - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.5.0" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, "dependencies": { - "expect": "^29.5.0", - "jest-snapshot": "^29.5.0" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/expect-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz", - "integrity": "sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.3" + "jest-get-type": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/fake-timers": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz", - "integrity": "sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dev": true, "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/globals": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz", - "integrity": "sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/types": "^29.5.0", - "jest-mock": "^29.5.0" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/reporters": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz", - "integrity": "sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "dependencies": { "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", "collect-v8-coverage": "^1.0.0", @@ -1300,13 +1330,13 @@ "glob": "^7.1.3", "graceful-fs": "^4.2.9", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-instrument": "^6.0.0", "istanbul-lib-report": "^3.0.0", "istanbul-lib-source-maps": "^4.0.0", "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "slash": "^3.0.0", "string-length": "^4.0.1", "strip-ansi": "^6.0.0", @@ -1324,25 +1354,45 @@ } } }, + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@jest/schemas": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz", - "integrity": "sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dev": true, "dependencies": { - "@sinclair/typebox": "^0.25.16" + "@sinclair/typebox": "^0.27.8" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/source-map": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz", - "integrity": "sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", "dev": true, "dependencies": { - "@jridgewell/trace-mapping": "^0.3.15", + "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", "graceful-fs": "^4.2.9" }, @@ -1351,13 +1401,13 @@ } }, "node_modules/@jest/test-result": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz", - "integrity": "sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "dependencies": { - "@jest/console": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" }, @@ -1366,14 +1416,14 @@ } }, "node_modules/@jest/test-sequencer": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz", - "integrity": "sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, "dependencies": { - "@jest/test-result": "^29.5.0", + "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", + "jest-haste-map": "^29.7.0", "slash": "^3.0.0" }, "engines": { @@ -1381,22 +1431,22 @@ } }, "node_modules/@jest/transform": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz", - "integrity": "sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/types": "^29.5.0", - "@jridgewell/trace-mapping": "^0.3.15", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "babel-plugin-istanbul": "^6.1.1", "chalk": "^4.0.0", "convert-source-map": "^2.0.0", "fast-json-stable-stringify": "^2.1.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", "micromatch": "^4.0.4", "pirates": "^4.0.4", "slash": "^3.0.0", @@ -1407,12 +1457,12 @@ } }, "node_modules/@jest/types": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz", - "integrity": "sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", "@types/node": "*", @@ -1437,9 +1487,9 @@ } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "engines": { "node": ">=6.0.0" } @@ -1453,9 +1503,9 @@ } }, "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -1467,19 +1517,14 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" - }, "node_modules/@lukeed/csprng": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@lukeed/csprng/-/csprng-1.1.0.tgz", @@ -1489,19 +1534,20 @@ } }, "node_modules/@nestjs/cli": { - "version": "10.1.16", - "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.1.16.tgz", - "integrity": "sha512-nZ9vs7D0BMOW9XrN7hN7BJl2Z0s+CRFwhDPVmJP2lc50mDsAcnWDLFuttupPc/AknO570Xqoxf1Q2cQ5YSgjpA==", + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@nestjs/cli/-/cli-10.2.1.tgz", + "integrity": "sha512-CAJAQwmxFZfB3RTvqz/eaXXWpyU+mZ4QSqfBYzjneTsPgF+uyOAW3yQpaLNn9Dfcv39R9UxSuAhayv6yuFd+Jg==", "dependencies": { - "@angular-devkit/core": "16.2.0", - "@angular-devkit/schematics": "16.2.0", - "@angular-devkit/schematics-cli": "16.2.0", + "@angular-devkit/core": "16.2.8", + "@angular-devkit/schematics": "16.2.8", + "@angular-devkit/schematics-cli": "16.2.8", "@nestjs/schematics": "^10.0.1", "chalk": "4.1.2", "chokidar": "3.5.3", "cli-table3": "0.6.3", "commander": "4.1.1", - "fork-ts-checker-webpack-plugin": "8.0.0", + "fork-ts-checker-webpack-plugin": "9.0.2", + "glob": "10.3.10", "inquirer": "8.2.6", "node-emoji": "1.11.0", "ora": "5.4.1", @@ -1512,15 +1558,15 @@ "tree-kill": "1.2.2", "tsconfig-paths": "4.2.0", "tsconfig-paths-webpack-plugin": "4.1.0", - "typescript": "5.1.6", - "webpack": "5.88.2", + "typescript": "5.2.2", + "webpack": "5.89.0", "webpack-node-externals": "3.0.0" }, "bin": { "nest": "bin/nest.js" }, "engines": { - "node": ">= 16" + "node": ">= 16.14" }, "peerDependencies": { "@swc/cli": "^0.1.62", @@ -1535,48 +1581,6 @@ } } }, - "node_modules/@nestjs/cli/node_modules/@angular-devkit/core": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.0.tgz", - "integrity": "sha512-l1k6Rqm3YM16BEn3CWyQKrk9xfu+2ux7Bw3oS+h1TO4/RoxO2PgHj8LLRh/WNrYVarhaqO7QZ5ePBkXNMkzJ1g==", - "dependencies": { - "ajv": "8.12.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.2.0", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^3.5.2" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@nestjs/cli/node_modules/@angular-devkit/schematics": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.0.tgz", - "integrity": "sha512-QMDJXPE0+YQJ9Ap3MMzb0v7rx6ZbBEokmHgpdIjN3eILYmbAdsSGE8HTV8NjS9nKmcyE9OGzFCMb7PFrDTlTAw==", - "dependencies": { - "@angular-devkit/core": "16.2.0", - "jsonc-parser": "3.2.0", - "magic-string": "0.30.1", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, - "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, "node_modules/@nestjs/cli/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -1585,34 +1589,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/@nestjs/cli/node_modules/glob": { - "version": "9.3.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", - "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "minimatch": "^8.0.2", - "minipass": "^4.2.4", - "path-scurry": "^1.6.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@nestjs/cli/node_modules/magic-string": { - "version": "0.30.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", - "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@nestjs/cli/node_modules/minimatch": { "version": "8.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-8.0.4.tgz", @@ -1627,6 +1603,14 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@nestjs/cli/node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/@nestjs/cli/node_modules/rimraf": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-4.4.1.tgz", @@ -1644,10 +1628,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@nestjs/cli/node_modules/rimraf/node_modules/glob": { + "version": "9.3.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-9.3.5.tgz", + "integrity": "sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "minimatch": "^8.0.2", + "minipass": "^4.2.4", + "path-scurry": "^1.6.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@nestjs/cli/node_modules/typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -1657,12 +1658,12 @@ } }, "node_modules/@nestjs/common": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.0.3.tgz", - "integrity": "sha512-Zv59rDQMuwyja8fvnQelG4AbEe7FEC2ZUXcUwE6Tw0aOHx5CaOBIU426FCYY9o3iqJX3xLCKVJ8NrLPg58xCZg==", + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-10.2.10.tgz", + "integrity": "sha512-fwAk931rjW8CNH2Mgwawq/7HWHH1dxkOLdcgs7U52ddLk8CtHXjejm1cbNahewlSbNhvlOl7y1STLHutE6sUqw==", "dependencies": { "iterare": "1.2.1", - "tslib": "2.5.3", + "tslib": "2.6.2", "uid": "2.0.2" }, "funding": { @@ -1685,11 +1686,11 @@ } }, "node_modules/@nestjs/config": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.0.0.tgz", - "integrity": "sha512-fzASk1Uv6AjdE6uA1na8zpqRCXAhRpcfgpCVv3SAKlgJ3VR3bEjcI4G17WHLgLBsmPzI1ofdkSI451WLD1F1Rw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@nestjs/config/-/config-3.1.1.tgz", + "integrity": "sha512-qu5QlNiJdqQtOsnB6lx4JCXPQ96jkKUsOGd+JXfXwqJqZcOSAq6heNFg0opW4pq4J/VZoNwoo87TNnx9wthnqQ==", "dependencies": { - "dotenv": "16.1.4", + "dotenv": "16.3.1", "dotenv-expand": "10.0.0", "lodash": "4.17.21", "uuid": "9.0.0" @@ -1700,16 +1701,16 @@ } }, "node_modules/@nestjs/core": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.0.3.tgz", - "integrity": "sha512-LPZrUaGk9ZXXkOOoqNn2EwBN7bBV2+KKbNxkmJKZ/7wMO+qGE1hCLaYuwoPdwUEwmDMchFpUOydfMIeC1s/3bg==", + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-10.2.10.tgz", + "integrity": "sha512-+ckOI6BPi2ZMHikT9MCG4ctHDc4OnjhoIytrn7f2AYMMXI4bnutJhqyQKc30VDka5x3Wq6QAD57pgSP7y+JjJg==", "hasInstallScript": true, "dependencies": { "@nuxtjs/opencollective": "0.3.2", "fast-safe-stringify": "2.1.1", "iterare": "1.2.1", "path-to-regexp": "3.2.0", - "tslib": "2.5.3", + "tslib": "2.6.2", "uid": "2.0.2" }, "funding": { @@ -1737,9 +1738,9 @@ } }, "node_modules/@nestjs/mapped-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.1.tgz", - "integrity": "sha512-wPk94x5GmAdrfmrfsmUJkLh0eQbHOvZX1shDRiN23vQGVsw+wSH03ot+FxS7PwqQcZ53Vb5TCtO0ck9Jd1bStg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/mapped-types/-/mapped-types-2.0.3.tgz", + "integrity": "sha512-40Zdqg98lqoF0+7ThWIZFStxgzisK6GG22+1ABO4kZiGF/Tu2FE+DYLw+Q9D94vcFWizJ+MSjNN4ns9r6hIGxw==", "peerDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", "class-transformer": "^0.4.0 || ^0.5.0", @@ -1756,15 +1757,15 @@ } }, "node_modules/@nestjs/platform-express": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.0.3.tgz", - "integrity": "sha512-8wA4Onhu6/dQrzTsg6n3pe1WbK9vWFPhagX10eGesX2YvgpVT4ccL0lbJbzGM2CY94RkaxBBW46Q3NJ6Bf566g==", + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-10.2.10.tgz", + "integrity": "sha512-U4KDgtMjH8TqEvt0RzC/POP8ABvL9bYoCScvlGtFSKgVGaMLBKkZ4+jHtbQx6qItYSlBBRUuz/dveMZCObfrkQ==", "dependencies": { "body-parser": "1.20.2", "cors": "2.8.5", "express": "4.18.2", "multer": "1.4.4-lts.1", - "tslib": "2.5.3" + "tslib": "2.6.2" }, "funding": { "type": "opencollective", @@ -1776,12 +1777,12 @@ } }, "node_modules/@nestjs/schematics": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.1.tgz", - "integrity": "sha512-buxpYtSwOmWyf0nUJWJCkCkYITwbOfIEKHTnGS7sDbcfaajrOFXb5pPAGD2E1CUb3C1+NkQIURPKzs0IouZTQg==", + "version": "10.0.3", + "resolved": "https://registry.npmjs.org/@nestjs/schematics/-/schematics-10.0.3.tgz", + "integrity": "sha512-2BRujK0GqGQ7j1Zpz+obVfskDnnOeVKt5aXoSaVngKo8Oczy8uYCY+R547TQB+Kf35epdfFER2pVnQrX3/It5A==", "dependencies": { - "@angular-devkit/core": "16.1.0", - "@angular-devkit/schematics": "16.1.0", + "@angular-devkit/core": "16.2.8", + "@angular-devkit/schematics": "16.2.8", "comment-json": "4.2.3", "jsonc-parser": "3.2.0", "pluralize": "8.0.0" @@ -1791,15 +1792,15 @@ } }, "node_modules/@nestjs/swagger": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.0.3.tgz", - "integrity": "sha512-rrWjWiKacBok0FQJOzdjRacpibrjDm751EpO0NqhEiAt51NtyA51DomcqtLHY4N7x3xgRNUyX1P9bXgbp/Xskg==", + "version": "7.1.16", + "resolved": "https://registry.npmjs.org/@nestjs/swagger/-/swagger-7.1.16.tgz", + "integrity": "sha512-f9KBk/BX9MUKPTj7tQNYJ124wV/jP5W2lwWHLGwe/4qQXixuDOo39zP55HIJ44LE7S04B7BOeUOo9GBJD/vRcw==", "dependencies": { - "@nestjs/mapped-types": "2.0.1", + "@nestjs/mapped-types": "2.0.3", "js-yaml": "4.1.0", "lodash": "4.17.21", "path-to-regexp": "3.2.0", - "swagger-ui-dist": "5.1.0" + "swagger-ui-dist": "5.9.1" }, "peerDependencies": { "@fastify/static": "^6.0.0", @@ -1822,11 +1823,11 @@ } }, "node_modules/@nestjs/testing": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.0.3.tgz", - "integrity": "sha512-Rhm+E7yr499DIOuYbqskdNVo/NJjLKDS7Wp6NWl37woef4u7eVsSKN8VUCXKxNlYUrSw2Nu2AekpLzvl169SXg==", + "version": "10.2.10", + "resolved": "https://registry.npmjs.org/@nestjs/testing/-/testing-10.2.10.tgz", + "integrity": "sha512-IVLUnPz/+fkBtPATYfqTIP+phN9yjkXejmj+JyhmcfPJZpxBmD1i9VSMqa4u54l37j0xkGPscQ0IXpbhqMYUKw==", "dependencies": { - "tslib": "2.5.3" + "tslib": "2.6.2" }, "funding": { "type": "opencollective", @@ -1848,11 +1849,11 @@ } }, "node_modules/@nestjs/typeorm": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-10.0.0.tgz", - "integrity": "sha512-WQU4HCDTz4UavsFzvGUKDHqi0MO5K47yFoPXdmh+Z/hCNO7SHCMmV9jLiLukM8n5nKUqJ3jDqiljkWBcZPdCtA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@nestjs/typeorm/-/typeorm-10.0.1.tgz", + "integrity": "sha512-YVFYL7D25VAVp5/G+KLXIgsRfYomA+VaFZBpm2rtwrrBOmkXNrxr7kuI2bBBO/Xy4kKBDe6wbvIVVFeEA7/ngA==", "dependencies": { - "uuid": "9.0.0" + "uuid": "9.0.1" }, "peerDependencies": { "@nestjs/common": "^8.0.0 || ^9.0.0 || ^10.0.0", @@ -1862,6 +1863,18 @@ "typeorm": "^0.3.0" } }, + "node_modules/@nestjs/typeorm/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1943,34 +1956,28 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/@pkgr/utils/node_modules/tslib": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.0.tgz", - "integrity": "sha512-7At1WUettjcSRHXCyYtTselblcHl9PJFFVKiCAy/bY97+BPZXSQ2wbq0P9s8tK2G7dFQfNnlJnPAiArVBVBsfA==", - "dev": true - }, "node_modules/@sinclair/typebox": { - "version": "0.25.24", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz", - "integrity": "sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==", + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", "dev": true }, "node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dev": true, "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.0.2.tgz", - "integrity": "sha512-SwUDyjWnah1AaNl7kxsa7cfLhlTYoiyhDAIgyh+El30YvXs/o7OLXpYH88Zdhyx9JExKrmHDJ+10bwIcY80Jmw==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^2.0.0" + "@sinonjs/commons": "^3.0.0" } }, "node_modules/@sqltools/formatter": { @@ -1997,15 +2004,15 @@ "devOptional": true }, "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", "devOptional": true }, "node_modules/@types/babel__core": { - "version": "7.20.0", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz", - "integrity": "sha512-+n8dL/9GWblDO0iU6eZAwEIJVr5DWigtle+Q6HLOrh/pdbXOhOtqzq8VPPE2zvNJzSKY4vH/z3iT3tn0A3ypiQ==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -2016,18 +2023,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2035,18 +2042,18 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.18.5", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.5.tgz", - "integrity": "sha512-enCvTL8m/EHS/zIvJno9nE+ndYPh1/oNFzRYRmtUqJICG2VnCSBzMLW5VN2KCQU91f23tsNKR8v7VJJQMatl7Q==", + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", "dev": true, "dependencies": { - "@babel/types": "^7.3.0" + "@babel/types": "^7.20.7" } }, "node_modules/@types/body-parser": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", - "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "dependencies": { "@types/connect": "*", @@ -2054,47 +2061,47 @@ } }, "node_modules/@types/connect": { - "version": "3.4.35", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", - "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/cookiejar": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.2.tgz", - "integrity": "sha512-t73xJJrvdTjXrn4jLS9VSGRbz0nUY3cl2DMGDU48lKl+HR9dbbjW2A9r3g40VA++mQpy6uuHg33gy7du2BKpog==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@types/cookiejar/-/cookiejar-2.1.5.tgz", + "integrity": "sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==", "dev": true }, "node_modules/@types/eslint": { - "version": "8.37.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.37.0.tgz", - "integrity": "sha512-Piet7dG2JBuDIfohBngQ3rCt7MgO9xCO4xIMKxBThCq5PNRB91IjlJ10eJVwfoNtvTErmxLzwBZ7rHZtbOMmFQ==", + "version": "8.44.8", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", + "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" } }, "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/@types/express": { - "version": "4.17.17", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", - "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "dependencies": { "@types/body-parser": "*", @@ -2104,9 +2111,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.34", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", - "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "dev": true, "dependencies": { "@types/node": "*", @@ -2116,42 +2123,48 @@ } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "dependencies": { "@types/node": "*" } }, - "node_modules/@types/istanbul-lib-coverage": { + "node_modules/@types/http-errors": { "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.5.1", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.1.tgz", - "integrity": "sha512-tEuVcHrpaixS36w7hpsfLBLpjtMRJUE09/MHXn923LOVojDwyC14cWcfc0rDs0VEfUyYmt/+iX1kxxp+gZMcaQ==", + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -2159,9 +2172,9 @@ } }, "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==" + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/json5": { "version": "0.0.29", @@ -2170,49 +2183,41 @@ "dev": true }, "node_modules/@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true }, "node_modules/@types/node": { - "version": "18.17.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.12.tgz", - "integrity": "sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ==" - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" - }, - "node_modules/@types/prettier": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.2.tgz", - "integrity": "sha512-KufADq8uQqo1pYKVIYzfKbJfBAc0sOeXqGbFaSpv8MRmC/zXgowNZmFcbngndGk922QDmOASEXUZCaY48gs4cg==", - "dev": true + "version": "20.10.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", + "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "version": "6.9.10", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", "dev": true }, "node_modules/@types/range-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", - "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", "dev": true }, "node_modules/@types/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, "node_modules/@types/send": { - "version": "0.17.1", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", - "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "dependencies": { "@types/mime": "^1", @@ -2220,25 +2225,26 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", - "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, "dependencies": { + "@types/http-errors": "*", "@types/mime": "*", "@types/node": "*" } }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, "node_modules/@types/superagent": { - "version": "4.1.17", - "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.17.tgz", - "integrity": "sha512-FFK/rRjNy24U6J1BvQkaNWu2ohOIF/kxRQXRsbT141YQODcOcZjzlcc4DGdI2SkTa0rhmF+X14zu6ICjCGIg+w==", + "version": "4.1.24", + "resolved": "https://registry.npmjs.org/@types/superagent/-/superagent-4.1.24.tgz", + "integrity": "sha512-mEafCgyKiMFin24SDzWN7yAADt4gt6YawFiNMp0QS5ZPboORfyxFt0s3VzJKhTaKg9py/4FUmrHLTNfJKt9Rbw==", "dev": true, "dependencies": { "@types/cookiejar": "*", @@ -2246,45 +2252,45 @@ } }, "node_modules/@types/supertest": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.12.tgz", - "integrity": "sha512-X3HPWTwXRerBZS7Mo1k6vMVR1Z6zmJcDVn5O/31whe0tnjE4te6ZJSJGq1RiqHPjzPdMTfjCFogDJmwng9xHaQ==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@types/supertest/-/supertest-2.0.16.tgz", + "integrity": "sha512-6c2ogktZ06tr2ENoZivgm7YnprnhYE4ZoXGMY+oA7IuAf17M8FWvujXZGmxLv8y0PTyts4x5A+erSwVUFA8XSg==", "dev": true, "dependencies": { "@types/superagent": "*" } }, "node_modules/@types/triple-beam": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.2.tgz", - "integrity": "sha512-txGIh+0eDFzKGC25zORnswy+br1Ha7hj5cMVwKIU7+s0U2AxxJru/jZSMU6OC9MJWP6+pc/hc6ZjyZShpsyY2g==" + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==" }, "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.5.0.tgz", - "integrity": "sha512-2pktILyjvMaScU6iK3925uvGU87E+N9rh372uGZgiMYwafaw9SXq86U04XPq3UH6tzRvNgBsub6x2DacHc33lw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", + "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.5.0", - "@typescript-eslint/type-utils": "6.5.0", - "@typescript-eslint/utils": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/type-utils": "6.13.2", + "@typescript-eslint/utils": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -2309,63 +2315,16 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz", - "integrity": "sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.5.0.tgz", - "integrity": "sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz", - "integrity": "sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.5.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/parser": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.5.0.tgz", - "integrity": "sha512-LMAVtR5GN8nY0G0BadkG0XIe4AcNMeyEy3DyhKGAh9k4pLSMBO7rF29JvDBpZGCmp5Pgz5RLHP6eCpSYZJQDuQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", + "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.5.0", - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/typescript-estree": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4" }, "engines": { @@ -2384,71 +2343,14 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz", - "integrity": "sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.5.0.tgz", - "integrity": "sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz", - "integrity": "sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz", - "integrity": "sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", + "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.5.0", - "eslint-visitor-keys": "^3.4.1" + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2459,13 +2361,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.5.0.tgz", - "integrity": "sha512-f7OcZOkRivtujIBQ4yrJNIuwyCQO1OjocVqntl9dgSIZAdKqicj3xFDqDOzHDlGCZX990LqhLQXWRnQvsapq8A==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", + "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.5.0", - "@typescript-eslint/utils": "6.5.0", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/utils": "6.13.2", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -2485,10 +2387,10 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.5.0.tgz", - "integrity": "sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==", + "node_modules/@typescript-eslint/types": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", + "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2498,14 +2400,14 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz", - "integrity": "sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", + "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2525,35 +2427,18 @@ } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz", - "integrity": "sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.5.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/utils": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.5.0.tgz", - "integrity": "sha512-9nqtjkNykFzeVtt9Pj6lyR9WEdd8npPhhIPM992FWVkZuS6tmxHfGVnlUcjpUP2hv8r4w35nT33mlxd+Be1ACQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", + "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.5.0", - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/typescript-estree": "6.5.0", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", "semver": "^7.5.4" }, "engines": { @@ -2567,70 +2452,13 @@ "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.5.0.tgz", - "integrity": "sha512-A8hZ7OlxURricpycp5kdPTH3XnjG85UpJS6Fn4VzeoH4T388gQJ/PGP4ole5NfKt4WDVhmLaQ/dBLNDC4Xl/Kw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.5.0.tgz", - "integrity": "sha512-eqLLOEF5/lU8jW3Bw+8auf4lZSbbljHR2saKnYqON12G/WsJrGeeDHWuQePoEf9ro22+JkbPfWQwKEC5WwLQ3w==", - "dev": true, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.5.0.tgz", - "integrity": "sha512-q0rGwSe9e5Kk/XzliB9h2LBc9tmXX25G0833r7kffbl5437FPWb2tbpIV9wAATebC/018pGa9fwPDuvGN+LxWQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "6.5.0", - "@typescript-eslint/visitor-keys": "6.5.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.5.0.tgz", - "integrity": "sha512-yCB/2wkbv3hPsh02ZS8dFQnij9VVQXJMN/gbQsaaY+zxALkZnxa/wagvLEFsAWMPv7d7lxQmNsIzGU1w/T/WyA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", + "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.5.0", + "@typescript-eslint/types": "6.13.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2641,134 +2469,140 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==" + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-opt": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6", + "@webassemblyjs/wast-printer": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-buffer": "1.11.6", + "@webassemblyjs/wasm-gen": "1.11.6", + "@webassemblyjs/wasm-parser": "1.11.6" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "@webassemblyjs/ast": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dependencies": { - "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" } }, @@ -2795,9 +2629,9 @@ } }, "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "bin": { "acorn": "bin/acorn" }, @@ -2823,9 +2657,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "devOptional": true, "engines": { "node": ">=0.4.0" @@ -2977,15 +2811,15 @@ "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", "is-string": "^1.0.7" }, "engines": { @@ -3009,15 +2843,34 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -3028,15 +2881,36 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -3052,9 +2926,9 @@ "dev": true }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/asynckit": { "version": "0.4.0", @@ -3075,15 +2949,15 @@ } }, "node_modules/babel-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz", - "integrity": "sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "dependencies": { - "@jest/transform": "^29.5.0", + "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.5.0", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "slash": "^3.0.0" @@ -3111,10 +2985,35 @@ "node": ">=8" } }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/babel-plugin-jest-hoist": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz", - "integrity": "sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "dependencies": { "@babel/template": "^7.3.3", @@ -3150,12 +3049,12 @@ } }, "node_modules/babel-preset-jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz", - "integrity": "sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^29.5.0", + "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { @@ -3190,9 +3089,9 @@ ] }, "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "dev": true, "engines": { "node": ">=0.6" @@ -3298,9 +3197,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "funding": [ { "type": "opencollective", @@ -3309,13 +3208,17 @@ { "type": "tidelift", "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" } ], "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -3381,6 +3284,19 @@ "node": ">=4" } }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -3426,12 +3342,13 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3455,9 +3372,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001482", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001482.tgz", - "integrity": "sha512-F1ZInsg53cegyjroxLNW9DmrEQ1SuGRTO1QlpA0o2/6OpQ0gFeDRoq1yFmnr8Sakn9qwwt9DmbxHB6w167OSuQ==", + "version": "1.0.30001566", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", + "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", "funding": [ { "type": "opencollective", @@ -3537,9 +3454,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -3552,9 +3469,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", "dev": true }, "node_modules/cli-cursor": { @@ -3598,6 +3515,22 @@ "wrap-ansi": "^7.0.0" } }, + "node_modules/cli-highlight/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/cli-highlight/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -3624,9 +3557,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz", - "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "engines": { "node": ">=6" }, @@ -3649,16 +3582,16 @@ } }, "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, "dependencies": { "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" + "string-width": "^7.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3677,32 +3610,32 @@ } }, "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", "dev": true }, "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.0.0.tgz", + "integrity": "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { "ansi-regex": "^6.0.1" @@ -3735,6 +3668,22 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -3754,9 +3703,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true }, "node_modules/color": { @@ -3857,10 +3806,13 @@ } }, "node_modules/component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/concat-map": { "version": "0.0.1", @@ -3954,18 +3906,49 @@ } }, "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/create-require": { @@ -4019,10 +4002,18 @@ } }, "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", - "dev": true + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", + "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } }, "node_modules/deep-is": { "version": "0.1.4", @@ -4073,9 +4064,9 @@ } }, "node_modules/default-browser/node_modules/execa": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz", - "integrity": "sha512-wH0eMf/UXckdUYnO21+HDztteVv05rq2GXksxT4fCGeHkBhw1DROXh40wcjMcRqDOWE7iPJ4n3M7e2+YFP+76Q==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", @@ -4170,6 +4161,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/default-browser/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/default-browser/node_modules/strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -4193,6 +4190,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/define-lazy-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", @@ -4206,11 +4216,12 @@ } }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -4276,9 +4287,9 @@ } }, "node_modules/diff-sequences": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz", - "integrity": "sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -4309,9 +4320,9 @@ } }, "node_modules/dotenv": { - "version": "16.1.4", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.4.tgz", - "integrity": "sha512-m55RtE8AsPeJBpOIFKihEmqUcoVncQIwo7x9U8ZwLEZw9ZpXboz2c+rvog+jUaJvVrZ5kBOeYQBX5+8Aa/OZQw==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", "engines": { "node": ">=12" }, @@ -4338,9 +4349,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.384", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.384.tgz", - "integrity": "sha512-I97q0MmRAAqj53+a8vZsDkEXBZki+ehYAOPzwtQzALip52aEp2+BJqHFtTlsfjoqVZYwPpHC8wM6MbsSZQ/Eqw==" + "version": "1.4.607", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.607.tgz", + "integrity": "sha512-YUlnPwE6eYxzwBnFmawA8LiLRfm70R2aJRIUv0n03uHt/cUzzYACOogmvk8M2+hVzt/kB80KJXx7d5f5JofPvQ==" }, "node_modules/emittery": { "version": "0.13.1", @@ -4401,25 +4412,26 @@ } }, "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -4427,19 +4439,23 @@ "is-regex": "^1.1.4", "is-shared-array-buffer": "^1.0.2", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -4449,31 +4465,31 @@ } }, "node_modules/es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -4519,27 +4535,28 @@ } }, "node_modules/eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", - "@humanwhocodes/config-array": "^0.11.8", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", "debug": "^4.3.2", "doctrine": "^3.0.0", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", "esquery": "^1.4.2", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -4547,22 +4564,19 @@ "find-up": "^5.0.0", "glob-parent": "^6.0.2", "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", "js-yaml": "^4.1.0", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.4.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.1", + "optionator": "^0.9.3", "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", "text-table": "^0.2.0" }, "bin": { @@ -4575,6 +4589,19 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-config-airbnb-base": { "version": "15.0.0", "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", @@ -4604,9 +4631,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -4616,9 +4643,9 @@ } }, "node_modules/eslint-config-standard": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.0.0.tgz", - "integrity": "sha512-/2ks1GKyqSOkH7JFvXJicu0iMpoojkwB+f5Du/1SC0PtBL+s8v30k9njRZ21pm2drKYm2342jFnGWzttxPmZVg==", + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", "dev": true, "funding": [ { @@ -4634,22 +4661,25 @@ "url": "https://feross.org/support" } ], + "engines": { + "node": ">=12.0.0" + }, "peerDependencies": { "eslint": "^8.0.1", "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", "eslint-plugin-promise": "^6.0.0" } }, "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "dependencies": { "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, "node_modules/eslint-import-resolver-node/node_modules/debug": { @@ -4688,11 +4718,10 @@ } }, "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", "dev": true, - "peer": true, "dependencies": { "eslint-utils": "^2.0.0", "regexpp": "^3.0.0" @@ -4707,53 +4736,50 @@ "eslint": ">=4.19.1" } }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/eslint-plugin-es-x": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", + "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", "dev": true, "peer": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "@eslint-community/eslint-utils": "^4.1.2", + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.1.2" }, "engines": { - "node": ">=6" + "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=8" } }, "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" }, "engines": { "node": ">=4" @@ -4832,23 +4858,25 @@ } }, "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.3.1.tgz", + "integrity": "sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==", "dev": true, "peer": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", + "eslint-plugin-es-x": "^7.1.0", + "get-tsconfig": "^4.7.0", + "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", + "is-core-module": "^2.12.1", "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" + "resolve": "^1.22.2", + "semver": "^7.5.3" }, "engines": { - "node": ">=12.22.0" + "node": ">=16.0.0" }, "funding": { "url": "https://github.com/sponsors/mysticatea" @@ -4869,55 +4897,12 @@ "minimatch": "^3.0.4", "resolve": "^1.10.1", "semver": "^6.1.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", - "dev": true, - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, - "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true, + }, "engines": { - "node": ">=4" + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" } }, "node_modules/eslint-plugin-node/node_modules/semver": { @@ -4930,9 +4915,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", @@ -4971,50 +4956,49 @@ } }, "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, - "peer": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" } }, "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, - "peer": true, "engines": { - "node": ">=10" + "node": ">=4" } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz", - "integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5039,31 +5023,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/eslint/node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -5083,14 +5042,14 @@ "dev": true }, "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "acorn": "^8.8.0", + "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" + "eslint-visitor-keys": "^3.4.1" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -5123,15 +5082,6 @@ "node": ">=0.10" } }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, "node_modules/esrecurse": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", @@ -5143,7 +5093,7 @@ "node": ">=4.0" } }, - "node_modules/esrecurse/node_modules/estraverse": { + "node_modules/estraverse": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", @@ -5151,14 +5101,6 @@ "node": ">=4.0" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "engines": { - "node": ">=4.0" - } - }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -5213,6 +5155,12 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/execa/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -5223,16 +5171,16 @@ } }, "node_modules/expect": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz", - "integrity": "sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "dependencies": { - "@jest/expect-utils": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -5353,15 +5301,15 @@ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", - "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", "dev": true }, "node_modules/fast-glob": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.0.tgz", - "integrity": "sha512-ChDuvbOypPuNjO8yIDf36x7BlZX1smcUMTTcyoIjycexOxd6DFsKsg21qVBzEmr3G7fUKIRy2/psii+CIUt7FA==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5505,18 +5453,39 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/flat-cache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/flat-cache/node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -5533,9 +5502,9 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", "dev": true }, "node_modules/fn.name": { @@ -5567,26 +5536,15 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.1.tgz", - "integrity": "sha512-uUWsN4aOxJAS8KOuf3QMyFtgm1pkb6I+KRZbRF/ghdf5T7sM+B1lLLzPDxswUjkmHyxQAVzEgG35E3NzDM9GVw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/fork-ts-checker-webpack-plugin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-8.0.0.tgz", - "integrity": "sha512-mX3qW3idpueT2klaQXBzrIM/pHw+T0B/V9KHEvNrqijTq9NFnMZU6oreVxDYcf33P8a5cW+67PjodNHthGnNVg==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-9.0.2.tgz", + "integrity": "sha512-Uochze2R8peoN1XqlSi/rGUkDQpRogtLFocP9+PGu68zk1BDAKXfdeCdyVZpgTk8V8WFVQXdEz426VKjXLO1Gg==", "dependencies": { "@babel/code-frame": "^7.16.7", "chalk": "^4.1.2", "chokidar": "^3.5.3", - "cosmiconfig": "^7.0.1", + "cosmiconfig": "^8.2.0", "deepmerge": "^4.2.2", "fs-extra": "^10.0.0", "memfs": "^3.4.1", @@ -5664,30 +5622,46 @@ } }, "node_modules/fs-monkey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", - "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==" }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -5722,14 +5696,27 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-intrinsic": { + "node_modules/get-east-asian-width": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5772,20 +5759,35 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-tsconfig": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "dev": true, + "peer": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -5807,10 +5809,32 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -5861,7 +5885,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dev": true, "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -5874,29 +5897,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -5923,12 +5929,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5938,7 +5943,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "dev": true, "engines": { "node": ">= 0.4" }, @@ -5972,10 +5976,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/helmet": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.0.0.tgz", - "integrity": "sha512-MsIgYmdBh460ZZ8cJC81q4XJknjG567wzEmv46WOBblDb6TUd3z8/GhgmsM9pn8g2B80tAJ4m5/d3Bi1KrSUBQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.1.0.tgz", + "integrity": "sha512-g+HZqgfbpXdCkme/Cd/mZkV0aV3BZZZSugecH03kl38m/Kmdx8jKjBikpDj2cr+Iynv4KpYEviojNdTJActJAg==", "engines": { "node": ">=16.0.0" } @@ -6058,9 +6073,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -6148,27 +6163,14 @@ "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -6249,6 +6251,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "peer": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -6262,11 +6280,11 @@ } }, "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6482,16 +6500,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "which-typed-array": "^1.1.11" }, "engines": { "node": ">= 0.4" @@ -6570,51 +6584,42 @@ } }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" } }, "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", "dev": true, "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" } }, "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" } }, "node_modules/istanbul-lib-source-maps": { @@ -6641,9 +6646,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -6662,9 +6667,9 @@ } }, "node_modules/jackspeak": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.2.0.tgz", - "integrity": "sha512-r5XBrqIJfwRIjRt/Xr5fv9Wh09qyhHfKnYddDlpM+ibRR20qrYActpCAgU6U+d53EOEjzkvxPMVHSlgR7leXrQ==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -6679,15 +6684,15 @@ } }, "node_modules/jest": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz", - "integrity": "sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "@jest/core": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", "import-local": "^3.0.2", - "jest-cli": "^29.5.0" + "jest-cli": "^29.7.0" }, "bin": { "jest": "bin/jest.js" @@ -6714,12 +6719,13 @@ } }, "node_modules/jest-changed-files": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz", - "integrity": "sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "dependencies": { "execa": "^5.0.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0" }, "engines": { @@ -6727,28 +6733,28 @@ } }, "node_modules/jest-circus": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz", - "integrity": "sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/expect": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "co": "^4.6.0", - "dedent": "^0.7.0", + "dedent": "^1.0.0", "is-generator-fn": "^2.0.0", - "jest-each": "^29.5.0", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "p-limit": "^3.1.0", - "pretty-format": "^29.5.0", + "pretty-format": "^29.7.0", "pure-rand": "^6.0.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" @@ -6758,22 +6764,21 @@ } }, "node_modules/jest-cli": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz", - "integrity": "sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "@jest/core": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", + "create-jest": "^29.7.0", "exit": "^0.1.2", - "graceful-fs": "^4.2.9", "import-local": "^3.0.2", - "jest-config": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", - "prompts": "^2.0.1", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "yargs": "^17.3.1" }, "bin": { @@ -6792,31 +6797,31 @@ } }, "node_modules/jest-config": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz", - "integrity": "sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.5.0", - "@jest/types": "^29.5.0", - "babel-jest": "^29.5.0", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", "ci-info": "^3.2.0", "deepmerge": "^4.2.2", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-circus": "^29.5.0", - "jest-environment-node": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-runner": "^29.5.0", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", "parse-json": "^5.2.0", - "pretty-format": "^29.5.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "strip-json-comments": "^3.1.1" }, @@ -6836,25 +6841,45 @@ } } }, + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/jest-diff": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz", - "integrity": "sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "diff-sequences": "^29.4.3", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-docblock": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz", - "integrity": "sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { "detect-newline": "^3.0.0" @@ -6864,62 +6889,62 @@ } }, "node_modules/jest-each": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz", - "integrity": "sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", - "jest-util": "^29.5.0", - "pretty-format": "^29.5.0" + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-environment-node": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz", - "integrity": "sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-mock": "^29.5.0", - "jest-util": "^29.5.0" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-get-type": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz", - "integrity": "sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz", - "integrity": "sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.4.3", - "jest-util": "^29.5.0", - "jest-worker": "^29.5.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", "micromatch": "^4.0.4", "walker": "^1.0.8" }, @@ -6931,46 +6956,46 @@ } }, "node_modules/jest-leak-detector": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz", - "integrity": "sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-matcher-utils": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz", - "integrity": "sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, "dependencies": { "chalk": "^4.0.0", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "pretty-format": "^29.5.0" + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-message-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz", - "integrity": "sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@types/stack-utils": "^2.0.0", "chalk": "^4.0.0", "graceful-fs": "^4.2.9", "micromatch": "^4.0.4", - "pretty-format": "^29.5.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", "stack-utils": "^2.0.3" }, @@ -6979,14 +7004,14 @@ } }, "node_modules/jest-mock": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz", - "integrity": "sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "jest-util": "^29.5.0" + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7010,26 +7035,26 @@ } }, "node_modules/jest-regex-util": { - "version": "29.4.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz", - "integrity": "sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==", + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz", - "integrity": "sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", + "jest-haste-map": "^29.7.0", "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.5.0", - "jest-validate": "^29.5.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "resolve": "^1.20.0", "resolve.exports": "^2.0.0", "slash": "^3.0.0" @@ -7039,43 +7064,43 @@ } }, "node_modules/jest-resolve-dependencies": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz", - "integrity": "sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, "dependencies": { - "jest-regex-util": "^29.4.3", - "jest-snapshot": "^29.5.0" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-runner": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz", - "integrity": "sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "dependencies": { - "@jest/console": "^29.5.0", - "@jest/environment": "^29.5.0", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-docblock": "^29.4.3", - "jest-environment-node": "^29.5.0", - "jest-haste-map": "^29.5.0", - "jest-leak-detector": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-resolve": "^29.5.0", - "jest-runtime": "^29.5.0", - "jest-util": "^29.5.0", - "jest-watcher": "^29.5.0", - "jest-worker": "^29.5.0", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", "p-limit": "^3.1.0", "source-map-support": "0.5.13" }, @@ -7103,31 +7128,31 @@ } }, "node_modules/jest-runtime": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz", - "integrity": "sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==", - "dev": true, - "dependencies": { - "@jest/environment": "^29.5.0", - "@jest/fake-timers": "^29.5.0", - "@jest/globals": "^29.5.0", - "@jest/source-map": "^29.4.3", - "@jest/test-result": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "cjs-module-lexer": "^1.0.0", "collect-v8-coverage": "^1.0.0", "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-mock": "^29.5.0", - "jest-regex-util": "^29.4.3", - "jest-resolve": "^29.5.0", - "jest-snapshot": "^29.5.0", - "jest-util": "^29.5.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", "slash": "^3.0.0", "strip-bom": "^4.0.0" }, @@ -7135,35 +7160,52 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/jest-snapshot": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz", - "integrity": "sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", "@babel/plugin-syntax-jsx": "^7.7.2", "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.5.0", - "@jest/transform": "^29.5.0", - "@jest/types": "^29.5.0", - "@types/babel__traverse": "^7.0.6", - "@types/prettier": "^2.1.5", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0", "chalk": "^4.0.0", - "expect": "^29.5.0", + "expect": "^29.7.0", "graceful-fs": "^4.2.9", - "jest-diff": "^29.5.0", - "jest-get-type": "^29.4.3", - "jest-matcher-utils": "^29.5.0", - "jest-message-util": "^29.5.0", - "jest-util": "^29.5.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", "natural-compare": "^1.4.0", - "pretty-format": "^29.5.0", - "semver": "^7.3.5" + "pretty-format": "^29.7.0", + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7182,12 +7224,12 @@ } }, "node_modules/jest-util": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz", - "integrity": "sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", "ci-info": "^3.2.0", @@ -7199,17 +7241,17 @@ } }, "node_modules/jest-validate": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz", - "integrity": "sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { - "@jest/types": "^29.5.0", + "@jest/types": "^29.6.3", "camelcase": "^6.2.0", "chalk": "^4.0.0", - "jest-get-type": "^29.4.3", + "jest-get-type": "^29.6.3", "leven": "^3.1.0", - "pretty-format": "^29.5.0" + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" @@ -7228,18 +7270,18 @@ } }, "node_modules/jest-watcher": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz", - "integrity": "sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, "dependencies": { - "@jest/test-result": "^29.5.0", - "@jest/types": "^29.5.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", "ansi-escapes": "^4.2.1", "chalk": "^4.0.0", "emittery": "^0.13.1", - "jest-util": "^29.5.0", + "jest-util": "^29.7.0", "string-length": "^4.0.1" }, "engines": { @@ -7247,13 +7289,13 @@ } }, "node_modules/jest-worker": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz", - "integrity": "sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { "@types/node": "*", - "jest-util": "^29.5.0", + "jest-util": "^29.7.0", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, @@ -7276,16 +7318,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -7314,6 +7346,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", @@ -7357,6 +7395,15 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", @@ -7394,12 +7441,12 @@ } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", + "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", "dev": true, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/lines-and-columns": { @@ -7408,27 +7455,27 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/lint-staged": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-14.0.0.tgz", - "integrity": "sha512-0tLf0pqZYkar/wu3nTctk4rVIG+d7PanDYv4/IQR4qwdqfQkTDziLRFnqMcLuLBTuUqmcLwsHPD2EjQ18d/oaA==", + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.0.tgz", + "integrity": "sha512-TFZzUEV00f+2YLaVPWBWGAMq7So6yQx+GG8YRMDeOEIf95Zn5RyiLMsEiX4KTNl9vq/w+NqRJkLA1kPIo15ufQ==", "dev": true, "dependencies": { "chalk": "5.3.0", - "commander": "11.0.0", + "commander": "11.1.0", "debug": "4.3.4", - "execa": "7.2.0", - "lilconfig": "2.1.0", - "listr2": "6.6.1", + "execa": "8.0.1", + "lilconfig": "3.0.0", + "listr2": "8.0.0", "micromatch": "4.0.5", "pidtree": "0.6.0", "string-argv": "0.3.2", - "yaml": "2.3.1" + "yaml": "2.3.4" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=18.12.0" }, "funding": { "url": "https://opencollective.com/lint-staged" @@ -7447,44 +7494,56 @@ } }, "node_modules/lint-staged/node_modules/commander": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", - "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "engines": { "node": ">=16" } }, "node_modules/lint-staged/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", "onetime": "^6.0.0", - "signal-exit": "^3.0.7", + "signal-exit": "^4.1.0", "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/lint-staged/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", "dev": true, "engines": { - "node": ">=14.18.0" + "node": ">=16.17.0" } }, "node_modules/lint-staged/node_modules/is-stream": { @@ -7565,38 +7624,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged/node_modules/yaml": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", - "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", - "dev": true, - "engines": { - "node": ">= 14" - } - }, "node_modules/listr2": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", - "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.0.0.tgz", + "integrity": "sha512-u8cusxAcyqAiQ2RhYvV7kRKNLgUvtObIbhOX2NCXqvp1UU32xIg5CT22ykS2TPKJXZWJwtK3IKLiqAGlGNE+Zg==", "dev": true, "dependencies": { - "cli-truncate": "^3.1.0", + "cli-truncate": "^4.0.0", "colorette": "^2.0.20", "eventemitter3": "^5.0.1", - "log-update": "^5.0.1", + "log-update": "^6.0.0", "rfdc": "^1.3.0", - "wrap-ansi": "^8.1.0" + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" - }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "node": ">=18.0.0" } }, "node_modules/listr2/node_modules/ansi-regex": { @@ -7624,23 +7666,23 @@ } }, "node_modules/listr2/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", "dev": true }, "node_modules/listr2/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.0.0.tgz", + "integrity": "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7662,17 +7704,17 @@ } }, "node_modules/listr2/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -7734,34 +7776,34 @@ } }, "node_modules/log-update": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", - "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.0.0.tgz", + "integrity": "sha512-niTvB4gqvtof056rRIrTZvjNYE4rCUzO6X/X+kYjd7WFxXeJ0NwEFnRxX6ehkvv3jTwrXnNdtAak5XYZuIyPFw==", "dev": true, "dependencies": { - "ansi-escapes": "^5.0.0", + "ansi-escapes": "^6.2.0", "cli-cursor": "^4.0.0", - "slice-ansi": "^5.0.0", - "strip-ansi": "^7.0.1", - "wrap-ansi": "^8.0.1" + "slice-ansi": "^7.0.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/log-update/node_modules/ansi-escapes": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", - "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", + "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", "dev": true, "dependencies": { - "type-fest": "^1.0.2" + "type-fest": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7807,11 +7849,26 @@ } }, "node_modules/log-update/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", "dev": true }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/log-update/node_modules/restore-cursor": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", @@ -7828,18 +7885,40 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/log-update/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, "node_modules/log-update/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.0.0.tgz", + "integrity": "sha512-GPQHj7row82Hjo9hKZieKcHIhaAIKOJvFSIZXuCU9OASVZrMNUaZuz++SPVrBjnLsnk4k+z9f2EIypgxf2vNFw==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -7861,45 +7940,56 @@ } }, "node_modules/log-update/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "engines": { - "node": ">=10" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/log-update/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/logform": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.5.1.tgz", - "integrity": "sha512-9FyqAm9o9NKKfiAKfZoYo9bGXXuwMkxQiQttkT4YjjVtQVIQtK6LmVtlxmCaFswo6N4AfEkHqZTV0taDtPotNg==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.0.tgz", + "integrity": "sha512-1ulHeNPp6k/LD8H91o7VYFBng5i1BDE7HoKxVbZiGFidS1Rj65qcywLxX+pVfAPoQJEjRdvKcusKwOupHCVOVQ==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "1.6.0", "@types/triple-beam": "^1.3.2", "fecha": "^4.2.0", "ms": "^2.1.1", "safe-stable-stringify": "^2.3.1", "triple-beam": "^1.3.0" + }, + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" } }, "node_modules/lru-cache": { @@ -7923,40 +8013,31 @@ } }, "node_modules/magic-string": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", - "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" + "@jridgewell/sourcemap-codec": "^1.4.15" }, "engines": { "node": ">=12" } }, "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "semver": "^7.5.3" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -7981,11 +8062,11 @@ } }, "node_modules/memfs": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.1.tgz", - "integrity": "sha512-UWbFJKvj5k+nETdteFndTpYxdeTMox/ULeqX5k/dpaQJCCFmj5EeKv3dBcyO2xmkRAx2vppRu5dVG7SOtsGOzA==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dependencies": { - "fs-monkey": "^1.0.3" + "fs-monkey": "^1.0.4" }, "engines": { "node": ">= 4.0.0" @@ -8089,11 +8170,11 @@ } }, "node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/mkdirp": { @@ -8164,9 +8245,9 @@ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/nest-winston": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/nest-winston/-/nest-winston-1.9.3.tgz", - "integrity": "sha512-BLDGvbKCeliQNNrNjFRKSbO9hu/a39YL3y+4aU0eTGHh5TgzNMqx5ZscbecKR0fM3/KumMznZdEWmAJBINHl6Q==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/nest-winston/-/nest-winston-1.9.4.tgz", + "integrity": "sha512-ilEmHuuYSAI6aMNR120fLBl42EdY13QI9WRggHdEizt9M7qZlmXJwpbemVWKW/tqRmULjSx/otKNQ3GMQbfoUQ==", "dependencies": { "fast-safe-stringify": "^2.1.1" }, @@ -8189,9 +8270,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -8214,9 +8295,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -8246,9 +8327,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8263,13 +8344,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -8281,28 +8362,57 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -8371,17 +8481,17 @@ } }, "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" + "type-check": "^0.4.0" }, "engines": { "node": ">= 0.8.0" @@ -8561,12 +8671,12 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.7.0.tgz", - "integrity": "sha512-UkZUeDjczjYRE495+9thsgcVgsaCPkaw80slmfVFgllxY+IO8ubTsOpFVjDPROBqJdHfVPUFRHPBV/WciOVfWg==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dependencies": { - "lru-cache": "^9.0.0", - "minipass": "^5.0.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -8576,21 +8686,13 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.1.tgz", - "integrity": "sha512-65/Jky17UwSb0BuB9V+MyDpsOtXKmYwzhyl+cOa9XUiI4uV2Ouy/2voFP3+al0BjZbJgMBD8FojMpAf+Z+qn4A==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", "engines": { "node": "14 || >=16.14" } }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/path-to-regexp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.2.0.tgz", @@ -8605,14 +8707,14 @@ } }, "node_modules/pg": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/pg/-/pg-8.10.0.tgz", - "integrity": "sha512-ke7o7qSTMb47iwzOSaZMfeR7xToFdkE71ifIipOAAaLIM0DYzfOAXlgFFmYUIE2BcJtvnVlGCID84ZzCegE8CQ==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/pg/-/pg-8.11.3.tgz", + "integrity": "sha512-+9iuvG8QfaaUrrph+kpF24cXkH1YOOUeArRNYIxq1viYHZagBxrTno7cecY1Fa44tJeZvaoG+Djpkc3JwehN5g==", "dependencies": { "buffer-writer": "2.0.0", "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.6.0", + "pg-connection-string": "^2.6.2", + "pg-pool": "^3.6.1", "pg-protocol": "^1.6.0", "pg-types": "^2.1.0", "pgpass": "1.x" @@ -8620,6 +8722,9 @@ "engines": { "node": ">= 8.0.0" }, + "optionalDependencies": { + "pg-cloudflare": "^1.1.1" + }, "peerDependencies": { "pg-native": ">=3.0.1" }, @@ -8629,10 +8734,16 @@ } } }, + "node_modules/pg-cloudflare": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz", + "integrity": "sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==", + "optional": true + }, "node_modules/pg-connection-string": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.5.0.tgz", - "integrity": "sha512-r5o/V/ORTA6TmUnyWZR9nCj1klXCO2CEKNRlVuJptZe85QuhFayC7WeMic7ndayT5IRIR0S0xFxFi2ousartlQ==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/pg-connection-string/-/pg-connection-string-2.6.2.tgz", + "integrity": "sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==" }, "node_modules/pg-int8": { "version": "1.0.1", @@ -8643,9 +8754,9 @@ } }, "node_modules/pg-pool": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.0.tgz", - "integrity": "sha512-clFRf2ksqd+F497kWFyM21tMjeikn60oGDmqMT8UBrynEwVEX/5R5xd2sdvdo1cZCFlguORNpVuqxIj+aK4cfQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/pg-pool/-/pg-pool-3.6.1.tgz", + "integrity": "sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==", "peerDependencies": { "pg": ">=8.0" } @@ -8707,9 +8818,9 @@ } }, "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, "engines": { "node": ">= 6" @@ -8832,9 +8943,9 @@ } }, "node_modules/prettier": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.0.tgz", - "integrity": "sha512-zBf5eHpwHOGPC47h0zrPyNn+eAEIdEzfywMoYn2XPi0P44Zp0tSq64rq0xAREh4auw2cJZHo9QUob+NqCQky4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -8859,12 +8970,12 @@ } }, "node_modules/pretty-format": { - "version": "29.5.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz", - "integrity": "sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, "dependencies": { - "@jest/schemas": "^29.4.3", + "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", "react-is": "^18.0.0" }, @@ -8924,17 +9035,17 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } }, "node_modules/pure-rand": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz", - "integrity": "sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==", + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", "dev": true, "funding": [ { @@ -9069,14 +9180,14 @@ "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "set-function-name": "^2.0.0" }, "engines": { "node": ">= 0.4" @@ -9122,11 +9233,11 @@ } }, "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.11.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -9166,6 +9277,16 @@ "node": ">=4" } }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "peer": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, "node_modules/resolve.exports": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", @@ -9187,6 +9308,11 @@ "node": ">=8" } }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -9204,14 +9330,14 @@ "dev": true }, "node_modules/rimraf": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.0.tgz", - "integrity": "sha512-Jf9llaP+RvaEVS5nPShYFhtXIrb3LRKP281ib3So0KkeZKo2wIKyq0Re7TOSwanasA423PSr6CCIL4bP6T040g==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.5.tgz", + "integrity": "sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==", "dependencies": { - "glob": "^10.0.0" + "glob": "^10.3.7" }, "bin": { - "rimraf": "dist/cjs/src/bin.js" + "rimraf": "dist/esm/bin.mjs" }, "engines": { "node": ">=14" @@ -9220,57 +9346,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.2.2.tgz", - "integrity": "sha512-Xsa0BcxIC6th9UwNjZkhrMtNo/MnyRL8jGCP+uEwhA5oFOCY1f2s1/oNKY47xQ0Bg5nkjsfAEIej1VeH62bDDQ==", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.0", - "minipass": "^5.0.0", - "path-scurry": "^1.7.0" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.0.tgz", - "integrity": "sha512-0jJj8AvgKqWN05mrwuqi8QYKx1WmYSUoKSxu5Qhs9prezTz10sxAHGNZe9J9cqIJzta8DWsleh2KaVaLl6Ru2w==", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "engines": { - "node": ">=8" - } - }, "node_modules/run-applescript": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-5.0.0.tgz", @@ -9325,6 +9400,30 @@ "tslib": "^2.1.0" } }, + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -9509,6 +9608,34 @@ "node": ">= 0.8.0" } }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -9561,6 +9688,25 @@ "node": ">=4" } }, + "node_modules/shelljs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -9575,9 +9721,15 @@ } }, "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/simple-swizzle": { "version": "0.2.2", @@ -9798,14 +9950,14 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -9815,28 +9967,28 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9895,9 +10047,9 @@ } }, "node_modules/superagent": { - "version": "8.0.9", - "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz", - "integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==", + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-8.1.2.tgz", + "integrity": "sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==", "dev": true, "dependencies": { "component-emitter": "^1.3.0", @@ -9963,9 +10115,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.1.0.tgz", - "integrity": "sha512-c1KmAjuVODxw+vwkNLALQZrgdlBAuBbr2xSPfYrJgseEi7gFKcTvShysPmyuDI4kcUa1+5rFpjWvXdusKY74mg==" + "version": "5.9.1", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.9.1.tgz", + "integrity": "sha512-5zAx+hUwJb9T3EAntc7TqYkV716CMqG6sZpNlAAMOMWkNXRYxGkN8ADIvD55dQZ10LxN90ZM/TQmN7y1gpICnw==" }, "node_modules/swagger-ui-express": { "version": "5.0.0", @@ -9990,13 +10142,13 @@ } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", + "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/utils": "^2.4.2", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -10014,12 +10166,12 @@ } }, "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.25.0.tgz", + "integrity": "sha512-we0I9SIsfvNUMP77zC9HG+MylwYYsGFSBG8qm+13oud2Yh+O104y614FRbyjpxys16jZwot72Fpi827YvGzuqg==", "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", "commander": "^2.20.0", "source-map-support": "~0.5.20" }, @@ -10031,15 +10183,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.7.tgz", - "integrity": "sha512-AfKwIktyP7Cu50xNjXF/6Qb5lBNzYaWpU6YfoX3uZicTx0zTy0stDDCsvjDapKsSDvOeWo5MEq4TmdBy2cNoHw==", + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", "schema-utils": "^3.1.1", "serialize-javascript": "^6.0.1", - "terser": "^5.16.5" + "terser": "^5.16.8" }, "engines": { "node": ">= 10.13.0" @@ -10109,6 +10261,26 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -10215,14 +10387,17 @@ } }, "node_modules/triple-beam": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz", - "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", + "integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==", + "engines": { + "node": ">= 14.0.0" + } }, "node_modules/ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", + "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", "dev": true, "engines": { "node": ">=16.13.0" @@ -10232,9 +10407,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.0", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz", - "integrity": "sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==", + "version": "29.1.1", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz", + "integrity": "sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -10243,7 +10418,7 @@ "json5": "^2.2.3", "lodash.memoize": "4.x", "make-error": "1.x", - "semver": "7.x", + "semver": "^7.5.3", "yargs-parser": "^21.0.1" }, "bin": { @@ -10275,15 +10450,16 @@ } }, "node_modules/ts-loader": { - "version": "9.4.2", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.2.tgz", - "integrity": "sha512-OmlC4WVmFv5I0PpaxYb+qGeGOdm5giHU7HwDDUjw59emP2UYMHy9fFSDcYgSNoH8sXcj4hGCSEhlDZ9ULeDraA==", + "version": "9.5.1", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.1.tgz", + "integrity": "sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==", "dev": true, "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", - "semver": "^7.3.4" + "semver": "^7.3.4", + "source-map": "^0.7.4" }, "engines": { "node": ">=12.0.0" @@ -10371,9 +10547,9 @@ } }, "node_modules/tslib": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz", - "integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "node_modules/type-check": { "version": "0.4.0", @@ -10420,6 +10596,57 @@ "node": ">= 0.6" } }, + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typed-array-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", @@ -10619,15 +10846,15 @@ } }, "node_modules/typescript": { - "version": "4.9.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", - "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/uid": { @@ -10656,10 +10883,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "engines": { "node": ">= 10.0.0" } @@ -10682,9 +10914,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -10746,25 +10978,19 @@ "devOptional": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -10808,9 +11034,9 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { - "version": "5.88.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", - "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "version": "5.89.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -10869,6 +11095,26 @@ "node": ">=10.13.0" } }, + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -10909,17 +11155,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -10986,12 +11231,17 @@ "node": ">=8.12.0" } }, + "node_modules/windows-release/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, "node_modules/winston": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/winston/-/winston-3.9.0.tgz", - "integrity": "sha512-jW51iW/X95BCW6MMtZWr2jKQBP4hV5bIDq9QrIjfDk6Q9QuxvTKEAlpUNAzP+HYHFFCeENhph16s0zEunu4uuQ==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/winston/-/winston-3.11.0.tgz", + "integrity": "sha512-L3yR6/MzZAOl0DsysUXHVjOwv8mKZ71TrA/41EIduGpOOV5LQVodqN+QdQ6BS6PJ/RdIshZhq84P/fStEZkk7g==", "dependencies": { - "@colors/colors": "1.5.0", + "@colors/colors": "^1.6.0", "@dabh/diagnostics": "^2.0.2", "async": "^3.2.3", "is-stream": "^2.0.0", @@ -11008,16 +11258,16 @@ } }, "node_modules/winston-transport": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.5.0.tgz", - "integrity": "sha512-YpZzcUzBedhlTAfJg6vJDlyEai/IFMIVcaEZZyl3UXIl4gmqRpU7AE89AHLkbzLUsv0NVmw7ts+iztqKxxPW1Q==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.6.0.tgz", + "integrity": "sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==", "dependencies": { "logform": "^2.3.2", "readable-stream": "^3.6.0", "triple-beam": "^1.3.0" }, "engines": { - "node": ">= 6.4.0" + "node": ">= 12.0.0" } }, "node_modules/winston-transport/node_modules/readable-stream": { @@ -11033,6 +11283,14 @@ "node": ">= 6" } }, + "node_modules/winston/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/winston/node_modules/readable-stream": { "version": "3.6.2", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", @@ -11046,29 +11304,17 @@ "node": ">= 6" } }, - "node_modules/word-wrap": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.4.tgz", - "integrity": "sha512-2V81OA4ugVo5pRo46hAoD2ivUJx8jXmWXfUkY4KFNw0hEptvN0QfH3K4nHiwzGeKl5rFKedV48QVoqYavy4YpA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=8" } }, "node_modules/wrap-ansi-cjs": { @@ -11106,6 +11352,12 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/xml": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", @@ -11135,11 +11387,12 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "dev": true, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { diff --git a/backend/package.json b/backend/package.json index 70c81cb1..8365a024 100644 --- a/backend/package.json +++ b/backend/package.json @@ -31,20 +31,20 @@ "@nestjs/testing": "^10.0.0", "@nestjs/typeorm": "^10.0.0", "dotenv": "^16.0.1", - "pg": "^8.7.3", + "pg": "^8.11.3", "reflect-metadata": "^0.1.13", "rimraf": "^5.0.0", "rxjs": "^7.8.0", "swagger-ui-express": "^5.0.0", "typeorm": "^0.3.17", - "winston": "^3.9.0", - "nest-winston": "^1.9.3", + "winston": "^3.11.0", + "nest-winston": "^1.9.4", "helmet": "^7.0.0" }, "devDependencies": { "@types/express": "^4.17.15", "@types/jest": "^29.0.0", - "@types/node": "^18.17.12", + "@types/node": "^20.0.0", "@types/supertest": "^2.0.11", "@typescript-eslint/eslint-plugin": "^6.5.0", "@typescript-eslint/parser": "^6.5.0", @@ -57,18 +57,18 @@ "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-promise": "^6.1.1", "istanbul-badges-readme": "^1.8.4", - "jest": "^29.0.0", + "jest": "^29.7.0", "jest-badges": "^0.1.3", "jest-sonar-reporter": "^2.0.0", - "lint-staged": "^14.0.0", - "prettier": "^3.0.0", - "source-map-support": "^0.5.20", + "lint-staged": "^15.0.2", + "prettier": "^3.0.3", + "source-map-support": "^0.5.21", "supertest": "^6.3.3", - "ts-jest": "^29.0.5", - "ts-loader": "^9.4.2", - "ts-node": "^10.3.0", - "tsconfig-paths": "^4.1.2", - "typescript": "^4.9.4" + "ts-jest": "^29.1.1", + "ts-loader": "^9.5.0", + "ts-node": "^10.9.1", + "tsconfig-paths": "^4.2.0", + "typescript": "^5.2.2" }, "jest": { "moduleFileExtensions": [ diff --git a/database/charts/.helmignore b/charts/nr-compliance-enforcement-cm/.helmignore similarity index 100% rename from database/charts/.helmignore rename to charts/nr-compliance-enforcement-cm/.helmignore diff --git a/charts/nr-compliance-enforcement-cm/Chart.yaml b/charts/nr-compliance-enforcement-cm/Chart.yaml new file mode 100644 index 00000000..32a6e636 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +name: nr-compliance-enforcement-cm +description: A Helm chart for Kubernetes deployment. +icon: https://www.nicepng.com/png/detail/521-5211827_bc-icon-british-columbia-government-logo.png + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "1.16.0" + +maintainers: + - name: Om Mishra + email: omprakash.2.mishra@gov.bc.ca + - name: Derek Roberts + email: derek.roberts@gov.bc.ca diff --git a/charts/nr-compliance-enforcement-cm/README.md b/charts/nr-compliance-enforcement-cm/README.md new file mode 100644 index 00000000..9e072a05 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/README.md @@ -0,0 +1,5228 @@ +# quickstart-openshift + +A Helm chart for Kubernetes deployment. + +![Version: 0.1.0](https://img.shields.io/badge/Version-0.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.16.0](https://img.shields.io/badge/AppVersion-1.16.0-informational?style=flat-square) + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| Om Mishra | | | +| Derek Roberts | | | + +## Requirements + +| Repository | Name | Version | +|------------|------|---------| +| https://bcgov.github.io/helm-service | backend(component) | 0.2.3 | +| https://bcgov.github.io/helm-service | frontend(component) | 0.2.3 | +| https://bcgov.github.io/helm-service | backup(component) | 0.2.3 | +| https://charts.bitnami.com/bitnami | bitnami-pg(postgresql) | 13.2.23 | + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeDefaultDescription
backend.affinityobject
+{}
+
+
backend.autoscaling.behavior.scaleDown.policies[0].periodSecondsint
+60
+
+
backend.autoscaling.behavior.scaleDown.policies[0].typestring
+"Percent"
+
+
backend.autoscaling.behavior.scaleDown.policies[0].valueint
+10
+
+
backend.autoscaling.behavior.scaleDown.policies[1].periodSecondsint
+60
+
+
backend.autoscaling.behavior.scaleDown.policies[1].typestring
+"Pods"
+
+
backend.autoscaling.behavior.scaleDown.policies[1].valueint
+2
+
+
backend.autoscaling.behavior.scaleDown.selectPolicystring
+"Min"
+
+
backend.autoscaling.behavior.scaleDown.stabilizationWindowSecondsint
+300
+
+
backend.autoscaling.behavior.scaleUp.policies[0].periodSecondsint
+30
+
+
backend.autoscaling.behavior.scaleUp.policies[0].typestring
+"Percent"
+
+
backend.autoscaling.behavior.scaleUp.policies[0].valueint
+100
+
+
backend.autoscaling.behavior.scaleUp.policies[1].periodSecondsint
+30
+
+
backend.autoscaling.behavior.scaleUp.policies[1].typestring
+"Pods"
+
+
backend.autoscaling.behavior.scaleUp.policies[1].valueint
+2
+
+
backend.autoscaling.behavior.scaleUp.selectPolicystring
+"Max"
+
+
backend.autoscaling.behavior.scaleUp.stabilizationWindowSecondsint
+0
+
+
backend.autoscaling.enabledbool
+true
+
+
backend.autoscaling.maxReplicasint
+7
+
+
backend.autoscaling.minReplicasint
+3
+
+
backend.autoscaling.targetCPUUtilizationPercentageint
+80
+
+
backend.containers[0].env.fromGlobalSecret[0].keystring
+"password"
+
+
backend.containers[0].env.fromGlobalSecret[0].namestring
+"POSTGRES_PASSWORD"
+
+
backend.containers[0].env.fromGlobalSecret[1].keystring
+"databaseUser"
+
+
backend.containers[0].env.fromGlobalSecret[1].namestring
+"POSTGRES_USER"
+
+
backend.containers[0].env.fromGlobalSecret[2].keystring
+"databaseName"
+
+
backend.containers[0].env.fromGlobalSecret[2].namestring
+"POSTGRES_DATABASE"
+
+
backend.containers[0].env.fromValues[0].namestring
+"POSTGRES_HOST"
+
+
backend.containers[0].env.fromValues[0].valuestring
+"{{ .Release.Name }}-{{.Values.global.databaseAlias}}"
+
+
backend.containers[0].imagestring
+"backend"
+
+
backend.containers[0].livenessProbe.failureThresholdint
+3
+
+
backend.containers[0].livenessProbe.httpGet.pathstring
+"/api"
+
+
backend.containers[0].livenessProbe.httpGet.portint
+3000
+
+
backend.containers[0].livenessProbe.httpGet.schemestring
+"HTTP"
+
+
backend.containers[0].livenessProbe.initialDelaySecondsint
+15
+
+
backend.containers[0].livenessProbe.periodSecondsint
+30
+
+
backend.containers[0].livenessProbe.successThresholdint
+1
+
+
backend.containers[0].livenessProbe.timeoutSecondsint
+5
+
+
backend.containers[0].namestring
+"backend"
+
+
backend.containers[0].ports[0].containerPortint
+3000
+
+
backend.containers[0].ports[0].namestring
+"http"
+
+
backend.containers[0].ports[0].protocolstring
+"TCP"
+
+
backend.containers[0].readinessProbe.failureThresholdint
+30
+
+
backend.containers[0].readinessProbe.httpGet.pathstring
+"/api"
+
+
backend.containers[0].readinessProbe.httpGet.portint
+3000
+
+
backend.containers[0].readinessProbe.httpGet.schemestring
+"HTTP"
+
+
backend.containers[0].readinessProbe.initialDelaySecondsint
+5
+
+
backend.containers[0].readinessProbe.periodSecondsint
+2
+
+
backend.containers[0].readinessProbe.successThresholdint
+1
+
+
backend.containers[0].readinessProbe.timeoutSecondsint
+2
+
+
backend.containers[0].registrystring
+"{{ .Values.global.registry }}"
+
+
backend.containers[0].repositorystring
+"{{ .Values.global.repository }}"
+
+
backend.containers[0].resources.limits.cpustring
+"250m"
+
+
backend.containers[0].resources.limits.memorystring
+"250Mi"
+
+
backend.containers[0].resources.requests.cpustring
+"100m"
+
+
backend.containers[0].resources.requests.memorystring
+"150Mi"
+
+
backend.containers[0].tagstring
+"{{ .Values.global.tag }}"
+
+
backend.deployment.enabledbool
+true
+
+
backend.deploymentStrategy.typestring
+"Recreate"
+
+
backend.enabledbool
+true
+
+
backend.initContainers[0].env.fromGlobalSecret[0].keystring
+"databasePassword"
+
+
backend.initContainers[0].env.fromGlobalSecret[0].namestring
+"FLYWAY_PASSWORD"
+
+
backend.initContainers[0].env.fromGlobalSecret[1].keystring
+"databaseJDBCURLNoCreds"
+
+
backend.initContainers[0].env.fromGlobalSecret[1].namestring
+"FLYWAY_URL"
+
+
backend.initContainers[0].env.fromGlobalSecret[2].keystring
+"databaseUser"
+
+
backend.initContainers[0].env.fromGlobalSecret[2].namestring
+"FLYWAY_USER"
+
+
backend.initContainers[0].env.fromValues[0].namestring
+"FLYWAY_BASELINE_ON_MIGRATE"
+
+
backend.initContainers[0].env.fromValues[0].valuestring
+"true"
+
+
backend.initContainers[0].env.fromValues[1].namestring
+"FLYWAY_DEFAULT_SCHEMA"
+
+
backend.initContainers[0].env.fromValues[1].valuestring
+"USERS"
+
+
backend.initContainers[0].env.fromValues[2].namestring
+"FLYWAY_CONNECT_RETRIES"
+
+
backend.initContainers[0].env.fromValues[2].valuestring
+"30"
+
+
backend.initContainers[0].imagestring
+"migrations"
+
+
backend.initContainers[0].namestring
+"database-migrations"
+
+
backend.initContainers[0].registrystring
+"{{ .Values.global.registry }}"
+
+
backend.initContainers[0].repositorystring
+"{{ .Values.global.repository }}"
+
+
backend.initContainers[0].resources.limits.cpustring
+"500m"
+
+
backend.initContainers[0].resources.limits.memorystring
+"250Mi"
+
+
backend.initContainers[0].resources.requests.cpustring
+"200m"
+
+
backend.initContainers[0].resources.requests.memorystring
+"150Mi"
+
+
backend.initContainers[0].tagstring
+"{{ .Values.global.tag }}"
+
+
backend.nodeSelectorobject
+{}
+
+
backend.service.enabledbool
+true
+
+
backend.service.ports[0].namestring
+"http"
+
+
backend.service.ports[0].portint
+80
+
+
backend.service.ports[0].protocolstring
+"TCP"
+
+
backend.service.ports[0].targetPortint
+3000
+
+
backend.service.typestring
+"ClusterIP"
+
+
backend.tolerationslist
+[]
+
+
backend.vault.enabledbool
+false
+
+
backend.vault.resources.limits.cpustring
+"50m"
+
+
backend.vault.resources.limits.memorystring
+"50Mi"
+
+
backend.vault.resources.requests.cpustring
+"50m"
+
+
backend.vault.resources.requests.memorystring
+"25Mi"
+
+
backend.vault.rolestring
+null
+
+
backend.vault.secretPaths[0]string
+"dev/api-1"
+
+
backend.vault.secretPaths[1]string
+"dev/api-2"
+
+
backend.vault.secretPaths[2]string
+"test/api-1"
+
+
backend.vault.secretPaths[3]string
+"test/api-2"
+
+
backend.vault.secretPaths[4]string
+"prod/api-1"
+
+
backend.vault.secretPaths[5]string
+"prod/api-2"
+
+
backup.containers[0].command[0]string
+"/bin/bash"
+
+
backup.containers[0].command[1]string
+"-c"
+
+
backup.containers[0].command[2]string
+"/backup.sh -1"
+
+
backup.containers[0].env.fromGlobalSecret[0].keystring
+"password"
+
+
backup.containers[0].env.fromGlobalSecret[0].namestring
+"DATABASE_PASSWORD"
+
+
backup.containers[0].env.fromGlobalSecret[1].keystring
+"databaseName"
+
+
backup.containers[0].env.fromGlobalSecret[1].namestring
+"POSTGRESQL_DATABASE"
+
+
backup.containers[0].env.fromGlobalSecret[2].keystring
+"databaseUser"
+
+
backup.containers[0].env.fromGlobalSecret[2].namestring
+"DATABASE_USER"
+
+
backup.containers[0].env.fromValues[0].namestring
+"BACKUP_DIR"
+
+
backup.containers[0].env.fromValues[0].valuestring
+"/backups/"
+
+
backup.containers[0].env.fromValues[1].namestring
+"BACKUP_STRATEGY"
+
+
backup.containers[0].env.fromValues[1].valuestring
+"rolling"
+
+
backup.containers[0].env.fromValues[2].namestring
+"NUM_BACKUPS"
+
+
backup.containers[0].env.fromValues[2].valuestring
+"5"
+
+
backup.containers[0].env.fromValues[3].namestring
+"DAILY_BACKUPS"
+
+
backup.containers[0].env.fromValues[3].valuestring
+"7"
+
+
backup.containers[0].env.fromValues[4].namestring
+"WEEKLY_BACKUPS"
+
+
backup.containers[0].env.fromValues[4].valuestring
+"4"
+
+
backup.containers[0].env.fromValues[5].namestring
+"MONTHLY_BACKUPS"
+
+
backup.containers[0].env.fromValues[5].valuestring
+"1"
+
+
backup.containers[0].env.fromValues[6].namestring
+"DATABASE_SERVICE_NAME"
+
+
backup.containers[0].env.fromValues[6].valuestring
+"{{.Release.Name}}-{{.Values.global.databaseAlias}}"
+
+
backup.containers[0].env.fromValues[7].namestring
+"DEFAULT_PORT"
+
+
backup.containers[0].env.fromValues[7].valuestring
+"5432"
+
+
backup.containers[0].imagestring
+"backup-container"
+
+
backup.containers[0].namestring
+"backup"
+
+
backup.containers[0].registrystring
+"docker.io"
+
+
backup.containers[0].repositorystring
+"bcgovimages"
+
+
backup.containers[0].resources.limits.cpustring
+"50m"
+
+
backup.containers[0].resources.limits.memorystring
+"256Mi"
+
+
backup.containers[0].resources.requests.cpustring
+"20m"
+
+
backup.containers[0].resources.requests.memorystring
+"128Mi"
+
+
backup.containers[0].tagstring
+"latest"
+
+
backup.containers[0].volumeMounts[0].mountPathstring
+"/backups/"
+
+
backup.containers[0].volumeMounts[0].namestring
+"{{.Release.Name}}-backup"
+
+
backup.cronjob.concurrencyPolicystring
+"Replace"
+
+
backup.cronjob.enabledbool
+true
+
+
backup.cronjob.failedJobsHistoryLimitint
+7
+
+
backup.cronjob.restartPolicystring
+"Never"
+
+
backup.cronjob.schedulestring
+"0 0 * * *"
+
+
backup.cronjob.startingDeadlineSecondsint
+3600
+
+
backup.cronjob.successfulJobsHistoryLimitint
+30
+
+
backup.cronjob.volumes[0].namestring
+"{{.Release.Name}}-backup"
+
+
backup.cronjob.volumes[0].persistentVolumeClaim.claimNamestring
+"{{.Release.Name}}-backup"
+
+
backup.enabledbool
+true
+
+
backup.pvc.accessModesstring
+"ReadWriteOnce"
+
+
backup.pvc.enabledbool
+true
+
+
backup.pvc.sizestring
+"256Mi"
+
+
backup.pvc.storageClassNamestring
+"netapp-file-standard"
+
+
bitnami-pg.auth.databasestring
+"quickstart"
+
+
bitnami-pg.auth.existingSecretstring
+"{{ .Release.Name }}"
+
+
bitnami-pg.auth.usernamestring
+"quickstart"
+
+
bitnami-pg.backup.cronjob.containerSecurityContextobject
+{}
+
+
bitnami-pg.backup.cronjob.podSecurityContext.enabledbool
+false
+
+
bitnami-pg.backup.cronjob.storage.sizestring
+"200Mi"
+
+
bitnami-pg.backup.enabledbool
+false
+
+
bitnami-pg.enabledbool
+true
+
+
bitnami-pg.image.registrystring
+"ghcr.io"
+
+
bitnami-pg.image.repositorystring
+"bcgov/nr-containers/bitnami/postgresql"
+
+
bitnami-pg.image.tagstring
+"15.5.0"
+
+
bitnami-pg.primary.containerSecurityContext.enabledbool
+false
+
+
bitnami-pg.primary.initdb.scripts."postgis.sh"string
+"#!/bin/sh\nPGPASSWORD=$POSTGRES_PASSWORD psql -U postgres -d postgres -c \"CREATE EXTENSION postgis;\"\n"
+
+
bitnami-pg.primary.persistence.accessModes[0]string
+"ReadWriteOnce"
+
+
bitnami-pg.primary.persistence.enabledbool
+true
+
+
bitnami-pg.primary.persistence.sizestring
+"100Mi"
+
+
bitnami-pg.primary.persistence.storageClassstring
+"netapp-file-standard"
+
+
bitnami-pg.primary.podSecurityContext.enabledbool
+false
+
+
bitnami-pg.primary.resources.limits.cpustring
+"150m"
+
+
bitnami-pg.primary.resources.limits.memorystring
+"250Mi"
+
+
bitnami-pg.primary.resources.requests.cpustring
+"50m"
+
+
bitnami-pg.primary.resources.requests.memorystring
+"150Mi"
+
+
bitnami-pg.shmVolume.enabledbool
+false
+
+
crunchy.crunchyImagestring
+"artifacts.developer.gov.bc.ca/bcgov-docker-local/crunchy-postgres-gis:ubi8-15.2-3.3-0"
+
+
crunchy.enabledbool
+false
+
+
crunchy.imagePullPolicystring
+"Always"
+
+
crunchy.instances.dataVolumeClaimSpec.storagestring
+"120Mi"
+
+
crunchy.instances.dataVolumeClaimSpec.storageClassNamestring
+"netapp-block-standard"
+
+
crunchy.instances.limits.cpustring
+"100m"
+
+
crunchy.instances.limits.memorystring
+"512Mi"
+
+
crunchy.instances.metadata.annotations."prometheus.io/port"string
+"9187"
+
+
crunchy.instances.metadata.annotations."prometheus.io/scrape"string
+"true"
+
+
crunchy.instances.namestring
+"ha"
+
+
crunchy.instances.replicaCertCopy.limits.cpustring
+"50m"
+
+
crunchy.instances.replicaCertCopy.limits.memorystring
+"64Mi"
+
+
crunchy.instances.replicaCertCopy.requests.cpustring
+"1m"
+
+
crunchy.instances.replicaCertCopy.requests.memorystring
+"32Mi"
+
+
crunchy.instances.replicasint
+1
+
+
crunchy.instances.requests.cpustring
+"25m"
+
+
crunchy.instances.requests.memorystring
+"256Mi"
+
+
crunchy.patroni.postgresql.parameters.max_slot_wal_keep_sizestring
+"128MB"
+
+
crunchy.patroni.postgresql.parameters.max_wal_sizestring
+"64MB"
+
+
crunchy.patroni.postgresql.parameters.min_wal_sizestring
+"32MB"
+
+
crunchy.patroni.postgresql.parameters.shared_buffersstring
+"16MB"
+
+
crunchy.patroni.postgresql.parameters.wal_buffersstring
+"64kB"
+
+
crunchy.patroni.postgresql.pg_hbastring
+"host all all 0.0.0.0/0 md5"
+
+
crunchy.pgBackRest.enabledbool
+false
+
+
crunchy.pgBackRest.imagestring
+null
+
+
crunchy.pgBackRest.repoHost.limits.cpustring
+"50m"
+
+
crunchy.pgBackRest.repoHost.limits.memorystring
+"128Mi"
+
+
crunchy.pgBackRest.repoHost.requests.cpustring
+"1m"
+
+
crunchy.pgBackRest.repoHost.requests.memorystring
+"64Mi"
+
+
crunchy.pgBackRest.repos.schedules.fullstring
+"0 8 * * *"
+
+
crunchy.pgBackRest.repos.schedules.incrementalstring
+"0 0,4,12,16,20 * * *"
+
+
crunchy.pgBackRest.repos.volume.accessModesstring
+"ReadWriteOnce"
+
+
crunchy.pgBackRest.repos.volume.storagestring
+"64Mi"
+
+
crunchy.pgBackRest.repos.volume.storageClassNamestring
+"netapp-file-backup"
+
+
crunchy.pgBackRest.retentionstring
+"1"
+
+
crunchy.pgBackRest.retentionFullTypestring
+"count"
+
+
crunchy.pgBackRest.sidecars.limits.cpustring
+"50m"
+
+
crunchy.pgBackRest.sidecars.limits.memorystring
+"128Mi"
+
+
crunchy.pgBackRest.sidecars.requests.cpustring
+"1m"
+
+
crunchy.pgBackRest.sidecars.requests.memorystring
+"64Mi"
+
+
crunchy.pgmonitor.enabledbool
+false
+
+
crunchy.pgmonitor.exporter.imagestring
+null
+
+
crunchy.pgmonitor.exporter.limits.cpustring
+"50m"
+
+
crunchy.pgmonitor.exporter.limits.memorystring
+"128Mi"
+
+
crunchy.pgmonitor.exporter.requests.cpustring
+"1m"
+
+
crunchy.pgmonitor.exporter.requests.memorystring
+"64Mi"
+
+
crunchy.postGISVersionstring
+"3.3"
+
+
crunchy.postgresVersionint
+15
+
+
crunchy.proxy.pgBouncer.imagestring
+null
+
+
crunchy.proxy.pgBouncer.limits.cpustring
+"50m"
+
+
crunchy.proxy.pgBouncer.limits.memorystring
+"128Mi"
+
+
crunchy.proxy.pgBouncer.replicasint
+1
+
+
crunchy.proxy.pgBouncer.requests.cpustring
+"1m"
+
+
crunchy.proxy.pgBouncer.requests.memorystring
+"64Mi"
+
+
frontend.autoscaling.behavior.scaleDown.policies[0].periodSecondsint
+60
+
+
frontend.autoscaling.behavior.scaleDown.policies[0].typestring
+"Percent"
+
+
frontend.autoscaling.behavior.scaleDown.policies[0].valueint
+10
+
+
frontend.autoscaling.behavior.scaleDown.policies[1].periodSecondsint
+60
+
+
frontend.autoscaling.behavior.scaleDown.policies[1].typestring
+"Pods"
+
+
frontend.autoscaling.behavior.scaleDown.policies[1].valueint
+2
+
+
frontend.autoscaling.behavior.scaleDown.selectPolicystring
+"Min"
+
+
frontend.autoscaling.behavior.scaleDown.stabilizationWindowSecondsint
+300
+
+
frontend.autoscaling.behavior.scaleUp.policies[0].periodSecondsint
+30
+
+
frontend.autoscaling.behavior.scaleUp.policies[0].typestring
+"Percent"
+
+
frontend.autoscaling.behavior.scaleUp.policies[0].valueint
+100
+
+
frontend.autoscaling.behavior.scaleUp.policies[1].periodSecondsint
+30
+
+
frontend.autoscaling.behavior.scaleUp.policies[1].typestring
+"Pods"
+
+
frontend.autoscaling.behavior.scaleUp.policies[1].valueint
+2
+
+
frontend.autoscaling.behavior.scaleUp.selectPolicystring
+"Max"
+
+
frontend.autoscaling.behavior.scaleUp.stabilizationWindowSecondsint
+0
+
+
frontend.autoscaling.enabledbool
+true
+
+
frontend.autoscaling.maxReplicasint
+7
+
+
frontend.autoscaling.minReplicasint
+3
+
+
frontend.autoscaling.targetCPUUtilizationPercentageint
+80
+
+
frontend.configmapobject
+{
+  "data": {
+    "config.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"{{ .Release.Name }}-{{ .Release.Namespace }}\"\n  };\n})();",
+    "config.prod.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"static\"\n  };\n})();"
+  },
+  "enabled": true
+}
+
+
the configmap specific to the component.
frontend.configmap.dataobject
+{
+  "config.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"{{ .Release.Name }}-{{ .Release.Namespace }}\"\n  };\n})();",
+  "config.prod.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"static\"\n  };\n})();"
+}
+
+
dat contains key value pairs for the configmap. can contain multiple files. value can be piped as string.
frontend.configmap.enabledbool
+true
+
+
enable or disable the configmap.
frontend.containerslist
+[
+  {
+    "env": {
+      "fromLocalConfigmap": [
+        {
+          "key": "config.js",
+          "name": "frontend-configmap"
+        },
+        {
+          "key": "config.prod.js",
+          "name": "frontend-prod-configmap"
+        }
+      ],
+      "fromValues": [
+        {
+          "name": "BACKEND_URL",
+          "value": "http://{{ .Release.Name }}-backend"
+        },
+        {
+          "name": "LOG_LEVEL",
+          "value": "info"
+        }
+      ]
+    },
+    "image": "frontend",
+    "livenessProbe": {
+      "failureThreshold": 3,
+      "httpGet": {
+        "path": "/health",
+        "port": 3001,
+        "scheme": "HTTP"
+      },
+      "initialDelaySeconds": 15,
+      "periodSeconds": 30,
+      "successThreshold": 1,
+      "timeoutSeconds": 5
+    },
+    "name": "frontend",
+    "ports": [
+      {
+        "containerPort": 3000,
+        "name": "http",
+        "protocol": "TCP"
+      },
+      {
+        "containerPort": 3001,
+        "name": "http2",
+        "protocol": "TCP"
+      }
+    ],
+    "readinessProbe": {
+      "failureThreshold": 30,
+      "httpGet": {
+        "path": "/health",
+        "port": 3001,
+        "scheme": "HTTP"
+      },
+      "initialDelaySeconds": 5,
+      "periodSeconds": 2,
+      "successThreshold": 1,
+      "timeoutSeconds": 2
+    },
+    "registry": "{{ .Values.global.registry }}",
+    "repository": "{{ .Values.global.repository }}",
+    "resources": {
+      "limits": {
+        "cpu": "100m",
+        "memory": "150Mi"
+      },
+      "requests": {
+        "cpu": "30m",
+        "memory": "50Mi"
+      }
+    },
+    "securityContext": {
+      "capabilities": {
+        "add": [
+          "NET_BIND_SERVICE"
+        ]
+      }
+    },
+    "tag": "{{ .Values.global.tag }}"
+  }
+]
+
+
the containers specific to the component. one or many containers can be defined.
frontend.deploymentobject
+{
+  "enabled": true
+}
+
+
can be either a statefulSet or a deployment not both. TBD (StatefulSet)
frontend.deploymentStrategyobject
+{
+  "type": "Recreate"
+}
+
+
the deployment strategy, can be "Recreate" or "RollingUpdate"
frontend.enabledbool
+true
+
+
enable or disable a component deployment.
frontend.route.enabledbool
+true
+
+
frontend.route.hoststring
+"{{ .Release.Name }}-frontend.{{ .Values.global.domain }}"
+
+
frontend.route.targetPortstring
+"http"
+
+
frontend.service.enabledbool
+true
+
+
frontend.service.ports[0].namestring
+"http"
+
+
frontend.service.ports[0].portint
+80
+
+
frontend.service.ports[0].protocolstring
+"TCP"
+
+
frontend.service.ports[0].targetPortint
+3000
+
+
frontend.service.typestring
+"ClusterIP"
+
+
global.autoscalingbool
+true
+
+
global.databaseAliasstring
+"bitnami-pg"
+
+
global.domainstring
+"apps.silver.devops.gov.bc.ca"
+
+
global.openshiftImageRegistrystring
+"image-registry.openshift-image-registry.svc:5000"
+
+
global.podAnnotationsstring
+"app.kubernetes.io/timestamp: {{now | toString }}\n"
+
+
global.registrystring
+"ghcr.io"
+
+
global.repositorystring
+null
+
+
global.secrets.annotation."helm.sh/policy"string
+"keep"
+
+
global.secrets.databaseNamestring
+null
+
+
global.secrets.databasePasswordstring
+null
+
+
global.secrets.databaseUserstring
+null
+
+
global.secrets.enabledbool
+true
+
+
global.tagstring
+null
+
+
+ + +## Values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
KeyTypeDefaultDescription
backend.affinityobject
+{}
+
+
backend.autoscaling.behavior.scaleDown.policies[0].periodSecondsint
+60
+
+
backend.autoscaling.behavior.scaleDown.policies[0].typestring
+"Percent"
+
+
backend.autoscaling.behavior.scaleDown.policies[0].valueint
+10
+
+
backend.autoscaling.behavior.scaleDown.policies[1].periodSecondsint
+60
+
+
backend.autoscaling.behavior.scaleDown.policies[1].typestring
+"Pods"
+
+
backend.autoscaling.behavior.scaleDown.policies[1].valueint
+2
+
+
backend.autoscaling.behavior.scaleDown.selectPolicystring
+"Min"
+
+
backend.autoscaling.behavior.scaleDown.stabilizationWindowSecondsint
+300
+
+
backend.autoscaling.behavior.scaleUp.policies[0].periodSecondsint
+30
+
+
backend.autoscaling.behavior.scaleUp.policies[0].typestring
+"Percent"
+
+
backend.autoscaling.behavior.scaleUp.policies[0].valueint
+100
+
+
backend.autoscaling.behavior.scaleUp.policies[1].periodSecondsint
+30
+
+
backend.autoscaling.behavior.scaleUp.policies[1].typestring
+"Pods"
+
+
backend.autoscaling.behavior.scaleUp.policies[1].valueint
+2
+
+
backend.autoscaling.behavior.scaleUp.selectPolicystring
+"Max"
+
+
backend.autoscaling.behavior.scaleUp.stabilizationWindowSecondsint
+0
+
+
backend.autoscaling.enabledbool
+true
+
+
backend.autoscaling.maxReplicasint
+7
+
+
backend.autoscaling.minReplicasint
+3
+
+
backend.autoscaling.targetCPUUtilizationPercentageint
+80
+
+
backend.containers[0].env.fromGlobalSecret[0].keystring
+"password"
+
+
backend.containers[0].env.fromGlobalSecret[0].namestring
+"POSTGRES_PASSWORD"
+
+
backend.containers[0].env.fromGlobalSecret[1].keystring
+"databaseUser"
+
+
backend.containers[0].env.fromGlobalSecret[1].namestring
+"POSTGRES_USER"
+
+
backend.containers[0].env.fromGlobalSecret[2].keystring
+"databaseName"
+
+
backend.containers[0].env.fromGlobalSecret[2].namestring
+"POSTGRES_DATABASE"
+
+
backend.containers[0].env.fromValues[0].namestring
+"POSTGRES_HOST"
+
+
backend.containers[0].env.fromValues[0].valuestring
+"{{ .Release.Name }}-{{.Values.global.databaseAlias}}"
+
+
backend.containers[0].imagestring
+"backend"
+
+
backend.containers[0].livenessProbe.failureThresholdint
+3
+
+
backend.containers[0].livenessProbe.httpGet.pathstring
+"/api"
+
+
backend.containers[0].livenessProbe.httpGet.portint
+3000
+
+
backend.containers[0].livenessProbe.httpGet.schemestring
+"HTTP"
+
+
backend.containers[0].livenessProbe.initialDelaySecondsint
+15
+
+
backend.containers[0].livenessProbe.periodSecondsint
+30
+
+
backend.containers[0].livenessProbe.successThresholdint
+1
+
+
backend.containers[0].livenessProbe.timeoutSecondsint
+5
+
+
backend.containers[0].namestring
+"backend"
+
+
backend.containers[0].ports[0].containerPortint
+3000
+
+
backend.containers[0].ports[0].namestring
+"http"
+
+
backend.containers[0].ports[0].protocolstring
+"TCP"
+
+
backend.containers[0].readinessProbe.failureThresholdint
+30
+
+
backend.containers[0].readinessProbe.httpGet.pathstring
+"/api"
+
+
backend.containers[0].readinessProbe.httpGet.portint
+3000
+
+
backend.containers[0].readinessProbe.httpGet.schemestring
+"HTTP"
+
+
backend.containers[0].readinessProbe.initialDelaySecondsint
+5
+
+
backend.containers[0].readinessProbe.periodSecondsint
+2
+
+
backend.containers[0].readinessProbe.successThresholdint
+1
+
+
backend.containers[0].readinessProbe.timeoutSecondsint
+2
+
+
backend.containers[0].registrystring
+"{{ .Values.global.registry }}"
+
+
backend.containers[0].repositorystring
+"{{ .Values.global.repository }}"
+
+
backend.containers[0].resources.limits.cpustring
+"250m"
+
+
backend.containers[0].resources.limits.memorystring
+"250Mi"
+
+
backend.containers[0].resources.requests.cpustring
+"100m"
+
+
backend.containers[0].resources.requests.memorystring
+"150Mi"
+
+
backend.containers[0].tagstring
+"{{ .Values.global.tag }}"
+
+
backend.deployment.enabledbool
+true
+
+
backend.deploymentStrategy.typestring
+"Recreate"
+
+
backend.enabledbool
+true
+
+
backend.initContainers[0].env.fromGlobalSecret[0].keystring
+"databasePassword"
+
+
backend.initContainers[0].env.fromGlobalSecret[0].namestring
+"FLYWAY_PASSWORD"
+
+
backend.initContainers[0].env.fromGlobalSecret[1].keystring
+"databaseJDBCURLNoCreds"
+
+
backend.initContainers[0].env.fromGlobalSecret[1].namestring
+"FLYWAY_URL"
+
+
backend.initContainers[0].env.fromGlobalSecret[2].keystring
+"databaseUser"
+
+
backend.initContainers[0].env.fromGlobalSecret[2].namestring
+"FLYWAY_USER"
+
+
backend.initContainers[0].env.fromValues[0].namestring
+"FLYWAY_BASELINE_ON_MIGRATE"
+
+
backend.initContainers[0].env.fromValues[0].valuestring
+"true"
+
+
backend.initContainers[0].env.fromValues[1].namestring
+"FLYWAY_DEFAULT_SCHEMA"
+
+
backend.initContainers[0].env.fromValues[1].valuestring
+"USERS"
+
+
backend.initContainers[0].env.fromValues[2].namestring
+"FLYWAY_CONNECT_RETRIES"
+
+
backend.initContainers[0].env.fromValues[2].valuestring
+"30"
+
+
backend.initContainers[0].imagestring
+"migrations"
+
+
backend.initContainers[0].namestring
+"database-migrations"
+
+
backend.initContainers[0].registrystring
+"{{ .Values.global.registry }}"
+
+
backend.initContainers[0].repositorystring
+"{{ .Values.global.repository }}"
+
+
backend.initContainers[0].resources.limits.cpustring
+"500m"
+
+
backend.initContainers[0].resources.limits.memorystring
+"250Mi"
+
+
backend.initContainers[0].resources.requests.cpustring
+"200m"
+
+
backend.initContainers[0].resources.requests.memorystring
+"150Mi"
+
+
backend.initContainers[0].tagstring
+"{{ .Values.global.tag }}"
+
+
backend.nodeSelectorobject
+{}
+
+
backend.service.enabledbool
+true
+
+
backend.service.ports[0].namestring
+"http"
+
+
backend.service.ports[0].portint
+80
+
+
backend.service.ports[0].protocolstring
+"TCP"
+
+
backend.service.ports[0].targetPortint
+3000
+
+
backend.service.typestring
+"ClusterIP"
+
+
backend.tolerationslist
+[]
+
+
backend.vault.enabledbool
+false
+
+
backend.vault.resources.limits.cpustring
+"50m"
+
+
backend.vault.resources.limits.memorystring
+"50Mi"
+
+
backend.vault.resources.requests.cpustring
+"50m"
+
+
backend.vault.resources.requests.memorystring
+"25Mi"
+
+
backend.vault.rolestring
+null
+
+
backend.vault.secretPaths[0]string
+"dev/api-1"
+
+
backend.vault.secretPaths[1]string
+"dev/api-2"
+
+
backend.vault.secretPaths[2]string
+"test/api-1"
+
+
backend.vault.secretPaths[3]string
+"test/api-2"
+
+
backend.vault.secretPaths[4]string
+"prod/api-1"
+
+
backend.vault.secretPaths[5]string
+"prod/api-2"
+
+
backup.containers[0].command[0]string
+"/bin/bash"
+
+
backup.containers[0].command[1]string
+"-c"
+
+
backup.containers[0].command[2]string
+"/backup.sh -1"
+
+
backup.containers[0].env.fromGlobalSecret[0].keystring
+"password"
+
+
backup.containers[0].env.fromGlobalSecret[0].namestring
+"DATABASE_PASSWORD"
+
+
backup.containers[0].env.fromGlobalSecret[1].keystring
+"databaseName"
+
+
backup.containers[0].env.fromGlobalSecret[1].namestring
+"POSTGRESQL_DATABASE"
+
+
backup.containers[0].env.fromGlobalSecret[2].keystring
+"databaseUser"
+
+
backup.containers[0].env.fromGlobalSecret[2].namestring
+"DATABASE_USER"
+
+
backup.containers[0].env.fromValues[0].namestring
+"BACKUP_DIR"
+
+
backup.containers[0].env.fromValues[0].valuestring
+"/backups/"
+
+
backup.containers[0].env.fromValues[1].namestring
+"BACKUP_STRATEGY"
+
+
backup.containers[0].env.fromValues[1].valuestring
+"rolling"
+
+
backup.containers[0].env.fromValues[2].namestring
+"NUM_BACKUPS"
+
+
backup.containers[0].env.fromValues[2].valuestring
+"5"
+
+
backup.containers[0].env.fromValues[3].namestring
+"DAILY_BACKUPS"
+
+
backup.containers[0].env.fromValues[3].valuestring
+"7"
+
+
backup.containers[0].env.fromValues[4].namestring
+"WEEKLY_BACKUPS"
+
+
backup.containers[0].env.fromValues[4].valuestring
+"4"
+
+
backup.containers[0].env.fromValues[5].namestring
+"MONTHLY_BACKUPS"
+
+
backup.containers[0].env.fromValues[5].valuestring
+"1"
+
+
backup.containers[0].env.fromValues[6].namestring
+"DATABASE_SERVICE_NAME"
+
+
backup.containers[0].env.fromValues[6].valuestring
+"{{.Release.Name}}-{{.Values.global.databaseAlias}}"
+
+
backup.containers[0].env.fromValues[7].namestring
+"DEFAULT_PORT"
+
+
backup.containers[0].env.fromValues[7].valuestring
+"5432"
+
+
backup.containers[0].imagestring
+"backup-container"
+
+
backup.containers[0].namestring
+"backup"
+
+
backup.containers[0].registrystring
+"docker.io"
+
+
backup.containers[0].repositorystring
+"bcgovimages"
+
+
backup.containers[0].resources.limits.cpustring
+"50m"
+
+
backup.containers[0].resources.limits.memorystring
+"256Mi"
+
+
backup.containers[0].resources.requests.cpustring
+"20m"
+
+
backup.containers[0].resources.requests.memorystring
+"128Mi"
+
+
backup.containers[0].tagstring
+"latest"
+
+
backup.containers[0].volumeMounts[0].mountPathstring
+"/backups/"
+
+
backup.containers[0].volumeMounts[0].namestring
+"{{.Release.Name}}-backup"
+
+
backup.cronjob.concurrencyPolicystring
+"Replace"
+
+
backup.cronjob.enabledbool
+true
+
+
backup.cronjob.failedJobsHistoryLimitint
+7
+
+
backup.cronjob.restartPolicystring
+"Never"
+
+
backup.cronjob.schedulestring
+"0 0 * * *"
+
+
backup.cronjob.startingDeadlineSecondsint
+3600
+
+
backup.cronjob.successfulJobsHistoryLimitint
+30
+
+
backup.cronjob.volumes[0].namestring
+"{{.Release.Name}}-backup"
+
+
backup.cronjob.volumes[0].persistentVolumeClaim.claimNamestring
+"{{.Release.Name}}-backup"
+
+
backup.enabledbool
+true
+
+
backup.pvc.accessModesstring
+"ReadWriteOnce"
+
+
backup.pvc.enabledbool
+true
+
+
backup.pvc.sizestring
+"256Mi"
+
+
backup.pvc.storageClassNamestring
+"netapp-file-standard"
+
+
bitnami-pg.auth.databasestring
+"quickstart"
+
+
bitnami-pg.auth.existingSecretstring
+"{{ .Release.Name }}"
+
+
bitnami-pg.auth.usernamestring
+"quickstart"
+
+
bitnami-pg.backup.cronjob.containerSecurityContextobject
+{}
+
+
bitnami-pg.backup.cronjob.podSecurityContext.enabledbool
+false
+
+
bitnami-pg.backup.cronjob.storage.sizestring
+"200Mi"
+
+
bitnami-pg.backup.enabledbool
+false
+
+
bitnami-pg.enabledbool
+true
+
+
bitnami-pg.image.registrystring
+"ghcr.io"
+
+
bitnami-pg.image.repositorystring
+"bcgov/nr-containers/bitnami/postgresql"
+
+
bitnami-pg.image.tagstring
+"15.5.0"
+
+
bitnami-pg.primary.containerSecurityContext.enabledbool
+false
+
+
bitnami-pg.primary.initdb.scripts."postgis.sh"string
+"#!/bin/sh\nPGPASSWORD=$POSTGRES_PASSWORD psql -U postgres -d postgres -c \"CREATE EXTENSION postgis;\"\n"
+
+
bitnami-pg.primary.persistence.accessModes[0]string
+"ReadWriteOnce"
+
+
bitnami-pg.primary.persistence.enabledbool
+true
+
+
bitnami-pg.primary.persistence.sizestring
+"100Mi"
+
+
bitnami-pg.primary.persistence.storageClassstring
+"netapp-file-standard"
+
+
bitnami-pg.primary.podSecurityContext.enabledbool
+false
+
+
bitnami-pg.primary.resources.limits.cpustring
+"150m"
+
+
bitnami-pg.primary.resources.limits.memorystring
+"250Mi"
+
+
bitnami-pg.primary.resources.requests.cpustring
+"50m"
+
+
bitnami-pg.primary.resources.requests.memorystring
+"150Mi"
+
+
bitnami-pg.shmVolume.enabledbool
+false
+
+
crunchy.crunchyImagestring
+"artifacts.developer.gov.bc.ca/bcgov-docker-local/crunchy-postgres-gis:ubi8-15.2-3.3-0"
+
+
crunchy.enabledbool
+false
+
+
crunchy.imagePullPolicystring
+"Always"
+
+
crunchy.instances.dataVolumeClaimSpec.storagestring
+"120Mi"
+
+
crunchy.instances.dataVolumeClaimSpec.storageClassNamestring
+"netapp-block-standard"
+
+
crunchy.instances.limits.cpustring
+"100m"
+
+
crunchy.instances.limits.memorystring
+"512Mi"
+
+
crunchy.instances.metadata.annotations."prometheus.io/port"string
+"9187"
+
+
crunchy.instances.metadata.annotations."prometheus.io/scrape"string
+"true"
+
+
crunchy.instances.namestring
+"ha"
+
+
crunchy.instances.replicaCertCopy.limits.cpustring
+"50m"
+
+
crunchy.instances.replicaCertCopy.limits.memorystring
+"64Mi"
+
+
crunchy.instances.replicaCertCopy.requests.cpustring
+"1m"
+
+
crunchy.instances.replicaCertCopy.requests.memorystring
+"32Mi"
+
+
crunchy.instances.replicasint
+1
+
+
crunchy.instances.requests.cpustring
+"25m"
+
+
crunchy.instances.requests.memorystring
+"256Mi"
+
+
crunchy.patroni.postgresql.parameters.max_slot_wal_keep_sizestring
+"128MB"
+
+
crunchy.patroni.postgresql.parameters.max_wal_sizestring
+"64MB"
+
+
crunchy.patroni.postgresql.parameters.min_wal_sizestring
+"32MB"
+
+
crunchy.patroni.postgresql.parameters.shared_buffersstring
+"16MB"
+
+
crunchy.patroni.postgresql.parameters.wal_buffersstring
+"64kB"
+
+
crunchy.patroni.postgresql.pg_hbastring
+"host all all 0.0.0.0/0 md5"
+
+
crunchy.pgBackRest.enabledbool
+false
+
+
crunchy.pgBackRest.imagestring
+null
+
+
crunchy.pgBackRest.repoHost.limits.cpustring
+"50m"
+
+
crunchy.pgBackRest.repoHost.limits.memorystring
+"128Mi"
+
+
crunchy.pgBackRest.repoHost.requests.cpustring
+"1m"
+
+
crunchy.pgBackRest.repoHost.requests.memorystring
+"64Mi"
+
+
crunchy.pgBackRest.repos.schedules.fullstring
+"0 8 * * *"
+
+
crunchy.pgBackRest.repos.schedules.incrementalstring
+"0 0,4,12,16,20 * * *"
+
+
crunchy.pgBackRest.repos.volume.accessModesstring
+"ReadWriteOnce"
+
+
crunchy.pgBackRest.repos.volume.storagestring
+"64Mi"
+
+
crunchy.pgBackRest.repos.volume.storageClassNamestring
+"netapp-file-backup"
+
+
crunchy.pgBackRest.retentionstring
+"1"
+
+
crunchy.pgBackRest.retentionFullTypestring
+"count"
+
+
crunchy.pgBackRest.sidecars.limits.cpustring
+"50m"
+
+
crunchy.pgBackRest.sidecars.limits.memorystring
+"128Mi"
+
+
crunchy.pgBackRest.sidecars.requests.cpustring
+"1m"
+
+
crunchy.pgBackRest.sidecars.requests.memorystring
+"64Mi"
+
+
crunchy.pgmonitor.enabledbool
+false
+
+
crunchy.pgmonitor.exporter.imagestring
+null
+
+
crunchy.pgmonitor.exporter.limits.cpustring
+"50m"
+
+
crunchy.pgmonitor.exporter.limits.memorystring
+"128Mi"
+
+
crunchy.pgmonitor.exporter.requests.cpustring
+"1m"
+
+
crunchy.pgmonitor.exporter.requests.memorystring
+"64Mi"
+
+
crunchy.postGISVersionstring
+"3.3"
+
+
crunchy.postgresVersionint
+15
+
+
crunchy.proxy.pgBouncer.imagestring
+null
+
+
crunchy.proxy.pgBouncer.limits.cpustring
+"50m"
+
+
crunchy.proxy.pgBouncer.limits.memorystring
+"128Mi"
+
+
crunchy.proxy.pgBouncer.replicasint
+1
+
+
crunchy.proxy.pgBouncer.requests.cpustring
+"1m"
+
+
crunchy.proxy.pgBouncer.requests.memorystring
+"64Mi"
+
+
frontend.autoscaling.behavior.scaleDown.policies[0].periodSecondsint
+60
+
+
frontend.autoscaling.behavior.scaleDown.policies[0].typestring
+"Percent"
+
+
frontend.autoscaling.behavior.scaleDown.policies[0].valueint
+10
+
+
frontend.autoscaling.behavior.scaleDown.policies[1].periodSecondsint
+60
+
+
frontend.autoscaling.behavior.scaleDown.policies[1].typestring
+"Pods"
+
+
frontend.autoscaling.behavior.scaleDown.policies[1].valueint
+2
+
+
frontend.autoscaling.behavior.scaleDown.selectPolicystring
+"Min"
+
+
frontend.autoscaling.behavior.scaleDown.stabilizationWindowSecondsint
+300
+
+
frontend.autoscaling.behavior.scaleUp.policies[0].periodSecondsint
+30
+
+
frontend.autoscaling.behavior.scaleUp.policies[0].typestring
+"Percent"
+
+
frontend.autoscaling.behavior.scaleUp.policies[0].valueint
+100
+
+
frontend.autoscaling.behavior.scaleUp.policies[1].periodSecondsint
+30
+
+
frontend.autoscaling.behavior.scaleUp.policies[1].typestring
+"Pods"
+
+
frontend.autoscaling.behavior.scaleUp.policies[1].valueint
+2
+
+
frontend.autoscaling.behavior.scaleUp.selectPolicystring
+"Max"
+
+
frontend.autoscaling.behavior.scaleUp.stabilizationWindowSecondsint
+0
+
+
frontend.autoscaling.enabledbool
+true
+
+
frontend.autoscaling.maxReplicasint
+7
+
+
frontend.autoscaling.minReplicasint
+3
+
+
frontend.autoscaling.targetCPUUtilizationPercentageint
+80
+
+
frontend.configmapobject
+{
+  "data": {
+    "config.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"{{ .Release.Name }}-{{ .Release.Namespace }}\"\n  };\n})();",
+    "config.prod.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"static\"\n  };\n})();"
+  },
+  "enabled": true
+}
+
+
the configmap specific to the component.
frontend.configmap.dataobject
+{
+  "config.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"{{ .Release.Name }}-{{ .Release.Namespace }}\"\n  };\n})();",
+  "config.prod.js": "const envConfig = (() =\u003e {\n  return {\n    \"VITE_DEPLOY_ENVIRONMENT\":\"static\"\n  };\n})();"
+}
+
+
dat contains key value pairs for the configmap. can contain multiple files. value can be piped as string.
frontend.configmap.enabledbool
+true
+
+
enable or disable the configmap.
frontend.containerslist
+[
+  {
+    "env": {
+      "fromLocalConfigmap": [
+        {
+          "key": "config.js",
+          "name": "frontend-configmap"
+        },
+        {
+          "key": "config.prod.js",
+          "name": "frontend-prod-configmap"
+        }
+      ],
+      "fromValues": [
+        {
+          "name": "BACKEND_URL",
+          "value": "http://{{ .Release.Name }}-backend"
+        },
+        {
+          "name": "LOG_LEVEL",
+          "value": "info"
+        }
+      ]
+    },
+    "image": "frontend",
+    "livenessProbe": {
+      "failureThreshold": 3,
+      "httpGet": {
+        "path": "/health",
+        "port": 3001,
+        "scheme": "HTTP"
+      },
+      "initialDelaySeconds": 15,
+      "periodSeconds": 30,
+      "successThreshold": 1,
+      "timeoutSeconds": 5
+    },
+    "name": "frontend",
+    "ports": [
+      {
+        "containerPort": 3000,
+        "name": "http",
+        "protocol": "TCP"
+      },
+      {
+        "containerPort": 3001,
+        "name": "http2",
+        "protocol": "TCP"
+      }
+    ],
+    "readinessProbe": {
+      "failureThreshold": 30,
+      "httpGet": {
+        "path": "/health",
+        "port": 3001,
+        "scheme": "HTTP"
+      },
+      "initialDelaySeconds": 5,
+      "periodSeconds": 2,
+      "successThreshold": 1,
+      "timeoutSeconds": 2
+    },
+    "registry": "{{ .Values.global.registry }}",
+    "repository": "{{ .Values.global.repository }}",
+    "resources": {
+      "limits": {
+        "cpu": "100m",
+        "memory": "150Mi"
+      },
+      "requests": {
+        "cpu": "30m",
+        "memory": "50Mi"
+      }
+    },
+    "securityContext": {
+      "capabilities": {
+        "add": [
+          "NET_BIND_SERVICE"
+        ]
+      }
+    },
+    "tag": "{{ .Values.global.tag }}"
+  }
+]
+
+
the containers specific to the component. one or many containers can be defined.
frontend.deploymentobject
+{
+  "enabled": true
+}
+
+
can be either a statefulSet or a deployment not both. TBD (StatefulSet)
frontend.deploymentStrategyobject
+{
+  "type": "Recreate"
+}
+
+
the deployment strategy, can be "Recreate" or "RollingUpdate"
frontend.enabledbool
+true
+
+
enable or disable a component deployment.
frontend.route.enabledbool
+true
+
+
frontend.route.hoststring
+"{{ .Release.Name }}-frontend.{{ .Values.global.domain }}"
+
+
frontend.route.targetPortstring
+"http"
+
+
frontend.service.enabledbool
+true
+
+
frontend.service.ports[0].namestring
+"http"
+
+
frontend.service.ports[0].portint
+80
+
+
frontend.service.ports[0].protocolstring
+"TCP"
+
+
frontend.service.ports[0].targetPortint
+3000
+
+
frontend.service.typestring
+"ClusterIP"
+
+
global.autoscalingbool
+true
+
+
global.databaseAliasstring
+"bitnami-pg"
+
+
global.domainstring
+"apps.silver.devops.gov.bc.ca"
+
+
global.openshiftImageRegistrystring
+"image-registry.openshift-image-registry.svc:5000"
+
+
global.podAnnotationsstring
+"app.kubernetes.io/timestamp: {{now | toString }}\n"
+
+
global.registrystring
+"ghcr.io"
+
+
global.repositorystring
+null
+
+
global.secrets.annotation."helm.sh/policy"string
+"keep"
+
+
global.secrets.databaseNamestring
+null
+
+
global.secrets.databasePasswordstring
+null
+
+
global.secrets.databaseUserstring
+null
+
+
global.secrets.enabledbool
+true
+
+
global.tagstring
+null
+
+
+ + + diff --git a/charts/nr-compliance-enforcement-cm/README.md.gotmpl b/charts/nr-compliance-enforcement-cm/README.md.gotmpl new file mode 100644 index 00000000..f2720d0f --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/README.md.gotmpl @@ -0,0 +1,12 @@ +{{ template "chart.header" . }} +{{ template "chart.description" . }} + +{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }} + +{{ template "chart.maintainersSection" . }} + +{{ template "chart.requirementsSection" . }} + +{{ template "chart.valuesTableHtml" . }} +{{ template "chart.valuesSectionHtml" . }} +{{ template "helm-docs.versionFooter" . }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/.helmignore b/charts/nr-compliance-enforcement-cm/charts/component/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/database/charts/Chart.yaml b/charts/nr-compliance-enforcement-cm/charts/component/Chart.yaml similarity index 86% rename from database/charts/Chart.yaml rename to charts/nr-compliance-enforcement-cm/charts/component/Chart.yaml index bb37b440..47f26960 100644 --- a/database/charts/Chart.yaml +++ b/charts/nr-compliance-enforcement-cm/charts/component/Chart.yaml @@ -1,7 +1,6 @@ apiVersion: v2 -name: database -description: Postgres -icon: https://www.nicepng.com/png/detail/521-5211827_bc-icon-british-columbia-government-logo.png +name: component +description: A Helm chart template for supporting different kind of application deployment. # A chart can be either an 'application' or a 'library' chart. # @@ -16,10 +15,10 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.1.0 +version: 0.2.3 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.16.0" +appVersion: "1.0.0" diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/_helpers.tpl b/charts/nr-compliance-enforcement-cm/charts/component/templates/_helpers.tpl new file mode 100644 index 00000000..3b3d2b3a --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/_helpers.tpl @@ -0,0 +1,111 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "component.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "component.fullname" -}} +{{- $componentName := include "component.name" . }} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $componentName | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "component.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "component.labels" -}} +helm.sh/chart: {{ include "component.chart" . }} +{{ include "component.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +{{- if .Values.global.tag }} +app.kubernetes.io/image-tag: {{ .Values.global.tag | quote }} +{{- end }} +{{- if .Values.global.labels }} +{{tpl .Values.global.labels .}} +{{- end }} +{{- end }} +{{/* +Selector labels +*/}} +{{- define "component.selectorLabels" -}} +app.kubernetes.io/name: {{ include "component.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Pod Annotations +*/}} +{{- define "component.podAnnotations" -}} +{{- if .Values.global.podAnnotations }} +{{tpl .Values.global.podAnnotations .}} +{{- end }} +{{- end }} + + +{{/* +Get Environment Variables +*/}} +{{- define "component.env" -}} +{{- default ("") .Values.configmap.env }} +{{- end }} + +{{/* +Create default ConfigMap +*/}} +{{- define "component.configmap" -}} +{{ printf "%s%s" (.Values.configmap.script) (include "component.env" .) }} +{{- end}} + + + +{{/* +Vault Sideloader Annotations +*/}} +{{- define "component.vaultAnnotations" -}} +{{- if and .Values.vault .Values.vault.enabled }} +# 1. Vault injector configuration goes here, inside the template. +vault.hashicorp.com/agent-inject: 'true' +vault.hashicorp.com/agent-inject-token: 'true' +vault.hashicorp.com/agent-pre-populate-only: 'true' # this makes sure the secret vault will only change during pod restart +vault.hashicorp.com/auth-path: auth/k8s-silver # This was tricky. Be sure to use k8s-silver, k8s-gold, or k8s-golddr +vault.hashicorp.com/namespace: platform-services +vault.hashicorp.com/role: {{tpl .Values.global.license .}}-{{tpl .Values.vault.role .}} # licenseplate-nonprod or licenseplate-prod are your options +{{- if .Values.vault.resources }} +vault.hashicorp.com/agent-requests-cpu: {{.Values.vault.resources.requests.cpu }} +vault.hashicorp.com/agent-limits-cpu: {{.Values.vault.resources.limits.cpu }} +vault.hashicorp.com/agent-requests-mem: {{.Values.vault.resources.requests.memory }} +vault.hashicorp.com/agent-limits-mem: {{.Values.vault.resources.limits.memory }} +{{- end }} + +# Configure how to retrieve and populate the secrets from Vault: +# - The name of the secret is any unique string after vault.hashicorp.com/agent-inject-secret- +# - The value is the path in Vault where the secret is located. +{{- range $k := .Values.vault.secretPaths }} +vault.hashicorp.com/agent-inject-secret-{{tpl $k $}}: {{tpl $.Values.global.license $}}-{{tpl $.Values.vault.role $}}/{{tpl $k $}} +vault.hashicorp.com/agent-inject-template-{{tpl $k $}}: | + {{ printf "%s" "{{" }}- with secret "{{tpl $.Values.global.license $}}-{{tpl $.Values.vault.role $}}/{{tpl $k $}}"{{ printf "%s" "}}" }} + {{ printf "%s" "{{" }}- range $k,$v := .Data.data{{ printf "%s" "}}" }} + export {{"{{"}}$k{{"}}"}}="{{"{{"}}$v{{"}}"}}" + {{ printf "%s" "{{" }}- end{{ printf "%s" "}}" }} + {{ printf "%s" "{{" }}- end{{ printf "%s" "}}" }} +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/configmap.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/configmap.yaml new file mode 100644 index 00000000..01760206 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/configmap.yaml @@ -0,0 +1,14 @@ +--- +{{- if and .Values.configmap .Values.configmap.enabled }} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "component.fullname" . }} + labels: + {{- include "component.labels" . | nindent 4 }} +data: + {{- range $k,$v := .Values.configmap.data }} + {{ $k | quote }}: {{ tpl $v $ | quote }} + {{- end }} + +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/cronjob.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/cronjob.yaml new file mode 100644 index 00000000..108d7680 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/cronjob.yaml @@ -0,0 +1,162 @@ +{{- if and .Values.cronjob .Values.cronjob.enabled }} +apiVersion: batch/v1 +kind: CronJob +metadata: + name: {{ include "component.fullname" . }} + labels: + {{- include "component.labels" . | nindent 4 }} + namespace: {{ .Release.Namespace | quote }} + {{- if .Values.cronjob.annotations }} + annotations: {{- .Values.cronjob.annotations | nindent 4 }} + {{- end }} +spec: + schedule: {{ quote .Values.cronjob.schedule }} + concurrencyPolicy: {{ .Values.cronjob.concurrencyPolicy }} + failedJobsHistoryLimit: {{ .Values.cronjob.failedJobsHistoryLimit }} + successfulJobsHistoryLimit: {{ .Values.cronjob.successfulJobsHistoryLimit }} + {{- if .Values.cronjob.startingDeadlineSeconds }} + startingDeadlineSeconds: {{ .Values.cronjob.startingDeadlineSeconds }} + {{- end }} + jobTemplate: + spec: + {{- if .Values.cronjob.ttlSecondsAfterFinished }} + ttlSecondsAfterFinished: {{ .Values.cronjob.ttlSecondsAfterFinished }} + {{- end }} + template: + metadata: + labels: + {{- include "component.labels" . | nindent 12 }} + {{- if .Values.cronjob.annotations }} + annotations: {{- .Values.cronjob.annotations | nindent 4 }} + {{- end }} + spec: + {{- if .Values.cronjob.nodeSelector }} + nodeSelector: {{- include "common.tplvalues.render" (dict "value" .Values.cronjob.nodeSelector "context" $) | nindent 12 }} + {{- end }} + containers: + {{- range .Values.containers }} + - name: {{ .name }} + {{- if .command }} + command: + {{- range .command }} + - "{{ . }}" + {{- end }} + {{- end}} + {{- if .args }} + args: + {{- range .args }} + - "{{ . }}" + {{- end }} + {{- end }} + {{- if .securityContext }} + securityContext: + {{- toYaml .securityContext | nindent 12 }} + {{- end}} + {{- if $.Values.global.openshiftImageRegistry }} + {{- if (contains "sha256:" .tag) }} + image: '{{$.Values.global.openshiftImageRegistry}}/{{$.Release.Namespace}}/{{$.Release.Name}}-{{ .name }}:{{ trimPrefix "sha256:" tpl .tag $ }}' + {{- else }} + image: '{{$.Values.global.openshiftImageRegistry}}/{{$.Release.Namespace}}/{{$.Release.Name}}-{{ .name }}:{{ tpl .tag $ }}' + {{- end }} + {{- else }} + {{- if (contains "sha256:" .tag) }} + image: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}@{{ (tpl .tag $) }}' + {{- else }} + image: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}:{{ (tpl .tag $) }}' + {{- end }} + {{- end }} + imagePullPolicy: {{ default "IfNotPresent" .pullPolicy }} + {{- if .envFrom }} + envFrom: + {{- if .envFrom.secretRef }} + - secretRef: + name: {{ include "component.fullname" $ }} + {{- end }} + {{- if .envFrom.configMapRef }} + - configMapRef: + name: {{ include "component.fullname" $ }} + {{- end }} + {{- end }} + {{- if .env }} + env: + {{- if .env.fromLocalConfigmap }} + {{- range $item := .env.fromLocalConfigmap }} # picking individual elements from configmap of individual component (backend, frontend, etc) + - name: {{$item.name}} # the env variable name + valueFrom: + configMapKeyRef: + name: {{ include "component.fullname" $ }} + key: {{$item.key}} # the key of configmap + {{- end }} + {{- end }} + {{- if .env.fromGlobalConfigmap }} + {{- range $item := .env.fromGlobalConfigmap }} # picking individual elements from global configmap of entire deployment set + - name: {{$item.name}} # the env variable name + valueFrom: + configMapKeyRef: + name: {{ $.Release.Name }} + key: {{$item.key}} # the key of configmap + {{- end }} + {{- end }} + {{- if .env.fromLocalSecret }} + {{- range $item := .env.fromLocalSecret }} # picking individual elements from secret of individual component (backend, frontend, etc) + - name: {{$item.name}} # the env variable name + valueFrom: + secretKeyRef: + {{- if $item.secretName }} + name: {{tpl $item.secretName $}} + {{- else }} + name: {{ include "component.fullname" $ }} + {{- end }} + key: {{$item.key}} # the key of secret + {{- end }} + {{- end }} + {{- if .env.fromGlobalSecret }} + {{- range $item := .env.fromGlobalSecret }} # picking individual elements from global secret of entire deployment set + - name: {{$item.name}} # the env variable name + valueFrom: + secretKeyRef: + {{- if $item.secretName }} + name: {{tpl $item.secretName $}} + {{- else }} + name: {{ $.Release.Name }} + {{- end }} + key: {{$item.key}} # the key of secret + {{- end }} + {{- end }} + {{- if .env.fromValues }} #this could be pure values based env like DB URLS or DB Host et + {{- range $item := .env.fromValues }} # picking individual elements from global secret of entire deployment set + - name: {{$item.name}} # the env variable name + value: {{tpl $item.value $ | quote}} # the value of env variable + {{- end }} + {{- end }} + {{- end }} + + {{- if .resources}} + {{- with .resources }} + resources: + {{- toYaml . | nindent 16 }} + {{- end }} + {{- else }} + resources: + limits: + cpu: 100m + memory: 250Mi + requests: + cpu: 20m + memory: 50Mi + {{- end }} + {{- end }} + {{- if .volumeMounts }} + volumeMounts: + {{- tpl (toYaml .volumeMounts) $ | nindent 12 }} + {{- end }} + restartPolicy: {{ .Values.cronjob.restartPolicy }} + {{- if and .Values.cronjob.podSecurityContext .Values.cronjob.podSecurityContext.enabled }} + securityContext: + fsGroup: {{ .Values.cronjob.podSecurityContext.fsGroup }} + {{- end }} + {{- if .Values.cronjob.volumes }} + volumes: + {{- tpl (toYaml .Values.cronjob.volumes) . | nindent 10 }} + {{- end }} +{{- end}} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/deployment.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/deployment.yaml new file mode 100644 index 00000000..ddbe7da7 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/deployment.yaml @@ -0,0 +1,352 @@ +{{- if .Values.deployment }} +{{- $releaseName := .Release.Name }} +{{- $componentFullName := include "component.fullname" . }} +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "component.fullname" . }} + labels: + {{- include "component.labels" . | nindent 4 }} +spec: + {{- if .Values.replicaCount }} + replicas: {{ .Values.replicaCount }} + {{- end }} + {{- if .Values.deploymentStrategy }} + strategy: + {{- toYaml .Values.deploymentStrategy | nindent 4 }} + {{- end }} + selector: + matchLabels: + {{- include "component.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- if and .Values.vault .Values.vault.enabled }} + annotations: + {{- include "component.podAnnotations" . | nindent 8 }} + {{- include "component.vaultAnnotations" . | nindent 8 }} + {{- else }} + annotations: + {{- include "component.podAnnotations" . | nindent 8 }} + {{- end }} + labels: + {{- include "component.selectorLabels" . | nindent 8 }} + spec: + {{- if .Values.imagePullSecrets }} + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- end }} + {{- if .Values.podSecurityContext }} + securityContext: + {{- toYaml .Values.podSecurityContext | nindent 8 }} + {{- end }} + {{- $configmap := .Values.configmap -}} + {{- $secrets := .Values.secret -}} + {{- if .Values.initContainers }} + initContainers: + {{- range .Values.initContainers }} + - name: {{ .name }} + {{- if $.Values.global.openshiftImageRegistry }} + {{- if (contains "sha256:" .tag) }} + image: '{{$.Values.global.openshiftImageRegistry}}/{{$.Release.Namespace}}/{{$releaseName}}-{{ .name }}:{{ trimPrefix "sha256:" tpl .tag $ }}' + {{- else }} + image: '{{$.Values.global.openshiftImageRegistry}}/{{$.Release.Namespace}}/{{$releaseName}}-{{ .name }}:{{ tpl .tag $ }}' + {{- end }} + {{- else }} + {{- if (contains "sha256:" .tag) }} + image: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}@{{ (tpl .tag $) }}' + {{- else }} + image: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}:{{ (tpl .tag $) }}' + {{- end }} + {{- end }} + + imagePullPolicy: {{ default "IfNotPresent" .pullPolicy }} + {{- if .command }} + command: + {{- range .command }} + - "{{tpl . $}}" + {{- end }} + {{- end}} + {{- if .args }} + args: + {{- range .args }} + - "{{tpl . $}}" + {{- end }} + {{- end }} + {{- if .envFrom }} + envFrom: + {{- if .envFrom.secretRef }} + - secretRef: + {{- if .envFrom.secretRef.name }} + name: {{ tpl .envFrom.secretRef.name $ }} + {{- else }} + name: {{ include "component.fullname" $ }} + {{- end }} + {{- end }} + {{- if .envFrom.configMapRef }} + - configMapRef: + {{- if .envFrom.configMapRef.name }} + name: {{ tpl .envFrom.configMapRef.name $ }} + {{- else }} + name: {{ include "component.fullname" $ }} + {{- end }} + {{- end }} + {{- end }} + {{- if .env }} + env: + {{- if .env.fromLocalConfigmap }} + {{- range $item := .env.fromLocalConfigmap }} # picking individual elements from configmap of individual component (backend, frontend, etc) + - name: {{$item.name}} # the env variable name + valueFrom: + configMapKeyRef: + name: {{ include "component.fullname" $ }} + key: {{$item.key}} # the key of configmap + {{- end }} + {{- end }} + {{- if .env.fromGlobalConfigmap }} + {{- range $item := .env.fromGlobalConfigmap }} # picking individual elements from global configmap of entire deployment set + - name: {{$item.name}} # the env variable name + valueFrom: + configMapKeyRef: + name: {{ $releaseName }} + key: {{$item.key}} # the key of configmap + {{- end }} + {{- end }} + {{- if .env.fromLocalSecret }} + {{- range $item := .env.fromLocalSecret }} # picking individual elements from secret of individual component (backend, frontend, etc) + - name: {{$item.name}} # the env variable name + valueFrom: + secretKeyRef: + {{- if $item.secretName }} + name: {{tpl $item.secretName $}} + {{- else }} + name: {{ include "component.fullname" $ }} + {{- end }} + + key: {{$item.key}} # the key of secret + {{- end }} + {{- end }} + {{- if .env.fromGlobalSecret }} + {{- range $item := .env.fromGlobalSecret }} # picking individual elements from global secret of entire deployment set + - name: {{$item.name}} # the env variable name + valueFrom: + secretKeyRef: + {{- if $item.secretName }} + name: {{tpl $item.secretName $}} + {{- else }} + name: {{ $releaseName }} + {{- end }} + key: {{$item.key}} # the key of secret + {{- end }} + {{- end }} + + {{- if .env.fromValues }} #this could be pure values based env like DB URLS or DB Host et + {{- range $item := .env.fromValues }} # picking individual elements from global secret of entire deployment set + - name: {{$item.name}} # the env variable name + value: {{tpl $item.value $ | quote}} # the value of env variable + {{- end }} + {{- end }} + {{- end }} + {{- if .resources}} + {{- with .resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- else }} + resources: + limits: + cpu: 100m + memory: 250Mi + requests: + cpu: 20m + memory: 50Mi + {{- end }} + {{- if .volumeMounts }} + volumeMounts: + {{- tpl (toYaml .volumeMounts) $ | nindent 12 }} + {{- end }} + {{- end }} + {{- end }} + {{- if $.Values.serviceAccount }} + serviceAccountName: {{tpl $.Values.serviceAccount.name .}} + {{- end }} + containers: + {{- range .Values.containers }} + - name: {{ .name }} + {{- if .securityContext }} + securityContext: + {{- toYaml .securityContext | nindent 12 }} + {{- end}} + {{- if .command }} + command: + {{- range .command }} + - "{{tpl . $}}" + {{- end }} + {{- end}} + {{- if .args }} + args: + {{- range .args }} + - "{{tpl . $}}" + {{- end }} + {{- end }} + {{- if and (and $.Values.global.imagestreams $.Values.global.imagestreams.enabled)}} + {{- if (contains "sha256:" .tag) }} + image: '{{$.Values.global.openshiftImageRegistry}}/{{$.Release.Namespace}}/{{$releaseName}}-{{ .name }}:{{ trimPrefix "sha256:" tpl .tag $ }}' + {{- else }} + image: '{{$.Values.global.openshiftImageRegistry}}/{{$.Release.Namespace}}/{{$releaseName}}-{{ .name }}:{{ tpl .tag $ }}' + {{- end }} + {{- else }} + {{- if (contains "sha256:" .tag) }} + image: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}@{{ (tpl .tag $) }}' + {{- else }} + image: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}:{{ (tpl .tag $) }}' + {{- end }} + {{- end }} + imagePullPolicy: {{ default "IfNotPresent" .pullPolicy }} + {{- if .envFrom }} + envFrom: + {{- if .envFrom.secretRef }} + - secretRef: + {{- if .envFrom.secretRef.name }} + name: {{ tpl .envFrom.secretRef.name $ }} + {{- else }} + name: {{ include "component.fullname" $ }} + {{- end }} + {{- end }} + {{- if .envFrom.configMapRef }} + - configMapRef: + {{- if .envFrom.configMapRef.name }} + name: {{ tpl .envFrom.configMapRef.name $ }} + {{- else }} + name: {{ include "component.fullname" $ }} + {{- end }} + {{- end }} + {{- end }} + {{- if .env }} + env: + {{- if .env.fromLocalConfigmap }} + {{- range $item := .env.fromLocalConfigmap }} # picking individual elements from configmap of individual component (backend, frontend, etc) + - name: {{$item.name}} # the env variable name + valueFrom: + configMapKeyRef: + name: {{ include "component.fullname" $ }} + key: {{$item.key}} # the key of configmap + {{- end }} + {{- end }} + {{- if .env.fromGlobalConfigmap }} + {{- range $item := .env.fromGlobalConfigmap }} # picking individual elements from global configmap of entire deployment set + - name: {{$item.name}} # the env variable name + valueFrom: + configMapKeyRef: + name: {{ $releaseName }} + key: {{$item.key}} # the key of configmap + {{- end }} + {{- end }} + {{- if .env.fromLocalSecret }} + {{- range $item := .env.fromLocalSecret }} # picking individual elements from secret of individual component (backend, frontend, etc) + - name: {{$item.name}} # the env variable name + valueFrom: + secretKeyRef: + {{- if $item.secretName }} + name: {{tpl $item.secretName $}} + {{- else }} + name: {{ include "component.fullname" $ }} + {{- end }} + key: {{$item.key}} # the key of secret + {{- end }} + {{- end }} + {{- if .env.fromGlobalSecret }} + {{- range $item := .env.fromGlobalSecret }} # picking individual elements from global secret of entire deployment set + - name: {{$item.name}} # the env variable name + valueFrom: + secretKeyRef: + {{- if $item.secretName }} + name: {{tpl $item.secretName $}} + {{- else }} + name: {{ $releaseName }} + {{- end }} + key: {{$item.key}} # the key of secret + {{- end }} + {{- end }} + {{- if .env.fromValues }} #this could be pure values based env like DB URLS or DB Host et + {{- range $item := .env.fromValues }} # picking individual elements from global secret of entire deployment set + - name: {{$item.name}} # the env variable name + value: {{tpl $item.value $ | quote}} # the value of env variable + {{- end }} + {{- end }} + {{- end }} + + {{- if .ports}} + {{- with .ports }} + ports: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- else }} + ports: + - name: http + containerPort: 3000 + protocol: TCP + {{- end }} + {{- if .resources}} + {{- with .resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- else }} + resources: + limits: + cpu: 100m + memory: 250Mi + requests: + cpu: 20m + memory: 50Mi + {{- end }} + {{- if .readinessProbe}} + {{- with .readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- else }} + readinessProbe: + httpGet: + path: / + port: 3000 + scheme: HTTP + {{- end }} + {{- if .livenessProbe}} + {{- with .livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- else }} + livenessProbe: + httpGet: + path: / + port: 3000 + scheme: HTTP + {{- end }} + {{- if .volumeMounts }} + volumeMounts: + {{- tpl (toYaml .volumeMounts) $ | nindent 12 }} + {{- end }} + {{- end }} + {{- if .Values.volumes }} + volumes: + {{- tpl (toYaml .Values.volumes) . | nindent 8 }} + {{- end }} + {{- if .Values.nodeSelector }} + nodeSelector: + {{- tpl (toYaml .Values.nodeSelector) . | nindent 8 }} + {{- end }} + {{- if .Values.affinity }} + affinity: + {{- tpl (toYaml .Values.affinity) . | nindent 8 }} + {{- end }} + {{- if .Values.tolerations }} + tolerations: + {{- tpl (toYaml .Values.tolerations) . | nindent 8 }} + {{- end }} + +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/hpa.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/hpa.yaml new file mode 100644 index 00000000..cd7e53b7 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/hpa.yaml @@ -0,0 +1,37 @@ +{{- if and (.Values.global.autoscaling) (and .Values.autoscaling .Values.autoscaling.enabled) }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "component.fullname" . }} + labels: + {{- include "component.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "component.fullname" . }} + minReplicas: {{ .Values.autoscaling.minReplicas }} + maxReplicas: {{ .Values.autoscaling.maxReplicas }} + {{- if .Values.autoscaling.behavior }} + behavior: + {{- toYaml .Values.autoscaling.behavior | nindent 4 }} + {{- end }} + + metrics: + {{- if .Values.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/imagestreams.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/imagestreams.yaml new file mode 100644 index 00000000..c380ad90 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/imagestreams.yaml @@ -0,0 +1,61 @@ +{{- if and ( .Values.global.openshiftImageRegistry ) (or .Values.containers .Values.initContainers) -}} + +{{- if .Values.containers }} +{{- range .Values.containers }} +--- +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + name: {{ $.Release.Name }}-{{ .name }} + labels: + {{- include "component.labels" $ | nindent 4 }} +spec: + lookupPolicy: + local: false + tags: + {{- if (contains "sha256:" (tpl .tag $)) }} + - name: {{ trimPrefix "sha256:" (tpl .tag $) | quote }} + {{- else }} + - name: {{ (tpl .tag $) | quote }} + {{- end }} + from: + kind: DockerImage + {{- if (contains "sha256:" (tpl .tag $)) }} + name: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}@{{ (tpl .tag $) }}' + {{- else }} + name: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}:{{ (tpl .tag $) }}' + {{- end }} + referencePolicy: + type: Local +{{- end }} +{{- end }} +{{- if .Values.initContainers }} +{{- range .Values.initContainers }} +--- +apiVersion: image.openshift.io/v1 +kind: ImageStream +metadata: + name: {{ $.Release.Name }}-{{ .name }} + labels: + {{- include "component.labels" $ | nindent 4 }} +spec: + lookupPolicy: + local: false + tags: + {{- if (contains "sha256:" (tpl .tag $)) }} + - name: {{ trimPrefix "sha256:" (tpl .tag $) | quote }} + {{- else }} + - name: {{ (tpl .tag $) | quote }} + {{- end }} + from: + kind: DockerImage + {{- if (contains "sha256:" (tpl .tag $)) }} + name: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}@{{ (tpl .tag $) }}' + {{- else }} + name: '{{ tpl .registry $ }}/{{ tpl .repository $ }}/{{ .image }}:{{ (tpl .tag $) }}' + {{- end }} + referencePolicy: + type: Local +{{- end }} +{{- end }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/ingress.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/ingress.yaml new file mode 100644 index 00000000..212dbab9 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/ingress.yaml @@ -0,0 +1,63 @@ +{{- if .Values.ingress -}} +{{- if .Values.ingress.enabled -}} +{{- $fullName := include "component.fullname" . -}} +{{- $svcPort := (index .Values.service.ports 0).port }} +{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }} + {{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }} + {{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}} + {{- end }} +{{- end }} +{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1 +{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}} +apiVersion: networking.k8s.io/v1beta1 +{{- else -}} +apiVersion: extensions/v1beta1 +{{- end }} +kind: Ingress +metadata: + name: {{ $fullName }} + labels: + {{- include "component.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} + ingressClassName: {{ .Values.ingress.className }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{tpl . $ | quote }} #https://stackoverflow.com/a/67815474 + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{tpl .host $ | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }} + pathType: {{ .pathType }} + {{- end }} + backend: + {{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }} + service: + name: {{ $fullName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $fullName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/pvc.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/pvc.yaml new file mode 100644 index 00000000..f43c3267 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/pvc.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.pvc .Values.pvc.enabled }} +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + {{- if .Values.pvc.nameOverride }} + name: {{ tpl .Values.pvc.nameOverride $}} + {{- else }} + name: {{ include "component.fullname" . }} + {{- end }} + labels: + {{- include "component.labels" . | nindent 4 }} +spec: + accessModes: + - {{ .Values.pvc.accessModes }} + resources: + requests: + storage: {{ .Values.pvc.size }} + storageClassName: {{ .Values.pvc.storageClassName }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/route.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/route.yaml new file mode 100644 index 00000000..d945e7f4 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/route.yaml @@ -0,0 +1,19 @@ +{{- if and .Values.route .Values.route.enabled }} +apiVersion: route.openshift.io/v1 +kind: Route +metadata: + labels: + {{- include "component.labels" . | nindent 4 }} + name: {{ include "component.fullname" . }} +spec: + host: {{tpl .Values.route.host $ | quote}} # the value of host is set in values.yaml + port: + targetPort: {{ .Values.route.targetPort }} # this is the port name your service listens on + to: + kind: Service + name: {{ include "component.fullname" . }} + weight: 100 + tls: + termination: edge + insecureEdgeTerminationPolicy: Redirect +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/service.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/service.yaml new file mode 100644 index 00000000..bb8b4968 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/service.yaml @@ -0,0 +1,15 @@ +{{- if and .Values.service .Values.service.enabled }} +--- +apiVersion: v1 +kind: Service +metadata: + name: {{ include "component.fullname" . }} + labels: + {{- include "component.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + {{- toYaml .Values.service.ports | nindent 4 }} + selector: + {{- include "component.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/charts/component/templates/serviceaccount.yaml b/charts/nr-compliance-enforcement-cm/charts/component/templates/serviceaccount.yaml new file mode 100644 index 00000000..97077007 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/charts/component/templates/serviceaccount.yaml @@ -0,0 +1,12 @@ +{{- if and .Values.serviceAccount .Values.serviceAccount.enabled }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ tpl .Values.serviceAccount.name .}} + labels: + {{- include "component.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/templates/_helpers.tpl b/charts/nr-compliance-enforcement-cm/templates/_helpers.tpl new file mode 100644 index 00000000..9f6bfa39 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/templates/_helpers.tpl @@ -0,0 +1,48 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s" .Release.Name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "name.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "labels" -}} +helm.sh/chart: {{ include "name.chart" . }} +{{ include "selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "selectorLabels" -}} +app.kubernetes.io/name: {{ include "fullname" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + + diff --git a/charts/nr-compliance-enforcement-cm/templates/knp.yaml b/charts/nr-compliance-enforcement-cm/templates/knp.yaml new file mode 100644 index 00000000..6858889b --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/templates/knp.yaml @@ -0,0 +1,63 @@ +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ .Release.Name }}-openshift-ingress-to-frontend + labels: {{- include "selectorLabels" . | nindent 4 }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/name: frontend + app.kubernetes.io/instance: {{ .Release.Name }} + ingress: + - from: + - namespaceSelector: + matchLabels: + network.openshift.io/policy-group: ingress + policyTypes: + - Ingress +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ .Release.Name }}-allow-backend-to-db + labels: {{- include "selectorLabels" . | nindent 4 }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/name: {{ .Values.global.databaseAlias}} + app.kubernetes.io/instance: {{ .Release.Name }} + ingress: + - ports: + - protocol: TCP + port: 5432 + from: + - podSelector: + matchLabels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: {{ .Release.Name }} + policyTypes: + - Ingress + +--- +apiVersion: networking.k8s.io/v1 +kind: NetworkPolicy +metadata: + name: {{ .Release.Name }}-allow-frontend-to-backend + labels: {{- include "selectorLabels" . | nindent 4 }} +spec: + podSelector: + matchLabels: + app.kubernetes.io/name: backend + app.kubernetes.io/instance: {{ .Release.Name }} + ingress: + - ports: + - protocol: TCP + port: 3000 + from: + - podSelector: + matchLabels: + app.kubernetes.io/name: frontend + app.kubernetes.io/instance: {{ .Release.Name }} + policyTypes: + - Ingress diff --git a/charts/nr-compliance-enforcement-cm/templates/secret.yaml b/charts/nr-compliance-enforcement-cm/templates/secret.yaml new file mode 100644 index 00000000..679adc79 --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/templates/secret.yaml @@ -0,0 +1,28 @@ +{{- if and .Values.global.secrets .Values.global.secrets.enabled}} +{{- $databaseUser := .Values.global.secrets.databaseUser| default "quickstart" }} +{{- $databasePassword := .Values.global.secrets.databasePassword | default (randAlphaNum 10) | quote }} +{{- $secretObj := (lookup "v1" "Secret" .Release.Namespace .Release.Name ) | default dict }} +{{- $secretData := (get $secretObj "data") | default dict }} + # set below to existing secret data or generate a random one when not exists +{{- $databasePassword = (get $secretData "databasePassword") | default ($databasePassword | b64enc) }} +{{- $databaseName := .Values.global.secrets.databaseName| default "quickstart" }} +{{- $host := printf "%s-%s:5432" .Release.Name .Values.global.databaseAlias }} +{{- $databaseURL := printf "postgresql://%s:%s@%s/%s" $databaseUser (b64dec $databasePassword) $host $databaseName }} +{{- $databaseJDBCURL := printf "jdbc:postgresql://%s:%s@%s/%s" $databaseUser (b64dec $databasePassword) $host $databaseName }} +{{- $databaseJDBCURLNoCreds := printf "jdbc:postgresql://%s/%s" $host $databaseName }} +--- +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Release.Name }} + labels: {{- include "selectorLabels" . | nindent 4 }} +data: + databasePassword: {{ $databasePassword | quote }} + postgres-password: {{ $databasePassword | quote }} + password: {{ $databasePassword | quote }} + databaseUser: {{ $databaseUser | b64enc | quote }} + databaseName: {{ $databaseName | b64enc | quote }} + databaseURL: {{ $databaseURL | b64enc | quote }} + databaseJDBCURL: {{ $databaseJDBCURL | b64enc | quote }} + databaseJDBCURLNoCreds: {{ $databaseJDBCURLNoCreds | b64enc | quote }} +{{- end }} diff --git a/charts/nr-compliance-enforcement-cm/values.yaml b/charts/nr-compliance-enforcement-cm/values.yaml new file mode 100644 index 00000000..31d4001d --- /dev/null +++ b/charts/nr-compliance-enforcement-cm/values.yaml @@ -0,0 +1,567 @@ +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. +#-- global variables, can be accessed by sub-charts. +global: + #-- the registry where the images are stored. override during runtime for other registry at global level or individual level. + repository: artifactory/github-docker-remote/bcgov/nr-compliance-enforcement-cm/ + #-- the registry where the images are stored. override during runtime for other registry at global level or individual level. default is ghcr.io + registry: artifacts.developer.gov.bc.ca + #-- the tag of the image, it can be latest, 1.0.0 etc..., or the sha256 hash + tag: latest + #-- turn off autoscaling for the entire suite by setting this to false. default is true. + autoscaling: true + #-- global secrets, can be accessed by sub-charts. + secrets: + enabled: true + databasePassword: ~ + databaseUser: ~ + databaseName: ~ + annotation: + helm.sh/policy: "keep" + #-- domain of the application, it is required, apps.silver.devops.gov.bc.ca for silver cluster and apps.devops.gov.bc.ca for gold cluster + domain: "apps.emerald.devops.gov.bc.ca" + #-- the image registry of OpenShift. It is used in conjunction with ImageStreams which is a OpenShift specific resource. + openshiftImageRegistry: "image-registry.openshift-image-registry.svc:5000" + #-- the database Alias gives a nice way to switch to different databases, crunchy, patroni ... etc. + databaseAlias: bitnami-pg # this is the alias for bitnami postgres, change it based on db type(crunchy,patroni...) and alias used in the chart. + #-- extra annotations for the pod, it is optional and is an object. + podAnnotations: | + app.kubernetes.io/timestamp: {{now | toString }} +#-- the components of the application, backend. +backend: + #-- enable or disable a component deployment. + enabled: true + #-- can be either a statefulSet or a deployment not both. TBD (StatefulSet) + deployment: # can be either a statefulSet or a deployment not both + enabled: true + #-- the deployment strategy, can be "Recreate" or "RollingUpdate" + deploymentStrategy: + type: Recreate + #-- containers specific to the component. one or many containers can be defined. + containers: + #-- name of the container. + - name: backend + #-- the registry where the image is stored. override during runtime for other registry at global level or individual level. + registry: '{{ .Values.global.registry }}' + #-- the repository where the image is stored. override during runtime for other repository at global level or individual level. + repository: '{{ .Values.global.repository }}' + #-- the exact component name, in this case backend. + image: backend + #-- the tag of the image, it can be latest, 1.0.0 etc..., or the sha256 hash + tag: '{{ .Values.global.tag }}' + #-- environment variables for the container. it is optional and is an object. + env: + #-- the environment variables from global secrets, the secret name is auto deciphered from the release name. + fromGlobalSecret: + - name: POSTGRES_PASSWORD + key: password + - name: POSTGRES_USER + key: databaseUser + - name: POSTGRES_DATABASE + key: databaseName + #-- the environment variables from values, these are interpolated during runtime and can contain tpl. + fromValues: + - name: POSTGRES_HOST + value: '{{ .Release.Name }}-{{.Values.global.databaseAlias}}' + #-- the ports for the container. it is optional and is an array of objects. + ports: + - name: http + containerPort: 3000 + protocol: TCP + #-- the resources for the container. it is optional and is an object. for default values check this link: https://github.com/bcgov/helm-service/blob/main/charts/component/templates/deployment.yaml#L298-L304 + resources: # this is optional + limits: + cpu: 250m + memory: 250Mi + requests: + cpu: 100m + memory: 150Mi + #-- the readiness probe for the container. it is optional and is an object. for default values check this link: https://github.com/bcgov/helm-service/blob/main/charts/component/templates/deployment.yaml#L312-L316 + readinessProbe: + httpGet: + path: /api + port: 3000 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 2 + timeoutSeconds: 2 + successThreshold: 1 + failureThreshold: 30 + #-- the liveness probe for the container. it is optional and is an object. for default values check this link: https://github.com/bcgov/helm-service/blob/main/charts/component/templates/deployment.yaml#L324-L328 + livenessProbe: + successThreshold: 1 + failureThreshold: 3 + httpGet: + path: /api + port: 3000 + scheme: HTTP + initialDelaySeconds: 15 + periodSeconds: 30 + timeoutSeconds: 5 + #-- init containers specific to the component. one or many containers can be defined. + initContainers: + #-- name of the container. + - name: database-migrations + #-- the registry where the image is stored. override during runtime for other registry at global level or individual level. + registry: '{{ .Values.global.registry }}' + #-- the repository where the image is stored. override during runtime for other repository at global level or individual level. + repository: '{{ .Values.global.repository }}' # example, it includes registry and repository + #-- the exact image name, in this case migrations + image: migrations + #-- the tag of the image, it can be latest, 1.0.0 etc..., or the sha256 hash + tag: '{{ .Values.global.tag }}' + #-- the security context for the container. it is optional and is an object. + env: + #-- the environment variables from global secrets, the secret name is auto deciphered from the release name. + fromGlobalSecret: + - name: FLYWAY_PASSWORD + key: databasePassword + - name: FLYWAY_URL + key: databaseJDBCURLNoCreds + - name: FLYWAY_USER + key: databaseUser + #-- the environment variables from values, these are interpolated during runtime and can contain tpl. + fromValues: + - name: FLYWAY_BASELINE_ON_MIGRATE + value: "true" + - name: FLYWAY_DEFAULT_SCHEMA + value: "USERS" + - name: FLYWAY_CONNECT_RETRIES + value: "30" + #-- the resources for the container. it is optional and is an object. for default values check this link: + resources: + limits: + cpu: 500m + memory: 250Mi + requests: + cpu: 200m + memory: 150Mi + #-- autoscaling for the component. it is optional and is an object. + autoscaling: + #-- enable or disable autoscaling. + enabled: true + #-- the minimum number of replicas. + minReplicas: 3 + #-- the maximum number of replicas. + maxReplicas: 7 + #-- the target cpu utilization percentage, is from request cpu and NOT LIMIT CPU. + targetCPUUtilizationPercentage: 80 + #-- the behavior for the autoscaling. it is optional and is an object. + behavior: + scaleDown: + stabilizationWindowSeconds: 300 + policies: + - type: Percent + value: 10 + periodSeconds: 60 + - type: Pods + value: 2 + periodSeconds: 60 + selectPolicy: Min + scaleUp: + stabilizationWindowSeconds: 0 + policies: + - type: Percent + value: 100 + periodSeconds: 30 + - type: Pods + value: 2 + periodSeconds: 30 + selectPolicy: Max + #-- vault, for injecting secrets from vault. it is optional and is an object. it creates an initContainer which reads from vault and app container can source those secrets. for referring to a working example with vault follow this link: https://github.com/bcgov/onroutebc/blob/main/charts/onroutebc/values.yaml#L171-L186 + vault: + #-- enable or disable vault. + enabled: false + #-- the role of the vault. it is required, #licenseplate-prod or licenseplate-nonprod, license plate is the namespace without env + role: ~ + #-- the vault path where the secrets live. it is required, dev/api-1, dev/api-2, test/api-1 etc... + secretPaths: + - dev/api-1 + - dev/api-2 + - test/api-1 + - test/api-2 + - prod/api-1 + - prod/api-2 + #-- resources specific to vault initContainer. it is optional and is an object. + resources: + limits: + cpu: 50m + memory: 50Mi + requests: + cpu: 50m + memory: 25Mi + #-- the service for the component. for inter namespace communication, use the service name as the hostname. + service: + #-- enable or disable the service. + enabled: true + #-- the type of the service. it can be ClusterIP, NodePort, LoadBalancer, ExternalName. ClusterIP is the default and is recommended. + type: ClusterIP + #-- the ports for the service. + ports: + #-- the name for the port. + - name: http + #-- the port for the service. the service will be accessible on this port within the namespace. + port: 80 + #-- the container port where the application is listening on. + targetPort: 3000 + protocol: TCP + nodeSelector: { } + tolerations: [ ] + affinity: { } + +frontend: + # -- enable or disable a component deployment. + enabled: true + # -- can be either a statefulSet or a deployment not both. TBD (StatefulSet) + deployment: # can be either a statefulSet or a deployment not both + enabled: true + # -- the deployment strategy, can be "Recreate" or "RollingUpdate" + deploymentStrategy: + type: Recreate + # -- the configmap specific to the component. + configmap: + # -- enable or disable the configmap. + enabled: true + # -- dat contains key value pairs for the configmap. can contain multiple files. value can be piped as string. + data: + #-- sample to create a config.js object. + config.js: |- + const envConfig = (() => { + return { + "VITE_DEPLOY_ENVIRONMENT":"{{ .Release.Name }}-{{ .Release.Namespace }}" + }; + })(); + #-- sample to create a config.prod.js object. + config.prod.js: |- + const envConfig = (() => { + return { + "VITE_DEPLOY_ENVIRONMENT":"static" + }; + })(); + # -- the containers specific to the component. one or many containers can be defined. + containers: + #-- name of the container. + - name: frontend + #-- the registry where the image is stored. override during runtime for other registry at global level or individual level. + registry: '{{ .Values.global.registry }}' + #-- the repository where the image is stored. override during runtime for other repository at global level or individual level. + repository: '{{ .Values.global.repository }}' # example, it includes registry and repository + #-- the exact component name, in this case frontend. + image: frontend + #-- the tag of the image, it can be latest, 1.0.0 etc..., or the sha256 hash + tag: '{{ .Values.global.tag }}' + #-- the security context for the container. it is optional and is an object. + securityContext: + capabilities: + add: [ "NET_BIND_SERVICE" ] + #-- the environment variables for the container. it is optional and is an object. + env: + #-- the environment variables from values, these are interpolated during runtime and can contain tpl. + fromValues: + - name: BACKEND_URL + value: "http://{{ .Release.Name }}-backend" + - name: LOG_LEVEL + value: "info" + #-- the environment variables from local configmap(configmap associated to the component), these are interpolated during runtime and can contain tpl. + fromLocalConfigmap: + - name: frontend-configmap + key: config.js + - name: frontend-prod-configmap + key: config.prod.js + #-- the ports for the container. it is optional and is an array of objects. + ports: + - name: http + containerPort: 3000 + protocol: TCP + - name: http2 + containerPort: 3001 + protocol: TCP + #-- the resources for the container. it is optional and is an object. for default values check this link: https://github.com/bcgov/helm-service/blob/main/charts/component/templates/deployment.yaml#L298-L304 + resources: + limits: + cpu: 100m + memory: 150Mi + requests: + cpu: 30m + memory: 50Mi + #-- the readiness probe for the container. it is optional and is an object. for default values check this link: https://github.com/bcgov/helm-service/blob/main/charts/component/templates/deployment.yaml#L312-L316 + readinessProbe: + httpGet: + path: /health + port: 3001 + scheme: HTTP + initialDelaySeconds: 5 + periodSeconds: 2 + timeoutSeconds: 2 + successThreshold: 1 + failureThreshold: 30 + #-- the liveness probe for the container. it is optional and is an object. for default values check this link: https://github.com/bcgov/helm-service/blob/main/charts/component/templates/deployment.yaml#L324-L328 + livenessProbe: + successThreshold: 1 + failureThreshold: 3 + httpGet: + path: /health + port: 3001 + scheme: HTTP + initialDelaySeconds: 15 + periodSeconds: 30 + timeoutSeconds: 5 + #-- autoscaling for the component. it is optional and is an object. + autoscaling: + #-- enable or disable autoscaling. + enabled: true + #-- the minimum number of replicas. + minReplicas: 3 + #-- the maximum number of replicas. + maxReplicas: 7 + #-- the target cpu utilization percentage, is from request cpu and NOT LIMIT CPU. + targetCPUUtilizationPercentage: 80 + #-- the behavior for the autoscaling. it is optional and is an object. + behavior: + scaleDown: + stabilizationWindowSeconds: 300 + policies: + - type: Percent + value: 10 + periodSeconds: 60 + - type: Pods + value: 2 + periodSeconds: 60 + selectPolicy: Min + scaleUp: + stabilizationWindowSeconds: 0 + policies: + - type: Percent + value: 100 + periodSeconds: 30 + - type: Pods + value: 2 + periodSeconds: 30 + selectPolicy: Max + #-- the service for the component. for inter namespace communication, use the service name as the hostname. + service: + #-- enable or disable the service. + enabled: true + #-- the type of the service. it can be ClusterIP, NodePort, LoadBalancer, ExternalName. ClusterIP is the default and is recommended. + type: ClusterIP + #-- the ports for the service. + ports: + - name: http + #-- the port for the service. the service will be accessible on this port within the namespace. + port: 80 + #-- the container port where the application is listening on + targetPort: 3000 + #-- the protocol for the port. it can be TCP or UDP. TCP is the default and is recommended. + protocol: TCP + #-- the route for the component. it is optional and is an object. To make the application accessible from internet, use the route. + route: + #-- enable or disable the route. + enabled: true + #-- the hostname for the route. this will be the URL for the application, you can access by https://{{ .Release.Name }}-frontend.{{ .Values.global.domain }} + host: "{{ .Release.Name }}-frontend.{{ .Values.global.domain }}" + #-- the target port of the service. this is the port where the service is listening on. The name is mapped to the port name in the service. + targetPort: http + +crunchy: # enable it for TEST and PROD, for PR based pipelines simply use single postgres + enabled: false + + crunchyImage: artifacts.developer.gov.bc.ca/bcgov-docker-local/crunchy-postgres-gis:ubi8-15.2-3.3-0 + + postgresVersion: 15 + postGISVersion: '3.3' + imagePullPolicy: Always + instances: + name: ha # high availability + replicas: 1 # 2 or 3 for high availability in TEST and PROD. + metadata: + annotations: + prometheus.io/scrape: 'true' + prometheus.io/port: '9187' + dataVolumeClaimSpec: + storage: 120Mi + storageClassName: netapp-block-standard + requests: + cpu: 25m + memory: 256Mi + limits: + cpu: 100m + memory: 512Mi + replicaCertCopy: + requests: + cpu: 1m + memory: 32Mi + limits: + cpu: 50m + memory: 64Mi + + pgBackRest: + enabled: false + image: # it's not necessary to specify an image as the images specified in the Crunchy Postgres Operator will be pulled by default + retention: "1" # Ideally a larger number such as 30 backups/days + # If retention-full-type set to 'count' then the oldest backups will expire when the number of backups reach the number defined in retention + # If retention-full-type set to 'time' then the number defined in retention will take that many days worth of full backups before expiration + retentionFullType: count + repos: + schedules: + full: 0 8 * * * + incremental: 0 0,4,12,16,20 * * * + volume: + accessModes: "ReadWriteOnce" + storage: 64Mi + storageClassName: netapp-file-backup + repoHost: + requests: + cpu: 1m + memory: 64Mi + limits: + cpu: 50m + memory: 128Mi + sidecars: + requests: + cpu: 1m + memory: 64Mi + limits: + cpu: 50m + memory: 128Mi + + patroni: + postgresql: + pg_hba: "host all all 0.0.0.0/0 md5" + parameters: + shared_buffers: 16MB # default is 128MB; a good tuned default for shared_buffers is 25% of the memory allocated to the pod + wal_buffers: "64kB" # this can be set to -1 to automatically set as 1/32 of shared_buffers or 64kB, whichever is larger + min_wal_size: 32MB + max_wal_size: 64MB # default is 1GB + max_slot_wal_keep_size: 128MB # default is -1, allowing unlimited wal growth when replicas fall behind + + proxy: + pgBouncer: + image: # it's not necessary to specify an image as the images specified in the Crunchy Postgres Operator will be pulled by default + replicas: 1 + requests: + cpu: 1m + memory: 64Mi + limits: + cpu: 50m + memory: 128Mi + + # Postgres Cluster resource values: + pgmonitor: + enabled: false + exporter: + image: # it's not necessary to specify an image as the images specified in the Crunchy Postgres Operator will be pulled by default + requests: + cpu: 1m + memory: 64Mi + limits: + cpu: 50m + memory: 128Mi + +bitnami-pg: + enabled: true + image: + registry: ghcr.io + repository: bcgov/nr-containers/bitnami/postgresql + tag: 15.5.0 + auth: + existingSecret: '{{ .Release.Name }}' + username: 'quickstart' + database: quickstart + shmVolume: + enabled: false + backup: + enabled: false + cronjob: + containerSecurityContext: { } + podSecurityContext: + enabled: false + storage: + size: 200Mi + primary: + persistence: + enabled: true + storageClass: netapp-file-standard + accessModes: + - ReadWriteOnce + size: 100Mi + containerSecurityContext: + enabled: false + podSecurityContext: + enabled: false + initdb: + scripts: # remove the below script, if POSTGIS is not required. + postgis.sh: | + #!/bin/sh + PGPASSWORD=$POSTGRES_PASSWORD psql -U postgres -d postgres -c "CREATE EXTENSION postgis;" + resources: + requests: + cpu: 50m + memory: 150Mi + limits: + cpu: 150m + memory: 250Mi + +backup: + enabled: true + pvc: + enabled: true + size: 256Mi + storageClassName: netapp-file-standard + accessModes: ReadWriteOnce + cronjob: + enabled: true + volumes: + - name: "{{.Release.Name}}-backup" + persistentVolumeClaim: + claimName: "{{.Release.Name}}-backup" + restartPolicy: "Never" + schedule: "0 0 * * *" + concurrencyPolicy: "Replace" + failedJobsHistoryLimit: 7 + successfulJobsHistoryLimit: 30 + startingDeadlineSeconds: 3600 + containers: + - name: backup + registry: 'docker.io' + repository: 'bcgovimages' # example, it includes registry and repository + image: backup-container # the exact component name, be it backend, api-1 etc... + tag: latest # the tag of the image, it can be latest, 1.0.0 etc..., or the sha256 hash + command: + - "/bin/bash" + - "-c" + - "/backup.sh -1" + volumeMounts: + - mountPath: "/backups/" + name: "{{.Release.Name}}-backup" + env: + fromValues: + - name: BACKUP_DIR + value: "/backups/" + - name: BACKUP_STRATEGY + value: "rolling" + - name: NUM_BACKUPS + value: '5' + - name: DAILY_BACKUPS + value: '7' + - name: WEEKLY_BACKUPS + value: '4' + - name: MONTHLY_BACKUPS + value: '1' + - name: DATABASE_SERVICE_NAME # depends on which chart being used, adjust accordingly. + value: '{{.Release.Name}}-{{.Values.global.databaseAlias}}' + - name: DEFAULT_PORT + value: "5432" + fromGlobalSecret: + - name: DATABASE_PASSWORD + key: password + - name: POSTGRESQL_DATABASE + key: databaseName + - name: DATABASE_USER + key: databaseUser + resources: + limits: + cpu: 50m + memory: 256Mi + requests: + cpu: 20m + memory: 128Mi diff --git a/database/Dockerfile b/database/Dockerfile deleted file mode 100644 index 6e2d924c..00000000 --- a/database/Dockerfile +++ /dev/null @@ -1,5 +0,0 @@ -FROM postgres:15 - -# Health check and non-privileged user -HEALTHCHECK --interval=15s --timeout=5s --retries=3 CMD [ "pg_isready" ] -USER postgres diff --git a/database/charts/templates/NOTES.txt b/database/charts/templates/NOTES.txt deleted file mode 100644 index 7f9a7777..00000000 --- a/database/charts/templates/NOTES.txt +++ /dev/null @@ -1,9 +0,0 @@ -Thank you for installing {{ .Chart.Name }}. - -Your release is named {{ .Release.Name }}. - -To learn more about the release, try: - - $ helm status {{ .Release.Name }} - $ helm get all {{ .Release.Name }} - diff --git a/database/charts/templates/_helpers.tpl b/database/charts/templates/_helpers.tpl deleted file mode 100644 index 052d6a88..00000000 --- a/database/charts/templates/_helpers.tpl +++ /dev/null @@ -1,72 +0,0 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "database.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "database.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "database.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Common labels -*/}} -{{- define "database.labels" -}} -helm.sh/chart: {{ include "database.chart" . }} -{{ include "database.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Selector labels -*/}} -{{- define "database.selectorLabels" -}} -app.kubernetes.io/name: {{ include "database.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "database.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "database.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - -{{/* -Custom content (non-boilerplate) starts here -*/}} -{{- define "metadata" }} -metadata: - name: "{{ .Values.repo }}-{{ .Values.zone }}-{{ .Values.component }}" - labels: - app: "{{ .Values.repo }}-{{ .Values.zone }}" -{{- end }} diff --git a/database/charts/templates/backups.yaml b/database/charts/templates/backups.yaml deleted file mode 100644 index 60f49f4b..00000000 --- a/database/charts/templates/backups.yaml +++ /dev/null @@ -1,82 +0,0 @@ ---- -kind: PersistentVolumeClaim -apiVersion: v1 -metadata: - name: {{ tpl .Values.id.backups . }} -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: {{ .Values.resources.pvc.size }} - storageClassName: netapp-file-standard ---- -kind: CronJob -apiVersion: batch/v1 -metadata: - name: {{ tpl .Values.id.backups . }} -spec: - schedule: {{ .Values.backups.schedule | quote }} - concurrencyPolicy: "Replace" - successfulJobsHistoryLimit: {{ .Values.backups.job.history }} - failedJobsHistoryLimit: {{ .Values.backups.job.keep.failed }} - jobTemplate: - {{- include "metadata" . | indent 4 }} - spec: - backoffLimit: {{ .Values.backups.job.retries }} - template: - {{- include "metadata" . | indent 8 }} - cronjob: {{ tpl .Values.id.backups . }} - spec: - containers: - - name: {{ tpl .Values.id.backups . }} - image: {{ .Values.backups.image }} - command: - - "/bin/bash" - - "-c" - - "/backup.sh -1" - volumeMounts: - - mountPath: {{ .Values.backups.dir }} - name: "backup" - env: - - name: BACKUP_DIR - value: {{ .Values.backups.dir }} - - name: BACKUP_STRATEGY - value: {{ .Values.backups.dir }} - - name: NUM_BACKUPS - value: {{ .Values.backups.count | default 5 | quote }} - - name: DAILY_BACKUPS - value: {{ .Values.backups.dailies | default 7 | quote }} - - name: WEEKLY_BACKUPS - value: {{ .Values.backups.weeklies | default 4 | quote }} - - name: MONTHLY_BACKUPS - value: {{ .Values.backups.monthlies | default 1 | quote }} - - name: DATABASE_SERVICE_NAME - value: {{ tpl .Values.id.database . }} - - name: DEFAULT_PORT - value: {{ .Values.backups.port | default 5432 | quote }} - - name: POSTGRES_DATABASE - valueFrom: - secretKeyRef: - name: {{ tpl .Values.id.database . }} - key: "database-name" - - name: DATABASE_USER - valueFrom: - secretKeyRef: - name: {{ tpl .Values.id.database . }} - key: "database-user" - - name: DATABASE_PASSWORD - valueFrom: - secretKeyRef: - name: {{ tpl .Values.id.database . }} - key: "database-password" - volumes: - - name: backup - persistentVolumeClaim: - claimName: {{ tpl .Values.id.backups . }} - restartPolicy: "Never" - terminationGracePeriodSeconds: 30 - activeDeadlineSeconds: 1600 - dnsPolicy: "ClusterFirst" - serviceAccountName: {{ .Values.backups.job.name | default "default" | quote }} - serviceAccount: {{ .Values.backups.job.name | default "default" | quote }} diff --git a/database/charts/templates/database.yaml b/database/charts/templates/database.yaml deleted file mode 100644 index 9be8f722..00000000 --- a/database/charts/templates/database.yaml +++ /dev/null @@ -1,127 +0,0 @@ ---- -kind: PersistentVolumeClaim -apiVersion: v1 -{{- include "metadata" . }} -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: {{ .Values.resources.pvc.size }} - storageClassName: netapp-file-standard ---- -kind: ImageStream -apiVersion: image.openshift.io/v1 -{{- include "metadata" . }} -spec: - lookupPolicy: - local: false - tags: - - name: {{ tpl .Values.id.database . }} - from: - kind: DockerImage - name: "{{ .Values.image.registry }}/{{ .Values.org }}/{{ .Values.repo }}/{{ .Values.component }}:{{ .Values.image.tag }}" - referencePolicy: - type: Local ---- -kind: DeploymentConfig -apiVersion: apps.openshift.io/v1 -{{- include "metadata" . }} -spec: - replicas: 1 - triggers: - - type: ConfigChange - - type: ImageChange - imageChangeParams: - automatic: true - containerNames: - - {{ tpl .Values.id.database . }} - from: - kind: ImageStreamTag - name: "{{ tpl .Values.id.database . }}:{{ .Values.image.tag }}" - selector: - deploymentconfig: {{ tpl .Values.id.database . }} - strategy: - type: Recreate - recreateParams: - timeoutSeconds: 600 - activeDeadlineSeconds: 21600 - template: - {{- include "metadata" . | indent 4 }} - deploymentconfig: {{ tpl .Values.id.database . }} - spec: - volumes: - - name: {{ tpl .Values.id.database . }} - persistentVolumeClaim: - claimName: {{ tpl .Values.id.database . }} - containers: - - name: {{ tpl .Values.id.database . }} - image: "{{ tpl .Values.id.database . }}:{{ .Values.image.tag }}" - securityContext: - allowPrivilegeEscalation: false - ports: - - containerPort: 5432 - protocol: TCP - readinessProbe: - exec: - command: - - /usr/bin/env - - bash - - -c - - psql -q -U $POSTGRES_USER -d $POSTGRES_DB -c 'SELECT 1' - failureThreshold: 5 - initialDelaySeconds: 30 - periodSeconds: 15 - timeoutSeconds: 1 - livenessProbe: - exec: - command: - - /usr/bin/env - - bash - - -c - - psql -q -U $POSTGRES_USER -d $POSTGRES_DB -c 'SELECT 1' - failureThreshold: 5 - initialDelaySeconds: 30 - periodSeconds: 15 - timeoutSeconds: 1 - env: - - name: POSTGRES_DB - valueFrom: - secretKeyRef: - name: {{ tpl .Values.id.database . }} - key: database-user - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: {{ tpl .Values.id.database . }} - key: database-password - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: {{ tpl .Values.id.database . }} - key: database-user - volumeMounts: - - name: {{ tpl .Values.id.database . }} - mountPath: {{ .Values.resources.pvc.mount }} - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - imagePullPolicy: Always - restartPolicy: Always - terminationGracePeriodSeconds: 30 - dnsPolicy: ClusterFirst - schedulerName: default-scheduler ---- -apiVersion: v1 -kind: Service -{{- include "metadata" . }} -spec: - ports: - - name: postgresql - nodePort: 0 - port: 5432 - protocol: TCP - targetPort: 5432 - selector: - deploymentconfig: {{ tpl .Values.id.database . }} - sessionAffinity: None - type: ClusterIP diff --git a/database/charts/templates/secret.yaml b/database/charts/templates/secret.yaml deleted file mode 100644 index 86065d82..00000000 --- a/database/charts/templates/secret.yaml +++ /dev/null @@ -1,18 +0,0 @@ -{{/* -Secret for database -- Uses annotation to prevent removal from zone=(test|prod) -- Reuses existing passwords, if found -*/}} ---- -apiVersion: v1 -kind: Secret -{{- include "metadata" . }} -{{- if or (eq (.Values.zone | toString ) "test") (eq (.Values.zone | toString ) "prod") }} - annotations: - "helm.sh/resource-policy": "keep" # Retain secret for non-PRs (test|prod) -{{- end }} -data: - database-name: {{ .Values.database.name | b64enc }} - database-user: {{ .Values.database.user | b64enc }} - {{- $secretData := (lookup "v1" "Secret" .Release.Namespace (tpl .Values.id .)).data | default dict }} - database-password: {{ get $secretData "database-password" | default (randAlphaNum 32 | b64enc ) | quote }} diff --git a/database/charts/values.schema.json b/database/charts/values.schema.json deleted file mode 100644 index 60b3f0ee..00000000 --- a/database/charts/values.schema.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "type": "object", - "properties": { - "component": { - "type": "string" - }, - "org": { - "type": "string" - }, - "repo": { - "type": "string" - } - }, - "required": [ - "org", - "repo", - "zone" - ] -} diff --git a/database/charts/values.yaml b/database/charts/values.yaml deleted file mode 100644 index 258a4edc..00000000 --- a/database/charts/values.yaml +++ /dev/null @@ -1,35 +0,0 @@ -# Default values for charts. -# This is a YAML-formatted file. -# Declare variables to be passed into your templates. - -component: database -image: - tag: latest - registry: ghcr.io -org: ~ -repo: ~ -resources: - pvc: - mount: /var/lib/postgresql - size: 256Mi -zone: ~ - -backups: - component: database-backup - dir: /backups/ - image: bcgovimages/backup-container:latest - job: - retries: 0 - history: 5 - keep: - successful: 5 - failed: 2 - pvc-size: 256Mi - schedule: "05 8 * * *" # Run daily at 8:05 AM UTC - strategy: rolling - -# Templated/calculated values -# - Consume with: {{ tpl "whatever" . }} -id: - database: "{{ .Values.repo }}-{{ .Values.zone }}-{{ .Values.component }}" - backups: "{{ .Values.repo }}-{{ .Values.zone }}-{{ .Values.backups.component }}" diff --git a/database/openshift.deploy.yml b/database/openshift.deploy.yml deleted file mode 100644 index d412f0c4..00000000 --- a/database/openshift.deploy.yml +++ /dev/null @@ -1,361 +0,0 @@ -apiVersion: template.openshift.io/v1 -kind: Template -parameters: - - name: NAME - description: Product name - value: nr-compliance-enforcement-cm - - name: COMPONENT - description: Component name - value: database - - name: ZONE - description: Deployment zone, e.g. pr-### or prod - required: true - - name: IMAGE_TAG - description: Image tag to use - value: latest - - name: PVC_MOUNT_PATH - description: Where to mount the PVC, subpath (e.g. data/) - value: /var/lib/postgresql - - name: DB_PVC_SIZE - description: Volume space available for data, e.g. 512Mi, 2Gi. - displayName: Database Volume Capacity - required: true - value: 256Mi - - name: REGISTRY - description: Container registry to import from (internal is image-registry.openshift-image-registry.svc:5000) - value: ghcr.io - - name: PROMOTE - description: Image (namespace/name:tag) to promote/import - required: true - - name: PG_DATABASE - description: Postgres database name - value: database - - name: DB_PASSWORD - description: Password for the PostgreSQL connection user. - from: "[a-zA-Z0-9]{16}" - generate: expression - ### Backup-Container starts here ### - - name: BACKUP_COMPONENT - description: BACKUP_COMPONENT name - value: database-backup - - name: "DATABASE_DEFAULT_PORT" - description: "The configured port for the database service" - value: "5432" - - name: "BACKUP_STRATEGY" - description: "The strategy to use for backups; for example daily, or rolling." - required: true - value: "rolling" - - name: "BACKUP_DIR" - description: "The name of the root backup directory" - required: true - value: "/backups/" - - name: "NUM_BACKUPS" - description: "The number of backup files to be retained. Used for the `daily` backup strategy. Ignored when using the `rolling` backup strategy." - required: false - value: "5" - - name: "DAILY_BACKUPS" - description: "The number of daily backup files to be retained. Used for the `rolling` backup strategy." - required: false - value: "7" - - name: "WEEKLY_BACKUPS" - description: "The number of weekly backup files to be retained. Used for the `rolling` backup strategy." - required: false - value: "4" - - name: "MONTHLY_BACKUPS" - displayName: "Number of Monthly Backups to Retain" - description: "The number of monthly backup files to be retained. Used for the `rolling` backup strategy." - required: false - value: "1" - - name: "JOB_SERVICE_ACCOUNT" - description: "Name of the Service Account To Exeucte the Job As." - value: "default" - required: true - - name: "SUCCESS_JOBS_HISTORY_LIMIT" - description: "The number of successful jobs that will be retained" - value: "5" - required: true - - name: "FAILED_JOBS_HISTORY_LIMIT" - description: "The number of failed jobs that will be retained" - value: "2" - required: true - - name: "JOB_BACKOFF_LIMIT" - description: "The number of attempts to try for a successful job outcome" - value: "0" - - description: Volume space available for data, e.g. 512Mi, 2Gi. - name: PVC_SIZE - value: 256Mi - - name: CRON_MINUTES - description: Random number, 0-60, for scheduling cronjobs - from: "[0-5]{1}[0-9]{1}" - generate: expression -objects: - - apiVersion: v1 - kind: Secret - metadata: - name: "${NAME}-${ZONE}-${PG_DATABASE}" - labels: - app: "${NAME}-${ZONE}" - stringData: - database-name: "${NAME}" - database-password: "${DB_PASSWORD}" - database-user: "${NAME}" - - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy - metadata: - name: allow-from-openshift-ingress - labels: - template: openshift-test - spec: - podSelector: {} - ingress: - - from: - - namespaceSelector: - matchLabels: - network.openshift.io/policy-group: ingress - policyTypes: - - Ingress - - apiVersion: networking.k8s.io/v1 - kind: NetworkPolicy - metadata: - name: allow-same-namespace - labels: - template: quickstart-network-security-policy - spec: - podSelector: {} - ingress: - - from: - - podSelector: {} - policyTypes: - - Ingress - - kind: PersistentVolumeClaim - apiVersion: v1 - metadata: - name: "${NAME}-${ZONE}-${COMPONENT}" - labels: - app: "${NAME}-${ZONE}" - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: "${DB_PVC_SIZE}" - storageClassName: netapp-file-standard - - kind: ImageStream - apiVersion: v1 - metadata: - name: "${NAME}-${ZONE}-${COMPONENT}" - labels: - app: "${NAME}-${ZONE}" - spec: - lookupPolicy: - local: false - tags: - - name: "${IMAGE_TAG}" - from: - kind: DockerImage - name: "${REGISTRY}/${PROMOTE}" - referencePolicy: - type: Local - - kind: DeploymentConfig - apiVersion: v1 - metadata: - name: "${NAME}-${ZONE}-${COMPONENT}" - labels: - app: "${NAME}-${ZONE}" - spec: - replicas: 1 - triggers: - - type: ConfigChange - - type: ImageChange - imageChangeParams: - automatic: true - containerNames: - - "${NAME}" - from: - kind: ImageStreamTag - name: "${NAME}-${ZONE}-${COMPONENT}:${IMAGE_TAG}" - selector: - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - strategy: - type: Recreate - recreateParams: - timeoutSeconds: 600 - activeDeadlineSeconds: 21600 - template: - metadata: - name: "${NAME}-${ZONE}-${COMPONENT}" - labels: - app: "${NAME}-${ZONE}" - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - spec: - volumes: - - name: "${NAME}-${ZONE}-${COMPONENT}" - persistentVolumeClaim: - claimName: "${NAME}-${ZONE}-${COMPONENT}" - containers: - - name: "${NAME}" - image: "${NAME}-${ZONE}-${COMPONENT}:${IMAGE_TAG}" - ports: - - containerPort: 5432 - protocol: TCP - readinessProbe: - exec: - command: - - /usr/bin/env - - bash - - -c - - psql -q -U $POSTGRES_USER -d $POSTGRES_DB -c 'SELECT 1' - failureThreshold: 5 - initialDelaySeconds: 30 - periodSeconds: 15 - timeoutSeconds: 1 - livenessProbe: - exec: - command: - - /usr/bin/env - - bash - - -c - - psql -q -U $POSTGRES_USER -d $POSTGRES_DB -c 'SELECT 1' - failureThreshold: 5 - initialDelaySeconds: 30 - periodSeconds: 15 - timeoutSeconds: 1 - env: - - name: POSTGRES_DB - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-${COMPONENT}" - key: database-name - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-${COMPONENT}" - key: database-password - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-${COMPONENT}" - key: database-user - volumeMounts: - - name: "${NAME}-${ZONE}-${COMPONENT}" - mountPath: "${PVC_MOUNT_PATH}" - terminationMessagePath: /dev/termination-log - terminationMessagePolicy: File - imagePullPolicy: Always - restartPolicy: Always - terminationGracePeriodSeconds: 30 - dnsPolicy: ClusterFirst - schedulerName: default-scheduler - - apiVersion: v1 - kind: Service - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - ports: - - name: postgresql - nodePort: 0 - port: 5432 - protocol: TCP - targetPort: 5432 - selector: - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - sessionAffinity: None - type: ClusterIP - ### Backup-Container starts here ### - - kind: PersistentVolumeClaim - apiVersion: v1 - metadata: - name: "${NAME}-${ZONE}-${BACKUP_COMPONENT}" - labels: - app: "${NAME}-${ZONE}" - spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: "${PVC_SIZE}" - storageClassName: netapp-file-standard - - kind: CronJob - apiVersion: "batch/v1" - metadata: - name: "${NAME}-${ZONE}-${BACKUP_COMPONENT}" - labels: - app: "${NAME}-${ZONE}" - cronjob: "${NAME}-${ZONE}" - spec: - schedule: "${CRON_MINUTES} 8 * * *" # Run daily at 8:xx AM UTC - concurrencyPolicy: "Replace" - successfulJobsHistoryLimit: "${{SUCCESS_JOBS_HISTORY_LIMIT}}" - failedJobsHistoryLimit: "${{FAILED_JOBS_HISTORY_LIMIT}}" - jobTemplate: - metadata: - labels: - app: "${NAME}-${ZONE}" - cronjob: "${NAME}-${ZONE}" - spec: - backoffLimit: "${{JOB_BACKOFF_LIMIT}}" - template: - metadata: - labels: - app: "${NAME}-${ZONE}" - cronjob: "${NAME}-${ZONE}" - spec: - containers: - - name: "${NAME}-${ZONE}" - image: "bcgovimages/backup-container:latest" - command: - - "/bin/bash" - - "-c" - - "/backup.sh -1" - volumeMounts: - - mountPath: "${BACKUP_DIR}" - name: "backup" - env: - - name: BACKUP_DIR - value: "${BACKUP_DIR}" - - name: BACKUP_STRATEGY - value: "${BACKUP_STRATEGY}" - optional: true - - name: NUM_BACKUPS - value: "${NUM_BACKUPS}" - optional: true - - name: DAILY_BACKUPS - value: "${DAILY_BACKUPS}" - optional: true - - name: WEEKLY_BACKUPS - value: "${WEEKLY_BACKUPS}" - optional: true - - name: MONTHLY_BACKUPS - value: "${MONTHLY_BACKUPS}" - optional: true - - name: DATABASE_SERVICE_NAME - value: "${NAME}-${ZONE}-database" - - name: DEFAULT_PORT - value: "${DATABASE_DEFAULT_PORT}" - - name: POSTGRES_DATABASE - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: "database-name" - - name: DATABASE_USER - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: "database-user" - - name: DATABASE_PASSWORD - valueFrom: - secretKeyRef: - name: "${NAME}-${ZONE}-database" - key: "database-password" - volumes: - - name: backup - persistentVolumeClaim: - claimName: "${NAME}-${ZONE}-${BACKUP_COMPONENT}" - restartPolicy: "Never" - terminationGracePeriodSeconds: 30 - activeDeadlineSeconds: 1600 - dnsPolicy: "ClusterFirst" - serviceAccountName: "${JOB_SERVICE_ACCOUNT}" - serviceAccount: "${JOB_SERVICE_ACCOUNT}" diff --git a/database/postgis/Dockerfile b/database/postgis/Dockerfile deleted file mode 100644 index dbdff90c..00000000 --- a/database/postgis/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM postgis/postgis:15-master - -# Enable extensions using this pattern on startup -# RUN sed -i '/EXISTS postgis_tiger_geocoder;*/a CREATE EXTENSION IF NOT EXISTS pgcrypto;' \ -# /docker-entrypoint-initdb.d/10_postgis.sh - -# Health check and non-privileged user -HEALTHCHECK --interval=15s --timeout=5s --retries=3 CMD [ "pg_isready" ] -USER postgres diff --git a/docker-compose.yml b/docker-compose.yml index 563aa0d5..d758cfac 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -29,7 +29,7 @@ services: image: flyway/flyway:9-alpine container_name: migrations command: info migrate info - volumes: ["./backend/db/migrations:/flyway/sql:ro"] + volumes: ["./migrations/sql:/flyway/sql:ro"] environment: FLYWAY_URL: jdbc:postgresql://database:5432/postgres FLYWAY_USER: *POSTGRES_USER diff --git a/frontend/.eslintrc.yml b/frontend/.eslintrc.yml index 3b61ac10..f0883491 100644 --- a/frontend/.eslintrc.yml +++ b/frontend/.eslintrc.yml @@ -17,7 +17,7 @@ parserOptions: jsx: true ecmaVersion: 12 sourceType: module - project: './tsconfig.json' + project: './frontend/tsconfig.json' plugins: - 'react' diff --git a/frontend/Dockerfile b/frontend/Dockerfile index c3750de9..473cc4f2 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,6 +1,6 @@ # Build static files # Node Bullseye has npm -FROM node:20.7.0-bullseye-slim AS build +FROM node:20.10.0-bullseye-slim AS build # Install packages, build and keep only prod packages WORKDIR /app @@ -11,7 +11,7 @@ RUN npm ci --ignore-scripts --no-update-notifier --omit=dev && \ # Deploy container # Caddy serves static files -FROM caddy:2.7.4-alpine +FROM caddy:2.7.5-alpine RUN apk add --no-cache ca-certificates # Copy static files and run formatting diff --git a/frontend/cypress/e2e/home-page.cy.ts b/frontend/cypress/e2e/home-page.cy.ts index 3d7864db..76a3d7f2 100644 --- a/frontend/cypress/e2e/home-page.cy.ts +++ b/frontend/cypress/e2e/home-page.cy.ts @@ -3,6 +3,6 @@ describe("Home page visit", () => { it("visit landing page", () => { cy.visit("/"); - cy.contains("Quickstart OpenShift"); + cy.contains("nr-compliance-enforcement-cm"); }); }); diff --git a/frontend/index.html b/frontend/index.html index 5d1983c9..c5bdeb9c 100644 --- a/frontend/index.html +++ b/frontend/index.html @@ -2,13 +2,13 @@ - + - QuickStart OpenShift + nr-compliance-enforcement-cm
diff --git a/frontend/openshift.deploy.yml b/frontend/openshift.deploy.yml deleted file mode 100644 index bfbaa47a..00000000 --- a/frontend/openshift.deploy.yml +++ /dev/null @@ -1,176 +0,0 @@ -apiVersion: template.openshift.io/v1 -kind: Template -parameters: - - name: NAME - description: Module name - value: nr-compliance-enforcement-cm - - name: COMPONENT - description: Component name - value: frontend - - name: ZONE - description: Deployment zone, e.g. pr-### or prod - required: true - - name: IMAGE_TAG - description: Image tag to use - value: latest - - name: DOMAIN - value: apps.silver.devops.gov.bc.ca - - name: CPU_REQUEST - value: "25m" - - name: MEMORY_REQUEST - value: "50Mi" - - name: CPU_LIMIT - value: "75m" - - name: MEMORY_LIMIT - value: "150Mi" - - name: MIN_REPLICAS - description: The minimum amount of replicas for the horizontal pod autoscaler. - value: "3" - - name: MAX_REPLICAS - description: The maximum amount of replicas for the horizontal pod autoscaler. - value: "5" - - name: REGISTRY - description: Container registry to import from (internal is image-registry.openshift-image-registry.svc:5000) - value: ghcr.io - - name: PROMOTE - description: Image (namespace/name:tag) to promote/import - value: bcgov/nr-compliance-enforcement-cm/frontend:prod - - name: LOG_LEVEL - description: Caddy logging level DEBUG, INFO, WARN, ERROR, PANIC, and FATAL (https://github.com/caddyserver/caddy/blob/master/logging.go) - value: "info" -objects: - - apiVersion: v1 - kind: ImageStream - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - lookupPolicy: - local: false - tags: - - name: "${IMAGE_TAG}" - from: - kind: DockerImage - name: "${REGISTRY}/${PROMOTE}" - referencePolicy: - type: Local - - apiVersion: v1 - kind: DeploymentConfig - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - replicas: 1 - triggers: - - type: ConfigChange - - type: ImageChange - imageChangeParams: - automatic: true - containerNames: - - "${NAME}" - from: - kind: ImageStreamTag - name: "${NAME}-${ZONE}-${COMPONENT}:${IMAGE_TAG}" - selector: - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - strategy: - type: Rolling - template: - metadata: - labels: - app: "${NAME}-${ZONE}" - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - spec: - containers: - - image: "${NAME}-${ZONE}-${COMPONENT}:${IMAGE_TAG}" - securityContext: - capabilities: - add: ["NET_BIND_SERVICE"] - imagePullPolicy: Always - name: "${NAME}" - env: - - name: BACKEND_URL - value: "https://${NAME}-${ZONE}-backend.${DOMAIN}:443" - - name: LOG_LEVEL - value: "${LOG_LEVEL}" - ports: - - containerPort: 3000 - protocol: TCP - resources: - requests: - cpu: "${CPU_REQUEST}" - memory: "${MEMORY_REQUEST}" - limits: - cpu: "${CPU_LIMIT}" - memory: "${MEMORY_LIMIT}" - readinessProbe: - httpGet: - path: /health - port: 3001 - scheme: HTTP - initialDelaySeconds: 5 - periodSeconds: 2 - timeoutSeconds: 2 - successThreshold: 1 - failureThreshold: 30 - livenessProbe: - successThreshold: 1 - failureThreshold: 3 - httpGet: - path: /health - port: 3001 - scheme: HTTP - initialDelaySeconds: 15 - periodSeconds: 30 - timeoutSeconds: 5 - - apiVersion: v1 - kind: Service - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - ports: - - name: 3000-tcp - protocol: TCP - port: 80 - targetPort: 3000 - selector: - deploymentconfig: "${NAME}-${ZONE}-${COMPONENT}" - - apiVersion: route.openshift.io/v1 - kind: Route - metadata: - labels: - app: "${NAME}-${ZONE}" - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - host: "${NAME}-${ZONE}-${COMPONENT}.${DOMAIN}" - port: - targetPort: 3000-tcp - to: - kind: Service - name: "${NAME}-${ZONE}-${COMPONENT}" - weight: 100 - tls: - termination: edge - insecureEdgeTerminationPolicy: Redirect - - apiVersion: autoscaling/v2 - kind: HorizontalPodAutoscaler - metadata: - name: "${NAME}-${ZONE}-${COMPONENT}" - spec: - scaleTargetRef: - apiVersion: apps.openshift.io/v1 - kind: DeploymentConfig - name: "${NAME}-${ZONE}-${COMPONENT}" - minReplicas: "${{MIN_REPLICAS}}" - maxReplicas: "${{MAX_REPLICAS}}" - metrics: - - type: Resource - resource: - name: cpu - target: - type: Utilization - averageUtilization: 100 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index d7e6d839..64261ca6 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -19,7 +19,7 @@ "react-dom": "^18.2.0", "react-router": "^6.12.1", "react-router-dom": "^6.12.1", - "vite": "^4.3.9", + "vite": "^4.4.11", "vite-tsconfig-paths": "^4.2.0" }, "devDependencies": { @@ -31,15 +31,14 @@ "@types/mui-datatables": "^4.3.5", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", - "@vitest/coverage-c8": "^0.33.0", - "@vitest/coverage-v8": "^0.34.0", - "@vitest/ui": "^0.34.0", - "cypress": "^12.17.4", + "@vitest/coverage-v8": "^1.0.0", + "@vitest/ui": "^1.0.0", + "cypress": "^13.0.0", "cypress-file-upload": "^5.0.8", "cypress-plugin-api": "^2.11.1", "eslint": "^8.41.0", "eslint-config-prettier": "^9.0.0", - "eslint-config-standard-with-typescript": "^39.0.0", + "eslint-config-standard-with-typescript": "^40.0.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-import-resolver-typescript": "^3.5.5", "eslint-plugin-cypress": "^2.13.3", @@ -52,11 +51,11 @@ "eslint-plugin-tsdoc": "^0.2.17", "eslint-plugin-yaml": "^0.5.0", "history": "^5.3.0", - "jsdom": "^22.1.0", - "msw": "^1.2.2", + "jsdom": "^23.0.0", + "msw": "^2.0.1", "prettier": "^3.0.0", "typescript": "^5.1.3", - "vitest": "^0.34.0" + "vitest": "^1.0.0" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -69,9 +68,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.1.tgz", - "integrity": "sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -87,11 +86,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -163,29 +162,29 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.20.tgz", - "integrity": "sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.20.tgz", - "integrity": "sha512-Y6jd1ahLubuYweD/zJH+vvOY141v4f9igNQAQ+MBgq9JlHS2iTsZKn1aMsb3vGccZsXI16VzTBw52Xx0DWmtnA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-module-transforms": "^7.22.20", - "@babel/helpers": "^7.22.15", - "@babel/parser": "^7.22.16", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.5", + "@babel/parser": "^7.23.5", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.20", - "@babel/types": "^7.22.19", - "convert-source-map": "^1.7.0", + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", @@ -199,6 +198,11 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -208,11 +212,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.15.tgz", - "integrity": "sha512-Zu9oWARBqeVOW0dZOjXc3JObrzuqothQ3y/n1kUtrjCoCPLkXUwMvOo/F/TCfoHMbWIFlWwpZtkZVb9ga4U2pA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dependencies": { - "@babel/types": "^7.22.15", + "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -253,12 +257,12 @@ } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" }, "engines": { "node": ">=6.9.0" @@ -287,9 +291,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.20.tgz", - "integrity": "sha512-dLT7JVWIUUxKOs1UnJUBR3S70YK+pKX6AbJgB2vMIvEkZkrfJDbYDJesnPshtKV4LhDOR3Oc5YULeDizRek+5A==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -335,9 +339,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } @@ -351,30 +355,30 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.15.tgz", - "integrity": "sha512-7pAjK0aSdxOwR+CcYAqgWOGy5dcfvzsTIfFTb2odQqW47MDfv14UaJDY6eng8ylM2EaeKXdxaSWESbkmaQHTmw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/traverse": "^7.23.5", + "@babel/types": "^7.23.5" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -449,9 +453,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.16.tgz", - "integrity": "sha512-+gPfKv8UWeKKeJTUxe59+OobVcrYHETCsORl61EmSkmgymguYk/X5bp7GuUIXaFsc6y++v8ZxPsLSSuujqDphA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -460,9 +464,9 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.22.5.tgz", - "integrity": "sha512-nTh2ogNUtxbiSbxaT4Ds6aXnXEipHweN9YRgOX/oNXdf0cCrGn/+2LozFa3lnPV5D90MkjhgckCPBrsoSc1a7g==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -474,9 +478,9 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.22.5.tgz", - "integrity": "sha512-yIiRO6yobeEIaI0RTbIr8iAK9FcBHLtZq0S89ZPjDLQXBA4xvghaKqI0etp/tF3htTM0sazJKKLz9oEiGRtu7w==", + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -488,9 +492,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", - "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", + "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -499,9 +503,9 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.22.15.tgz", - "integrity": "sha512-SAj8oKi8UogVi6eXQXKNPu8qZ78Yzy7zawrlTr0M+IuW/g8Qe9gVDhGcF9h1S69OyACpYoLxEzpjs1M15sI5wQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.23.5.tgz", + "integrity": "sha512-7+ziVclejQTLYhXl+Oi1f6gTGD1XDCeLa4R472TNGQxb08zbEJ0OdNoh5Piz+57Ltmui6xR88BXR4gS3/Toslw==", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -524,18 +528,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.20.tgz", - "integrity": "sha512-eU260mPZbU7mZ0N+X10pxXhQFMGTeLb9eFS0mxehS8HZp9o1uSnFeWQuG1UPrlxgA7QoUzFhOnilHDp0AXCyHw==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.22.15", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.5", "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.22.5", + "@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.22.16", - "@babel/types": "^7.22.19", + "@babel/parser": "^7.23.5", + "@babel/types": "^7.23.5", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -544,12 +548,12 @@ } }, "node_modules/@babel/types": { - "version": "7.22.19", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.19.tgz", - "integrity": "sha512-P7LAw/LbojPzkgp5oznjE6tQEIWbp4PkkfrZDINTro9zgBRtI324/EYsiSI7lhPbpIQ+DCeR2NNmMWANGGfZsg==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.19", + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", "to-fast-properties": "^2.0.0" }, "engines": { @@ -562,6 +566,33 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz", + "integrity": "sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==", + "dev": true, + "dependencies": { + "cookie": "^0.5.0" + } + }, + "node_modules/@bundled-es-modules/js-levenshtein": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/js-levenshtein/-/js-levenshtein-2.0.1.tgz", + "integrity": "sha512-DERMS3yfbAljKsQc0U2wcqGKUWpdFjwqWuoMugEJlqBnKO180/n+4SR/J8MRDt1AN48X1ovgoD9KrdVXcaa3Rg==", + "dev": true, + "dependencies": { + "js-levenshtein": "^1.1.6" + } + }, + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "dev": true, + "dependencies": { + "statuses": "^2.0.1" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -573,9 +604,9 @@ } }, "node_modules/@cypress/request": { - "version": "2.88.12", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", - "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", "dev": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -591,7 +622,7 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.10.3", + "qs": "6.10.4", "safe-buffer": "^5.1.2", "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", @@ -1113,18 +1144,18 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -1145,9 +1176,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -1172,18 +1203,18 @@ } }, "node_modules/@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/@faker-js/faker": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.1.0.tgz", - "integrity": "sha512-38DT60rumHfBYynif3lmtxMqMqmsOQIxQgEuPZxCk2yUYN0eqWpTACgxi0VpidvsJB8CRxCpvP7B3anK85FjtQ==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-8.3.1.tgz", + "integrity": "sha512-FdgpFxY6V6rLZE9mmIBb9hM0xpfvQOSNOLnzolzKwsE1DH+gC7lEKV1p1IbR0lAYyvYd5a4u3qWJzowUkw1bIw==", "dev": true, "funding": [ { @@ -1197,9 +1228,9 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", - "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", + "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", "dependencies": { "@floating-ui/utils": "^0.1.3" } @@ -1214,9 +1245,9 @@ } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", - "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", + "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", "dependencies": { "@floating-ui/dom": "^1.5.1" }, @@ -1226,17 +1257,17 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.4.tgz", - "integrity": "sha512-qprfWkn82Iw821mcKofJ5Pk9wgioHicxcQMxx+5zt5GSKoqdWvgG5AxVmpmUUjzTLPVSH5auBrhI93Deayn/DA==" + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", + "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", + "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", "minimatch": "^3.0.5" }, @@ -1258,9 +1289,9 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", "dev": true }, "node_modules/@istanbuljs/schema": { @@ -1319,9 +1350,9 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1359,55 +1390,40 @@ } }, "node_modules/@mswjs/cookies": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-0.2.2.tgz", - "integrity": "sha512-mlN83YSrcFgk7Dm1Mys40DLssI1KdJji2CMKN8eOlBqsTADYzj2+jWzsANsUTFbxDMWPD5e9bfA1RGqBpS3O1g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mswjs/cookies/-/cookies-1.1.0.tgz", + "integrity": "sha512-0ZcCVQxifZmhwNBoQIrystCb+2sWBY2Zw8lpfJBPCHGCA/HWqehITeCRVIv4VMy8MPlaHo2w2pTHFV2pFfqKPw==", "dev": true, - "dependencies": { - "@types/set-cookie-parser": "^2.4.0", - "set-cookie-parser": "^2.4.6" - }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@mswjs/interceptors": { - "version": "0.17.10", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.10.tgz", - "integrity": "sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==", + "version": "0.25.13", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.25.13.tgz", + "integrity": "sha512-xfjR81WwXPHwhDbqJRHlxYmboJuiSaIKpP4I5TJVFl/EmByOU13jOBT9hmEnxcjR3jvFYoqoNKt7MM9uqerj9A==", "dev": true, "dependencies": { - "@open-draft/until": "^1.0.3", - "@types/debug": "^4.1.7", - "@xmldom/xmldom": "^0.8.3", - "debug": "^4.3.3", - "headers-polyfill": "3.2.5", + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", "outvariant": "^1.2.1", - "strict-event-emitter": "^0.2.4", - "web-encoding": "^1.1.5" + "strict-event-emitter": "^0.5.1" }, "engines": { - "node": ">=14" - } - }, - "node_modules/@mswjs/interceptors/node_modules/strict-event-emitter": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", - "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", - "dev": true, - "dependencies": { - "events": "^3.3.0" + "node": ">=18" } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.16", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.16.tgz", - "integrity": "sha512-OYxhC81c9bO0wobGcM8rrY5bRwpCXAI21BL0P2wz/2vTv4ek7ALz9+U5M8wgdmtRNUhmCmAB4L2WRwFRf5Cd8Q==", - "dependencies": { - "@babel/runtime": "^7.22.15", - "@floating-ui/react-dom": "^2.0.2", - "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "version": "5.0.0-beta.26", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.26.tgz", + "integrity": "sha512-gPMRKC84VRw+tjqYoyBzyrBUqHQucMXdlBpYazHa5rCXrb91fYEQk5SqQ2U5kjxx9QxZxTBvWAmZ6DblIgaGhQ==", + "dependencies": { + "@babel/runtime": "^7.23.4", + "@floating-ui/react-dom": "^2.0.4", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", "@popperjs/core": "^2.11.8", "clsx": "^2.0.0", "prop-types": "^15.8.1" @@ -1417,7 +1433,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -1431,27 +1447,27 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.10.tgz", - "integrity": "sha512-kPHu/NhZq1k+vSZR5wq3AyUfD4bnfWAeuKpps0+8PS7ZHQ2Lyv1cXJh+PlFdCIOa0PK98rk3JPwMzS8BMhdHwQ==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.20.tgz", + "integrity": "sha512-fXoGe8VOrIYajqALysFuyal1q1YmBARqJ3tmnWYDVl0scu8f6h6tZQbS2K8BY28QwkWNGyv4WRfuUkzN5HR3Ow==", "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" } }, "node_modules/@mui/icons-material": { - "version": "5.14.9", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.9.tgz", - "integrity": "sha512-xTRQbDsogsJo7tY5Og8R9zbuG2q+KIPVIM6JQoKxtJlz9DPOw1u0T2fGrvwD+XAOVifQf6epNMcGCDLfJAz4Nw==", + "version": "5.14.19", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.19.tgz", + "integrity": "sha512-yjP8nluXxZGe3Y7pS+yxBV+hWZSsSBampCxkZwaw+1l+feL+rfP74vbEFbMrX/Kil9I/Y1tWfy5bs/eNvwNpWw==", "dependencies": { - "@babel/runtime": "^7.22.15" + "@babel/runtime": "^7.23.4" }, "engines": { "node": ">=12.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@mui/material": "^5.0.0", @@ -1465,17 +1481,17 @@ } }, "node_modules/@mui/material": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.10.tgz", - "integrity": "sha512-ejFMppnO+lzBXpzju+N4SSz0Mhmi5sihXUGcr5FxpgB6bfUP0Lpe32O0Sw/3s8xlmLEvG1fqVT0rRyAVMlCA+A==", - "dependencies": { - "@babel/runtime": "^7.22.15", - "@mui/base": "5.0.0-beta.16", - "@mui/core-downloads-tracker": "^5.14.10", - "@mui/system": "^5.14.10", - "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", - "@types/react-transition-group": "^4.4.6", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.20.tgz", + "integrity": "sha512-SUcPZnN6e0h1AtrDktEl76Dsyo/7pyEUQ+SAVe9XhHg/iliA0b4Vo+Eg4HbNkELsMbpDsUF4WHp7rgflPG7qYQ==", + "dependencies": { + "@babel/runtime": "^7.23.4", + "@mui/base": "5.0.0-beta.26", + "@mui/core-downloads-tracker": "^5.14.20", + "@mui/system": "^5.14.20", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", + "@types/react-transition-group": "^4.4.9", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1", @@ -1487,7 +1503,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.5.0", @@ -1509,12 +1525,12 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.10.tgz", - "integrity": "sha512-f67xOj3H06wWDT9xBg7hVL/HSKNF+HG1Kx0Pm23skkbEqD2Ef2Lif64e5nPdmWVv+7cISCYtSuE2aeuzrZe78w==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.20.tgz", + "integrity": "sha512-WV560e1vhs2IHCh0pgUaWHznrcrVoW9+cDCahU1VTkuwPokWVvb71ccWQ1f8Y3tRBPPcNkU2dChkkRJChLmQlQ==", "dependencies": { - "@babel/runtime": "^7.22.15", - "@mui/utils": "^5.14.10", + "@babel/runtime": "^7.23.4", + "@mui/utils": "^5.14.20", "prop-types": "^15.8.1" }, "engines": { @@ -1522,7 +1538,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -1535,11 +1551,11 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.10.tgz", - "integrity": "sha512-EJckxmQHrsBvDbFu1trJkvjNw/1R7jfNarnqPSnL+jEQawCkQIqVELWLrlOa611TFtxSJGkdUfCFXeJC203HVg==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.14.20.tgz", + "integrity": "sha512-Vs4nGptd9wRslo9zeRkuWcZeIEp+oYbODy+fiZKqqr4CH1Gfi9fdP0Q1tGYk8OiJ2EPB/tZSAyOy62Hyp/iP7g==", "dependencies": { - "@babel/runtime": "^7.22.15", + "@babel/runtime": "^7.23.4", "@emotion/cache": "^11.11.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -1549,7 +1565,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.4.1", @@ -1566,15 +1582,15 @@ } }, "node_modules/@mui/system": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.10.tgz", - "integrity": "sha512-QQmtTG/R4gjmLiL5ECQ7kRxLKDm8aKKD7seGZfbINtRVJDyFhKChA1a+K2bfqIAaBo1EMDv+6FWNT1Q5cRKjFA==", - "dependencies": { - "@babel/runtime": "^7.22.15", - "@mui/private-theming": "^5.14.10", - "@mui/styled-engine": "^5.14.10", - "@mui/types": "^7.2.4", - "@mui/utils": "^5.14.10", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.20.tgz", + "integrity": "sha512-jKOGtK4VfYZG5kdaryUHss4X6hzcfh0AihT8gmnkfqRtWP7xjY+vPaUhhuSeibE5sqA5wCtdY75z6ep9pxFnIg==", + "dependencies": { + "@babel/runtime": "^7.23.4", + "@mui/private-theming": "^5.14.20", + "@mui/styled-engine": "^5.14.19", + "@mui/types": "^7.2.10", + "@mui/utils": "^5.14.20", "clsx": "^2.0.0", "csstype": "^3.1.2", "prop-types": "^15.8.1" @@ -1584,7 +1600,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@emotion/react": "^11.5.0", @@ -1605,11 +1621,11 @@ } }, "node_modules/@mui/types": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz", - "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==", + "version": "7.2.10", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.10.tgz", + "integrity": "sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==", "peerDependencies": { - "@types/react": "*" + "@types/react": "^17.0.0 || ^18.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -1618,12 +1634,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.10", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.10.tgz", - "integrity": "sha512-Rn+vYQX7FxkcW0riDX/clNUwKuOJFH45HiULxwmpgnzQoQr3A0lb+QYwaZ+FAkZrR7qLoHKmLQlcItu6LT0y/Q==", + "version": "5.14.20", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.20.tgz", + "integrity": "sha512-Y6yL5MoFmtQml20DZnaaK1znrCEwG6/vRSzW8PKOTrzhyqKIql0FazZRUR7sA5EPASgiyKZfq0FPwISRXm5NdA==", "dependencies": { - "@babel/runtime": "^7.22.15", - "@types/prop-types": "^15.7.5", + "@babel/runtime": "^7.23.4", + "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" }, @@ -1632,7 +1648,7 @@ }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/mui" + "url": "https://opencollective.com/mui-org" }, "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0", @@ -1679,10 +1695,26 @@ "node": ">= 8" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, "node_modules/@open-draft/until": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", - "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", "dev": true }, "node_modules/@pkgr/utils": { @@ -1706,9 +1738,9 @@ } }, "node_modules/@polka/url": { - "version": "1.0.0-next.23", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.23.tgz", - "integrity": "sha512-C16M+IYz0rgRhWZdCmK+h58JMv8vijAA61gmz2rspCSwKwzBebpdcsiUmwrtJRdphuY30i6BSLEOP8ppbNLyLg==", + "version": "1.0.0-next.24", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", + "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==", "dev": true }, "node_modules/@popperjs/core": { @@ -1736,13 +1768,169 @@ "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==" }, "node_modules/@remix-run/router": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.9.0.tgz", - "integrity": "sha512-bV63itrKBC0zdT27qYm6SDZHlkXwFL1xMBuhkn+X7l0+IIhNaH5wuuvZKp6eKhCD4KFhujhfhCT1YxXW6esUIA==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", + "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==", "engines": { "node": ">=14.0.0" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.1.tgz", + "integrity": "sha512-0WQ0ouLejaUCRsL93GD4uft3rOmB8qoQMU05Kb8CmMtMBe7XUDLAltxVZI1q6byNqEtU7N1ZX1Vw5lIpgulLQA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.1.tgz", + "integrity": "sha512-1TKm25Rn20vr5aTGGZqo6E4mzPicCUD79k17EgTLAsXc1zysyi4xXKACfUbwyANEPAEIxkzwue6JZ+stYzWUTA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.1.tgz", + "integrity": "sha512-cEXJQY/ZqMACb+nxzDeX9IPLAg7S94xouJJCNVE5BJM8JUEP4HeTF+ti3cmxWeSJo+5D+o8Tc0UAWUkfENdeyw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.1.tgz", + "integrity": "sha512-LoSU9Xu56isrkV2jLldcKspJ7sSXmZWkAxg7sW/RfF7GS4F5/v4EiqKSMCFbZtDu2Nc1gxxFdQdKwkKS4rwxNg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.1.tgz", + "integrity": "sha512-EfI3hzYAy5vFNDqpXsNxXcgRDcFHUWSx5nnRSCKwXuQlI5J9dD84g2Usw81n3FLBNsGCegKGwwTVsSKK9cooSQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.1.tgz", + "integrity": "sha512-9lhc4UZstsegbNLhH0Zu6TqvDfmhGzuCWtcTFXY10VjLLUe4Mr0Ye2L3rrtHaDd/J5+tFMEuo5LTCSCMXWfUKw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.1.tgz", + "integrity": "sha512-FfoOK1yP5ksX3wwZ4Zk1NgyGHZyuRhf99j64I5oEmirV8EFT7+OhUZEnP+x17lcP/QHJNWGsoJwrz4PJ9fBEXw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.1.tgz", + "integrity": "sha512-DNGZvZDO5YF7jN5fX8ZqmGLjZEXIJRdJEdTFMhiyXqyXubBa0WVLDWSNlQ5JR2PNgDbEV1VQowhVRUh+74D+RA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.1.tgz", + "integrity": "sha512-RkJVNVRM+piYy87HrKmhbexCHg3A6Z6MU0W9GHnJwBQNBeyhCJG9KDce4SAMdicQnpURggSvtbGo9xAWOfSvIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.1.tgz", + "integrity": "sha512-v2FVT6xfnnmTe3W9bJXl6r5KwJglMK/iRlkKiIFfO6ysKs0rDgz7Cwwf3tjldxQUrHL9INT/1r4VA0n9L/F1vQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.1.tgz", + "integrity": "sha512-YEeOjxRyEjqcWphH9dyLbzgkF8wZSKAKUkldRY6dgNR5oKs2LZazqGB41cWJ4Iqqcy9/zqYgmzBkRoVz3Q9MLw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.1.tgz", + "integrity": "sha512-0zfTlFAIhgz8V2G8STq8toAjsYYA6eci1hnXuyOTUFnymrtJwnS6uGKiv3v5UrPZkBlamLvrLV2iiaeqCKzb0A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", @@ -1786,12 +1974,12 @@ } }, "node_modules/@testing-library/jest-dom": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.3.tgz", - "integrity": "sha512-YzpjRHoCBWPzpPNtg6gnhasqtE/5O4qz8WCwDEaxtfnPO6gkaLrnuXusrGSPyhIGPezr1HM7ZH0CFaUTY9PJEQ==", + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.5.tgz", + "integrity": "sha512-3y04JLW+EceVPy2Em3VwNr95dOKqA8DhR0RJHhHKDZNYXcVXnEK7WIrpj4eYU8SVt/qYZ2aRWt/WgQ+grNES8g==", "dev": true, "dependencies": { - "@adobe/css-tools": "^4.3.0", + "@adobe/css-tools": "^4.3.1", "@babel/runtime": "^7.9.2", "aria-query": "^5.0.0", "chalk": "^3.0.0", @@ -1840,9 +2028,9 @@ } }, "node_modules/@testing-library/react": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.0.0.tgz", - "integrity": "sha512-S04gSNJbYE30TlIMLTzv6QCTzt9AqIF5y6s6SzVFILNcNvbV/jU96GeiTPillGQo+Ny64M/5PV7klNYYgv5Dfg==", + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", + "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", "dev": true, "dependencies": { "@babel/runtime": "^7.12.5", @@ -1870,34 +2058,47 @@ "@testing-library/dom": ">=7.21.4" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, "node_modules/@types/aria-query": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.1.tgz", - "integrity": "sha512-XTIieEY+gvJ39ChLcB4If5zHtPxt3Syj5rgZR+e1ctpmK8NjPf0zFqsz4JpLJT0xla9GFDKjy8Cpu331nrmE1Q==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true }, - "node_modules/@types/chai": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.6.tgz", - "integrity": "sha512-VOVRLM1mBxIRxydiViqPcKn6MIxZytrbMpd6RJLIWKxUNr3zux8no0Oc7kJx0WAPIitgZ0gkrDS+btlqQpubpw==", - "dev": true + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } }, - "node_modules/@types/chai-subset": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.3.tgz", - "integrity": "sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==", - "dev": true, + "node_modules/@types/babel__generator": { + "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", "dependencies": { - "@types/chai": "*" + "@babel/types": "^7.20.7" } }, "node_modules/@types/cookie": { @@ -1906,40 +2107,31 @@ "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", "dev": true }, - "node_modules/@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-YIQtIg4PKr7ZyqNPZObpxfHsHEmuB8dXCxd6qVcGuQVDK2bpsF7bYNnBJ4Nn7giuACZg+WewExgrtAJ3XnA4Xw==", + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", "dependencies": { "@types/react": "*", "hoist-non-react-statics": "^3.3.0" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "node_modules/@types/js-levenshtein": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.1.tgz", - "integrity": "sha512-qC4bCqYGy1y/NP7dDVr7KJarn+PbX1nSpwA7JXdu0HxT3QYjO8MJ+cntENtHFVy2dRAyBV23OZ6MxsW1AM1L8g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/js-levenshtein/-/js-levenshtein-1.1.3.tgz", + "integrity": "sha512-jd+Q+sD20Qfu9e2aEXogiO3vpOC1PYJOUdyN9gvs4Qrvkg4wF43L5OhqrPeokdv8TL0/mXoYfpkcoGZMNN2pkQ==", "dev": true }, "node_modules/@types/json-schema": { - "version": "7.0.13", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.13.tgz", - "integrity": "sha512-RbSSoHliUbnXj3ny0CNFOoxrIDV6SUGyStHsvDqosw6CkdPV8TtWGlfecuK4ToyMEAql6pzNxgCFKanovUzlgQ==", + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "peer": true }, @@ -1949,16 +2141,10 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, - "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, "node_modules/@types/mui-datatables": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/@types/mui-datatables/-/mui-datatables-4.3.5.tgz", - "integrity": "sha512-WY3C6V/OPdnC4fzpIhbgw7VjYEVQgYvORclsAH5xM2LzEvFd5of40I3n4TBWibOxsbkGU7D+UeynL83JLmxmng==", + "version": "4.3.11", + "resolved": "https://registry.npmjs.org/@types/mui-datatables/-/mui-datatables-4.3.11.tgz", + "integrity": "sha512-nggD3ndsm0jfiWVAcB5b88/oCCXPx7WtjQoTdQ//l5WO3WIeNA78NnrIk7eIuh2S+ScVFtlDr620qIgkjATbiA==", "dev": true, "dependencies": { "@emotion/react": "^11.10.5", @@ -1969,25 +2155,28 @@ } }, "node_modules/@types/node": { - "version": "16.18.53", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.53.tgz", - "integrity": "sha512-vVmHeo4tpF8zsknALU90Hh24VueYdu45ZlXzYWFbom61YR4avJqTFDC3QlWzjuTdAv6/3xHaxiO9NrtVZXrkmw==", - "devOptional": true + "version": "18.19.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.2.tgz", + "integrity": "sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==", + "devOptional": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/prop-types": { - "version": "15.7.6", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.6.tgz", - "integrity": "sha512-RK/kBbYOQQHLYj9Z95eh7S6t7gq4Ojt/NT8HTk8bWVhA5DaF+5SMnxHKkP4gPNN3wAZkKP+VjAf0ebtYzf+fxg==" + "version": "15.7.11", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/react": { - "version": "18.2.22", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.22.tgz", - "integrity": "sha512-60fLTOLqzarLED2O3UQImc/lsNRgG0jE/a1mPW9KjMemY0LMITWEsbS4VvZ4p6rorEHd5YKxxmMKSDK505GHpA==", + "version": "18.2.42", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.42.tgz", + "integrity": "sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -1995,43 +2184,34 @@ } }, "node_modules/@types/react-dom": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.7.tgz", - "integrity": "sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==", + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", "dev": true, "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-transition-group": { - "version": "4.4.6", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz", - "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@types/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-7aqorHYgdNO4DM36stTiGO3DvKoex9TQRwsJU6vMaFGyqpBA1MNZkz+PG3gaNUPpTAOYhT1WR7M1JyA3fbS9Cw==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true, "peer": true }, - "node_modules/@types/set-cookie-parser": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@types/set-cookie-parser/-/set-cookie-parser-2.4.3.tgz", - "integrity": "sha512-7QhnH7bi+6KAhBB+Auejz1uV9DHiopZqu7LfR/5gZZTkejJV5nYeZZpgfFoE0N8aDsXuiYpfKyfyMatCwQhyTQ==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/sinonjs__fake-timers": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", @@ -2039,15 +2219,21 @@ "dev": true }, "node_modules/@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true + }, + "node_modules/@types/statuses": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.4.tgz", + "integrity": "sha512-eqNDvZsCNY49OAXB0Firg/Sc2BgoWsntsLUdybGFOhAfCD6QJ2n9HXUIHGqt5qjrxmMv4wS8WLAw43ZkKcJ8Pw==", "dev": true }, "node_modules/@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, "dependencies": { @@ -2055,17 +2241,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.2.tgz", - "integrity": "sha512-ooaHxlmSgZTM6CHYAFRlifqh1OAr3PAQEwi7lhYhaegbnXrnh7CDcHmc3+ihhbQC7H0i4JF0psI5ehzkF6Yl6Q==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.13.2.tgz", + "integrity": "sha512-3+9OGAWHhk4O1LlcwLBONbdXsAhLjyCFogJY/cWy2lxdVJ2JrcTF2pTGMaLl2AE7U1l31n8Py4a8bx5DLf/0dQ==", "dev": true, "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/type-utils": "6.7.2", - "@typescript-eslint/utils": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/type-utils": "6.13.2", + "@typescript-eslint/utils": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -2091,15 +2277,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.2.tgz", - "integrity": "sha512-KA3E4ox0ws+SPyxQf9iSI25R6b4Ne78ORhNHeVKrPQnoYsb9UhieoiRoJgrzgEeKGOXhcY1i8YtOeCHHTDa6Fw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.13.2.tgz", + "integrity": "sha512-MUkcC+7Wt/QOGeVlM8aGGJZy1XV5YKjTpq9jK6r6/iLsGXhBVaGP5N0UYvFsu9BFlSpwY9kMretzdBH01rkRXg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4" }, "engines": { @@ -2119,13 +2305,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.2.tgz", - "integrity": "sha512-bgi6plgyZjEqapr7u2mhxGR6E8WCzKNUFWNh6fkpVe9+yzRZeYtDTbsIBzKbcxI+r1qVWt6VIoMSNZ4r2A+6Yw==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.13.2.tgz", + "integrity": "sha512-CXQA0xo7z6x13FeDYCgBkjWzNqzBn8RXaE3QVQVIUm74fWJLkJkaHmHdKStrxQllGh6Q4eUGyNpMe0b1hMkXFA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2" + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2136,14 +2322,14 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.2.tgz", - "integrity": "sha512-36F4fOYIROYRl0qj95dYKx6kybddLtsbmPIYNK0OBeXv2j9L5nZ17j9jmfy+bIDHKQgn2EZX+cofsqi8NPATBQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.13.2.tgz", + "integrity": "sha512-Qr6ssS1GFongzH2qfnWKkAQmMUyZSyOr0W54nZNU1MDfo+U4Mv3XveeLZzadc/yq8iYhQZHYT+eoXJqnACM1tw==", "dev": true, "peer": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.2", - "@typescript-eslint/utils": "6.7.2", + "@typescript-eslint/typescript-estree": "6.13.2", + "@typescript-eslint/utils": "6.13.2", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -2164,9 +2350,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.2.tgz", - "integrity": "sha512-flJYwMYgnUNDAN9/GAI3l8+wTmvTYdv64fcH8aoJK76Y+1FCZ08RtI5zDerM/FYT5DMkAc+19E4aLmd5KqdFyg==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.13.2.tgz", + "integrity": "sha512-7sxbQ+EMRubQc3wTfTsycgYpSujyVbI1xw+3UMRUcrhSy+pN09y/lWzeKDbvhoqcRbHdc+APLs/PWYi/cisLPg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -2177,13 +2363,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.2.tgz", - "integrity": "sha512-kiJKVMLkoSciGyFU0TOY0fRxnp9qq1AzVOHNeN1+B9erKFCJ4Z8WdjAkKQPP+b1pWStGFqezMLltxO+308dJTQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.13.2.tgz", + "integrity": "sha512-SuD8YLQv6WHnOEtKv8D6HZUzOub855cfPnPMKvdM/Bh1plv1f7Q/0iFUDLKKlxHcEstQnaUU4QZskgQq74t+3w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/visitor-keys": "6.7.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/visitor-keys": "6.13.2", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -2204,18 +2390,18 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.2.tgz", - "integrity": "sha512-ZCcBJug/TS6fXRTsoTkgnsvyWSiXwMNiPzBUani7hDidBdj1779qwM1FIAmpH4lvlOZNF3EScsxxuGifjpLSWQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.13.2.tgz", + "integrity": "sha512-b9Ptq4eAZUym4idijCRzl61oPCwwREcfDI8xGk751Vhzig5fFZR9CyzDz4Sp/nxSLBYxUPyh4QdIDqWykFhNmQ==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.2", - "@typescript-eslint/types": "6.7.2", - "@typescript-eslint/typescript-estree": "6.7.2", + "@typescript-eslint/scope-manager": "6.13.2", + "@typescript-eslint/types": "6.13.2", + "@typescript-eslint/typescript-estree": "6.13.2", "semver": "^7.5.4" }, "engines": { @@ -2230,12 +2416,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.2.tgz", - "integrity": "sha512-uVw9VIMFBUTz8rIeaUT3fFe8xIUx8r4ywAdlQv1ifH+6acn/XF8Y6rwJ7XNmkNMDrTW+7+vxFFPIF40nJCVsMQ==", + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.13.2.tgz", + "integrity": "sha512-OGznFs0eAQXJsp+xSd6k/O1UbFi/K/L7WjqeRoFE7vadjAF9y0uppXhYNQNEqygjou782maGClOoZwPqF0Drlw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.2", + "@typescript-eslint/types": "6.13.2", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -2246,90 +2432,79 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, "node_modules/@vitejs/plugin-react": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.0.4.tgz", - "integrity": "sha512-7wU921ABnNYkETiMaZy7XqpueMnpu5VxvVps13MjmCo+utBdD79sZzrApHawHtVX66cCJQQTXFcjH0y9dSUK8g==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", + "integrity": "sha512-oojO9IDc4nCUUi8qIR11KoQm0XFFLIwsRBwHRR4d/88IWghn1y6ckz/bJ8GHDCsYEJee8mDzqtJxh15/cisJNQ==", "dependencies": { - "@babel/core": "^7.22.9", - "@babel/plugin-transform-react-jsx-self": "^7.22.5", - "@babel/plugin-transform-react-jsx-source": "^7.22.5", + "@babel/core": "^7.23.5", + "@babel/plugin-transform-react-jsx-self": "^7.23.3", + "@babel/plugin-transform-react-jsx-source": "^7.23.3", + "@types/babel__core": "^7.20.5", "react-refresh": "^0.14.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0" - } - }, - "node_modules/@vitest/coverage-c8": { - "version": "0.33.0", - "resolved": "https://registry.npmjs.org/@vitest/coverage-c8/-/coverage-c8-0.33.0.tgz", - "integrity": "sha512-DaF1zJz4dcOZS4k/neiQJokmOWqsGXwhthfmUdPGorXIQHjdPvV6JQSYhQDI41MyI8c+IieQUdIDs5XAMHtDDw==", - "deprecated": "v8 coverage is moved to @vitest/coverage-v8 package", - "dev": true, - "dependencies": { - "@ampproject/remapping": "^2.2.1", - "c8": "^7.14.0", - "magic-string": "^0.30.1", - "picocolors": "^1.0.0", - "std-env": "^3.3.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "vitest": ">=0.30.0 <1" + "vite": "^4.2.0 || ^5.0.0" } }, "node_modules/@vitest/coverage-v8": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-0.34.4.tgz", - "integrity": "sha512-TZ5ghzhmg3COQqfBShL+zRQEInHmV9TSwghTdfkHpCTyTOr+rxo6x41vCNcVfWysWULtqtBVpY6YFNovxnESfA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.0.1.tgz", + "integrity": "sha512-Z4a7ig4VjUCT/P+LRB3IZrBRXb9xWRUM8rSBH9cKgfrU1Oe01/K2WJKtGshOnQwXZoSfQtwCGpbnHmB/qJwjcw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.1", "@bcoe/v8-coverage": "^0.2.3", - "istanbul-lib-coverage": "^3.2.0", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", "istanbul-lib-report": "^3.0.1", "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.1.5", - "magic-string": "^0.30.1", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.2", "picocolors": "^1.0.0", - "std-env": "^3.3.3", + "std-env": "^3.5.0", "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.1.0" + "v8-to-istanbul": "^9.2.0" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": ">=0.32.0 <1" + "vitest": "^1.0.0" } }, "node_modules/@vitest/expect": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.34.4.tgz", - "integrity": "sha512-XlMKX8HyYUqB8dsY8Xxrc64J2Qs9pKMt2Z8vFTL4mBWXJsg4yoALHzJfDWi8h5nkO4Zua4zjqtapQ/IluVkSnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.0.1.tgz", + "integrity": "sha512-3cdrb/eKD/0tygDX75YscuHEHMUJ70u3UoLSq2eqhWks57AyzvsDQbyn53IhZ0tBN7gA8Jj2VhXiOV2lef7thw==", "dev": true, "dependencies": { - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "chai": "^4.3.7" + "@vitest/spy": "1.0.1", + "@vitest/utils": "1.0.1", + "chai": "^4.3.10" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/runner": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.34.4.tgz", - "integrity": "sha512-hwwdB1StERqUls8oV8YcpmTIpVeJMe4WgYuDongVzixl5hlYLT2G8afhcdADeDeqCaAmZcSgLTLtqkjPQF7x+w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.0.1.tgz", + "integrity": "sha512-/+z0vhJ0MfRPT3AyTvAK6m57rzlew/ct8B2a4LMv7NhpPaiI2QLGyOBMB3lcioWdJHjRuLi9aYppfOv0B5aRQA==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.4", - "p-limit": "^4.0.0", + "@vitest/utils": "1.0.1", + "p-limit": "^5.0.0", "pathe": "^1.1.1" }, "funding": { @@ -2337,15 +2512,15 @@ } }, "node_modules/@vitest/runner/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz", + "integrity": "sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==", "dev": true, "dependencies": { "yocto-queue": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -2364,14 +2539,14 @@ } }, "node_modules/@vitest/snapshot": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-0.34.4.tgz", - "integrity": "sha512-GCsh4coc3YUSL/o+BPUo7lHQbzpdttTxL6f4q0jRx2qVGoYz/cyTRDJHbnwks6TILi6560bVWoBpYC10PuTLHw==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.0.1.tgz", + "integrity": "sha512-wIPtPDGSxEZ+DpNMc94AsybX6LV6uN6sosf5TojyP1m2QbKwiRuLV/5RSsjt1oWViHsTj8mlcwrQQ1zHGO0fMw==", "dev": true, "dependencies": { - "magic-string": "^0.30.1", + "magic-string": "^0.30.5", "pathe": "^1.1.1", - "pretty-format": "^29.5.0" + "pretty-format": "^29.7.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -2404,27 +2579,27 @@ } }, "node_modules/@vitest/spy": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.34.4.tgz", - "integrity": "sha512-PNU+fd7DUPgA3Ya924b1qKuQkonAW6hL7YUjkON3wmBwSTIlhOSpy04SJ0NrRsEbrXgMMj6Morh04BMf8k+w0g==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.0.1.tgz", + "integrity": "sha512-yXwm1uKhBVr/5MhVeSmtNqK+0q2RXIchJt8kokEKdrWLtkPeDgdbZ6SjR1VQGZuNdWL6sSBnLayIyVvcS0qLfA==", "dev": true, "dependencies": { - "tinyspy": "^2.1.1" + "tinyspy": "^2.2.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/ui": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-0.34.4.tgz", - "integrity": "sha512-gz0m0r9ErFG32r+DRdwuLJpUDpbi+jrMcw9nJZAau48Fs4LDIBg561PvczvGqyYxzbyFU7vgkSnSlSDfK0d53w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.0.1.tgz", + "integrity": "sha512-3hFMgy/RExKi7UlYEqqnZ65QALdkgXyW1k7Zn7PykVmVBcKe/aI4ZpZ006WeTWvnUWeR+37lbpUD0JhnmKn72A==", "dev": true, "dependencies": { - "@vitest/utils": "0.34.4", - "fast-glob": "^3.3.0", - "fflate": "^0.8.0", - "flatted": "^3.2.7", + "@vitest/utils": "1.0.1", + "fast-glob": "^3.3.2", + "fflate": "^0.8.1", + "flatted": "^3.2.9", "pathe": "^1.1.1", "picocolors": "^1.0.0", "sirv": "^2.0.3" @@ -2433,18 +2608,18 @@ "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": ">=0.30.1 <1" + "vitest": "^1.0.0" } }, "node_modules/@vitest/utils": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.34.4.tgz", - "integrity": "sha512-yR2+5CHhp/K4ySY0Qtd+CAL9f5Yh1aXrKfAT42bq6CtlGPh92jIDDDSg7ydlRow1CP+dys4TrOrbELOyNInHSg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.0.1.tgz", + "integrity": "sha512-MGPCHkzXbbAyscrhwGzh8uP1HPrTYLWaj1WTDtWSGrpe2yJWLRN9mF9ooKawr6NMOg9vTBtg2JqWLfuLC7Dknw==", "dev": true, "dependencies": { - "diff-sequences": "^29.4.3", - "loupe": "^2.3.6", - "pretty-format": "^29.5.0" + "diff-sequences": "^29.6.3", + "loupe": "^2.3.7", + "pretty-format": "^29.7.0" }, "funding": { "url": "https://opencollective.com/vitest" @@ -2477,143 +2652,121 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.4.tgz", - "integrity": "sha512-cquyDNvZ6jTbf/+x+AgM2Arrp6G4Dzbb0R64jiG804HRMfRiFXWI6kqUVqZ6ZR0bQhIoQjB4+2bhNtVwndW15g==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.10.tgz", + "integrity": "sha512-doe0hODR1+i1menPkRzJ5MNR6G+9uiZHIknK3Zn5OcIztu6GGw7u0XUzf3AgB8h/dfsZC9eouzoLo3c3+N/cVA==", "dev": true, "dependencies": { - "@babel/parser": "^7.21.3", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.5", + "@vue/shared": "3.3.10", "estree-walker": "^2.0.2", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.4.tgz", - "integrity": "sha512-wyM+OjOVpuUukIq6p5+nwHYtj9cFroz9cwkfmP9O1nzH68BenTTv0u7/ndggT8cIQlnBeOo6sUT/gvHcIkLA5w==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.10.tgz", + "integrity": "sha512-NCrqF5fm10GXZIK0GrEAauBqdy+F2LZRt3yNHzrYjpYBuRssQbuPLtSnSNjyR9luHKkWSH8we5LMB3g+4z2HvA==", "dev": true, "dependencies": { - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-core": "3.3.10", + "@vue/shared": "3.3.10" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.4.tgz", - "integrity": "sha512-6y/d8uw+5TkCuzBkgLS0v3lSM3hJDntFEiUORM11pQ/hKvkhSKZrXW6i69UyXlJQisJxuUEJKAWEqWbWsLeNKQ==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.10.tgz", + "integrity": "sha512-xpcTe7Rw7QefOTRFFTlcfzozccvjM40dT45JtrE3onGm/jBLZ0JhpKu3jkV7rbDFLeeagR/5RlJ2Y9SvyS0lAg==", "dev": true, "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-ssr": "3.3.4", - "@vue/reactivity-transform": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.10", + "@vue/compiler-dom": "3.3.10", + "@vue/compiler-ssr": "3.3.10", + "@vue/reactivity-transform": "3.3.10", + "@vue/shared": "3.3.10", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0", - "postcss": "^8.1.10", + "magic-string": "^0.30.5", + "postcss": "^8.4.32", "source-map-js": "^1.0.2" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.4.tgz", - "integrity": "sha512-m0v6oKpup2nMSehwA6Uuu+j+wEwcy7QmwMkVNVfrV9P2qE5KshC6RwOCq8fjGS/Eak/uNb8AaWekfiXxbBB6gQ==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.10.tgz", + "integrity": "sha512-12iM4jA4GEbskwXMmPcskK5wImc2ohKm408+o9iox3tfN9qua8xL0THIZtoe9OJHnXP4eOWZpgCAAThEveNlqQ==", "dev": true, "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-dom": "3.3.10", + "@vue/shared": "3.3.10" } }, "node_modules/@vue/reactivity": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.4.tgz", - "integrity": "sha512-kLTDLwd0B1jG08NBF3R5rqULtv/f8x3rOFByTDz4J53ttIQEDmALqKqXY0J+XQeN0aV2FBxY8nJDf88yvOPAqQ==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.10.tgz", + "integrity": "sha512-H5Z7rOY/JLO+e5a6/FEXaQ1TMuOvY4LDVgT+/+HKubEAgs9qeeZ+NhADSeEtrNQeiKLDuzeKc8v0CUFpB6Pqgw==", "dev": true, "dependencies": { - "@vue/shared": "3.3.4" + "@vue/shared": "3.3.10" } }, "node_modules/@vue/reactivity-transform": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.4.tgz", - "integrity": "sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.10.tgz", + "integrity": "sha512-0xBdk+CKHWT+Gev8oZ63Tc0qFfj935YZx+UAynlutnrDZ4diFCVFMWixn65HzjE3S1iJppWOo6Tt1OzASH7VEg==", "dev": true, "dependencies": { - "@babel/parser": "^7.20.15", - "@vue/compiler-core": "3.3.4", - "@vue/shared": "3.3.4", + "@babel/parser": "^7.23.5", + "@vue/compiler-core": "3.3.10", + "@vue/shared": "3.3.10", "estree-walker": "^2.0.2", - "magic-string": "^0.30.0" + "magic-string": "^0.30.5" } }, "node_modules/@vue/runtime-core": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.4.tgz", - "integrity": "sha512-R+bqxMN6pWO7zGI4OMlmvePOdP2c93GsHFM/siJI7O2nxFRzj55pLwkpCedEY+bTMgp5miZ8CxfIZo3S+gFqvA==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.10.tgz", + "integrity": "sha512-DZ0v31oTN4YHX9JEU5VW1LoIVgFovWgIVb30bWn9DG9a7oA415idcwsRNNajqTx8HQJyOaWfRKoyuP2P2TYIag==", "dev": true, "dependencies": { - "@vue/reactivity": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/reactivity": "3.3.10", + "@vue/shared": "3.3.10" } }, "node_modules/@vue/runtime-dom": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.4.tgz", - "integrity": "sha512-Aj5bTJ3u5sFsUckRghsNjVTtxZQ1OyMWCr5dZRAPijF/0Vy4xEoRCwLyHXcj4D0UFbJ4lbx3gPTgg06K/GnPnQ==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.10.tgz", + "integrity": "sha512-c/jKb3ny05KJcYk0j1m7Wbhrxq7mZYr06GhKykDMNRRR9S+/dGT8KpHuNQjv3/8U4JshfkAk6TpecPD3B21Ijw==", "dev": true, "dependencies": { - "@vue/runtime-core": "3.3.4", - "@vue/shared": "3.3.4", - "csstype": "^3.1.1" + "@vue/runtime-core": "3.3.10", + "@vue/shared": "3.3.10", + "csstype": "^3.1.2" } }, "node_modules/@vue/server-renderer": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.4.tgz", - "integrity": "sha512-Q6jDDzR23ViIb67v+vM1Dqntu+HUexQcsWKhhQa4ARVzxOY2HbC7QRW/ggkDBd5BU+uM1sV6XOAP0b216o34JQ==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.10.tgz", + "integrity": "sha512-0i6ww3sBV3SKlF3YTjSVqKQ74xialMbjVYGy7cOTi7Imd8ediE7t72SK3qnvhrTAhOvlQhq6Bk6nFPdXxe0sAg==", "dev": true, "dependencies": { - "@vue/compiler-ssr": "3.3.4", - "@vue/shared": "3.3.4" + "@vue/compiler-ssr": "3.3.10", + "@vue/shared": "3.3.10" }, "peerDependencies": { - "vue": "3.3.4" + "vue": "3.3.10" } }, "node_modules/@vue/shared": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.4.tgz", - "integrity": "sha512-7OjdcV8vQ74eiz1TZLzZP4JwqM5fA94K6yntPS5Z25r9HDuGNzaGdgvwKYq6S+MxwF0TFRwe50fIR/MYnakdkQ==", + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.10.tgz", + "integrity": "sha512-2y3Y2J1a3RhFa0WisHvACJR2ncvWiVHcP8t0Inxo+NKz+8RKO4ZV8eZgCxRgQoA6ITfV12L4E6POOL9HOU5nqw==", "dev": true }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", - "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", - "dev": true, - "optional": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "node_modules/acorn": { + "version": "8.11.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", + "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2632,24 +2785,24 @@ } }, "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "debug": "4" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6.0.0" + "node": ">= 14" } }, "node_modules/aggregate-error": { @@ -2944,9 +3097,9 @@ } }, "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "node_modules/asynciterator.prototype": { @@ -3000,9 +3153,9 @@ "dev": true }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -3059,9 +3212,9 @@ } }, "node_modules/big-integer": { - "version": "1.6.51", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", - "integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==", + "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "dev": true, "engines": { "node": ">=0.6" @@ -3134,9 +3287,9 @@ } }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "funding": [ { "type": "opencollective", @@ -3152,10 +3305,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" }, "bin": { "browserslist": "cli.js" @@ -3197,6 +3350,19 @@ "node": "*" } }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", + "dev": true, + "peer": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/builtins": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", @@ -3222,32 +3388,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/c8": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", - "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, "node_modules/cac": { "version": "6.7.14", "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", @@ -3267,13 +3407,14 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3288,9 +3429,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001538", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001538.tgz", - "integrity": "sha512-HWJnhnID+0YMtGlzcp3T9drmBJUVDchPJ08tpUGFLs9CYlwWPH2uLgpHn8fND5pCgXVtnGS3H4QR9XLMHVNkHw==", + "version": "1.0.30001566", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", + "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", "funding": [ { "type": "opencollective", @@ -3313,18 +3454,18 @@ "dev": true }, "node_modules/chai": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.8.tgz", - "integrity": "sha512-vX4YvVVtxlfSZ2VecZgFUTU5qPCYsobVI2O9FmwEXBhDigYGQA6jRXCycIs1yJnnWbZ6/+a2zNIF5DfVCcJBFQ==", + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", + "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", "dev": true, "dependencies": { "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^4.1.2", - "get-func-name": "^2.0.0", - "loupe": "^2.3.1", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.5" + "type-detect": "^4.0.8" }, "engines": { "node": ">=4" @@ -3353,10 +3494,13 @@ "dev": true }, "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "dependencies": { + "get-func-name": "^2.0.2" + }, "engines": { "node": "*" } @@ -3410,9 +3554,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -3459,9 +3603,9 @@ } }, "node_modules/cli-spinners": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz", - "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "engines": { "node": ">=6" @@ -3511,14 +3655,17 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/clone": { @@ -3612,18 +3759,18 @@ "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, "engines": { "node": ">= 0.6" } }, "node_modules/core-js-pure": { - "version": "3.32.2", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.32.2.tgz", - "integrity": "sha512-Y2rxThOuNywTjnX/PgA5vWM6CZ9QB9sz9oGeCixV8MqXZO70z/5SHzf9EeBrEBK0PN36DnEBBu9O/aGWzKuMZQ==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.34.0.tgz", + "integrity": "sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -3689,15 +3836,15 @@ "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" }, "node_modules/cypress": { - "version": "12.17.4", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", - "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", + "version": "13.6.1", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.1.tgz", + "integrity": "sha512-k1Wl5PQcA/4UoTffYKKaxA0FJKwg8yenYNYRzLt11CUR0Kln+h7Udne6mdU1cUIdXBDTVZWtmiUjzqGs7/pEpw==", "dev": true, "hasInstallScript": true, "dependencies": { - "@cypress/request": "2.88.12", + "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", + "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -3743,7 +3890,7 @@ "cypress": "bin/cypress" }, "engines": { - "node": "^14.0.0 || ^16.0.0 || >=18.0.0" + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" } }, "node_modules/cypress-file-upload": { @@ -3807,17 +3954,16 @@ } }, "node_modules/data-urls": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", - "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz", + "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==", "dev": true, "dependencies": { - "abab": "^2.0.6", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.0" + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/date-now": { @@ -3867,15 +4013,15 @@ } }, "node_modules/deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "is-arguments": "^1.1.1", "is-array-buffer": "^3.0.2", "is-date-object": "^1.0.5", @@ -3885,11 +4031,14 @@ "object-is": "^1.1.5", "object-keys": "^1.1.1", "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", + "regexp.prototype.flags": "^1.5.1", "side-channel": "^1.0.4", "which-boxed-primitive": "^1.0.2", "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4070,9 +4219,9 @@ } }, "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dev": true, "dependencies": { "get-intrinsic": "^1.2.1", @@ -4204,18 +4353,6 @@ } ] }, - "node_modules/domexception": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", - "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", - "dev": true, - "dependencies": { - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/domhandler": { "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", @@ -4256,9 +4393,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.525", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.525.tgz", - "integrity": "sha512-GIZ620hDK4YmIqAWkscG4W6RwY6gOx1y5J6f4JUQwctiJrqH2oxZYU4mXHi35oV32tr630UcepBzSBGJ/WYcZA==" + "version": "1.4.607", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.607.tgz", + "integrity": "sha512-YUlnPwE6eYxzwBnFmawA8LiLRfm70R2aJRIUv0n03uHt/cUzzYACOogmvk8M2+hVzt/kB80KJXx7d5f5JofPvQ==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -4322,26 +4459,26 @@ } }, "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", + "version": "1.22.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dev": true, "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.5", "es-set-tostringtag": "^2.0.1", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", + "get-intrinsic": "^1.2.2", "get-symbol-description": "^1.0.0", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", "has-property-descriptors": "^1.0.0", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", + "hasown": "^2.0.0", "internal-slot": "^1.0.5", "is-array-buffer": "^3.0.2", "is-callable": "^1.2.7", @@ -4351,7 +4488,7 @@ "is-string": "^1.0.7", "is-typed-array": "^1.1.12", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", "object.assign": "^4.1.4", "regexp.prototype.flags": "^1.5.1", @@ -4365,7 +4502,7 @@ "typed-array-byte-offset": "^1.0.0", "typed-array-length": "^1.0.4", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -4417,26 +4554,26 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -4512,18 +4649,19 @@ } }, "node_modules/eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", + "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", - "@humanwhocodes/config-array": "^0.11.11", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.55.0", + "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.2", @@ -4565,10 +4703,23 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-compat-utils": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.1.2.tgz", + "integrity": "sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==", + "dev": true, + "peer": true, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -4607,9 +4758,9 @@ } }, "node_modules/eslint-config-standard-with-typescript": { - "version": "39.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-39.0.0.tgz", - "integrity": "sha512-CiV2LS4NUeeRmDTDf1ocUMpMxitSyW0g+Y/N7ecElwGj188GahbcQgqfBNyVsIXQxHlZVBlOjkbg3oUI0R3KBg==", + "version": "40.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-40.0.0.tgz", + "integrity": "sha512-GXUJcwIXiTQaS3H4etv8a1lejVVdZYaxZNz3g7vt6GoJosQqMTurbmSC4FVGyHiGT/d1TjFr3+47A3xsHhsG+Q==", "dev": true, "dependencies": { "@typescript-eslint/parser": "^6.4.0", @@ -4657,9 +4808,9 @@ } }, "node_modules/eslint-import-resolver-typescript": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.0.tgz", - "integrity": "sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.1.tgz", + "integrity": "sha512-xgdptdoi5W3niYeuQxKmzVDTATvLYqhpwmykwsh7f6HIOStGWEIL9iqZgQDF9u9OEzrRwR8no5q2VT+bjAujTg==", "dev": true, "dependencies": { "debug": "^4.3.4", @@ -4720,9 +4871,9 @@ } }, "node_modules/eslint-plugin-cypress/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -4747,14 +4898,15 @@ } }, "node_modules/eslint-plugin-es-x": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.2.0.tgz", - "integrity": "sha512-9dvv5CcvNjSJPqnS5uZkqb3xmbeqRLnvXKK7iI5+oK/yTusyc46zbBZKENGsOfojm/mKfszyZb+wNqNPAPeGXA==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-es-x/-/eslint-plugin-es-x-7.5.0.tgz", + "integrity": "sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.1.2", - "@eslint-community/regexpp": "^4.6.0" + "@eslint-community/regexpp": "^4.6.0", + "eslint-compat-utils": "^0.1.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -4776,26 +4928,26 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.28.1.tgz", - "integrity": "sha512-9I9hFlITvOV55alzoKBI+K9q74kv0iKMeY6av5+umsNwayt59fz692daGyjR+oStBQgx6nwR9rXldDev3Clw+A==", + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.findlastindex": "^1.2.2", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", + "eslint-import-resolver-node": "^0.3.9", "eslint-module-utils": "^2.8.0", - "has": "^1.0.3", - "is-core-module": "^2.13.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.6", - "object.groupby": "^1.0.0", - "object.values": "^1.1.6", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", "semver": "^6.3.1", "tsconfig-paths": "^3.14.2" }, @@ -4837,9 +4989,9 @@ } }, "node_modules/eslint-plugin-n": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.1.0.tgz", - "integrity": "sha512-3wv/TooBst0N4ND+pnvffHuz9gNPmk/NkLwAxOt2JykTl/hcuECe6yhTtLJcZjIxtZwN+GX92ACp/QTLpHA3Hg==", + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-16.3.1.tgz", + "integrity": "sha512-w46eDIkxQ2FaTHcey7G40eD+FhTXOdKudDXPUO2n9WNcslze/i/HT2qJ3GXjHngYSGDISIgPNhwGtgoix4zeOw==", "dev": true, "peer": true, "dependencies": { @@ -4848,6 +5000,7 @@ "eslint-plugin-es-x": "^7.1.0", "get-tsconfig": "^4.7.0", "ignore": "^5.2.4", + "is-builtin-module": "^3.2.1", "is-core-module": "^2.12.1", "minimatch": "^3.1.2", "resolve": "^1.22.2", @@ -4864,9 +5017,9 @@ } }, "node_modules/eslint-plugin-prettier": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.0.tgz", - "integrity": "sha512-AgaZCVuYDXHUGxj/ZGu1u8H8CYgDY3iG6w5kUFw4AzMVXzB7VvbKgYR4nATIN+OvUrghMbiDLeimVjVY5ilq3w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.0.1.tgz", + "integrity": "sha512-m3u5RnR56asrwV/lDC4GHorlW75DsFfmUcjfCYylTUs85dBRnB7VM6xG8eCMJdeDRnppzmxZVf1GEPJvl1JmNg==", "dev": true, "dependencies": { "prettier-linter-helpers": "^1.0.0", @@ -4959,12 +5112,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -5036,9 +5189,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -5133,15 +5286,6 @@ "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", "dev": true }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/execa": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", @@ -5260,9 +5404,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -5393,17 +5537,17 @@ } }, "node_modules/flat-cache": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz", - "integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.2.7", + "flatted": "^3.2.9", "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { @@ -5440,19 +5584,6 @@ "is-callable": "^1.1.3" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" - } - }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -5510,9 +5641,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -5559,24 +5693,24 @@ } }, "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5614,9 +5748,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.0.tgz", - "integrity": "sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==", + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", + "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -5771,17 +5905,6 @@ "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, "node_modules/has-bigints": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", @@ -5801,12 +5924,12 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "get-intrinsic": "^1.2.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5851,10 +5974,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/headers-polyfill": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.2.5.tgz", - "integrity": "sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.2.tgz", + "integrity": "sha512-EWGTfnTqAO2L/j5HZgoM/3z82L7necsJ0pO9Tp0X1wil3PDLrkypTBRgVO2ExehEEvUycejZD3FuRaXpZZc3kw==", "dev": true }, "node_modules/highlight.js": { @@ -5889,15 +6023,15 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz", + "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==", "dev": true, "dependencies": { - "whatwg-encoding": "^2.0.0" + "whatwg-encoding": "^3.1.1" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/html-escaper": { @@ -5926,17 +6060,16 @@ } }, "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/http-signature": { @@ -5954,16 +6087,16 @@ } }, "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, "dependencies": { - "agent-base": "6", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/human-signals": { @@ -6008,9 +6141,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, "engines": { "node": ">= 4" @@ -6115,13 +6248,13 @@ } }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "get-intrinsic": "^1.2.2", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -6218,6 +6351,22 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", + "dev": true, + "peer": true, + "dependencies": { + "builtin-modules": "^3.3.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -6243,11 +6392,11 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -6641,9 +6790,9 @@ "dev": true }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -6751,40 +6900,38 @@ "dev": true }, "node_modules/jsdom": { - "version": "22.1.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz", - "integrity": "sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==", + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz", + "integrity": "sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==", "dev": true, "dependencies": { - "abab": "^2.0.6", "cssstyle": "^3.0.0", - "data-urls": "^4.0.0", + "data-urls": "^5.0.0", "decimal.js": "^10.4.3", - "domexception": "^4.0.0", "form-data": "^4.0.0", - "html-encoding-sniffer": "^3.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.1", + "html-encoding-sniffer": "^4.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.4", + "nwsapi": "^2.2.7", "parse5": "^7.1.2", "rrweb-cssom": "^0.6.0", "saxes": "^6.0.0", "symbol-tree": "^3.2.4", - "tough-cookie": "^4.1.2", - "w3c-xmlserializer": "^4.0.0", + "tough-cookie": "^4.1.3", + "w3c-xmlserializer": "^5.0.0", "webidl-conversions": "^7.0.0", - "whatwg-encoding": "^2.0.0", - "whatwg-mimetype": "^3.0.0", - "whatwg-url": "^12.0.1", - "ws": "^8.13.0", - "xml-name-validator": "^4.0.0" + "whatwg-encoding": "^3.1.1", + "whatwg-mimetype": "^4.0.0", + "whatwg-url": "^14.0.0", + "ws": "^8.14.2", + "xml-name-validator": "^5.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "canvas": "^2.5.0" + "canvas": "^2.11.2" }, "peerDependenciesMeta": { "canvas": { @@ -7039,9 +7186,9 @@ } }, "node_modules/keyv": { - "version": "4.5.3", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.3.tgz", - "integrity": "sha512-QCiSav9WaX1PgETJ+SpNnx2PRRapJ/oRSXM4VO5OGYGSjrxbKPVFVhB3l2OCbLCk329N8qyAtsJjSjvVBWzEug==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "dependencies": { "json-buffer": "3.0.1" @@ -7102,10 +7249,14 @@ } }, "node_modules/local-pkg": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", - "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz", + "integrity": "sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==", "dev": true, + "dependencies": { + "mlly": "^1.4.2", + "pkg-types": "^1.0.3" + }, "engines": { "node": ">=14" }, @@ -7267,12 +7418,12 @@ } }, "node_modules/loupe": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz", - "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "dependencies": { - "get-func-name": "^2.0.0" + "get-func-name": "^2.0.1" } }, "node_modules/lru-cache": { @@ -7293,9 +7444,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.3", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.3.tgz", - "integrity": "sha512-B7xGbll2fG/VjP+SWg4sX3JynwIU0mjoTc6MPpKNuIvftk6u6vqhDnk1R80b8C2GBR6ywqy+1DcKBrevBg+bmw==", + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" @@ -7304,6 +7455,17 @@ "node": ">=12" } }, + "node_modules/magicast": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.2.tgz", + "integrity": "sha512-Fjwkl6a0syt9TFN0JSYpOybxiMCkYNEeOTnOTNRbjphirLakznZXAqrXgj/7GG3D1dvETONNwrBfinvAbpunDg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.23.3", + "@babel/types": "^7.23.3", + "source-map-js": "^1.0.2" + } + }, "node_modules/make-dir": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", @@ -7432,29 +7594,31 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/msw": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/msw/-/msw-1.3.1.tgz", - "integrity": "sha512-GhP5lHSTXNlZb9EaKgPRJ01YAnVXwzkvnTzRn4W8fxU2DXuJrRO+Nb6OHdYqB4fCkwSNpIJH9JkON5Y6rHqJMQ==", + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.0.10.tgz", + "integrity": "sha512-JhKdzIEuMDSU7qak4CJjiSFW2J0R4Wm5AuLhFzimKs68Wx7PTyqjgnw7+7FpQ3kGi0yY49g/qEFmUmMyLmjb4w==", "dev": true, "hasInstallScript": true, "dependencies": { - "@mswjs/cookies": "^0.2.2", - "@mswjs/interceptors": "^0.17.10", - "@open-draft/until": "^1.0.3", + "@bundled-es-modules/cookie": "^2.0.0", + "@bundled-es-modules/js-levenshtein": "^2.0.1", + "@bundled-es-modules/statuses": "^1.0.1", + "@mswjs/cookies": "^1.1.0", + "@mswjs/interceptors": "^0.25.13", + "@open-draft/until": "^2.1.0", "@types/cookie": "^0.4.1", "@types/js-levenshtein": "^1.1.1", - "chalk": "^4.1.1", + "@types/statuses": "^2.0.1", + "chalk": "^4.1.2", "chokidar": "^3.4.2", - "cookie": "^0.4.2", - "graphql": "^15.0.0 || ^16.0.0", - "headers-polyfill": "3.2.5", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.1", "inquirer": "^8.2.0", "is-node-process": "^1.2.0", "js-levenshtein": "^1.1.6", - "node-fetch": "^2.6.7", "outvariant": "^1.4.0", "path-to-regexp": "^6.2.0", - "strict-event-emitter": "^0.4.3", + "strict-event-emitter": "^0.5.0", "type-fest": "^2.19.0", "yargs": "^17.3.1" }, @@ -7462,14 +7626,14 @@ "msw": "cli/index.js" }, "engines": { - "node": ">=14" + "node": ">=18" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/mswjs" }, "peerDependencies": { - "typescript": ">= 4.4.x <= 5.2.x" + "typescript": ">= 4.7.x <= 5.2.x" }, "peerDependenciesMeta": { "typescript": { @@ -7477,20 +7641,6 @@ } } }, - "node_modules/msw/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/msw/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -7503,33 +7653,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/msw/node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/msw/node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "engines": { - "node": ">=12" - } - }, "node_modules/mui-datatables": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/mui-datatables/-/mui-datatables-4.3.0.tgz", @@ -7577,9 +7700,9 @@ "dev": true }, "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -7599,60 +7722,18 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" } }, "node_modules/npm-run-path": { @@ -7682,9 +7763,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7716,13 +7797,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -8104,9 +8185,9 @@ } }, "node_modules/postcss": { - "version": "8.4.30", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.30.tgz", - "integrity": "sha512-7ZEao1g4kd68l97aWG/etQKPKq07us0ieSZ2TnFDk11i0ZfDW2AwKHYU8qv4MZKqN2fdBfg+7q0ES06UA73C1g==", + "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "funding": [ { "type": "opencollective", @@ -8122,7 +8203,7 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" }, @@ -8140,9 +8221,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -8265,9 +8346,9 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -8392,11 +8473,11 @@ } }, "node_modules/react-router": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.16.0.tgz", - "integrity": "sha512-VT4Mmc4jj5YyjpOi5jOf0I+TYzGpvzERy4ckNSvSh2RArv8LLoCxlsZ2D+tc7zgjxcY34oTz2hZaeX5RVprKqA==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", + "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", "dependencies": { - "@remix-run/router": "1.9.0" + "@remix-run/router": "1.13.1" }, "engines": { "node": ">=14.0.0" @@ -8406,12 +8487,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.16.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.16.0.tgz", - "integrity": "sha512-aTfBLv3mk/gaKLxgRDUPbPw+s4Y/O+ma3rEN1u8EgEpLpPe6gNjIsWt9rxushMHHMb7mSwxRGdGlGdvmFsyPIg==", + "version": "6.20.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", + "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", "dependencies": { - "@remix-run/router": "1.9.0", - "react-router": "6.16.0" + "@remix-run/router": "1.13.1", + "react-router": "6.20.1" }, "engines": { "node": ">=14.0.0" @@ -8494,9 +8575,9 @@ } }, "node_modules/react-to-print": { - "version": "2.14.13", - "resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.14.13.tgz", - "integrity": "sha512-PqUGgTRZvkyBzWgaZHVBECWPX2nGEc3HOUy6WNXof6HT4yTFI92wtIkqQtr4jfvHbadqjwTgzgh6vgN8KXlWWw==", + "version": "2.14.15", + "resolved": "https://registry.npmjs.org/react-to-print/-/react-to-print-2.14.15.tgz", + "integrity": "sha512-SKnwOzU2cJ8eaAkoJO7+gNhvfEDmm+Y34IdcHsjtHioUevUPhprqbVtvNJlZ2JkGJ8ExK2QNWM9pXECTDR5D8w==", "peerDependencies": { "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" @@ -8656,9 +8737,9 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -8733,9 +8814,9 @@ } }, "node_modules/rollup": { - "version": "3.29.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.2.tgz", - "integrity": "sha512-CJouHoZ27v6siztc21eEQGo0kIcE5D1gVPA571ez0mMYb25LGYGKnVNXpEj5MGlepmDWGXNjDB5q7uNiPHC11A==", + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "bin": { "rollup": "dist/bin/rollup" }, @@ -8970,6 +9051,21 @@ "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -9085,9 +9181,9 @@ } }, "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, "dependencies": { "asn1": "~0.2.3", @@ -9115,10 +9211,19 @@ "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", "dev": true }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/std-env": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.4.3.tgz", - "integrity": "sha512-f9aPhy8fYBuMN+sNfakZV18U39PbalgjXG3lLB9WkaYTxijru61wb57V9wxxNthXM5Sd88ETBWi29qLAsHO52Q==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.6.0.tgz", + "integrity": "sha512-aFZ19IgVmhdB2uX599ve2kE6BIE3YMnQ6Gp6BURhW/oIzpXGKr878TQfAQZn1+i0Flcc/UKUy1gOlcfaUBCryg==", "dev": true }, "node_modules/stop-iteration-iterator": { @@ -9134,9 +9239,9 @@ } }, "node_modules/strict-event-emitter": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz", - "integrity": "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==", + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", "dev": true }, "node_modules/string_decoder": { @@ -9328,13 +9433,13 @@ "dev": true }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", + "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/utils": "^2.4.2", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -9373,10 +9478,13 @@ "dev": true }, "node_modules/throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/through": { "version": "2.3.8", @@ -9391,18 +9499,18 @@ "dev": true }, "node_modules/tinypool": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.7.0.tgz", - "integrity": "sha512-zSYNUlYSMhJ6Zdou4cJwo/p7w5nmAH17GRfU/ui3ctvjXFErXXkruT4MWW6poDeXgCaIBlGLrfU6TbTXxyGMww==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.1.tgz", + "integrity": "sha512-zBTCK0cCgRROxvs9c0CGK838sPkeokNGdQVUUwHAbynHFlmyJYj825f/oRs528HaIJ97lo0pLIlDUzwN+IorWg==", "dev": true, "engines": { "node": ">=14.0.0" } }, "node_modules/tinyspy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.1.1.tgz", - "integrity": "sha512-XPJL2uSzcOyBMky6OFrusqWlzfFrXtE0hPuMgW8A2HmaqrPo4ZQHRN/V0QXN3FSjKxpsbRrFc5LI7KOwBsT1/w==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", + "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", "dev": true, "engines": { "node": ">=14.0.0" @@ -9486,15 +9594,15 @@ } }, "node_modules/tr46": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", - "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz", + "integrity": "sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==", "dev": true, "dependencies": { - "punycode": "^2.3.0" + "punycode": "^2.3.1" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/ts-api-utils": { @@ -9708,9 +9816,9 @@ } }, "node_modules/ufo": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.0.tgz", - "integrity": "sha512-bRn3CsoojyNStCZe0BG0Mt4Nr/4KF+rhFlnNXybgqt5pXHNFRlqinSoQaTrGyzE4X8aHplSb+TorH+COin9Yxw==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", + "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", "dev": true }, "node_modules/unbox-primitive": { @@ -9728,10 +9836,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "devOptional": true + }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" @@ -9747,9 +9861,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -9794,19 +9908,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -9823,19 +9924,25 @@ } }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", @@ -9851,9 +9958,9 @@ } }, "node_modules/vite": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz", - "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==", + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", + "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", @@ -9905,227 +10012,1289 @@ } }, "node_modules/vite-node": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.34.4.tgz", - "integrity": "sha512-ho8HtiLc+nsmbwZMw8SlghESEE3KxJNp04F/jPUCLVvaURwt0d+r9LxEqCX5hvrrOQ0GSyxbYr5ZfRYhQ0yVKQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.0.1.tgz", + "integrity": "sha512-Y2Jnz4cr2azsOMMYuVPrQkp3KMnS/0WV8ezZjCy4hU7O5mUHCAVOnFmoEvs1nvix/4mYm74Len8bYRWZJMNP6g==", "dev": true, "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", - "mlly": "^1.4.0", "pathe": "^1.1.1", "picocolors": "^1.0.0", - "vite": "^3.0.0 || ^4.0.0" + "vite": "^5.0.0-beta.15 || ^5.0.0" }, "bin": { "vite-node": "vite-node.mjs" }, "engines": { - "node": ">=v14.18.0" + "node": "^18.0.0 || >=20.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/vite-tsconfig-paths": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.1.tgz", - "integrity": "sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==", - "dependencies": { - "debug": "^4.1.1", - "globrex": "^0.1.2", - "tsconfck": "^2.1.0" - }, - "peerDependencies": { - "vite": "*" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/vitest": { - "version": "0.34.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.34.4.tgz", - "integrity": "sha512-SE/laOsB6995QlbSE6BtkpXDeVNLJc1u2LHRG/OpnN4RsRzM3GQm4nm3PQCK5OBtrsUqnhzLdnT7se3aeNGdlw==", - "dev": true, - "dependencies": { - "@types/chai": "^4.3.5", - "@types/chai-subset": "^1.3.3", - "@types/node": "*", - "@vitest/expect": "0.34.4", - "@vitest/runner": "0.34.4", - "@vitest/snapshot": "0.34.4", - "@vitest/spy": "0.34.4", - "@vitest/utils": "0.34.4", - "acorn": "^8.9.0", - "acorn-walk": "^8.2.0", - "cac": "^6.7.14", - "chai": "^4.3.7", - "debug": "^4.3.4", - "local-pkg": "^0.4.3", - "magic-string": "^0.30.1", - "pathe": "^1.1.1", - "picocolors": "^1.0.0", - "std-env": "^3.3.3", - "strip-literal": "^1.0.1", - "tinybench": "^2.5.0", - "tinypool": "^0.7.0", - "vite": "^3.1.0 || ^4.0.0 || ^5.0.0-0", - "vite-node": "0.34.4", - "why-is-node-running": "^2.2.2" - }, - "bin": { - "vitest": "vitest.mjs" - }, + "node_modules/vite-node/node_modules/@esbuild/android-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", + "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=v14.18.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@vitest/browser": "*", - "@vitest/ui": "*", - "happy-dom": "*", - "jsdom": "*", - "playwright": "*", - "safaridriver": "*", - "webdriverio": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - }, - "playwright": { - "optional": true - }, - "safaridriver": { - "optional": true - }, - "webdriverio": { - "optional": true - } + "node": ">=12" } }, - "node_modules/vue": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.4.tgz", - "integrity": "sha512-VTyEYn3yvIeY1Py0WaYGZsXnz3y5UnGi62GjVEqvEGPl6nxbOrCXbVOTQWBEJUqAyTUk2uJ5JLVnYJ6ZzGbrSw==", + "node_modules/vite-node/node_modules/@esbuild/android-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", + "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.3.4", - "@vue/compiler-sfc": "3.3.4", - "@vue/runtime-dom": "3.3.4", - "@vue/server-renderer": "3.3.4", - "@vue/shared": "3.3.4" + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/w3c-xmlserializer": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", - "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "node_modules/vite-node/node_modules/@esbuild/android-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", + "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "xml-name-validator": "^4.0.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", + "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "defaults": "^1.0.3" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/web-encoding": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", - "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "node_modules/vite-node/node_modules/@esbuild/darwin-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", + "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/webidl-conversions": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", - "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "node_modules/vite-node/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", + "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { "node": ">=12" } }, - "node_modules/whatwg-encoding": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", - "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "node_modules/vite-node/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", + "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "iconv-lite": "0.6.3" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { "node": ">=12" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/vite-node/node_modules/@esbuild/linux-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", + "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/whatwg-mimetype": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", - "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "node_modules/vite-node/node_modules/@esbuild/linux-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", + "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { "node": ">=12" } }, - "node_modules/whatwg-url": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", - "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", + "node_modules/vite-node/node_modules/@esbuild/linux-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", + "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "tr46": "^4.1.1", - "webidl-conversions": "^7.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "node_modules/vite-node/node_modules/@esbuild/linux-loong64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", + "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", + "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", + "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", + "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-s390x": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", + "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/linux-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", + "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", + "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", + "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/sunos-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", + "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/win32-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", + "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/win32-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", + "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/@esbuild/win32-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", + "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite-node/node_modules/esbuild": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", + "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.8", + "@esbuild/android-arm64": "0.19.8", + "@esbuild/android-x64": "0.19.8", + "@esbuild/darwin-arm64": "0.19.8", + "@esbuild/darwin-x64": "0.19.8", + "@esbuild/freebsd-arm64": "0.19.8", + "@esbuild/freebsd-x64": "0.19.8", + "@esbuild/linux-arm": "0.19.8", + "@esbuild/linux-arm64": "0.19.8", + "@esbuild/linux-ia32": "0.19.8", + "@esbuild/linux-loong64": "0.19.8", + "@esbuild/linux-mips64el": "0.19.8", + "@esbuild/linux-ppc64": "0.19.8", + "@esbuild/linux-riscv64": "0.19.8", + "@esbuild/linux-s390x": "0.19.8", + "@esbuild/linux-x64": "0.19.8", + "@esbuild/netbsd-x64": "0.19.8", + "@esbuild/openbsd-x64": "0.19.8", + "@esbuild/sunos-x64": "0.19.8", + "@esbuild/win32-arm64": "0.19.8", + "@esbuild/win32-ia32": "0.19.8", + "@esbuild/win32-x64": "0.19.8" + } + }, + "node_modules/vite-node/node_modules/rollup": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.1.tgz", + "integrity": "sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.6.1", + "@rollup/rollup-android-arm64": "4.6.1", + "@rollup/rollup-darwin-arm64": "4.6.1", + "@rollup/rollup-darwin-x64": "4.6.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.6.1", + "@rollup/rollup-linux-arm64-gnu": "4.6.1", + "@rollup/rollup-linux-arm64-musl": "4.6.1", + "@rollup/rollup-linux-x64-gnu": "4.6.1", + "@rollup/rollup-linux-x64-musl": "4.6.1", + "@rollup/rollup-win32-arm64-msvc": "4.6.1", + "@rollup/rollup-win32-ia32-msvc": "4.6.1", + "@rollup/rollup-win32-x64-msvc": "4.6.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/vite-node/node_modules/vite": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.6.tgz", + "integrity": "sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-tsconfig-paths": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vite-tsconfig-paths/-/vite-tsconfig-paths-4.2.1.tgz", + "integrity": "sha512-GNUI6ZgPqT3oervkvzU+qtys83+75N/OuDaQl7HmOqFTb0pjZsuARrRipsyJhJ3enqV8beI1xhGbToR4o78nSQ==", + "dependencies": { + "debug": "^4.1.1", + "globrex": "^0.1.2", + "tsconfck": "^2.1.0" + }, + "peerDependencies": { + "vite": "*" + }, + "peerDependenciesMeta": { + "vite": { + "optional": true + } + } + }, + "node_modules/vitest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.0.1.tgz", + "integrity": "sha512-MHsOj079S28hDsvdDvyD1pRj4dcS51EC5Vbe0xvOYX+WryP8soiK2dm8oULi+oA/8Xa/h6GoJEMTmcmBy5YM+Q==", + "dev": true, + "dependencies": { + "@vitest/expect": "1.0.1", + "@vitest/runner": "1.0.1", + "@vitest/snapshot": "1.0.1", + "@vitest/spy": "1.0.1", + "@vitest/utils": "1.0.1", + "acorn-walk": "^8.3.0", + "cac": "^6.7.14", + "chai": "^4.3.10", + "debug": "^4.3.4", + "execa": "^8.0.1", + "local-pkg": "^0.5.0", + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^1.3.0", + "tinybench": "^2.5.1", + "tinypool": "^0.8.1", + "vite": "^5.0.0-beta.19 || ^5.0.0", + "vite-node": "1.0.1", + "why-is-node-running": "^2.2.2" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/node": "^18.0.0 || >=20.0.0", + "@vitest/browser": "^1.0.0", + "@vitest/ui": "^1.0.0", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", + "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", + "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/android-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", + "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", + "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/darwin-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", + "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", + "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/freebsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", + "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", + "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", + "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", + "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-loong64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", + "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-mips64el": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", + "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-ppc64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", + "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-riscv64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", + "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-s390x": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", + "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/linux-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", + "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/netbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", + "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/openbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", + "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/sunos-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", + "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", + "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", + "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/@esbuild/win32-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", + "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vitest/node_modules/esbuild": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", + "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.8", + "@esbuild/android-arm64": "0.19.8", + "@esbuild/android-x64": "0.19.8", + "@esbuild/darwin-arm64": "0.19.8", + "@esbuild/darwin-x64": "0.19.8", + "@esbuild/freebsd-arm64": "0.19.8", + "@esbuild/freebsd-x64": "0.19.8", + "@esbuild/linux-arm": "0.19.8", + "@esbuild/linux-arm64": "0.19.8", + "@esbuild/linux-ia32": "0.19.8", + "@esbuild/linux-loong64": "0.19.8", + "@esbuild/linux-mips64el": "0.19.8", + "@esbuild/linux-ppc64": "0.19.8", + "@esbuild/linux-riscv64": "0.19.8", + "@esbuild/linux-s390x": "0.19.8", + "@esbuild/linux-x64": "0.19.8", + "@esbuild/netbsd-x64": "0.19.8", + "@esbuild/openbsd-x64": "0.19.8", + "@esbuild/sunos-x64": "0.19.8", + "@esbuild/win32-arm64": "0.19.8", + "@esbuild/win32-ia32": "0.19.8", + "@esbuild/win32-x64": "0.19.8" + } + }, + "node_modules/vitest/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/vitest/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/vitest/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/rollup": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.1.tgz", + "integrity": "sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.6.1", + "@rollup/rollup-android-arm64": "4.6.1", + "@rollup/rollup-darwin-arm64": "4.6.1", + "@rollup/rollup-darwin-x64": "4.6.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.6.1", + "@rollup/rollup-linux-arm64-gnu": "4.6.1", + "@rollup/rollup-linux-arm64-musl": "4.6.1", + "@rollup/rollup-linux-x64-gnu": "4.6.1", + "@rollup/rollup-linux-x64-musl": "4.6.1", + "@rollup/rollup-win32-arm64-msvc": "4.6.1", + "@rollup/rollup-win32-ia32-msvc": "4.6.1", + "@rollup/rollup-win32-x64-msvc": "4.6.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/vitest/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/vitest/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/vitest/node_modules/vite": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.6.tgz", + "integrity": "sha512-MD3joyAEBtV7QZPl2JVVUai6zHms3YOmLR+BpMzLlX2Yzjfcc4gTgNi09d/Rua3F4EtC8zdwPU8eQYyib4vVMQ==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.32", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.10.tgz", + "integrity": "sha512-zg6SIXZdTBwiqCw/1p+m04VyHjLfwtjwz8N57sPaBhEex31ND0RYECVOC1YrRwMRmxFf5T1dabl6SGUbMKKuVw==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.3.10", + "@vue/compiler-sfc": "3.3.10", + "@vue/runtime-dom": "3.3.10", + "@vue/server-renderer": "3.3.10", + "@vue/shared": "3.3.10" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/w3c-xmlserializer": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz", + "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-url": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.0.0.tgz", + "integrity": "sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==", + "dev": true, + "dependencies": { + "tr46": "^5.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "dependencies": { @@ -10196,13 +11365,13 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dev": true, "dependencies": { "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "call-bind": "^1.0.4", "for-each": "^0.3.3", "gopd": "^1.0.1", "has-tostringtag": "^1.0.0" @@ -10275,12 +11444,12 @@ } }, "node_modules/xml-name-validator": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", - "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz", + "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==", "dev": true, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/xmlchars": { @@ -10312,30 +11481,30 @@ } }, "node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", - "string-width": "^4.2.0", + "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "yargs-parser": "^21.1.1" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/yauzl": { diff --git a/frontend/package.json b/frontend/package.json index db050b7e..796d32f5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -25,7 +25,7 @@ "react-dom": "^18.2.0", "react-router": "^6.12.1", "react-router-dom": "^6.12.1", - "vite": "^4.3.9", + "vite": "^4.4.11", "vite-tsconfig-paths": "^4.2.0" }, "devDependencies": { @@ -37,15 +37,14 @@ "@types/mui-datatables": "^4.3.5", "@types/react": "^18.2.6", "@types/react-dom": "^18.2.4", - "@vitest/coverage-c8": "^0.33.0", - "@vitest/coverage-v8": "^0.34.0", - "@vitest/ui": "^0.34.0", - "cypress": "^12.17.4", + "@vitest/coverage-v8": "^1.0.0", + "@vitest/ui": "^1.0.0", + "cypress": "^13.0.0", "cypress-file-upload": "^5.0.8", "cypress-plugin-api": "^2.11.1", "eslint": "^8.41.0", "eslint-config-prettier": "^9.0.0", - "eslint-config-standard-with-typescript": "^39.0.0", + "eslint-config-standard-with-typescript": "^40.0.0", "eslint-import-resolver-alias": "^1.1.2", "eslint-import-resolver-typescript": "^3.5.5", "eslint-plugin-cypress": "^2.13.3", @@ -58,10 +57,10 @@ "eslint-plugin-tsdoc": "^0.2.17", "eslint-plugin-yaml": "^0.5.0", "history": "^5.3.0", - "jsdom": "^22.1.0", - "msw": "^1.2.2", + "jsdom": "^23.0.0", + "msw": "^2.0.1", "prettier": "^3.0.0", "typescript": "^5.1.3", - "vitest": "^0.34.0" + "vitest": "^1.0.0" } } diff --git a/frontend/src/__tests__/App.test.tsx b/frontend/src/__tests__/App.test.tsx index 62e6c59d..f97c911e 100644 --- a/frontend/src/__tests__/App.test.tsx +++ b/frontend/src/__tests__/App.test.tsx @@ -4,6 +4,6 @@ import { render, screen } from '../test-utils' describe('Simple working test', () => { it('the title is visible', () => { render() - expect(screen.getByText(/QuickStart OpenShift/i)).toBeInTheDocument() + expect(screen.getByText(/nr-compliance-enforcement-cm/i)).toBeInTheDocument() }) }) diff --git a/frontend/src/components/Header.tsx b/frontend/src/components/Header.tsx index 40719964..adbe6a32 100644 --- a/frontend/src/components/Header.tsx +++ b/frontend/src/components/Header.tsx @@ -8,7 +8,7 @@ export default function Header() { Logo - Quickstart OpenShift + nr-compliance-enforcement-cm
diff --git a/frontend/src/test-setup.ts b/frontend/src/test-setup.ts index c190a18d..eb0ff7ff 100644 --- a/frontend/src/test-setup.ts +++ b/frontend/src/test-setup.ts @@ -1,7 +1,7 @@ import '@testing-library/jest-dom' import { afterAll, afterEach, beforeAll } from 'vitest' import { setupServer } from 'msw/node' -import { rest } from 'msw' +import { http, HttpResponse } from 'msw' const users = [ { @@ -13,8 +13,10 @@ const users = [ ] export const restHandlers = [ - rest.get('http://localhost:3000/api/v1/users', (req, res, ctx) => { - return res(ctx.status(200), ctx.json(users)) + http.get('http://localhost:3000/api/v1/users', () => { + return new HttpResponse(JSON.stringify(users), { + status: 200, + }) }), ] diff --git a/integration-tests/package-lock.json b/integration-tests/package-lock.json index e99dcaf1..99db6e02 100644 --- a/integration-tests/package-lock.json +++ b/integration-tests/package-lock.json @@ -25,9 +25,9 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/axios": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz", - "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -65,9 +65,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", diff --git a/migrations/Dockerfile b/migrations/Dockerfile new file mode 100644 index 00000000..555a582b --- /dev/null +++ b/migrations/Dockerfile @@ -0,0 +1,12 @@ +FROM flyway/flyway:9.22-alpine + +# Copy migrations +COPY ./sql /flyway/sql + +# Non-root user +RUN adduser -D app +USER app + +# Health check and startup +HEALTHCHECK CMD info +CMD ["info", "migrate", "info"] diff --git a/backend/db/migrations/V1.0.0__init.sql b/migrations/sql/V1.0.0__init.sql similarity index 100% rename from backend/db/migrations/V1.0.0__init.sql rename to migrations/sql/V1.0.0__init.sql diff --git a/backend/db/migrations/V1.0.1__alter_user_seq.sql b/migrations/sql/V1.0.1__alter_user_seq.sql similarity index 100% rename from backend/db/migrations/V1.0.1__alter_user_seq.sql rename to migrations/sql/V1.0.1__alter_user_seq.sql diff --git a/renovate.json b/renovate.json index 7190a60b..81d5e5e8 100644 --- a/renovate.json +++ b/renovate.json @@ -1,3 +1,7 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json" + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "description": "Presets from https://github.com/bcgov/renovate-config", + "extends": [ + "github>bcgov/renovate-config" + ] }