diff --git a/.github/workflows/build-and-deploy-beta.yml b/.github/workflows/build-and-deploy-beta.yml index f4cba16ee..2bdbd8af8 100644 --- a/.github/workflows/build-and-deploy-beta.yml +++ b/.github/workflows/build-and-deploy-beta.yml @@ -32,6 +32,7 @@ jobs: PIPELINE_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} IP_ADDRESS_BYPASSING_BASIC_AUTH1: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH1 }} IP_ADDRESS_BYPASSING_BASIC_AUTH2: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH2 }} + USERSNAP_SPACE_API_KEY: ${{ secrets.USERSNAP_SPACE_API_KEY }} steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/build-and-deploy-dev.yml b/.github/workflows/build-and-deploy-dev.yml index b620989ca..4e732e642 100644 --- a/.github/workflows/build-and-deploy-dev.yml +++ b/.github/workflows/build-and-deploy-dev.yml @@ -31,6 +31,7 @@ jobs: PIPELINE_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} IP_ADDRESS_BYPASSING_BASIC_AUTH1: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH1 }} IP_ADDRESS_BYPASSING_BASIC_AUTH2: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH2 }} + USERSNAP_SPACE_API_KEY: ${{ secrets.USERSNAP_SPACE_API_KEY }} steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/build-and-deploy-staging.yml b/.github/workflows/build-and-deploy-staging.yml index f53352b35..01a88f231 100644 --- a/.github/workflows/build-and-deploy-staging.yml +++ b/.github/workflows/build-and-deploy-staging.yml @@ -33,6 +33,7 @@ jobs: PIPELINE_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} IP_ADDRESS_BYPASSING_BASIC_AUTH1: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH1 }} IP_ADDRESS_BYPASSING_BASIC_AUTH2: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH2 }} + USERSNAP_SPACE_API_KEY: ${{ secrets.USERSNAP_SPACE_API_KEY }} steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/build-and-deploy-test.yml b/.github/workflows/build-and-deploy-test.yml index 8c4a3424c..44c064aa3 100644 --- a/.github/workflows/build-and-deploy-test.yml +++ b/.github/workflows/build-and-deploy-test.yml @@ -33,6 +33,7 @@ jobs: PIPELINE_URL: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }} IP_ADDRESS_BYPASSING_BASIC_AUTH1: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH1 }} IP_ADDRESS_BYPASSING_BASIC_AUTH2: ${{ secrets.IP_ADDRESS_BYPASSING_BASIC_AUTH2 }} + USERSNAP_SPACE_API_KEY: ${{ secrets.USERSNAP_SPACE_API_KEY }} steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.github/workflows/test_backend.yml b/.github/workflows/test_backend.yml index eb17b9e46..7c53ee7b3 100644 --- a/.github/workflows/test_backend.yml +++ b/.github/workflows/test_backend.yml @@ -3,12 +3,12 @@ name: Backend Test on: push: paths: - - .github/workflows/test_backend.yml + - .github/workflows/test_backend.yml # - govtool/backend # - tests/govtool-backend schedule: - - cron: '0 0 * * *' + - cron: "0 0 * * *" workflow_dispatch: inputs: deployment: @@ -21,29 +21,104 @@ on: - "govtool-sanchonet.cardanoapi.io/api" jobs: - build: + backend-tests: runs-on: ubuntu-latest steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v4 - with: - python-version: 3.11.4 - cache: 'pip' - - - name: Run Backend Test - working-directory: tests/govtool-backend - run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - pytest -v --github-report - env: - BASE_URL: https://${{inputs.deployment || 'staging.govtool.byron.network/api' }} - METRICS_URL: https://metrics.cardanoapi.io - METRICS_API_SECRET: "${{ secrets.METRICS_SERVER_SECRET_TOKEN }}" - - # - uses: schemathesis/action@v1 - # with: - # schema: "http://localhost:8080/swagger.json" + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.11.4 + cache: "pip" + + - name: Run Backend Test + working-directory: tests/govtool-backend + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + python -m pytest --alluredir allure-results + env: + BASE_URL: https://${{inputs.deployment || 'staging.govtool.byron.network/api' }} + METRICS_URL: https://metrics.cardanoapi.io + METRICS_API_SECRET: "${{ secrets.METRICS_SERVER_SECRET_TOKEN }}" + + - name: Upload report + uses: actions/upload-artifact@v3 + if: always() + with: + name: allure-results + path: tests/govtool-backend/allure-results + + publish-report: + runs-on: ubuntu-latest + if: always() + needs: backend-tests + steps: + - uses: actions/checkout@v4 + - name: Download results + uses: actions/download-artifact@v3 + with: + name: allure-results + path: allure-results + + - name: Get Allure history + uses: actions/checkout@v4 + continue-on-error: true + with: + ref: gh-pages + path: gh-pages + repository: ${{vars.GH_PAGES}} + token: ${{secrets.PERSONAL_TOKEN}} + + - name: Register report + id: register-project + if: ${{success()}} + run: | + chmod +x ./register_report.sh + ./register_report.sh + - if: steps.register-project.outputs.project_exists != 'true' + uses: JamesIves/github-pages-deploy-action@v4 + with: + token: ${{ secrets.PERSONAL_TOKEN }} + repository-name: ${{vars.GH_PAGES}} + branch: gh-pages + folder: project + + - name: Generate report details + id: report-details + run: | + chmod +x ./generate_report_details.sh + ./generate_report_details.sh + + - name: Build report + uses: simple-elf/allure-report-action@master + if: always() + id: allure-report + with: + allure_results: allure-results + gh_pages: gh-pages/${{env.REPORT_NAME}} + allure_report: allure-report + allure_history: allure-history + keep_reports: 2000 + report_url: ${{steps.report-details.outputs.report_url}} + github_run_num: ${{steps.report-details.outputs.report_number}} + + - name: Generate Latest Report + run: | + chmod +x ./generate_latest_report_redirect.sh + ./generate_latest_report_redirect.sh ${{steps.report-details.outputs.report_number}} + + - name: Deploy report to Github Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + token: ${{ secrets.PERSONAL_TOKEN }} + repository-name: ${{vars.GH_PAGES}} + branch: gh-pages + folder: build + target-folder: ${{ env.REPORT_NAME }} + + env: + REPORT_NAME: backend + GH_PAGES: ${{vars.GH_PAGES}} diff --git a/.github/workflows/test_integration_playwright.yml b/.github/workflows/test_integration_playwright.yml new file mode 100644 index 000000000..87ce009d7 --- /dev/null +++ b/.github/workflows/test_integration_playwright.yml @@ -0,0 +1,132 @@ +name: Integration Test [Playwright] + +on: + push: + paths: + - .github/workflows/test_integration_playwright.yml + workflow_run: + workflows: ["Build and deploy GovTool to TEST server"] + types: [completed] + +jobs: + integration-tests: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'push' }} + defaults: + run: + working-directory: tests/govtool-frontend/playwright + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "18" + cache: "npm" + cache-dependency-path: "./tests/govtool-frontend/playwright/package-lock.json" + + - name: Install dependencies + run: npm ci + + - name: Cache Playwright browsers + id: cache-playwright-browsers + uses: actions/cache@v3 + with: + path: | + ~/.cache/ms-playwright + key: ${{ runner.os }}-playwright-browsers + + - name: Install Playwright browsers if not cached + if: steps.cache-playwright-browsers.outputs.cache-hit != 'true' + run: npx playwright install --with-deps + + - name: Run tests + run: | + npm test + + - name: Upload report + uses: actions/upload-artifact@v3 + if: always() + with: + name: allure-results + path: tests/govtool-frontend/playwright/allure-results + + env: + FRONTEND_URL: ${{vars.FRONTEND_URL}} + API_URL: ${{vars.API_URL}} + DOCS_URL: ${{ vars.DOCS_URL }} + FAUCET_API_URL: ${{ vars.FAUCET_API_URL }} + FAUCET_API_KEY: ${{secrets.FAUCET_API_KEY}} + KUBER_API_URL: ${{vars.KUBER_API_URL}} + KUBER_API_KEY: ${{secrets.KUBER_API_KEY}} + WORKERS: ${{vars.WORKERS}} + + publish-report: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion == 'success' || github.event_name == 'push' }} + needs: integration-tests + steps: + - uses: actions/checkout@v4 + - name: Download report + uses: actions/download-artifact@v3 + with: + name: allure-results + path: allure-results + + - name: Get Allure history + uses: actions/checkout@v4 + continue-on-error: true + with: + ref: gh-pages + path: gh-pages + repository: ${{vars.GH_PAGES}} + token: ${{ secrets.PERSONAL_TOKEN }} + + - name: Register report + id: register-project + if: ${{success()}} + run: | + chmod +x ./register_report.sh + ./register_report.sh + - if: steps.register-project.outputs.project_exists != 'true' + uses: JamesIves/github-pages-deploy-action@v4 + with: + token: ${{ secrets.PERSONAL_TOKEN }} + repository-name: ${{vars.GH_PAGES}} + branch: gh-pages + folder: project + + - name: Generate report details + id: report-details + run: | + chmod +x ./generate_report_details.sh + ./generate_report_details.sh + + - name: Build report + uses: simple-elf/allure-report-action@master + if: always() + id: allure-report + with: + allure_results: allure-results + gh_pages: gh-pages/${{env.REPORT_NAME}} + allure_report: allure-report + allure_history: allure-history + keep_reports: 2000 + report_url: ${{steps.report-details.outputs.report_url}} + github_run_num: ${{steps.report-details.outputs.report_number}} + + - name: Generate Latest Report + run: | + chmod +x ./generate_latest_report_redirect.sh + ./generate_latest_report_redirect.sh ${{steps.report-details.outputs.report_number}} + + - name: Deploy report to Github Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + token: ${{ secrets.PERSONAL_TOKEN }} + repository-name: ${{vars.GH_PAGES}} + branch: gh-pages + folder: build + target-folder: ${{ env.REPORT_NAME }} + + env: + REPORT_NAME: integration + GH_PAGES: ${{vars.GH_PAGES}} diff --git a/.gitignore b/.gitignore index 2ce4f59f3..2bad55163 100644 --- a/.gitignore +++ b/.gitignore @@ -135,3 +135,7 @@ infra/terraform/.terraform* scripts/govtool/dev-postgres_db scripts/govtool/dev-postgres_user scripts/govtool/dev-postgres_password + +# nodejs/yarn + +node_modules diff --git a/CHANGELOG.md b/CHANGELOG.md index 018b544e4..08ab94281 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,11 +10,21 @@ changes. ## [Unreleased] +- Inicialize Usersnap into App [Issue 546](https://github.com/IntersectMBO/govtool/issues/546) - Integrate frontend with metadata validation service [Issue 617](https://github.com/IntersectMBO/govtool/issues/617) - Implement a loading modal for the validation of the metadata [Issue 646](https://github.com/IntersectMBO/govtool/issues/646) +- Fix displaying modals to not block signing transactions [Issue 710](https://github.com/IntersectMBO/govtool/issues/710) +- Change style of url button to trim the file name [Issue 655](https://github.com/IntersectMBO/govtool/issues/655) +- Change regex for parsing urls to match urls without protocol [Issue 655](https://github.com/IntersectMBO/govtool/issues/655) +- Integrate ga displaying metadata validation with the validation service [Issue 712](https://github.com/IntersectMBO/govtool/issues/712) +- Correct text of the governance action type [Issue 651](https://github.com/IntersectMBO/govtool/issues/651) +- Enable coverage tests report ### Added +- added search query param to the `drep/getVotes` [Issue 640](https://github.com/IntersectMBO/govtool/issues/640) +- added filtering and sorting capabilities to the `drep/list` [Issue 722](https://github.com/IntersectMBO/govtool/issues/722) +- added drepView and txHash to the `ada-holder/get-current-delegation` [Issue 689](https://github.com/IntersectMBO/govtool/issues/689) - addded latestTxHash to the `drep/info` and `drep/list` endpoints [Issue 627](https://github.com/IntersectMBO/govtool/issues/627) - added `txHash` to `drep/getVotes` [Issue 626](https://github.com/IntersectMBO/govtool/issues/626) - added `references` to all proposal related endpoints @@ -48,6 +58,7 @@ changes. ### Fixed +- drep/info no longer returns null values [Issue 720](https://github.com/IntersectMBO/govtool/issues/720) - drep/getVotes no longer returns 500 [Issue 685](https://github.com/IntersectMBO/govtool/issues/685) - drep/info no longer returns 500 [Issue 676](https://github.com/IntersectMBO/govtool/issues/676) - proposal/list search is case insensitive now [Issue 582](https://github.com/IntersectMBO/govtool/issues/582) @@ -72,6 +83,7 @@ changes. ### Changed +- `drep/info` now returns 4 different tx hashes instead of one latest tx hash [Issue 688](https://github.com/IntersectMBO/govtool/issues/688) - `proposal/list` allows user to search by tx hash [Issue 603](https://github.com/IntersectMBO/govtool/issues/603) - `proposal/list` returns additional data such ass `expiryEpochNo`, `createdEpochNo`, `title`, `about`, `motivation`, `rationale`. `TreasuryWithdrawals` GAs also got nicely formated details. [Issue 372](https://github.com/IntersectMBO/govtool/issues/372) @@ -96,6 +108,7 @@ changes. - Extend the eslint config to apply to the style guide of the project [Issue 514](https://github.com/IntersectMBO/govtool/issues/514) - Update frontend package readme to reflect recent changes [Issue 543](https://github.com/IntersectMBO/govtool/issues/543) - Change input selection strategy to 3 (random) [Issue 575](https://github.com/IntersectMBO/govtool/issues/575) +- Changed documents to prepare for open source [Issue 737](https://github.com/IntersectMBO/govtool/issues/737) ### Removed diff --git a/CODE-OF-CONDUCT.md b/CODE-OF-CONDUCT.md index 8ceedd39a..0e110ce14 100644 --- a/CODE-OF-CONDUCT.md +++ b/CODE-OF-CONDUCT.md @@ -60,7 +60,7 @@ representative at an online or offline event. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement at -[XXXX@intersectmbo.org](XXXX@intersectmbo.org). +[oso@intersectmbo.org](oso@intersectmbo.org). All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index a6e724ba7..b348e3850 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,5 +1,12 @@ # Contributing to the `GovTool` project +⚠️ This is a work in progress document, more instruction on how-to contribute to come! + +Contributing todo: +- [ ] Align with latest OSC policies +- [ ] Refactor to reflect reality +- [ ] Make more friendly to open source contributors + Thanks for considering contributing and helping us on creating GovTool! 😎 The best way to contribute right now is to try things out and provide feedback, but we also accept contributions to the documentation and the obviously to the code itself. diff --git a/README.md b/README.md index 5fe34a9ff..44189428f 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,8 @@ [![npm](https://img.shields.io/npm/v/npm.svg?style=flat-square)](https://www.npmjs.com/package/npm) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com) [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +![Statements](https://img.shields.io/badge/statements-29.28%25-red.svg?style=flat) ![Branches](https://img.shields.io/badge/branches-86.39%25-yellow.svg?style=flat) ![Functions](https://img.shields.io/badge/functions-14.28%25-red.svg?style=flat) ![Lines](https://img.shields.io/badge/lines-29.28%25-red.svg?style=flat) +
@@ -25,27 +27,19 @@ Learn more; [docs.sanchogov.tools](https://docs.sanchogov.tools/). - [GovTool Backend](./govtool/backend/README.md) - [GovTool Frontend](./govtool/frontend/README.md) -- [GovTool deployment setup](./scripts/govtool/README.md) +- [GovTool Infrastructure](./infra/) - [Documentation](./docs/) - [Tests](./tests/) ### Utilities -- [Governance Action Loader](./src/governance-action-loader/) - -## 🔩 Architecture - -GovTool consists of a Haskell backend and a React Typescript frontend. +- [Governance Action Loader](./governance-action-loader/) ### Backend GovTool backend implements an API wrapper around an instance of [DB-Sync](https://github.com/IntersectMBO/cardano-db-sync) which interfaces with a [Cardano Node](https://github.com/IntersectMBO/cardano-node). The API exposes endpoints making the querying of governance related data from DB-Sync straight forward. -#### API Reference - -[`Swagger documentation`](https://sanchogov.tools/api/swagger-ui/) - ### Frontend GovTool frontend web app communicates with the backend over a REST interface, reading and displaying on-chain governance data. @@ -54,4 +48,7 @@ Frontend is able to connect to Cardano wallets over the [CIP-30](https://github. ## 🤝 Contributing Thanks for considering contributing and helping us on creating GovTool! 😎 + +⚠️ We are in the process of improving our contributing documentation, improvements to come. + Please checkout our [Contributing Documentation](./CONTRIBUTING.md). diff --git a/SECURITY.md b/SECURITY.md index b7cf16805..5ff6a2249 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ ## Reporting a Vulnerability -Please report (suspected) security vulnerabilities to [XXXX@intersectmbo.org](XXXX@intersectmbo.org). +Please report (suspected) security vulnerabilities to [security@intersectmbo.org](security@intersectmbo.org). You will receive a response from us within 48 hours. If the issue is confirmed, we will release a patch as soon as possible. diff --git a/docs/architecture/.gitignore b/docs/architecture/.gitignore deleted file mode 100644 index 3434d617e..000000000 --- a/docs/architecture/.gitignore +++ /dev/null @@ -1,10 +0,0 @@ -# arch structurizr -arch-structurizr/.structurizr -arch-structurizr/workspace.json - -#other -.vscode - -#oura install -oura/ -./oura/ diff --git a/docs/architecture/arch-structurizr/README.md b/docs/architecture/arch-structurizr/README.md deleted file mode 100644 index da08652d9..000000000 --- a/docs/architecture/arch-structurizr/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Voltaire dApp Architecture Documentation - -## Architecture as code - -- Describe the architecture logically with a domain specific language and generate all the diagrams -with different levels of details based on the C4Model (Context, Containers, Components, Code). -- Accompanied diagrams with documentation setting the project within its environment. - -## How to Run - -```bash -docker-compose up -``` - -## Diagrams -```bash -http://localhost:8080/workspace/diagrams -``` - -## Documentation -```bash -http://localhost:8080/workspace/documentation/* -``` - -## Decision Log -```bash -http://localhost:8080/workspace/decisions/* -``` diff --git a/docs/architecture/arch-structurizr/dapp.dsl b/docs/architecture/arch-structurizr/dapp.dsl deleted file mode 100644 index a1b1795bd..000000000 --- a/docs/architecture/arch-structurizr/dapp.dsl +++ /dev/null @@ -1,79 +0,0 @@ - -user = person "ADA Holder" "😀" - -userDRep = person "dRep" "😎" -userCCMember = person "CC Member" "🧐" -userSPO = person "SPO" "🤠" - -userGovActSub = person "Gov Action Submitter" "😛" - -browser = softwareSystem "Browser" "Firefox, Chrome, Safari, Edge" "Browser" - -cardanoWallet = softwareSystem "Cardano Wallet" "" "Owned by Other Entities" - -hwWallet = softwareSystem "HW Wallet" "Cardano Hardware Wallet" "Owned by Other Entities" - -group "CardanoWorld" { - cardanoNode = softwareSystem "CardanoNode" - cardanoCLI = softwareSystem "cardano-cli Tool" - cardanoCLI -> cardanoNode "uses" -} - -group "Somewhere?" { - metadataServer = softwareSystem "dRep/Governance Action Metadata Server" "Off chain metadata storage used to fetch metadata from dRep registrations + governance actions that happen on chain" "" -} - -# group "Community Tooling" { -# communityFE = softwareSystem - -# } - - -group "Owned by Gov Analysis Squad"{ - dAppFrontEnd = softwareSystem "Voltaire dApp Frontend" "Web App" "" { - walletConnector = container "walletConnector" "" "" "" - httpClient = container "HTTP Client" "" "" "" - - walletConnector -> cardanoWallet "(dAPP CONNECTOR CIP) \nPOST /drep-reg/ \nPOST /vote\nPOST /drep-ret/\n GET /stake-key/ " - - } - - dAppBackEnd = softwareSystem "Voltaire dApp Backend" "HTTP Service in front of a chain follower and DB" { - - database = container "Database" "" "Some Database" "Database" - voltaireAPI = container "Voltaire DB API" "REST API that offers the ability for clients to find Voltaire related chain data" "" - chainFollower = container "Chain Follower" "Follows the Cardano chain, reduces data, sinks it a store" "txpipe/oura" - txValidationService = container "Validation Service" "Consumes ordered events read from the sink, validates the transactions and when valid stores in store" "" - kafka = container "Message Broker" "Message / Event broker" "apache/kafka" "Message Broker" - - chainFollower -> cardanoNode "follows" - chainFollower -> chainFollower "applyFilter(rawBlock)" - chainFollower -> kafka "sink filtered dapp registration" - kafka -> txValidationService "consumes dapp registrations" - txValidationService -> metadataServer "GET /gov-act-meta" - txValidationService -> database "stores dapp registrations" - voltaireAPI -> database "reads" - - dAppFrontEnd.httpClient -> voltaireAPI "GET /dreps \nGET /gov-act" - - dAppFrontEnd.httpClient -> metadataServer "GET /gov-metadata" - } -} - -user -> browser "uses" -userDRep -> browser "uses" -userDRep -> metadataServer "POST /drep-meta/" -userSPO -> cardanoCLI "uses" -userCCMember -> cardanoCLI "uses" - -userGovActSub -> metadataServer "POST /gov-act-meta/" - -# userGovActSub -> cardanoCLI "POST /gov-act/" - -browser -> dAppFrontEnd "connects" - -// Light wallet and HW wallet -hwWallet -> cardanoWallet "integrates" - -// User's browser attaches to GVC FE -browser -> dAppFrontEnd "connects" diff --git a/docs/architecture/arch-structurizr/decisions/0001-decision b/docs/architecture/arch-structurizr/decisions/0001-decision deleted file mode 100644 index 5673ab07c..000000000 --- a/docs/architecture/arch-structurizr/decisions/0001-decision +++ /dev/null @@ -1,17 +0,0 @@ -# 1. Record architecture decisions - -Date: 2023- - -## Status - -Accepted - -## Context - - - -## Decision - - - -## Consequences diff --git a/docs/architecture/arch-structurizr/docker-compose.yml b/docs/architecture/arch-structurizr/docker-compose.yml deleted file mode 100644 index ad387bf08..000000000 --- a/docs/architecture/arch-structurizr/docker-compose.yml +++ /dev/null @@ -1,10 +0,0 @@ -version: "3.6" - -services: - voltaire-structurizr: - container_name: voltaire-dapp-architecture - image: structurizr/lite:latest - ports: - - '8080:8080' - volumes: - - .:/usr/local/structurizr:rw diff --git a/docs/architecture/arch-structurizr/documentation/documentation.md b/docs/architecture/arch-structurizr/documentation/documentation.md deleted file mode 100644 index 6844a6b12..000000000 --- a/docs/architecture/arch-structurizr/documentation/documentation.md +++ /dev/null @@ -1 +0,0 @@ -## Voltaire Voting App diff --git a/docs/architecture/arch-structurizr/workspace.dsl b/docs/architecture/arch-structurizr/workspace.dsl deleted file mode 100644 index ee4cffc41..000000000 --- a/docs/architecture/arch-structurizr/workspace.dsl +++ /dev/null @@ -1,84 +0,0 @@ -workspace "Voltaire Implementation Draft" { - !docs ./documentation - !adrs ./decisions - !identifiers hierarchical - - model { - !include dapp.dsl - } - - views { - systemLandscape all { - title "Volatire Tech Implementation System Overview [Draft]" - include * - autoLayout lr - } - - systemContext dAppFrontEnd { - include * - autoLayout lr - } - - systemContext dAppBackEnd { - include * - autoLayout lr - } - - container dAppBackEnd { - include * - autolayout lr - } - - container dAppFrontEnd { - include * - autolayout lr - } - - // Colour pallette: https://colorbrewer2.org/#type=sequential&scheme=PuBu&n=4 - styles { - element "Software System" { - background #0570b0 - color #ffffff - shape RoundedBox - } - - element "Container" { - background #74a9cf - color #ffffff - shape RoundedBox - } - - element "Component" { - background #bdc9e1 - color #ffffff - shape RoundedBox - } - - element "Person" { - background #66c2a5 - color #ffffff - shape person - } - - element "Owned by Other Entities" { - background #999999 - color #ffffff - } - - element "Browser" { - background #999999 - color #ffffff - shape WebBrowser - } - - element "Database" { - shape Cylinder - } - } - - branding { - logo data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAfUAAABkCAMAAACo21lxAAAArlBMVEX///8AM60AMKwAKasAL6wAK6sALasAJqoZPK8AI6kAKKuruODc4PCls90AIakcS7dXc8Vmd8NGZcCkrtudptZogcoAHqj09vz5+/4AFacAGqg9Xb3Ez+wAOrHt8fq2weTY3vFzhcrP1+4ADabu8fnj6PV/kc9SbcIgQ7KNn9Y6VrjAyujM1O2+xuVScMQyULaUn9N3jM4AAKVue8M/Yb6Fl9ItTLUmRrNndsJjfsljQZZ0AAAWOElEQVR4nO1diXbiuLbFkgdswMy2MZMhmCkkhNchufz/jz1PR5ZsSYZUp26lrvfq7rUaT5L20dGZpDQaX8Ds9XwJv/JgjZ+LQMPI6P63W1Hjm9Dm/3w1FUXxn7nXwpn3jQ2q8e2YfSoDl3dha0SsO0vepbWuN2vd/4MRdjXkj3hX1v+nI2zw5rQ7wIrRq2f7z0UwRwr+h3upNZ3vAt6F8FNXcM36T8bKx3aHf8kNBcxeTcPnqv4aPwTutv84ga1t6xuaUqNGjRo1atSoUaNGjfsRHMYv1R74YnTbBt/fmBq/B625bdkrbmSWQvvsYLM5+y0tqvHtWNiqoigTbmSWwi4OzevKb2lSjW9Hx4noVLQB82NwuA2ZfNxij+LbJoIkXY0fhqFdZr1j2dhRTtQvi2bC+lPN+t+BhR3z6dAa/sWJf9LnNMWrWDjwx+9uXY1vwkg1LPOVtuZecTyvFftA/RYObNM8r39342p8F9bXC5t526sJ67hH/+i13lqL39quGr8V71rCunH9bzekxm9Ex49JR06tz/8OrF/uYdK7+Jqu8Yurire2Dvyiyhp/DK6Kjd7uuM8b7s67ewouNn3fNL+0EHgJvvJkDcB9Q/hiIkW1gn/xu61oLUDWgytBezm6Xsa9wfv77jJqrWvqH8fiZfi2XfV377v+avvWmcni6Ye4zN0e/otfX1niwnkuvGDURdgwMNZ0VdewgdX563NVEiDCet8EKBfJfUO1KcTn6+HEr+ruKLz79+/j0al9R+NibPNXfAaS++bpPfOjoL58hNIbVGFALGwNFM0wLKxF67CGLcPQ57sXYbl6Kw6+Oo9lUOQzsTWJ5jq+f64ve4qtJlG+HJEQvHcqJ/zIRADVkNw3dJAQqmb4+z6vPrRjcB/QsenMB9t7+ucqOnnMlllEWE1vMnr86yM7ve4IWD/1945WGEIFafbHKhC0bOfjyU0su6fr2cHHQ97JWV97evJvL8InvMuTPblbeQRTv9TeBLozr7AivCb1oExdDU3eB2gZ889l3dSxxA/o1uTYqpTKNLCdPSJLUmmkF3zZGGUdMLmsB7sJ5g6homJnzI+nuMObuP3uVTNUJZpJKJsN3lVPvoDxRSgp3mkYCDtY7M9c47Y3bfNYqklffOpmbScmoYr1+HG1NN4S1mPoxlQs+SkGOnW/L9GnZAyQeuJdl7HuDedY0kyj+3jJc9/JhAgZ6ahcDZAqZ/zw28q42HwhhSZPZZG/G9NbPRDeeAfrCnIOhacqWI8kxSw+wuKk0J3DK/GdueRr5w3nuoz1sXwII+m8w9sObsrnG3z5LVdRyI9Ng9Mkf53ZIY8Y2vtXojfeyqbbF62ZarQQ0j9hkX0Tf7bJ3GqJR/Ue1qP+FEankvVIIe94HAFWzAvQXNwVSt9ZN851MetenxlCJR5CnbWSkC8XzggvioVUZ5pqVrer5g8nsdgxNb30aapT13uMkKZXqTsOrtTbVEtTmtPp8bOJDOpnayB8GoYCtNFcqOIJ6wgXoFEdRBarWAjr9FMarbQjqRQ3r9GwEN0+meVBr3IOx7IUs76iBDpqp6ocp9PpWVENaqVHWgXtrpEMg71N/m9NzWxFPy4a4Z6WojSx7vUSknTlYR/7JX+9bncPy2wurDt9O+fdFsZ7suFUoU2WcP8NWFXovBqPx/G/gNezaZIuGaz3B6yjLnliddtNdd+gmLdvwm6npSkKakIfz8KRoFlH87LaFLJ+yGe6as9XrexRd90Zq0bO1ZPcj24Z2Uhu6I9lrQkbgUP9oNjJMIfZ6GuPTvbwg0w048i6aeGKNBlpAm9llg2qMsteowk3WMJcx0VTxPPc8NAEEtGe0cHAuka7U567WV/f1VxFCFdNr5dyaY1uGamq0J5jLFrto9QPEevrXGTxx4FdbcLtnrxW7Uo3mg+NbCgTZXcwaNZRxDptNWest7Pf8KNb3a5ETu1+yVYfEQ2FeQtdhEuqD3B/A6ayKeoazPUS6wnWH0A7uzufy3oCbzYn8wEpgq8GmWSgE/ga1lbQPpZ1xSjdJ2Dd2xGdaO/KzQg/SCtNWRCrsUzv09OFvUVPbfUcafg5reEniT5ZnJNBQziQvbiMNnkXV4nnq2qT+2JoSiRsI0M0WhmEcz17FQg37vNaUGY9wpUMjciKvKRv1Y+NMDOPkCay/Qreq1+cQALWW2TeYC6r3hhuQKrU2m4mDcgMj5A2QmPPw91R7UPNdIa+JaJs9mWv5WBExpq/NK5Ajg2uEsnmb7LumCCXglGVz/X8UypTDCZlvXElY8NfgiCEFIsivJ9nqCUosK7uA/a6gPUjKClDIHk5X2I9EyP4dLAxAcmhPeJJvCotac8NLMOVaZpPY5kPw4EH/gGa833ytp7pAsyVp6zH2q5B6nwULAhIVMz1xks2Nmz8TM56bj0b3HnWyp62g1xn6gOB5VGMVOF39jqf9TXoG30vsmhC4uGo0oCXN7pcgvyh3OBKxWlHRBwPCM/h4fDwVog1mAhFN5mgB1zwXLLnrDd2TPRbNiiJCHBQxfoaPH9EC2AF6wswRtUPzsoOtpweH/LjOSBV3MhbmXVwogB81g/AhcRrhqFRnAfMrk7qQyFtkqnhxaufTDLV5vX1AYClWDCcKSxBlCccMd1a1NNrCO34fLVRxXr4mT3PxPcqWM89HMzxi8BWMBKFCIpWZHkA6zpMMqQyRHJZd8GKhcAJt2vg14r6zkWw03zHV3p5IzpH23H886/Wz8FAiAOVxNzzy5bIJjPxUyvGI6PKb1UV620YGp2WwCrWG5A1sjgqfpux7iRvfAYbZsJ/E9A3eCdeJOOQDHmshyB10jz5FmyW411lre4mdL34MJrTcs0cSLMJl61wkdyxPm2+WP8QnjOxFh2CkxxylOYXOWfedDL7LLsE5prOj9tXsX7K5As9ouHzQCUn/LLJzA49tQ8Xx6y3Aj2bcY23M+Ia4x6l4aADNs060YWWTOu+wOrCCf6UENz2zsSZSnLc3vDs+L6/+1qJHMlMTIQiuBhkxQZ6aahgcqMsq+6Ch2Jw7YsqG74Dq80j1lw0oPBVv3wJs9MQpr4gkgSsrxq5B05ng7hz/ZK1T2gjpgA5squjaAclUaG68S4y/cKulbRVE3rJUhAR1MX3eIDSlVO2kBN/BKYd356rmOse2GU6YzpXsh7AwjAJipdAKj8zmtowL7XSrTGA9X+olBJCOU0j3lwfZMuaJV9sQakalTmYtwl82+AfNNnYnIlQ+l8pvwIi9OMXHiZTB4FNvCT2EE/bVbA+AkrYzGkl6wvwl0snbi4gXglOpwcLNt/yyC5q0e0HEv5RP8nQc1mHrxvy8QfvWyt2PhiOGKX/TEViHf5U7uW3II32R7zOeCXwT2hcoC2iIZUiG9Rct7lEonl+oFTDuyTeghDjGFWyTixSszjuh4ylvHqQLCJN3izSctYbPTKd8vM6eTb8AhwPUZQC2mLAYEXPLPKvDxXbRrSYv1LBGfTJmz0BHZqlwyhe38AWJdCnA/9gYZBAfiixAhCJpOqNrtC3KWdUyVy/eS6LTTg65kE2dtGtZr2fdaKoPDfZzEZN8sIQNLfG44hmPWySGAmG/vFYJz6ZLresOiThGIneUzfIfl7HXiLS8mc9nY62c5vZYvIy83ykE0LyOqDWxJ5wef0V1iEColAJ8Ta4MT5H0QDraP8+ZdG17Dxt+sQ+Ws06RFqL4c5T9j1anb+Cp8qLNNKsN1p5Zgd2GvFYz91NeYQMbE702eiqCqnHTF9JxRVDJlRk85wNug6QSTul+ol4kJEORBqvLb1Kd12MIKODVthEEngpuryqQtXVpNgE/sOUOBX0fzXrsEwVHfZMV6I5JUYnGDGHozsZ1qmlXT+nN/8K62S5njcUandq+koqdfQrrK9Y1gdYUZu8tvwK62DLMQsaWTg5K9KQrTLiA58LPuT9rBc6scg8DH1K/wjGF6/YjmXdOxMCjFQSf4l1soI1Lr5tw5g9xxUMyMyH0GPqrrjVEoyGV/f5hWX8Ml0Jsv+dzZ8sbhiGaPjHay7drLuIyTm4YIuUTKu76uaQWarQ+/JcH2UPsik2YlUdy3kqlvVGO1/aUwNdvq7fOdej2fd8yLXP1rSwsaKGcEDnU7lx8jZtzTFJp6tu2/O8u5sFPxcHS6KoZkIC8NIKua6+OFJWzbqGykXY1axDlAAz67oLthxbHtmGdCUuT6MC69HcIcOfpAa4rIMNr8mtOWpdZ/G8GjMl8S9UNYXNN7f6+UCieUBfOY3uqYYHd0mUJpMA6C1spXuGFpVjJpWs4yPHBqxm/T/c8D8kQIuLVxdiMa+lFxVZb4wJ7VocJ+Ox7n7c57m1chu+AqM8HMzzhCJspsS7mwgj6RKAPyEpIRQgzNqmvbIuIUwxjqlA1nWks4CR5WbwK1knSS92UYHFyyjMQbIqPpWC0CXWvSNRt+ZYkHO7M0pDfNrqyMjFSL6qGl1RmDzcJxFZhPGvRWTRo0/C+pjEY7z4Hy/deQfqo5zvzj23wTuFwTQbNxI4ZVDJegizjYnNgeZFc7p5Xlywkt1uljaOU7G5DNQOCmfGz76QRKN8Hzqxm+/wkZcD33f85lCWfZk6/kTpf+1oyRPYK0/iLwTLDDSLkM1S1PcBiym8suR1kChNUQtAEQ63HKaS9RPMxwmToIUpvS+0b0BKpN+Ltk5prkevIVVL+ruXFbEWsi8kvCnNvoD4cH2xIrzN6TmJ3y2CViukm7mJfpiFyS3rjfvFTGsbBN8R2yJbR0vg00vIC3FE1IK6JnZvadUQxuGJ1cRzoitZh7grG5E45u3grycReUUrojzXc/Ml1g2wODBznSzY3CAvYAHSo90RJyfYdiMnz5nmgrKcOrbt73+xqoKsiZJUECkypBUoHS0WoXgIg5B1F3Q8rzCiknWo/GMs0mBSbk8RJceFx/riM6/TH4MBQbNO8ni8cGTeC5CN/f2HQZ72ZtI1fdJLp7vXm6SF0Hbz184lAv1UVncAUudO19IsnqoHtRQhFefclplpiPRyb6pYn5FUHa2LLndIZamGnqPhI1/AyneCwJdo5shaJ8tgkSrZijTX7HAgbaLyqUYqnxeiYPGRKJb15VJ9xEABeSWISFIDWJF8SoO9VQdc4q0erCSJWfdgBwQnPF7Butcn1ZyUxJAaISmsgtnNZb3xZhSfY6sloThKsGMgwQzeId1/u+g9mflZQlvqu5M4uDCjphopp+hNDOxPHzxN1gVJFnrssGyq1A6gzXu+OkpQqLmS5NehgLno/TcqWV+CO8gct9u6J/hbqm/ksx7Hs1mwrJNaHn7teAJSMu/LyqzeY56Rk8rigt6AnZiK/9A5WCP16tJkwcPHyZJdDoKtUiEUvtL6+pRv5uABmls47VrCuncUTnY56ydS9MKYHWSUpe0rFoAKWA8/C4qjsAuCBEiFZc9k1zCWKfh1tuMp1d4neltbHJpl97Sm3YW6cO1BF24JDVKbPDVBkmhMqvdGlFqXB1LXzpYGymppOrDS2MXJLmV9vQd69TM1bwPSKW77ujB0BR9SwHrjuWDFFFgnO1pRk79M5klbSxbAA2fTSPQBs6dVscNGmzl9IY02wPYKfpZFAhLt1zlt9nrQI3pUYXObaL/MguySYlYxGevEjNeKW9ElrC9G+T52gx5PiBSJignheiEzKGKdWWLLrG9yzWLxHOA3LFB+BWQObDaqnWI+tcB6UuqR/W2AqnBwGcTQUPR5q+ByBlPuAT3Dquj9gFhY9MIprZvrgGirhayIiHUvPJzzveHMuQUbcObMgN8+oj3ZzXtC1qldqxzWqe2nSL0UJ0K7n28H16XO+ia90Uh3ujCnFsR7WkmSOEG6pzU9Jf4rpxZcqKKRc4cS/tNKI6Tr51wgPJiX/D8I3qBMLMaek1dLgiRrhcJNYF0dnGaAl85oNbDMfLnVGTcYHEFNUGOaL8VsJEnIeqPNnNhSOrUgL19Exny7zL/abt1wLjClM3cKWGINISuLS7tniuRkKbpSGkftpjy7R1uNvvl4Xbz3mWd0dUM5j6/D4ei6ms71vL3MIZWwN04tFkAQkO0GzADKWSch1ILln++lzsNrmmFgWvBVzEwiUDXihMiImxkUs95Y0vuKS6wv8ixNnBJRPvqj4XB42O2RRSkJ6TkqCU5TTb/By0f0aUTx8Ad+LnpE9YaHffP2oOOWfmtOjSBSsRE5jdGoMtJNj9+Km89mAPEERJuIctaJAivM0DtOI9IQo6hJMbsh3NqR30IHNyWsN27URCufS7NWaCGMxtCMx1BjNIQlPcmLA3LCEZw8tiThZPvRDesczBTxaXPJV5lae1JHMBGHBUlA1ORsHREU7gyJGc9wWMk6Mj7YhkCEQVY0ALEd5tAQGetubuLwTh4L9hXNROaAR/p6KF7q3VWyOiBMKqc7n1ZcUoutrTDm77bGwzsPWl0fZW3W5oxfkNeUS94IixJ9U9XeF5h/apf5XMVwasqqEEyG95iSzUUkJmlT64mM9UY7P3yGd95cu2ciRQxVX/EMrjffftqKLbGXnv/0hG65UC+2Xf/JWomXcbc3wZPenbQvxk+C0zAV3SlUuED0VHokK6mboYoaqnY3kmMzGMtaynp8CGlR4zwTs0MSB/PAeKRrKaWsU1Fo/omib4Yh4l13+PbWKZYU+QnPDx7Znhy+4999ItV6hTiNRpozLZhE4FHIws78DdtVuxs3IE/6BzV7O6UwePZ9pFv2J2eDDyntktaZgEFMHxWT7YkWRVbJsRg233pabPc25zBehM2joEAiiU19bYeiAIkJaN/zhwYyBJemHhlxKpggCBvafPdSzMVt/fSgP1teatdz0tsMTGbccJL+5IhKM9+yV+MnSo10fKt4KGF6LGFzeuEdLh4oRnKL9STNRs6s7DY/t+fs9CfnP/xHFp/ZI8I/mBgu3xXL0LKTORFSI9NYU24zkRl3ik+KvX9m3oFYe6BS4YAcs852cN4rlj+Z+Npnf/hSXiC8ZStFJ5C+KujAfWHpJ1HQ2GsBqMW23eLgZRaI1HcIX6koWlmSb5F5CL+IVC5piuTwn7B17R27Td2emKjZnY5HnDHMcTFMX342cwr3MD2O7+LyoNpK5bbZEjzX3aT4an3O/zzIELpu1Rh6L9fqk87j4hdf1y18V4rldNffD6rx5+OWxl2bv3YGUY2fhcw0FkbAa/wFCFtvjN6HHGfhdLjh5Rr81nbV+EbM9qZp72i7PysdZ/6OxWJnW6byla0vNf5EJIdMO3SC4C2JkWBmQ2ZSO6Xad4bhavzhSMNg6gfFp3eYGNhhY41pzLte6v8SBBnrTGhnfb0V/uz2sWb9r0KST7Wr9pYnWr/W8H8Nnucm9oW7UgDuysH2/NG/AVHjj8X60u9UV2B4y/Fb8P2NqVGjRo0aNWrUqFGjhgSt7eNRl2XvWldC/GR0HFO0wX0TCqh9s7H/b1be1fjNcAeaovP/qufoOO9xL3jRMyr3QPEaPwPuACsW9yir5ZOOrDn3oauD8H1/QqjGn4l2U59z62+TTWacP7LViPdRK+S0+Ro/Eu6Mr6tX8VYQ0Q6zr+xtrPEDcHI0ZL5X31fjr8Jy9yHe0Vjjz8f/A58flJOaxNzMAAAAAElFTkSuQmCC - # font - } - } -} diff --git a/docs/architecture/dapp-arch-v1.1.PNG b/docs/architecture/dapp-arch-v1.1.PNG deleted file mode 100644 index 90ed44335..000000000 Binary files a/docs/architecture/dapp-arch-v1.1.PNG and /dev/null differ diff --git a/docs/architecture/dapp-user-states.PNG b/docs/architecture/dapp-user-states.PNG deleted file mode 100644 index ff04ecf3c..000000000 Binary files a/docs/architecture/dapp-user-states.PNG and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/delegation-status.png b/docs/architecture/sequence-diagrams/delegation-status.png deleted file mode 100644 index 93bc3905e..000000000 Binary files a/docs/architecture/sequence-diagrams/delegation-status.png and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/delegation.png b/docs/architecture/sequence-diagrams/delegation.png deleted file mode 100644 index e6e31ac0b..000000000 Binary files a/docs/architecture/sequence-diagrams/delegation.png and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/drep-registration.png b/docs/architecture/sequence-diagrams/drep-registration.png deleted file mode 100644 index c826e3141..000000000 Binary files a/docs/architecture/sequence-diagrams/drep-registration.png and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/drep-retirement.png b/docs/architecture/sequence-diagrams/drep-retirement.png deleted file mode 100644 index bf3db2611..000000000 Binary files a/docs/architecture/sequence-diagrams/drep-retirement.png and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/drep-status.png b/docs/architecture/sequence-diagrams/drep-status.png deleted file mode 100644 index ada0d9fc3..000000000 Binary files a/docs/architecture/sequence-diagrams/drep-status.png and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/login.png b/docs/architecture/sequence-diagrams/login.png deleted file mode 100644 index 3e8489247..000000000 Binary files a/docs/architecture/sequence-diagrams/login.png and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/raw/delegation-status.txt b/docs/architecture/sequence-diagrams/raw/delegation-status.txt deleted file mode 100644 index 2d7f117de..000000000 --- a/docs/architecture/sequence-diagrams/raw/delegation-status.txt +++ /dev/null @@ -1,11 +0,0 @@ -title Is User Delegator - -participant dApp Frontend -participant Wallet -participant dApp Backend - -dApp Frontend->Wallet: ""API.getActiveStakeKeys()"" -Wallet->dApp Frontend: ""[pubStakeKey]"" - -dApp Frontend->dApp Backend: ""GET delegation/{pubStakeKey} -dApp Backend->dApp Frontend: ""delegationCert"" diff --git a/docs/architecture/sequence-diagrams/raw/delegation.txt b/docs/architecture/sequence-diagrams/raw/delegation.txt deleted file mode 100644 index 689907360..000000000 --- a/docs/architecture/sequence-diagrams/raw/delegation.txt +++ /dev/null @@ -1,13 +0,0 @@ -title Vote Delegation - -participant User -participant dApp Frontend -participant Wallet -participant Cardano Node - -User->dApp Frontend: Enter ""dRepID"" -dApp Frontend->Wallet:""API.submitDelegation(dRepID, PubStakeKey)"" -Wallet->User: Ask permission popup (Wallet UI) -User->Wallet: Access granted (Wallet UI) -Wallet->Cardano Node: Submit transaction: \n""POST /delegation/{delegation-cert} -Wallet->dApp Frontend: ""SignedDelegationCertificate"" diff --git a/docs/architecture/sequence-diagrams/raw/drep-registration.txt b/docs/architecture/sequence-diagrams/raw/drep-registration.txt deleted file mode 100644 index 5e701117f..000000000 --- a/docs/architecture/sequence-diagrams/raw/drep-registration.txt +++ /dev/null @@ -1,15 +0,0 @@ -title DRep Registration - -participant User -participant dApp Frontend -participant Wallet -participant Cardano Node - -User->dApp Frontend: 'Register as a dRep' button pressed -User->dApp Frontend: Supply metadata anchor -dApp Frontend->dApp Frontend: Construct ""DRepRegistrationCertificate"" -dApp Frontend->Wallet: Pass certificate to wallet:\n""API.submitDRepRegistration(DRepRegistrationCertificate)"" -Wallet->User: Ask permission popup (Wallet UI) -User->Wallet: Access granted (Wallet UI) -Wallet->Cardano Node: Submit transaction: \n""POST /registration/{registration-cert} -Wallet->dApp Frontend: ""SignedDRepRegistrationCertificate"" diff --git a/docs/architecture/sequence-diagrams/raw/drep-retirement.txt b/docs/architecture/sequence-diagrams/raw/drep-retirement.txt deleted file mode 100644 index 99a43a9ae..000000000 --- a/docs/architecture/sequence-diagrams/raw/drep-retirement.txt +++ /dev/null @@ -1,14 +0,0 @@ -title DRep Retirement - -participant User (dRep) -participant dApp Frontend -participant Wallet -participant Cardano Node - -User (dRep)->dApp Frontend: 'Retire' button pressed -dApp Frontend->dApp Frontend: Construct ""DRepRetirementCertificate"" -dApp Frontend->Wallet: Pass certificate to wallet:\n""API.submitDRepRetirementCertificate(DRepRetirementCertificate)"" -Wallet->User (dRep): Ask permission popup (Wallet UI) -User (dRep)->Wallet: Access granted (Wallet UI) -Wallet->Cardano Node: Submit transaction: \n""POST /retirement/{retirement-cert} -Wallet->dApp Frontend: ""SignedDRepRetirementCertificate"" diff --git a/docs/architecture/sequence-diagrams/raw/drep-status.txt b/docs/architecture/sequence-diagrams/raw/drep-status.txt deleted file mode 100644 index e668837c8..000000000 --- a/docs/architecture/sequence-diagrams/raw/drep-status.txt +++ /dev/null @@ -1,11 +0,0 @@ -title Is User DRep - -participant dApp Frontend -participant Wallet -participant dApp Backend - -dApp Frontend->Wallet: ""API.getDRepKey()"" -Wallet->dApp Frontend: ""pubDRepKey"" - -dApp Frontend->dApp Backend: ""GET drep/{pubDRepKey} -dApp Backend->dApp Frontend: ""bool"" diff --git a/docs/architecture/sequence-diagrams/raw/login.txt b/docs/architecture/sequence-diagrams/raw/login.txt deleted file mode 100644 index 4a772d98a..000000000 --- a/docs/architecture/sequence-diagrams/raw/login.txt +++ /dev/null @@ -1,36 +0,0 @@ -title User Login - -participant User -participant dApp Frontend -participant Wallet -participant dApp Backend - -note over dApp Frontend: Connect Wallet - -User->dApp Frontend: 'Connect Wallet' Button pressed -dApp Frontend->User: Wallet Selection prompt -User->dApp Frontend: Wallet Selected ""walletName -dApp Frontend->Wallet: ""cardano.{walletName}.enable({"cip": ?}) -Wallet->User: Ask permission popup (Wallet UI) -User->Wallet: Access granted (Wallet UI) -Wallet->dApp Frontend: ""API"" object - -note over dApp Frontend: Identify the user's stake key delegator status -dApp Frontend->Wallet: ""API.getActiveStakeKeys()"" -Wallet->dApp Frontend: ""[pubStakeKey]"" - -dApp Frontend->User: Select ""pubStakeKey"" to use -User->dApp Frontend: Choose which stake key to engage with - -dApp Frontend->dApp Backend: ""GET delegation/{pubStakeKey} -dApp Backend->dApp Frontend: ""delegationCert"" - -note over dApp Frontend: Identify the user's DRep status - -dApp Frontend->Wallet: ""API.getDRepKey()"" -Wallet->dApp Frontend: ""pubDRepKey"" - -dApp Frontend->dApp Backend: ""GET drep/{pubDRepKey} -dApp Backend->dApp Frontend: ""DRepCert"" - -dApp Frontend->User: Serve correct UI diff --git a/docs/architecture/sequence-diagrams/raw/voting.txt b/docs/architecture/sequence-diagrams/raw/voting.txt deleted file mode 100644 index 1767720c7..000000000 --- a/docs/architecture/sequence-diagrams/raw/voting.txt +++ /dev/null @@ -1,16 +0,0 @@ -title DRep Voting - -participant User (dRep) -participant dApp Frontend -participant Wallet -participant Cardano Node - -User (dRep)->dApp Frontend: Select Governance Action + choice -User (dRep)->dApp Frontend: Supply metadata anchor - -dApp Frontend->dApp Frontend: Construct ""Vote"" -dApp Frontend->Wallet: Pass object to wallet:\n""API.submitVote(Vote)"" -Wallet->User (dRep): Ask permission popup (Wallet UI) -User (dRep)->Wallet: Access granted (Wallet UI) -Wallet->Cardano Node: Submit transaction: \n""POST /vote/{vote} -Wallet->dApp Frontend: ""SignedVote"" diff --git a/docs/architecture/sequence-diagrams/raw/wallet-connect.txt b/docs/architecture/sequence-diagrams/raw/wallet-connect.txt deleted file mode 100644 index 6348fbce9..000000000 --- a/docs/architecture/sequence-diagrams/raw/wallet-connect.txt +++ /dev/null @@ -1,13 +0,0 @@ -title Wallet Connection - -participant User -participant dApp Frontend -participant Wallet - -User->dApp Frontend: 'Connect Wallet' Button pressed -dApp Frontend->User: Wallet Selection prompt -User->dApp Frontend: Wallet Selected ""walletName -dApp Frontend->Wallet: ""cardano.{walletName}.enable({"cip": ?}) -Wallet->User: Ask permission popup (Wallet UI) -User->Wallet: Access granted (Wallet UI) -Wallet->dApp Frontend: ""API"" object diff --git a/docs/architecture/sequence-diagrams/voting.png b/docs/architecture/sequence-diagrams/voting.png deleted file mode 100644 index fda17428b..000000000 Binary files a/docs/architecture/sequence-diagrams/voting.png and /dev/null differ diff --git a/docs/architecture/sequence-diagrams/wallet-connect.png b/docs/architecture/sequence-diagrams/wallet-connect.png deleted file mode 100644 index 4f849f7cf..000000000 Binary files a/docs/architecture/sequence-diagrams/wallet-connect.png and /dev/null differ diff --git a/flake.nix b/flake.nix index e732205ec..1e8abffbf 100644 --- a/flake.nix +++ b/flake.nix @@ -10,13 +10,27 @@ let defaultPkgs = import default_nixpkgs { inherit system; config.allowBroken = true; }; nodePkgs = import node_nixpkgs { inherit system; }; + frontend = nodePkgs.callPackage ./govtool/frontend { pkgs = nodePkgs; }; in { packages.scripts = defaultPkgs.callPackage ./scripts/govtool { pkgs = defaultPkgs; }; packages.infra = defaultPkgs.callPackage ./infra/terraform { pkgs = defaultPkgs; }; packages.backend = defaultPkgs.callPackage ./govtool/backend { pkgs = defaultPkgs; }; - packages.frontend = nodePkgs.callPackage ./govtool/frontend { pkgs = nodePkgs; }; + packages.frontendModules = frontend.nodeModules; + packages.frontend = frontend.staticSite; - devShell = defaultPkgs.mkShell { buildInputs = [ defaultPkgs.pre-commit ]; }; + # Example of how to change VITE variables + #packages.frontendOverride = frontend.staticSite.overrideAttrs (finalAttrs: prevAttrs: { + # VITE_BASE_URL = "https://example.com:8443"; + #}); + + devShells = { + default = defaultPkgs.mkShell { buildInputs = [ defaultPkgs.pre-commit ]; }; + frontend = frontend.devShell; + # shell with js dependencies only if yarn.lock is broken and needs fixed + js = defaultPkgs.mkShell { + buildInputs = [ nodePkgs.nodejs_18 nodePkgs.yarn ]; + }; + }; }); } diff --git a/generate_latest_report_redirect.sh b/generate_latest_report_redirect.sh new file mode 100644 index 000000000..de2ad8646 --- /dev/null +++ b/generate_latest_report_redirect.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +REPORT_NUMBER="$1" + +mkdir -p build +cp -r allure-history/*[^index.html] build/ +allure_report_path=$(basename "$GH_PAGES") + +cat < build/index.html + + + + + + Redirecting... + + +EOF diff --git a/generate_report_details.sh b/generate_report_details.sh new file mode 100644 index 000000000..f9e4416b7 --- /dev/null +++ b/generate_report_details.sh @@ -0,0 +1,11 @@ +#!/bin/bash + +if [[ ! -d "gh-pages/$REPORT_NAME" ]]; then + latest_number=0 +else + gh_pages_content=$(ls "gh-pages/$REPORT_NAME/") + latest_number=$(echo "$gh_pages_content" | grep -Eo '[0-9]+' | sort -nr | head -n 1) +fi + +echo "::set-output name=report_number::$((latest_number+1))" +echo "::set-output name=report_url::https://$(dirname "$GH_PAGES").github.io/$(basename "$GH_PAGES")/$REPORT_NAME" diff --git a/govtool/backend/sql/get-current-delegation.sql b/govtool/backend/sql/get-current-delegation.sql index 68e9dce31..e4a92d392 100644 --- a/govtool/backend/sql/get-current-delegation.sql +++ b/govtool/backend/sql/get-current-delegation.sql @@ -1,9 +1,12 @@ select case - when drep_hash.raw is NULL then drep_hash.view + when drep_hash.raw is NULL then NULL else encode(drep_hash.raw,'hex') - end + end as drep_raw, + drep_hash.view as drep_view, + encode(tx.hash, 'hex') from delegation_vote +join tx on tx.id = delegation_vote.tx_id join drep_hash on drep_hash.id = delegation_vote.drep_hash_id join stake_address diff --git a/govtool/backend/sql/get-drep-info.sql b/govtool/backend/sql/get-drep-info.sql index 899969be7..2e8ee08f2 100644 --- a/govtool/backend/sql/get-drep-info.sql +++ b/govtool/backend/sql/get-drep-info.sql @@ -2,11 +2,27 @@ WITH DRepId AS ( SELECT decode(?, 'hex') AS raw ), +AllRegistrationEntries AS ( + SELECT + drep_registration.voting_anchor_id AS voting_anchor_id, + drep_registration.deposit AS deposit, + tx.hash AS tx_hash, + tx.id as tx_id + FROM + drep_registration + CROSS JOIN DRepId + JOIN drep_hash ON drep_hash.id = drep_registration.drep_hash_id + JOIN tx ON tx.id = drep_registration.tx_id + + WHERE + drep_hash.raw = DRepId.raw + ORDER BY drep_registration.tx_id asc +), LatestRegistrationEntry AS ( SELECT drep_registration.voting_anchor_id AS voting_anchor_id, drep_registration.deposit AS deposit, - tx.hash as tx_hash + tx.hash AS tx_hash FROM drep_registration CROSS JOIN DrepId @@ -20,14 +36,16 @@ LatestRegistrationEntry AS ( ), IsRegisteredAsDRep AS ( SELECT - (LatestRegistrationEntry.deposit is null or LatestRegistrationEntry.deposit > 0) + (LatestRegistrationEntry.deposit IS NULL + OR LatestRegistrationEntry.deposit > 0) AND LatestRegistrationEntry.voting_anchor_id IS NOT NULL AS value FROM LatestRegistrationEntry ), IsRegisteredAsSoleVoter AS ( SELECT - (LatestRegistrationEntry.deposit is null or LatestRegistrationEntry.deposit > 0) + (LatestRegistrationEntry.deposit IS NULL + OR LatestRegistrationEntry.deposit > 0) AND LatestRegistrationEntry.voting_anchor_id IS NULL AS value FROM LatestRegistrationEntry @@ -37,13 +55,11 @@ CurrentDeposit AS ( GREATEST(drep_registration.deposit, 0) AS value FROM drep_registration - join drep_hash - on drep_hash.id = drep_registration.drep_hash_id - cross join DRepId - + JOIN drep_hash ON drep_hash.id = drep_registration.drep_hash_id + CROSS JOIN DRepId WHERE drep_registration.deposit IS NOT NULL - and drep_hash.raw = DRepId.raw + AND drep_hash.raw = DRepId.raw ORDER BY drep_registration.tx_id DESC LIMIT 1 @@ -73,20 +89,79 @@ WasRegisteredAsSoleVoter AS ( WHERE drep_hash.raw = DRepId.raw AND drep_registration.voting_anchor_id IS NULL)) AS value -), CurrentMetadata AS ( - SELECT voting_anchor.url as url, encode(voting_anchor.data_hash, 'hex') as data_hash - FROM LatestRegistrationEntry - LEFT JOIN voting_anchor - ON voting_anchor.id = LatestRegistrationEntry.voting_anchor_id +), +CurrentMetadata AS ( + SELECT + voting_anchor.url AS url, + encode(voting_anchor.data_hash, 'hex') AS data_hash +FROM + LatestRegistrationEntry + LEFT JOIN voting_anchor ON voting_anchor.id = LatestRegistrationEntry.voting_anchor_id +LIMIT 1 +), +CurrentVotingPower AS ( + SELECT + amount AS amount + FROM + drep_hash + JOIN DRepId ON drep_hash.raw = DRepId.raw + LEFT JOIN drep_distr ON drep_distr.hash_id = drep_hash.id + ORDER BY + drep_distr.epoch_no DESC LIMIT 1 -), CurrentVotingPower AS ( - SELECT amount as amount - FROM drep_hash - JOIN DRepId - ON drep_hash.raw = DRepId.raw - LEFT JOIN drep_distr - ON drep_distr.hash_id = drep_hash.id - ORDER BY drep_distr.epoch_no DESC +), +DRepRegister AS ( + SELECT + encode(AllRegistrationEntries.tx_hash, 'hex') as tx_hash, + AllRegistrationEntries.tx_id + FROM + (SELECT 1) AS dummy + LEFT JOIN + AllRegistrationEntries ON AllRegistrationEntries.voting_anchor_id IS NOT NULL and not (coalesce(deposit,0) < 0) + ORDER BY + AllRegistrationEntries.tx_id DESC + LIMIT 1 +), +DRepRetire AS ( + SELECT + encode(AllRegistrationEntries.tx_hash, 'hex') as tx_hash, + AllRegistrationEntries.tx_id as tx_id + FROM + DRepRegister + LEFT JOIN + AllRegistrationEntries ON (AllRegistrationEntries.deposit < 0 + OR AllRegistrationEntries.voting_anchor_id IS NULL) + and AllRegistrationEntries.tx_id > DRepRegister.tx_id + ORDER BY + AllRegistrationEntries.tx_id asc + + LIMIT 1 +), + +SoleVoterRegister AS ( + SELECT + encode(AllRegistrationEntries.tx_hash, 'hex') as tx_hash, + AllRegistrationEntries.tx_id + FROM + (SELECT 1) AS dummy + LEFT JOIN + AllRegistrationEntries ON AllRegistrationEntries.voting_anchor_id IS NULL and not (coalesce(deposit,0) < 0) + ORDER BY + AllRegistrationEntries.tx_id DESC + LIMIT 1 +), +SoleVoterRetire AS ( + SELECT + encode(AllRegistrationEntries.tx_hash, 'hex') as tx_hash + FROM + SoleVoterRegister + LEFT JOIN + AllRegistrationEntries ON (AllRegistrationEntries.deposit < 0 + OR AllRegistrationEntries.voting_anchor_id IS NOT NULL) + AND AllRegistrationEntries.tx_id > SoleVoterRegister.tx_id + ORDER BY + AllRegistrationEntries.tx_id asc + LIMIT 1 ) SELECT @@ -98,7 +173,10 @@ SELECT CurrentMetadata.url, CurrentMetadata.data_hash, CurrentVotingPower.amount, - encode(LatestRegistrationEntry.tx_hash, 'hex') as tx_hash + DRepRegister.tx_hash, + DRepRetire.tx_hash, + SoleVoterRegister.tx_hash, + SoleVoterRetire.tx_hash FROM IsRegisteredAsDRep CROSS JOIN IsRegisteredAsSoleVoter @@ -107,4 +185,7 @@ FROM CROSS JOIN CurrentDeposit CROSS JOIN CurrentMetadata CROSS JOIN CurrentVotingPower - CROSS JOIN LatestRegistrationEntry + CROSS JOIN DRepRegister + CROSS JOIN DRepRetire + CROSS JOIN SoleVoterRegister + CROSS JOIN SoleVoterRetire diff --git a/govtool/backend/sql/list-dreps.sql b/govtool/backend/sql/list-dreps.sql index bb2f8fd08..6a7351ec9 100644 --- a/govtool/backend/sql/list-dreps.sql +++ b/govtool/backend/sql/list-dreps.sql @@ -1,71 +1,105 @@ WITH DRepDistr AS ( SELECT *, - ROW_NUMBER() OVER(PARTITION BY drep_hash.id ORDER BY drep_distr.epoch_no DESC) AS rn - FROM drep_distr - JOIN drep_hash - on drep_hash.id = drep_distr.hash_id -), DRepActivity AS ( - select - drep_activity as drep_activity, - epoch_no as epoch_no - from epoch_param - where epoch_no is not null - order by epoch_no desc - limit 1 + ROW_NUMBER() OVER (PARTITION BY drep_hash.id ORDER BY drep_distr.epoch_no DESC) AS rn + FROM + drep_distr + JOIN drep_hash ON drep_hash.id = drep_distr.hash_id +), +DRepActivity AS ( + SELECT + drep_activity AS drep_activity, + epoch_no AS epoch_no + FROM + epoch_param + WHERE + epoch_no IS NOT NULL + ORDER BY + epoch_no DESC + LIMIT 1 ) - SELECT - encode(dh.raw, 'hex'), - dh.view, - va.url, - encode(va.data_hash, 'hex'), - dr_deposit.deposit, - DRepDistr.amount, - (DRepActivity.epoch_no - Max(coalesce(block.epoch_no,block_first_register.epoch_no))) <= DRepActivity.drep_activity as active, - second_to_newest_drep_registration.voting_anchor_id is not null as has_voting_anchor, - encode(dr_voting_anchor.tx_hash, 'hex') as tx_hash -FROM drep_hash dh -JOIN ( - SELECT dr.id, dr.drep_hash_id, dr.deposit, - ROW_NUMBER() OVER(PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn - FROM drep_registration dr - where dr.deposit is not null -) as dr_deposit -on dr_deposit.drep_hash_id = dh.id and dr_deposit.rn = 1 -LEFT JOIN ( - SELECT dr.id, dr.drep_hash_id, dr.voting_anchor_id, - ROW_NUMBER() OVER(PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn, - tx.hash as tx_hash - FROM drep_registration dr - JOIN tx on tx.id = dr.tx_id -) as dr_voting_anchor -on dr_voting_anchor.drep_hash_id = dh.id and dr_voting_anchor.rn = 1 -LEFT JOIN ( - SELECT dr.id, dr.drep_hash_id, dr.voting_anchor_id, - ROW_NUMBER() OVER(PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn - FROM drep_registration dr -) as second_to_newest_drep_registration -on second_to_newest_drep_registration.drep_hash_id = dh.id and second_to_newest_drep_registration.rn = 2 -LEFT JOIN DRepDistr -on DRepDistr.hash_id = dh.id and DRepDistr.rn = 1 -LEFT JOIN voting_anchor va ON va.id = dr_voting_anchor.voting_anchor_id -CROSS JOIN DRepActivity -LEFT JOIN voting_procedure as voting_procedure -on voting_procedure.drep_voter = dh.id -LEFT JOIN tx as tx -on tx.id = voting_procedure.tx_id -LEFT JOIN block as block -on block.id = tx.block_id -JOIN ( - SELECT dr.tx_id, dr.drep_hash_id, - ROW_NUMBER() OVER(PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id ASC) AS rn - FROM drep_registration dr -) as dr_first_register -on dr_first_register.drep_hash_id = dh.id and dr_first_register.rn = 1 -JOIN tx as tx_first_register -on tx_first_register.id = dr_first_register.tx_id -JOIN block as block_first_register -ON block_first_register.id = tx_first_register.block_id - -GROUP BY dh.raw, second_to_newest_drep_registration.voting_anchor_id, dh.view, va.url, va.data_hash, dr_deposit.deposit, DRepDistr.amount, DRepActivity.epoch_no, DRepActivity.drep_activity, dr_voting_anchor.tx_hash + encode(dh.raw, 'hex'), + dh.view, + va.url, + encode(va.data_hash, 'hex'), + dr_deposit.deposit, + DRepDistr.amount, +(DRepActivity.epoch_no - Max(coalesce(block.epoch_no, block_first_register.epoch_no))) <= DRepActivity.drep_activity AS active, + second_to_newest_drep_registration.voting_anchor_id IS NOT NULL AS has_voting_anchor, + encode(dr_voting_anchor.tx_hash, 'hex') AS tx_hash, + newestRegister.time AS last_register_time +FROM + drep_hash dh + JOIN ( + SELECT + dr.id, + dr.drep_hash_id, + dr.deposit, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn + FROM + drep_registration dr + WHERE + dr.deposit IS NOT NULL) AS dr_deposit ON dr_deposit.drep_hash_id = dh.id + AND dr_deposit.rn = 1 + LEFT JOIN ( + SELECT + dr.id, + dr.drep_hash_id, + dr.voting_anchor_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn, + tx.hash AS tx_hash + FROM + drep_registration dr + JOIN tx ON tx.id = dr.tx_id) AS dr_voting_anchor ON dr_voting_anchor.drep_hash_id = dh.id + AND dr_voting_anchor.rn = 1 + LEFT JOIN ( + SELECT + dr.id, + dr.drep_hash_id, + dr.voting_anchor_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn + FROM + drep_registration dr) AS second_to_newest_drep_registration ON second_to_newest_drep_registration.drep_hash_id = dh.id + AND second_to_newest_drep_registration.rn = 2 + LEFT JOIN DRepDistr ON DRepDistr.hash_id = dh.id + AND DRepDistr.rn = 1 + LEFT JOIN voting_anchor va ON va.id = dr_voting_anchor.voting_anchor_id + CROSS JOIN DRepActivity + LEFT JOIN voting_procedure AS voting_procedure ON voting_procedure.drep_voter = dh.id + LEFT JOIN tx AS tx ON tx.id = voting_procedure.tx_id + LEFT JOIN block AS block ON block.id = tx.block_id + JOIN ( + SELECT + block.time, + dr.drep_hash_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn + FROM + drep_registration dr + JOIN tx ON tx.id = dr.tx_id + JOIN block ON block.id = tx.block_id + WHERE + NOT (dr.deposit > 0)) AS newestRegister ON newestRegister.drep_hash_id = dh.id + AND newestRegister.rn = 1 + JOIN ( + SELECT + dr.tx_id, + dr.drep_hash_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id ASC) AS rn + FROM + drep_registration dr) AS dr_first_register ON dr_first_register.drep_hash_id = dh.id + AND dr_first_register.rn = 1 + JOIN tx AS tx_first_register ON tx_first_register.id = dr_first_register.tx_id + JOIN block AS block_first_register ON block_first_register.id = tx_first_register.block_id +GROUP BY + dh.raw, + second_to_newest_drep_registration.voting_anchor_id, + dh.view, + va.url, + va.data_hash, + dr_deposit.deposit, + DRepDistr.amount, + DRepActivity.epoch_no, + DRepActivity.drep_activity, + dr_voting_anchor.tx_hash, + newestRegister.time diff --git a/govtool/backend/sql/views.sql b/govtool/backend/sql/views.sql new file mode 100644 index 000000000..81b5aae4a --- /dev/null +++ b/govtool/backend/sql/views.sql @@ -0,0 +1,524 @@ +BEGIN; +REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA public FROM govtool_viewer; +REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public FROM govtool_viewer; +REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public FROM govtool_viewer; +REVOKE ALL PRIVILEGES ON SCHEMA public FROM govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM govtool_viewer; +REVOKE USAGE ON SCHEMA public FROM govtool_viewer; +REVOKE ALL PRIVILEGES ON ALL TABLES IN SCHEMA govtool FROM govtool_viewer; +REVOKE ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA govtool FROM govtool_viewer; +REVOKE ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA govtool FROM govtool_viewer; +REVOKE ALL PRIVILEGES ON SCHEMA govtool FROM govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA govtool REVOKE ALL ON SEQUENCES FROM govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA govtool REVOKE ALL ON TABLES FROM govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA govtool REVOKE ALL ON FUNCTIONS FROM govtool_viewer; +REVOKE USAGE ON SCHEMA govtool FROM govtool_viewer; +REASSIGN OWNED BY govtool_viewer TO jankun; +REVOKE govtool_viewer FROM jankun; +DROP USER govtool_viewer; +DROP SCHEMA govtool CASCADE; +CREATE ROLE govtool_viewer NOLOGIN; +CREATE SCHEMA govtool; +GRANT USAGE ON SCHEMA govtool TO govtool_viewer; +GRANT govtool_viewer TO jankun; +GRANT SELECT ON ALL TABLES IN SCHEMA public TO govtool_viewer; +GRANT SELECT ON ALL TABLES IN SCHEMA govtool TO govtool_viewer; +GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA govtool TO govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT +SELECT + ON TABLES TO govtool_viewer; +ALTER DEFAULT PRIVILEGES IN SCHEMA govtool GRANT +SELECT + ON TABLES TO govtool_viewer; +SET search_path TO govtool, public; +DROP VIEW IF EXISTS proposal_stake_key; +CREATE VIEW proposal_stake_key AS +SELECT + encode(stake_address.hash_raw, 'hex') AS stake_key_hash, + voting_procedure.vote::text AS vote, + gov_action_proposal.id AS proposal_id +FROM + gov_action_proposal + JOIN voting_procedure ON voting_procedure.gov_action_proposal_id = gov_action_proposal.id + JOIN delegation_vote ON delegation_vote.drep_hash_id = voting_procedure.drep_voter + JOIN stake_address ON stake_address.id = delegation_vote.addr_id +UNION ALL +SELECT + encode(stake_address.hash_raw, 'hex'), + 'No', + NULL +FROM + delegation_vote + JOIN drep_hash ON drep_hash.id = delegation_vote.id + JOIN stake_address ON stake_address.id = delegation_vote.addr_id +WHERE + drep_hash.view = 'AlwaysNoConfidence' +UNION ALL +SELECT + encode(stake_address.hash_raw, 'hex'), + 'Abstain', + NULL +FROM + delegation_vote + JOIN drep_hash ON drep_hash.id = delegation_vote.id + JOIN stake_address ON stake_address.id = delegation_vote.addr_id +WHERE + drep_hash.view = 'AlwaysAbstain'; +DROP VIEW IF EXISTS current_delegation; +CREATE VIEW current_delegation AS +SELECT + stake_address.hash_raw AS stake_key_hash, + encode(drep_hash.raw, 'hex') AS drep_raw, + drep_hash.view AS drep_view, + encode(tx.hash, 'hex') AS tx_hash +FROM + delegation_vote + JOIN tx ON tx.id = delegation_vote.tx_id + JOIN drep_hash ON drep_hash.id = delegation_vote.drep_hash_id + JOIN stake_address ON stake_address.id = delegation_vote.addr_id + AND NOT EXISTS ( + SELECT + * + FROM + delegation_vote AS dv2 + WHERE + dv2.addr_id = delegation_vote.addr_id + AND dv2.tx_id > delegation_vote.tx_id); +DROP VIEW IF EXISTS current_epoch_params; +CREATE VIEW current_epoch_params AS +SELECT + ROW_TO_JSON(epoch_param) +FROM + epoch_param +ORDER BY + epoch_no DESC +LIMIT 1; +DROP VIEW IF EXISTS network_metrics; +CREATE VIEW network_metrics AS +WITH current_epoch AS ( + SELECT + Max(NO) AS no + FROM + epoch +), +current_block AS ( + SELECT + Max(block_no) AS block_no + FROM + block +), +unique_delegators AS ( + SELECT + count(DISTINCT (addr_id)) AS count + FROM + delegation_vote +), +total_delegations AS ( + SELECT + count(*) AS count + FROM + delegation_vote +), +total_gov_action_proposals AS ( + SELECT + count(DISTINCT (tx_id, INDEX)) AS count + FROM + gov_action_proposal +), +total_drep_votes AS ( + SELECT + count(*) AS count + FROM + voting_procedure + WHERE + voter_role = 'DRep' +), +total_registered_dreps AS ( + SELECT + count(*) AS count + FROM + drep_hash +), +always_abstain_voting_power AS ( + SELECT + coalesce(( + SELECT + amount + FROM drep_hash + LEFT JOIN drep_distr ON drep_hash.id = drep_distr.hash_id + WHERE + drep_hash.view = 'drep_always_abstain' ORDER BY epoch_no DESC LIMIT 1), 0) AS amount +), +always_no_confidence_voting_power AS ( + SELECT + coalesce(( + SELECT + amount + FROM drep_hash + LEFT JOIN drep_distr ON drep_hash.id = drep_distr.hash_id + WHERE + drep_hash.view = 'drep_always_no_confidence' ORDER BY epoch_no DESC LIMIT 1), 0) AS amount +) +SELECT + current_epoch.no AS current_epoch_no, + current_block.block_no AS current_block_no, + unique_delegators.count AS unique_delegators_count, + total_delegations.count AS total_delegators_count, + total_gov_action_proposals.count AS total_gov_action_proposals_count, + total_drep_votes.count AS total_drep_votes_count, + total_registered_dreps.count AS total_registered_dreps_count, + always_abstain_voting_power.amount AS always_abstain_voting_power_amount, + always_no_confidence_voting_power.amount AS always_no_confidence_voting_power_amount +FROM + current_epoch + CROSS JOIN current_block + CROSS JOIN unique_delegators + CROSS JOIN total_delegations + CROSS JOIN total_gov_action_proposals + CROSS JOIN total_drep_votes + CROSS JOIN total_registered_dreps + CROSS JOIN always_abstain_voting_power + CROSS JOIN always_no_confidence_voting_power; +DROP VIEW IF EXISTS stake_key_voting_power; +CREATE VIEW stake_key_voting_power AS +SELECT + coalesce(sum(utxo_view.value), 0) AS voting_power, + encode(stake_address.hash_raw, 'hex') AS stake_key_hash +FROM + stake_address + JOIN utxo_view ON utxo_view.stake_address_id = stake_address.id +GROUP BY + stake_address.hash_raw; +DROP VIEW IF EXISTS vote; +CREATE VIEW vote AS SELECT DISTINCT ON (voting_procedure.gov_action_proposal_id, voting_procedure.drep_voter) + voting_procedure.drep_voter AS drep_id, + voting_procedure.gov_action_proposal_id AS proposal_id, + concat(encode(gov_action_tx.hash, 'hex'), '#', gov_action_proposal.index) AS proposal_ref, + encode(drep_hash.raw, 'hex') AS drep_hash, + voting_procedure.vote::text AS vote, + voting_anchor.url AS url, + encode(voting_anchor.data_hash, 'hex') AS vote_metadata_hash, + block.epoch_no AS epoch_no, + block.time AS time, + encode(vote_tx.hash, 'hex') AS vote_tx_hash +FROM + voting_procedure + JOIN gov_action_proposal ON gov_action_proposal.id = voting_procedure.gov_action_proposal_id + JOIN drep_hash ON drep_hash.id = voting_procedure.drep_voter + LEFT JOIN voting_anchor ON voting_anchor.id = voting_procedure.voting_anchor_id + JOIN tx AS vote_tx ON vote_tx.id = voting_procedure.tx_id + JOIN tx AS gov_action_tx ON gov_action_tx.id = gov_action_proposal.tx_id + JOIN block ON block.id = gov_action_tx.id +ORDER BY + voting_procedure.gov_action_proposal_id, + voting_procedure.drep_voter, + voting_procedure.id DESC; +DROP VIEW IF EXISTS drep_voting_power; +CREATE VIEW drep_voting_power AS +WITH LatestDrepDistr AS ( + SELECT + hash_id, + MAX(epoch_no) AS max_epoch_no + FROM + drep_distr + GROUP BY + hash_id +) +SELECT + COALESCE(dd.amount, 0) AS amount, + ENCODE(dh.raw, 'hex') AS drep_hash, + dh.view AS drep_view +FROM + drep_hash dh + LEFT JOIN LatestDrepDistr ldd ON dh.id = ldd.hash_id + LEFT JOIN drep_distr dd ON ldd.max_epoch_no = dd.epoch_no + AND dh.id = dd.hash_id; +DROP VIEW IF EXISTS drep; +CREATE VIEW drep AS +WITH DRepDistr AS ( + SELECT + *, + ROW_NUMBER() OVER (PARTITION BY drep_hash.id ORDER BY drep_distr.epoch_no DESC) AS rn + FROM + drep_distr + JOIN drep_hash ON drep_hash.id = drep_distr.hash_id +), +DRepActivity AS ( + SELECT + drep_activity AS drep_activity, + epoch_no AS epoch_no + FROM + epoch_param + WHERE + epoch_no IS NOT NULL + ORDER BY + epoch_no DESC + LIMIT 1 +) +SELECT DISTINCT ON (dh.raw) + dh.id AS id, + encode(dh.raw, 'hex') AS drep_hash, + dh.view AS drep_view, + latest_voting_anchor.url AS url, + encode(latest_voting_anchor.data_hash, 'hex') AS drep_metadata_hash, + dr_deposit.deposit AS deposit, + DRepDistr.amount AS drep_voting_power, + encode(latest_drep_registration.tx_hash, 'hex') AS latest_tx_hash, + drep_registration.id IS NOT NULL AS was_registered_as_drep, + solevoter_registration.id IS NOT NULL AS was_registered_as_solevoter, +( + CASE WHEN latest_drep_registration.deposit >= 0 + AND latest_drep_registration.voting_anchor_id IS NOT NULL THEN + 'DRep' + WHEN latest_drep_registration.deposit >= 0 + AND latest_drep_registration.voting_anchor_id IS NULL THEN + 'SoleVoter' + WHEN latest_drep_registration.deposit < 0 + AND second_to_newest_drep_registration.voting_anchor_id IS NOT NULL THEN + 'DRep' + WHEN latest_drep_registration.deposit < 0 + AND second_to_newest_drep_registration.voting_anchor_id IS NULL THEN + 'SoleVoter' + ELSE + 'DRep' + END) AS drep_type, +( + CASE WHEN dr_deposit.deposit < 0 THEN + 'Retired' + WHEN ((DRepActivity.epoch_no - greatest(latest_vote_block.epoch_no, block_first_register.epoch_no)) <= DRepActivity.drep_activity) + AND dr_deposit.deposit >= 0 THEN + 'Active' + WHEN NOT ((DRepActivity.epoch_no - greatest(latest_vote_block.epoch_no, block_first_register.epoch_no)) <= DRepActivity.drep_activity) + AND dr_deposit.deposit >= 0 THEN + 'Inactive' + ELSE + 'Unknown' + END) AS status, + newestRegister.time as time +FROM + drep_hash dh + JOIN ( + SELECT + dr.id, + dr.drep_hash_id, + dr.deposit, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn + FROM + drep_registration dr + WHERE + dr.deposit IS NOT NULL) AS dr_deposit ON dr_deposit.drep_hash_id = dh.id + AND dr_deposit.rn = 1 + LEFT JOIN ( + SELECT + dr.id, + dr.drep_hash_id, + dr.voting_anchor_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn + FROM + drep_registration dr + WHERE + dr.voting_anchor_id IS NOT NULL) AS latest_voting_anchor_registration ON latest_voting_anchor_registration.drep_hash_id = dh.id + AND latest_voting_anchor_registration.rn = 1 + LEFT JOIN voting_anchor AS latest_voting_anchor ON latest_voting_anchor.id = latest_voting_anchor_registration.voting_anchor_id + LEFT JOIN ( + SELECT + dr.id, + dr.drep_hash_id, + dr.voting_anchor_id, + dr.deposit, + tx.hash AS tx_hash, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn + FROM + drep_registration dr + JOIN tx ON dr.tx_id = tx.id) AS latest_drep_registration ON latest_drep_registration.drep_hash_id = dh.id + AND latest_drep_registration.rn = 1 + LEFT JOIN ( + SELECT + dr.id, + dr.drep_hash_id, + dr.voting_anchor_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id DESC) AS rn + FROM + drep_registration dr) AS second_to_newest_drep_registration ON second_to_newest_drep_registration.drep_hash_id = dh.id + AND second_to_newest_drep_registration.rn = 2 + LEFT JOIN DRepDistr ON DRepDistr.hash_id = dh.id + AND DRepDistr.rn = 1 + CROSS JOIN DRepActivity + LEFT JOIN ( + SELECT + voting_procedure.tx_id, + drep_hash.id AS drep_hash_id, + ROW_NUMBER() OVER (PARTITION BY drep_hash.id ORDER BY voting_procedure.tx_id DESC) AS rn + FROM + drep_hash + JOIN voting_procedure ON voting_procedure.drep_voter = drep_hash.id) AS dr_latest_vote ON dr_latest_vote.drep_hash_id = dh.id + AND dr_latest_vote.rn = 1 + LEFT JOIN tx AS tx ON tx.id = dr_latest_vote.tx_id + LEFT JOIN block AS latest_vote_block ON latest_vote_block.id = tx.block_id + JOIN ( + SELECT + block.time, + dr.drep_hash_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY d.tx_id DESC) AS rn + FROM + drep_registration dr + JOIN tx ON tx.id = dr.tx_id + JOIN block ON block.id = tx.block_id + WHERE + NOT (dr.deposit > 0)) AS newestRegister ON newestRegister.drep_hash_id = dh.id + AND newestRegister.rn = 1 + JOIN ( + SELECT + dr.tx_id, + dr.drep_hash_id, + ROW_NUMBER() OVER (PARTITION BY dr.drep_hash_id ORDER BY dr.tx_id ASC) AS rn + FROM + drep_registration dr) AS dr_first_register ON dr_first_register.drep_hash_id = dh.id + AND dr_first_register.rn = 1 + JOIN tx AS tx_first_register ON tx_first_register.id = dr_first_register.tx_id + JOIN block AS block_first_register ON block_first_register.id = tx_first_register.block_id + LEFT JOIN drep_registration AS drep_registration ON drep_registration.drep_hash_id = dh.id + AND drep_registration.voting_anchor_id IS NOT NULL + LEFT JOIN drep_registration AS solevoter_registration ON solevoter_registration.drep_hash_id = dh.id + AND solevoter_registration.voting_anchor_id IS NULL +GROUP BY + dh.id, + dh.raw, + second_to_newest_drep_registration.voting_anchor_id, + dh.view, + dr_deposit.deposit, + DRepDistr.amount, + DRepActivity.epoch_no, + DRepActivity.drep_activity, + latest_voting_anchor.url, + latest_voting_anchor.data_hash, + latest_drep_registration.tx_hash, + drep_registration.id, + solevoter_registration.id, + latest_drep_registration.voting_anchor_id, + latest_vote_block.epoch_no, + block_first_register.epoch_no, + latest_drep_registration.deposit; +DROP VIEW IF EXISTS proposal; +CREATE VIEW proposal AS +WITH LatestDrepDistr AS ( + SELECT + *, + ROW_NUMBER() OVER (PARTITION BY hash_id ORDER BY epoch_no DESC) AS rn + FROM + drep_distr +), +EpochUtils AS ( + SELECT + (Max(end_time) - Min(end_time)) /(Max(NO) - Min(NO)) AS epoch_duration, + Max(NO) AS last_epoch_no, + Max(end_time) AS last_epoch_end_time + FROM + epoch +), +always_no_confidence_voting_power AS ( + SELECT + coalesce(( + SELECT + amount + FROM drep_hash + LEFT JOIN drep_distr ON drep_hash.id = drep_distr.hash_id + WHERE + drep_hash.view = 'drep_always_no_confidence' ORDER BY epoch_no DESC LIMIT 1), 0) AS amount +), +always_abstain_voting_power AS ( + SELECT + coalesce(( + SELECT + amount + FROM drep_hash + LEFT JOIN drep_distr ON drep_hash.id = drep_distr.hash_id + WHERE + drep_hash.view = 'drep_always_abstain' ORDER BY epoch_no DESC LIMIT 1), 0) AS amount +) +SELECT + gov_action_proposal.id AS id, + encode(creator_tx.hash, 'hex') AS created_tx_hash, + gov_action_proposal.index AS created_tx_index, + gov_action_proposal.type::text AS type, +( + CASE WHEN gov_action_proposal.type = 'TreasuryWithdrawals' THEN + json_build_object('Reward Address', stake_address.view, 'Amount', treasury_withdrawal.amount) + WHEN gov_action_proposal.type::text = 'InfoAction' THEN + json_build_object() + ELSE + NULL + END) AS description, + epoch_utils.last_epoch_end_time + epoch_utils.epoch_duration *(gov_action_proposal.expiration - epoch_utils.last_epoch_no) AS expiry_date, + gov_action_proposal.expiration AS expiry_epoch_no, + creator_block.time AS created_date, + creator_block.epoch_no AS created_epoch_no, + /* created date */ + voting_anchor.url AS metadata_url, + encode(voting_anchor.data_hash, 'hex') AS metadata_hash, + off_chain_vote_data.title AS title, + off_chain_vote_data.abstract AS abstract, + off_chain_vote_data.motivation AS motivation, + off_chain_vote_data.rationale AS rationale, + off_chain_vote_data.json AS metadata_json, + off_chain_vote_data.json #> '{body, references}' AS reference, + coalesce(Sum(ldd.amount) FILTER (WHERE voting_procedure.vote::text = 'Yes'), 0) +( + CASE WHEN gov_action_proposal.type = 'NoConfidence' THEN + always_no_confidence_voting_power.amount + ELSE + 0 + END) AS yes_votes, + coalesce(Sum(ldd.amount) FILTER (WHERE voting_procedure.vote::text = 'No'), 0) +( + CASE WHEN gov_action_proposal.type = 'NoConfidence' THEN + 0 + ELSE + always_no_confidence_voting_power.amount + END) AS no_votes, + coalesce(Sum(ldd.amount) FILTER (WHERE voting_procedure.vote::text = 'Abstain'), 0) + always_abstain_voting_power.amount AS abstain_votes +FROM + gov_action_proposal + LEFT JOIN treasury_withdrawal ON gov_action_proposal.id = treasury_withdrawal.gov_action_proposal_id + LEFT JOIN stake_address ON stake_address.id = treasury_withdrawal.stake_address_id + CROSS JOIN EpochUtils AS epoch_utils + CROSS JOIN always_no_confidence_voting_power + CROSS JOIN always_abstain_voting_power + JOIN tx AS creator_tx ON creator_tx.id = gov_action_proposal.tx_id + JOIN block AS creator_block ON creator_block.id = creator_tx.block_id + LEFT JOIN voting_anchor ON voting_anchor.id = gov_action_proposal.voting_anchor_id + LEFT JOIN off_chain_vote_data ON off_chain_vote_data.voting_anchor_id = voting_anchor.id + LEFT JOIN voting_procedure ON voting_procedure.gov_action_proposal_id = gov_action_proposal.id + LEFT JOIN LatestDrepDistr ldd ON ldd.hash_id = voting_procedure.drep_voter + AND ldd.rn = 1 + AND gov_action_proposal.expiration >( + SELECT + Max(NO) + FROM + epoch) + AND gov_action_proposal.ratified_epoch IS NULL + AND gov_action_proposal.enacted_epoch IS NULL + AND gov_action_proposal.expired_epoch IS NULL + AND gov_action_proposal.dropped_epoch IS NULL +GROUP BY + (gov_action_proposal.id, + stake_address.view, + treasury_withdrawal.amount, + creator_block.epoch_no, + off_chain_vote_data.title, + off_chain_vote_data.abstract, + off_chain_vote_data.motivation, + off_chain_vote_data.rationale, + off_chain_vote_data.json, + gov_action_proposal.index, + creator_tx.hash, + creator_block.time, + epoch_utils.epoch_duration, + epoch_utils.last_epoch_no, + epoch_utils.last_epoch_end_time, + voting_anchor.url, + voting_anchor.data_hash, + always_no_confidence_voting_power.amount, + always_abstain_voting_power.amount); +COMMIT; + diff --git a/govtool/backend/src/VVA/API.hs b/govtool/backend/src/VVA/API.hs index c10c257b6..08789bbbf 100644 --- a/govtool/backend/src/VVA/API.hs +++ b/govtool/backend/src/VVA/API.hs @@ -15,10 +15,10 @@ import Control.Monad.Reader import Data.Bool (Bool) import Data.List (sortOn) import qualified Data.Map as Map -import Data.Maybe (Maybe (Nothing), fromMaybe) +import Data.Maybe (Maybe (Nothing), fromMaybe, catMaybes) import Data.Ord (Down (..)) import Data.Text hiding (drop, elem, filter, length, map, - null, take) + null, take, any) import qualified Data.Text as Text import Numeric.Natural (Natural) @@ -43,11 +43,20 @@ import VVA.Types (App, AppEnv (..), CacheEnv (..)) type VVAApi = - "drep" :> "list" :> QueryParam "drepView" Text :> Get '[JSON] [DRep] + "drep" :> "list" + :> QueryParam "search" Text + :> QueryParams "status" DRepStatus + :> QueryParam "sort" DRepSortMode + :> Get '[JSON] [DRep] :<|> "drep" :> "get-voting-power" :> Capture "drepId" HexText :> Get '[JSON] Integer - :<|> "drep" :> "getVotes" :> Capture "drepId" HexText :> QueryParams "type" GovernanceActionType :> QueryParam "sort" GovernanceActionSortMode :> Get '[JSON] [VoteResponse] + :<|> "drep" :> "getVotes" + :> Capture "drepId" HexText + :> QueryParams "type" GovernanceActionType + :> QueryParam "sort" GovernanceActionSortMode + :> QueryParam "search" Text + :> Get '[JSON] [VoteResponse] :<|> "drep" :> "info" :> Capture "drepId" HexText :> Get '[JSON] DRepInfoResponse - :<|> "ada-holder" :> "get-current-delegation" :> Capture "stakeKey" HexText :> Get '[JSON] (Maybe HexText) + :<|> "ada-holder" :> "get-current-delegation" :> Capture "stakeKey" HexText :> Get '[JSON] (Maybe DelegationResponse) :<|> "ada-holder" :> "get-voting-power" :> Capture "stakeKey" HexText :> Get '[JSON] Integer :<|> "proposal" :> "list" :> QueryParams "type" GovernanceActionType @@ -98,20 +107,48 @@ drepRegistrationToDrep Types.DRepRegistration {..} = dRepVotingPower = dRepRegistrationVotingPower, dRepStatus = mapDRepStatus dRepRegistrationStatus, dRepType = mapDRepType dRepRegistrationType, - dRepLatestTxHash = HexText <$> dRepRegistrationLatestTxHash + dRepLatestTxHash = HexText <$> dRepRegistrationLatestTxHash, + dRepLatestRegistrationDate = dRepRegistrationLatestRegistrationDate } -drepList :: App m => Maybe Text -> m [DRep] -drepList mDRepView = do +delegationToResponse :: Types.Delegation -> DelegationResponse +delegationToResponse Types.Delegation {..} = + DelegationResponse + { delegationResponseDRepHash = HexText <$> delegationDRepHash, + delegationResponseDRepView = delegationDRepView, + delegationResponseTxHash = HexText delegationTxHash + } + + +drepList :: App m => Maybe Text -> [DRepStatus] -> Maybe DRepSortMode -> m [DRep] +drepList mSearchQuery statuses mSortMode = do CacheEnv {dRepListCache} <- asks vvaCache dreps <- cacheRequest dRepListCache () DRep.listDReps - let filtered = flip filter dreps $ \Types.DRepRegistration {..} -> - case (dRepRegistrationType, mDRepView) of - (Types.SoleVoter, Just x) -> x == dRepRegistrationView - (Types.DRep, Just x) -> x `isInfixOf` dRepRegistrationView - (Types.DRep, Nothing) -> True - _ -> False - return $ map drepRegistrationToDrep filtered + + let filterDRepsByQuery = case mSearchQuery of + Nothing -> filter $ \Types.DRepRegistration {..} -> dRepRegistrationType == Types.DRep + Just query -> filter $ \Types.DRepRegistration {..} -> + case dRepRegistrationType of + Types.SoleVoter -> query == dRepRegistrationView || query == dRepRegistrationDRepHash + Types.DRep -> query `isInfixOf` dRepRegistrationView + || query `isInfixOf` dRepRegistrationDRepHash + + let filterDRepsByStatus = case statuses of + [] -> id + _ -> filter $ \Types.DRepRegistration {..} -> + mapDRepStatus dRepRegistrationStatus `elem` statuses + + let sortDReps = case mSortMode of + Nothing -> id + Just VotingPower -> sortOn $ \Types.DRepRegistration {..} -> + Down dRepRegistrationVotingPower + Just RegistrationDate -> sortOn $ \Types.DRepRegistration {..} -> + Down dRepRegistrationLatestRegistrationDate + Just Status -> sortOn $ \Types.DRepRegistration {..} -> + dRepRegistrationStatus + + + return $ map drepRegistrationToDrep $ sortDReps $ filterDRepsByQuery $ filterDRepsByStatus dreps getVotingPower :: App m => HexText -> m Integer getVotingPower (unHexText -> dRepId) = do @@ -184,12 +221,12 @@ mapSortAndFilterProposals selectedTypes sortMode proposals = Just MostYesVotes -> sortOn (Down . proposalResponseYesVotes) filteredProposals in sortedProposals -getVotes :: App m => HexText -> [GovernanceActionType] -> Maybe GovernanceActionSortMode -> m [VoteResponse] -getVotes (unHexText -> dRepId) selectedTypes sortMode = do +getVotes :: App m => HexText -> [GovernanceActionType] -> Maybe GovernanceActionSortMode -> Maybe Text -> m [VoteResponse] +getVotes (unHexText -> dRepId) selectedTypes sortMode mSearch = do CacheEnv {dRepGetVotesCache} <- asks vvaCache (votes, proposals) <- cacheRequest dRepGetVotesCache dRepId $ DRep.getVotes dRepId [] let voteMap = Map.fromList $ map (\vote@Types.Vote {..} -> (voteProposalId, vote)) votes - let processedProposals = mapSortAndFilterProposals selectedTypes sortMode proposals + let processedProposals = filter (isProposalSearchedFor mSearch) $ mapSortAndFilterProposals selectedTypes sortMode proposals return $ [ VoteResponse { voteResponseVote = voteToResponse (voteMap Map.! read (unpack proposalResponseId)) @@ -211,14 +248,17 @@ drepInfo (unHexText -> dRepId) = do , dRepInfoResponseUrl = dRepInfoUrl , dRepInfoResponseDataHash = HexText <$> dRepInfoDataHash , dRepInfoResponseVotingPower = dRepInfoVotingPower - , dRepInfoResponseLatestTxHash = HexText <$> dRepInfoLatestTxHash + , dRepInfoResponseDRepRegisterTxHash = HexText <$> dRepInfoDRepRegisterTx + , dRepInfoResponseDRepRetireTxHash = HexText <$> dRepInfoDRepRetireTx + , dRepInfoResponseSoleVoterRegisterTxHash = HexText <$> dRepInfoSoleVoterRegisterTx + , dRepInfoResponseSoleVoterRetireTxHash = HexText <$> dRepInfoSoleVoterRetireTx } -getCurrentDelegation :: App m => HexText -> m (Maybe HexText) +getCurrentDelegation :: App m => HexText -> m (Maybe DelegationResponse) getCurrentDelegation (unHexText -> stakeKey) = do CacheEnv {adaHolderGetCurrentDelegationCache} <- asks vvaCache - result <- cacheRequest adaHolderGetCurrentDelegationCache stakeKey $ AdaHolder.getCurrentDelegation stakeKey - return $ HexText <$> result + delegation <- cacheRequest adaHolderGetCurrentDelegationCache stakeKey $ AdaHolder.getCurrentDelegation stakeKey + return $ delegationToResponse <$> delegation getStakeKeyVotingPower :: App m => HexText -> m Integer getStakeKeyVotingPower (unHexText -> stakeKey) = do @@ -226,6 +266,21 @@ getStakeKeyVotingPower (unHexText -> stakeKey) = do cacheRequest adaHolderVotingPowerCache stakeKey $ AdaHolder.getStakeKeyVotingPower stakeKey +isProposalSearchedFor :: Maybe Text -> ProposalResponse -> Bool +isProposalSearchedFor Nothing _ = True +isProposalSearchedFor (Just searchQuery) (ProposalResponse{..}) = fromMaybe False $ do + let normalisedSearchQuery = Text.toLower searchQuery + let govActionId = unHexText proposalResponseTxHash <> "#" <> Text.pack (show proposalResponseIndex) + let valuesToCheck = catMaybes + [ Just govActionId + , proposalResponseTitle + , proposalResponseAbout + , proposalResponseMotivation + , proposalResponseRationale + ] + + pure $ any (\x -> normalisedSearchQuery `isInfixOf` Text.toLower x) valuesToCheck + listProposals :: App m => [GovernanceActionType] @@ -244,32 +299,15 @@ listProposals selectedTypes sortMode mPage mPageSize mDrepRaw mSearchQuery = do Nothing -> return [] Just drepId -> map (voteParamsProposalId . voteResponseVote) - <$> getVotes drepId [] Nothing - - - - let filterF ProposalResponse{..} = case Text.toLower <$> mSearchQuery of - Nothing -> True - Just searchQuery -> fromMaybe False $ do - title <- Text.toLower <$> proposalResponseTitle - about <- Text.toLower <$> proposalResponseAbout - motivation <- Text.toLower <$> proposalResponseMotivation - rationale <- Text.toLower <$> proposalResponseRationale - let govActionId = unHexText proposalResponseTxHash <> "#" <> Text.pack (show proposalResponseIndex) - let result = searchQuery `isInfixOf` title - || searchQuery `isInfixOf` about - || searchQuery `isInfixOf` motivation - || searchQuery `isInfixOf` rationale - || searchQuery `isInfixOf` govActionId + <$> getVotes drepId [] Nothing Nothing - pure result CacheEnv {proposalListCache} <- asks vvaCache mappedAndSortedProposals <- filter ( \p@ProposalResponse {proposalResponseId} -> proposalResponseId `notElem` proposalsToRemove - && filterF p + && isProposalSearchedFor mSearchQuery p ) . mapSortAndFilterProposals selectedTypes sortMode <$> cacheRequest proposalListCache () Proposal.listProposals let total = length mappedAndSortedProposals :: Int diff --git a/govtool/backend/src/VVA/API/Types.hs b/govtool/backend/src/VVA/API/Types.hs index 354ae54a4..4462f5a82 100644 --- a/govtool/backend/src/VVA/API/Types.hs +++ b/govtool/backend/src/VVA/API/Types.hs @@ -180,6 +180,45 @@ instance ToParamSchema GovernanceActionType where & type_ ?~ OpenApiString & enum_ ?~ map toJSON (enumFromTo minBound maxBound :: [GovernanceActionType]) + +data DRepSortMode = VotingPower | RegistrationDate | Status + deriving + ( Bounded + , Enum + , Eq + , Generic + , Read + , Show + ) + +instance FromJSON DRepSortMode where + parseJSON (Aeson.String dRepSortMode) = pure $ fromJust $ readMaybe (Text.unpack dRepSortMode) + parseJSON _ = fail "" + +instance ToJSON DRepSortMode where + toJSON x = Aeson.String $ Text.pack $ show x + +instance ToSchema DRepSortMode where + declareNamedSchema proxy = do + NamedSchema name_ schema_ <- genericDeclareNamedSchema (fromAesonOptions defaultOptions) proxy + return $ + NamedSchema name_ $ + schema_ + & description ?~ "DRep Sort Mode" + & example ?~ toJSON VotingPower + +instance FromHttpApiData DRepSortMode where + parseQueryParam t = case readMaybe $ Text.unpack t of + Just x -> Right x + Nothing -> Left ("incorrect DRep sort mode: " <> t) + +instance ToParamSchema DRepSortMode where + toParamSchema _ = + mempty + & type_ ?~ OpenApiString + & enum_ ?~ map toJSON (enumFromTo minBound maxBound :: [DRepSortMode]) + + data GovernanceActionSortMode = SoonestToExpire | NewestCreated | MostYesVotes deriving ( Bounded , Enum @@ -466,7 +505,10 @@ data DRepInfoResponse , dRepInfoResponseUrl :: Maybe Text , dRepInfoResponseDataHash :: Maybe HexText , dRepInfoResponseVotingPower :: Maybe Integer - , dRepInfoResponseLatestTxHash :: Maybe HexText + , dRepInfoResponseDRepRegisterTxHash :: Maybe HexText + , dRepInfoResponseDRepRetireTxHash :: Maybe HexText + , dRepInfoResponseSoleVoterRegisterTxHash :: Maybe HexText + , dRepInfoResponseSoleVoterRetireTxHash :: Maybe HexText } deriving (Generic, Show) @@ -482,7 +524,10 @@ exampleDRepInfoResponse = <> "\"url\": \"https://drep.metadata.xyz\"," <> "\"dataHash\": \"9af10e89979e51b8cdc827c963124a1ef4920d1253eef34a1d5cfe76438e3f11\"," <> "\"votingPower\": 1000000," - <> "\"latestTxHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"}" + <> "\"dRepRegisterTxHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"," + <> "\"dRepRetireTxHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"," + <> "\"soleVoterRegisterTxHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"," + <> "\"soleVoterRetireTxHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"}" instance ToSchema DRepInfoResponse where declareNamedSchema proxy = do @@ -599,7 +644,7 @@ instance ToSchema DRepHash where ?~ toJSON exampleDrepHash -data DRepStatus = Retired | Active | Inactive deriving (Generic, Show) +data DRepStatus = Active | Inactive | Retired deriving (Generic, Show, Eq, Ord, Enum, Bounded, Read) -- ToJSON instance for DRepStatus instance ToJSON DRepStatus where @@ -622,6 +667,17 @@ instance ToSchema DRepStatus where & description ?~ "DRep Status" & enum_ ?~ map toJSON [Retired, Active, Inactive] +instance FromHttpApiData DRepStatus where + parseQueryParam t = case readMaybe $ Text.unpack t of + Just x -> Right x + Nothing -> Left ("incorrect DRep status " <> t) + +instance ToParamSchema DRepStatus where + toParamSchema _ = + mempty + & type_ ?~ OpenApiString + & enum_ ?~ map toJSON (enumFromTo minBound maxBound :: [DRepStatus]) + data DRepType = NormalDRep | SoleVoter @@ -651,15 +707,16 @@ instance ToSchema DRepType where data DRep = DRep - { dRepDrepId :: DRepHash - , dRepView :: Text - , dRepUrl :: Maybe Text - , dRepMetadataHash :: Maybe Text - , dRepDeposit :: Integer - , dRepVotingPower :: Maybe Integer - , dRepStatus :: DRepStatus - , dRepType :: DRepType - , dRepLatestTxHash :: Maybe HexText + { dRepDrepId :: DRepHash + , dRepView :: Text + , dRepUrl :: Maybe Text + , dRepMetadataHash :: Maybe Text + , dRepDeposit :: Integer + , dRepVotingPower :: Maybe Integer + , dRepStatus :: DRepStatus + , dRepType :: DRepType + , dRepLatestTxHash :: Maybe HexText + , dRepLatestRegistrationDate :: UTCTime } deriving (Generic, Show) @@ -676,7 +733,8 @@ exampleDrep = <> "\"votingPower\": 0," <> "\"status\": \"Active\"," <> "\"type\": \"DRep\"," - <> "\"latestTxHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"}" + <> "\"latestTxHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"," + <> "\"latestRegistrationDate\": \"1970-01-01T00:00:00Z\"}" -- ToSchema instance for DRep instance ToSchema DRep where @@ -692,8 +750,25 @@ instance ToSchema DRep where & example ?~ toJSON exampleDrep +data DelegationResponse + = DelegationResponse + { delegationResponseDRepHash :: Maybe HexText + , delegationResponseDRepView :: Text + , delegationResponseTxHash :: HexText + } +deriveJSON (jsonOptions "delegationResponse") ''DelegationResponse +exampleDelegationResponse :: Text +exampleDelegationResponse = "{\"drepHash\": \"b4e4184bfedf920fec53cdc327de4da661ae427784c0ccca9e3c2f50\"," + <> "\"drepView\": \"drep1l8uyy66sm8u82h82gc8hkcy2xu24dl8ffsh58aa0v7d37yp48u8\"," + <> "\"txHash\": \"47c14a128cd024f1b990c839d67720825921ad87ed875def42641ddd2169b39c\"}" +instance ToSchema DelegationResponse where + declareNamedSchema _ = pure $ NamedSchema (Just "DelegationResponse") $ mempty + & type_ ?~ OpenApiObject + & description ?~ "Delegation Response" + & example + ?~ toJSON exampleDelegationResponse data GetNetworkMetricsResponse = GetNetworkMetricsResponse diff --git a/govtool/backend/src/VVA/AdaHolder.hs b/govtool/backend/src/VVA/AdaHolder.hs index 1e177235f..8258445d6 100644 --- a/govtool/backend/src/VVA/AdaHolder.hs +++ b/govtool/backend/src/VVA/AdaHolder.hs @@ -24,6 +24,7 @@ import qualified Database.PostgreSQL.Simple as SQL import VVA.Config import VVA.Pool (ConnectionPool, withPool) +import VVA.Types sqlFrom :: ByteString -> SQL.Query sqlFrom bs = fromString $ unpack $ Text.decodeUtf8 bs @@ -37,12 +38,12 @@ getCurrentDelegationSql = sqlFrom $(embedFile "sql/get-current-delegation.sql") getCurrentDelegation :: (Has ConnectionPool r, Has VVAConfig r, MonadReader r m, MonadIO m) => Text -> - m (Maybe Text) + m (Maybe Delegation) getCurrentDelegation stakeKey = withPool $ \conn -> do result <- liftIO $ SQL.query conn getCurrentDelegationSql (SQL.Only stakeKey) case result of [] -> return Nothing - [SQL.Only delegation] -> return $ Just delegation + [(mDRepHash, dRepView, txHash)] -> return $ Just $ Delegation mDRepHash dRepView txHash _ -> error ("multiple delegations for stake key: " <> unpack stakeKey) getVotingPowerSql :: SQL.Query diff --git a/govtool/backend/src/VVA/DRep.hs b/govtool/backend/src/VVA/DRep.hs index dd0422c4c..d5db8d115 100644 --- a/govtool/backend/src/VVA/DRep.hs +++ b/govtool/backend/src/VVA/DRep.hs @@ -59,9 +59,10 @@ listDReps :: m [DRepRegistration] listDReps = withPool $ \conn -> do results <- liftIO $ SQL.query_ conn listDRepsSql + timeZone <- liftIO getCurrentTimeZone return - [ DRepRegistration drepHash drepView url dataHash (floor @Scientific deposit) votingPower status drepType txHash - | (drepHash, drepView, url, dataHash, deposit, votingPower, isActive, wasDRep, txHash) <- results + [ DRepRegistration drepHash drepView url dataHash (floor @Scientific deposit) votingPower status drepType txHash (localTimeToUTC timeZone date) + | (drepHash, drepView, url, dataHash, deposit, votingPower, isActive, wasDRep, txHash, date) <- results , let status = case (isActive, deposit) of (_, d) | d < 0 -> Retired (isActive, d) | d >= 0 && isActive -> Active @@ -117,7 +118,10 @@ getDRepInfo drepId = withPool $ \conn -> do , url , dataHash , votingPower - , txHash + , drepRegisterTx + , drepRetireTx + , soleVoterRegisterTx + , soleVoterRetireTx )] -> return $ DRepInfo { dRepInfoIsRegisteredAsDRep = fromMaybe False isRegisteredAsDRep @@ -128,6 +132,9 @@ getDRepInfo drepId = withPool $ \conn -> do , dRepInfoUrl = url , dRepInfoDataHash = dataHash , dRepInfoVotingPower = votingPower - , dRepInfoLatestTxHash = Just txHash + , dRepInfoDRepRegisterTx = drepRegisterTx + , dRepInfoDRepRetireTx = drepRetireTx + , dRepInfoSoleVoterRegisterTx = soleVoterRegisterTx + , dRepInfoSoleVoterRetireTx = soleVoterRetireTx } - [] -> return $ DRepInfo False False False False Nothing Nothing Nothing Nothing Nothing + [] -> return $ DRepInfo False False False False Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing diff --git a/govtool/backend/src/VVA/Types.hs b/govtool/backend/src/VVA/Types.hs index 91f2952b4..7b128045c 100644 --- a/govtool/backend/src/VVA/Types.hs +++ b/govtool/backend/src/VVA/Types.hs @@ -75,24 +75,28 @@ data DRepInfo , dRepInfoUrl :: Maybe Text , dRepInfoDataHash :: Maybe Text , dRepInfoVotingPower :: Maybe Integer - , dRepInfoLatestTxHash :: Maybe Text + , dRepInfoDRepRegisterTx :: Maybe Text + , dRepInfoDRepRetireTx :: Maybe Text + , dRepInfoSoleVoterRegisterTx :: Maybe Text + , dRepInfoSoleVoterRetireTx :: Maybe Text } -data DRepStatus = Retired | Active | Inactive +data DRepStatus = Active | Inactive | Retired deriving (Eq, Ord) -data DRepType = DRep | SoleVoter +data DRepType = DRep | SoleVoter deriving (Eq) data DRepRegistration = DRepRegistration - { dRepRegistrationDRepHash :: Text - , dRepRegistrationView :: Text - , dRepRegistrationUrl :: Maybe Text - , dRepRegistrationDataHash :: Maybe Text - , dRepRegistrationDeposit :: Integer - , dRepRegistrationVotingPower :: Maybe Integer - , dRepRegistrationStatus :: DRepStatus - , dRepRegistrationType :: DRepType - , dRepRegistrationLatestTxHash :: Maybe Text + { dRepRegistrationDRepHash :: Text + , dRepRegistrationView :: Text + , dRepRegistrationUrl :: Maybe Text + , dRepRegistrationDataHash :: Maybe Text + , dRepRegistrationDeposit :: Integer + , dRepRegistrationVotingPower :: Maybe Integer + , dRepRegistrationStatus :: DRepStatus + , dRepRegistrationType :: DRepType + , dRepRegistrationLatestTxHash :: Maybe Text + , dRepRegistrationLatestRegistrationDate :: UTCTime } data Proposal @@ -128,7 +132,7 @@ data CacheEnv , getProposalCache :: Cache.Cache (Text, Integer) Proposal , currentEpochCache :: Cache.Cache () (Maybe Value) , adaHolderVotingPowerCache :: Cache.Cache Text Integer - , adaHolderGetCurrentDelegationCache :: Cache.Cache Text (Maybe Text) + , adaHolderGetCurrentDelegationCache :: Cache.Cache Text (Maybe Delegation) , dRepGetVotesCache :: Cache.Cache Text ([Vote], [Proposal]) , dRepInfoCache :: Cache.Cache Text DRepInfo , dRepVotingPowerCache :: Cache.Cache Text Integer @@ -149,3 +153,10 @@ data NetworkMetrics , networkMetricsAlwaysAbstainVotingPower :: Integer , networkMetricsAlwaysNoConfidenceVotingPower :: Integer } + +data Delegation + = Delegation + { delegationDRepHash :: Maybe Text + , delegationDRepView :: Text + , delegationTxHash :: Text + } \ No newline at end of file diff --git a/govtool/frontend/.env.example b/govtool/frontend/.env.example new file mode 100644 index 000000000..f7ac65b56 --- /dev/null +++ b/govtool/frontend/.env.example @@ -0,0 +1,6 @@ +VITE_BASE_URL="" +VITE_NETWORK_FLAG=0 +VITE_SENTRY_DSN="" +VITE_GTM_ID="" +VITE_IS_DEV=true +VITE_USERSNAP_SPACE_API_KEY="" \ No newline at end of file diff --git a/govtool/frontend/.gitignore b/govtool/frontend/.gitignore index 69d430815..ba36087a4 100644 --- a/govtool/frontend/.gitignore +++ b/govtool/frontend/.gitignore @@ -6,3 +6,4 @@ /.lighthouseci /yarn-error.log .env +coverage \ No newline at end of file diff --git a/govtool/frontend/Makefile b/govtool/frontend/Makefile index f8dd5c348..a9c19da18 100644 --- a/govtool/frontend/Makefile +++ b/govtool/frontend/Makefile @@ -19,6 +19,7 @@ build-frontend: docker-login --build-arg VITE_GTM_ID="$${GTM_ID}" \ --build-arg VITE_NETWORK_FLAG="$$NETWORK_FLAG" \ --build-arg VITE_SENTRY_DSN="$${SENTRY_DSN}" \ + --build-arg VITE_USERSNAP_SPACE_API_KEY="$${USERSNAP_SPACE_API_KEY}" \ $(root_dir)/govtool/frontend .PHONY: push-frontend diff --git a/govtool/frontend/README.md b/govtool/frontend/README.md index b66001800..18593d402 100644 --- a/govtool/frontend/README.md +++ b/govtool/frontend/README.md @@ -138,6 +138,8 @@ direnv allow yarn dev ``` +*To update the yarn.lock file after changes are made, run `nix develop .#js` for a developer shell with correct yarn/nodejs versions* + ## After development Check our [Contributing Documentation](../../CONTRIBUTING.md) on how to submit a PR. diff --git a/govtool/frontend/default.nix b/govtool/frontend/default.nix index 29be71953..7ad429b41 100644 --- a/govtool/frontend/default.nix +++ b/govtool/frontend/default.nix @@ -1,22 +1,42 @@ -{ pkgs ? import {} }: +{ pkgs ? import {} +, VITE_BASE_URL ? "http://localhost" +, VITE_IS_DEV ? "true" +, VITE_GTM_ID ? "" +, VITE_SENTRY_DSN ? "" +, CARDANO_NETWORK ? "sanchonet" +}: let - project = pkgs.mkYarnPackage { - name = "govtool-frontend"; + VITE_NETWORK_FLAG = if CARDANO_NETWORK == "mainnet" then "1" else "0"; + nodeModules = pkgs.mkYarnPackage { + name = "govtool-node-modules"; src = ./.; packageJSON = ./package.json; yarnLock = ./yarn.lock; nodejs = pkgs.nodejs_18; }; -in -project.overrideAttrs (attrs: { - shellHook = '' - function warn() { tput setaf $2; echo "$1"; tput sgr0; } + staticSite = pkgs.stdenv.mkDerivation { + name = "govtool-website"; + src = ./.; + buildInputs = [pkgs.yarn nodeModules]; + inherit VITE_BASE_URL VITE_IS_DEV VITE_GTM_ID VITE_SENTRY_DSN VITE_NETWORK_FLAG; + buildPhase = '' + ln -s ${nodeModules}/libexec/voltaire-voting-app/node_modules node_modules + yarn build + ''; + installPhase = '' + mv dist $out + ''; + }; + devShell = pkgs.mkShell { + shellHook = '' + function warn() { tput setaf $2; echo "$1"; tput sgr0; } - tput bold - warn "Welcome to GovTool!" 4 - warn "This is a frontend development shell." 4 - warn "Read the ${./README.md} to get more info about this module." 8 - rm -rf ./node_modules - ln -s ${project.out}/libexec/voltaire-voting-app/node_modules ./node_modules - ''; -}) + tput bold + warn "Welcome to GovTool!" 4 + warn "This is a frontend development shell." 4 + warn "Read the ${./README.md} to get more info about this module." 8 + rm -rf ./node_modules + ln -s ${nodeModules.out}/libexec/voltaire-voting-app/node_modules ./node_modules + ''; + }; +in { inherit nodeModules devShell staticSite; } diff --git a/govtool/frontend/package-lock.json b/govtool/frontend/package-lock.json index b1ab27abd..b8ac93fb6 100644 --- a/govtool/frontend/package-lock.json +++ b/govtool/frontend/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@emurgo/cardano-serialization-lib-asmjs": "12.0.0-alpha.19", + "@emurgo/cardano-serialization-lib-asmjs": "12.0.0-alpha.29", "@hookform/resolvers": "^3.3.1", "@mui/icons-material": "^5.14.3", "@mui/material": "^5.14.4", @@ -19,6 +19,7 @@ "@types/jsonld": "^1.5.13", "@types/react": "^18.2.12", "@types/react-gtm-module": "^2.0.2", + "@usersnap/browser": "^0.0.5", "axios": "^1.4.0", "bech32": "^2.0.0", "blakejs": "^1.2.1", @@ -61,6 +62,7 @@ "@typescript-eslint/eslint-plugin": "^7.3.1", "@typescript-eslint/parser": "^7.3.1", "@vitejs/plugin-react": "^4.0.0", + "@vitest/coverage-v8": "^1.5.0", "@vitest/ui": "^1.1.0", "chromatic": "^11.3.0", "eslint": "^8.38.0", @@ -72,6 +74,7 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.3.4", "eslint-plugin-storybook": "^0.6.14", + "istanbul-badges-readme": "^1.8.5", "jsdom": "^23.0.1", "storybook": "^7.4.5", "typescript": "^5.0.2", @@ -93,26 +96,38 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", - "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", "dev": true, "license": "MIT" }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, + "node_modules/@asamuzakjp/dom-selector": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz", + "integrity": "sha512-x1KXOatwofR6ZAYzXRBL5wrdV0vwNxlTCK9NCuLqAzQYARqGcvFwiJA6A1ERuh+dgeA4Dxm3JBYictIes+SqUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "bidi-js": "^1.0.3", + "css-tree": "^2.3.1", + "is-potential-custom-element-name": "^1.0.1" + } + }, "node_modules/@aw-web-design/x-default-browser": { "version": "1.4.126", "resolved": "https://registry.npmjs.org/@aw-web-design/x-default-browser/-/x-default-browser-1.4.126.tgz", @@ -127,78 +142,22 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", "license": "MIT", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" }, "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==", - "license": "MIT", - "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==", - "license": "MIT", - "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/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==", - "license": "MIT", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", "dev": true, "license": "MIT", "engines": { @@ -206,22 +165,22 @@ } }, "node_modules/@babel/core": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", - "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", "@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", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -236,26 +195,16 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", - "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.23.5", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -289,15 +238,15 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "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==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -315,16 +264,6 @@ "yallist": "^3.0.2" } }, - "node_modules/@babel/helper-compilation-targets/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-compilation-targets/node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", @@ -333,9 +272,9 @@ "license": "ISC" }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", - "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.4.tgz", + "integrity": "sha512-lG75yeuUSVu0pIcbhiYMXBXANHrpUPaOfu7ryAzskCgKUHuAxRQI5ssrtmF0X9UXldPlvT0XM/A4F44OXRt6iQ==", "dev": true, "license": "MIT", "dependencies": { @@ -344,7 +283,7 @@ "@babel/helper-function-name": "^7.23.0", "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -356,16 +295,6 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.22.15", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", @@ -384,20 +313,10 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.1.tgz", + "integrity": "sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==", "dev": true, "license": "MIT", "dependencies": { @@ -462,12 +381,12 @@ } }, "node_modules/@babel/helper-module-imports": { - "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==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -507,9 +426,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", "dev": true, "license": "MIT", "engines": { @@ -535,14 +454,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", + "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5" }, "engines": { @@ -592,9 +511,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "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==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -635,29 +554,30 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", - "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.5", - "@babel/types": "^7.23.5" + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -720,9 +640,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", - "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", "dev": true, "license": "MIT", "bin": { @@ -732,14 +652,31 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.4.tgz", + "integrity": "sha512-qpl6vOOEEzTLLcsuqYYo8yDtrTocmu2xkGvgNebvPjT9DTtfFYGmgDqY+rBYXNlqL4s9qLDn6xkrJv4RxAPiTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", + "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -749,15 +686,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", + "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/plugin-transform-optional-chaining": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -767,14 +704,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", + "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -878,13 +815,13 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", - "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz", + "integrity": "sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -894,13 +831,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", + "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -910,13 +847,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", + "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -952,13 +889,13 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "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==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", + "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1078,13 +1015,13 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "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==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", + "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1111,13 +1048,13 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", + "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1127,14 +1064,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", + "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20", "@babel/plugin-syntax-async-generators": "^7.8.4" }, @@ -1146,14 +1083,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", + "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-module-imports": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-remap-async-to-generator": "^7.22.20" }, "engines": { @@ -1164,13 +1101,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", + "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1180,13 +1117,13 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.4.tgz", + "integrity": "sha512-nIFUZIpGKDf9O9ttyRXpHFpKC+X3Y5mtshZONuEUYBomAKoM4y029Jr+uB1bHGPhNmK8YXHevDtKDOLmtRrp6g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1196,14 +1133,14 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", + "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1213,14 +1150,14 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", + "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -1231,19 +1168,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.1.tgz", + "integrity": "sha512-ZTIe3W7UejJd3/3R4p7ScyyOoafetUShSf4kCqV0O7F/RiHxVj/wRaRnQlrGwflvcehNA8M42HkAiEDYZu2F1Q==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1", "@babel/helper-split-export-declaration": "^7.22.6", "globals": "^11.1.0" }, @@ -1255,14 +1191,14 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", + "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/template": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1272,13 +1208,13 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.1.tgz", + "integrity": "sha512-ow8jciWqNxR3RYbSNVuF4U2Jx130nwnBnhRw6N6h1bOejNkABmcI5X5oz29K4alWX7vf1C+o6gtKXikzRKkVdw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1288,14 +1224,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", + "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1305,13 +1241,13 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", + "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1321,13 +1257,13 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", + "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -1338,14 +1274,14 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", + "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1355,13 +1291,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", + "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -1372,14 +1308,14 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", - "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz", + "integrity": "sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-flow": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-flow": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1389,13 +1325,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", + "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1405,15 +1342,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", + "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1423,13 +1360,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", + "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -1440,13 +1377,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", + "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1456,13 +1393,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", + "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -1473,13 +1410,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", + "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1489,14 +1426,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", + "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1506,14 +1443,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", + "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-simple-access": "^7.22.5" }, "engines": { @@ -1524,15 +1461,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", + "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-identifier": "^7.22.20" }, "engines": { @@ -1543,14 +1480,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", + "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1577,13 +1514,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", + "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1593,13 +1530,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", + "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -1610,13 +1547,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", + "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -1627,17 +1564,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.1.tgz", + "integrity": "sha512-XjD5f0YqOtebto4HGISLNfiNMTTs6tbkFf2TOqJlYKYmbo+mN9Dnpl4SRoofiziuOWMIyq3sZEUqLo3hLITFEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1647,14 +1583,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", + "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-replace-supers": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1664,13 +1600,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", + "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -1681,13 +1617,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.1.tgz", + "integrity": "sha512-n03wmDt+987qXwAgcBlnUUivrZBPZ8z1plL0YvgQalLm+ZE5BMhGm94jhxXtA1wzv1Cu2aaOv1BM9vbVttrzSg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, @@ -1699,13 +1635,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.1.tgz", + "integrity": "sha512-8Jl6V24g+Uw5OGPeWNKrKqXPDw2YDjLc53ojwfMcKwlEoETKU9rU0mHUtcg9JntWI/QYzGAXNWEcVHZ+fR+XXg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1715,14 +1651,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", + "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1732,15 +1668,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.1.tgz", + "integrity": "sha512-pTHxDVa0BpUbvAgX3Gat+7cSciXqUcY9j2VZKTbSB6+VQGpNgNO9ailxTGHSXlqOnX1Hcx1Enme2+yv7VqP9bg==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.1", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -1751,13 +1687,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", + "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1767,13 +1703,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "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==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.1.tgz", + "integrity": "sha512-kDJgnPujTmAZ/9q2CN4m2/lRsUUPDvsG3+tSHWUJIzMGTt5U/b/fwWd3RO3n+5mjLrsBrVa5eKFRVSQbi3dF1w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1783,13 +1719,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "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==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz", + "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1799,13 +1735,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", + "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1816,13 +1752,13 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", + "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1832,13 +1768,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", + "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1848,13 +1784,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", + "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { @@ -1865,13 +1801,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", + "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1881,13 +1817,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", + "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1897,13 +1833,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.1.tgz", + "integrity": "sha512-CBfU4l/A+KruSUoW+vTQthwcAdwuqbpRNB8HQKlZABwHRhsdHZ9fezp4Sn18PeAlYxTNiLMlx4xUBV3AWfg1BA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1913,16 +1849,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", - "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.4.tgz", + "integrity": "sha512-79t3CQ8+oBGk/80SQ8MN3Bs3obf83zJ0YZjDmDaEZN8MqhMI760apl5z6a20kFeMXBwJX99VpKT8CKxEBp5H1g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.23.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-typescript": "^7.23.3" + "@babel/helper-create-class-features-plugin": "^7.24.4", + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/plugin-syntax-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -1932,13 +1868,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", + "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1948,14 +1884,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", + "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1965,14 +1901,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", + "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1982,14 +1918,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", + "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.0" }, "engines": { "node": ">=6.9.0" @@ -1999,27 +1935,28 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", - "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.4.tgz", + "integrity": "sha512-7Kl6cSmYkak0FK/FXjSEnLJ1N9T/WA2RkMhu17gZ/dsxKJUuTYNIylahPTzqpLyJN4WhDif8X0XK1R8Wsguo/A==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/compat-data": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-plugin-utils": "^7.24.0", "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.4", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.1", + "@babel/plugin-syntax-import-attributes": "^7.24.1", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -2031,58 +1968,58 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.3", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.1", + "@babel/plugin-transform-async-generator-functions": "^7.24.3", + "@babel/plugin-transform-async-to-generator": "^7.24.1", + "@babel/plugin-transform-block-scoped-functions": "^7.24.1", + "@babel/plugin-transform-block-scoping": "^7.24.4", + "@babel/plugin-transform-class-properties": "^7.24.1", + "@babel/plugin-transform-class-static-block": "^7.24.4", + "@babel/plugin-transform-classes": "^7.24.1", + "@babel/plugin-transform-computed-properties": "^7.24.1", + "@babel/plugin-transform-destructuring": "^7.24.1", + "@babel/plugin-transform-dotall-regex": "^7.24.1", + "@babel/plugin-transform-duplicate-keys": "^7.24.1", + "@babel/plugin-transform-dynamic-import": "^7.24.1", + "@babel/plugin-transform-exponentiation-operator": "^7.24.1", + "@babel/plugin-transform-export-namespace-from": "^7.24.1", + "@babel/plugin-transform-for-of": "^7.24.1", + "@babel/plugin-transform-function-name": "^7.24.1", + "@babel/plugin-transform-json-strings": "^7.24.1", + "@babel/plugin-transform-literals": "^7.24.1", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", + "@babel/plugin-transform-member-expression-literals": "^7.24.1", + "@babel/plugin-transform-modules-amd": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-modules-systemjs": "^7.24.1", + "@babel/plugin-transform-modules-umd": "^7.24.1", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-new-target": "^7.24.1", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", + "@babel/plugin-transform-numeric-separator": "^7.24.1", + "@babel/plugin-transform-object-rest-spread": "^7.24.1", + "@babel/plugin-transform-object-super": "^7.24.1", + "@babel/plugin-transform-optional-catch-binding": "^7.24.1", + "@babel/plugin-transform-optional-chaining": "^7.24.1", + "@babel/plugin-transform-parameters": "^7.24.1", + "@babel/plugin-transform-private-methods": "^7.24.1", + "@babel/plugin-transform-private-property-in-object": "^7.24.1", + "@babel/plugin-transform-property-literals": "^7.24.1", + "@babel/plugin-transform-regenerator": "^7.24.1", + "@babel/plugin-transform-reserved-words": "^7.24.1", + "@babel/plugin-transform-shorthand-properties": "^7.24.1", + "@babel/plugin-transform-spread": "^7.24.1", + "@babel/plugin-transform-sticky-regex": "^7.24.1", + "@babel/plugin-transform-template-literals": "^7.24.1", + "@babel/plugin-transform-typeof-symbol": "^7.24.1", + "@babel/plugin-transform-unicode-escapes": "^7.24.1", + "@babel/plugin-transform-unicode-property-regex": "^7.24.1", + "@babel/plugin-transform-unicode-regex": "^7.24.1", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.31.0", "semver": "^6.3.1" }, @@ -2093,26 +2030,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/preset-env/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/preset-flow": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", - "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.24.1.tgz", + "integrity": "sha512-sWCV2G9pcqZf+JHyv/RyqEIpFypxdCSxWIxQjpdaQxenNog7cN1pr76hg8u0Fz8Qgg0H4ETkGcJnXL8d4j0PPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-transform-flow-strip-types": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-transform-flow-strip-types": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -2137,17 +2064,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", - "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", + "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-typescript": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-validator-option": "^7.23.5", + "@babel/plugin-syntax-jsx": "^7.24.1", + "@babel/plugin-transform-modules-commonjs": "^7.24.1", + "@babel/plugin-transform-typescript": "^7.24.1" }, "engines": { "node": ">=6.9.0" @@ -2157,16 +2084,16 @@ } }, "node_modules/@babel/register": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", - "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", + "version": "7.23.7", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.23.7.tgz", + "integrity": "sha512-EjJeB6+kvpk+Y5DAkEAmbOBEFkh9OASx0huoEkqYTFxAZHzOAX2Oh5uwAUuL2rUddqfM0SA+KPXV2TbzoZ2kvQ==", "dev": true, "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", "make-dir": "^2.1.0", - "pirates": "^4.0.5", + "pirates": "^4.0.6", "source-map-support": "^0.5.16" }, "engines": { @@ -2313,9 +2240,9 @@ "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.5.tgz", - "integrity": "sha512-NdUTHcPe4C99WxPub+K9l9tK5/lV4UXIoaHSYgzco9BCyjKAAwzdBI+wWtYqHt7LJdbo74ZjRPJgzVweq1sz0w==", + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", + "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" @@ -2325,36 +2252,36 @@ } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", - "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/generator": "^7.23.5", + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", "@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", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2362,9 +2289,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", - "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.23.4", @@ -2404,6 +2331,7 @@ "version": "3.4.1", "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", + "license": "BSD-3-Clause", "dependencies": { "ky": "^0.33.3", "ky-universal": "^0.11.0", @@ -2477,9 +2405,9 @@ "license": "MIT" }, "node_modules/@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", "license": "MIT", "dependencies": { "@emotion/memoize": "^0.8.1" @@ -2492,15 +2420,15 @@ "license": "MIT" }, "node_modules/@emotion/react": { - "version": "11.11.1", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", - "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", + "version": "11.11.4", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", + "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", "@emotion/cache": "^11.11.0", - "@emotion/serialize": "^1.1.2", + "@emotion/serialize": "^1.1.3", "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@emotion/utils": "^1.2.1", "@emotion/weak-memoize": "^0.3.1", @@ -2516,9 +2444,9 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", "license": "MIT", "dependencies": { "@emotion/hash": "^0.9.1", @@ -2535,15 +2463,15 @@ "license": "MIT" }, "node_modules/@emotion/styled": { - "version": "11.11.0", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", - "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "version": "11.11.5", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz", + "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", - "@emotion/is-prop-valid": "^1.2.1", - "@emotion/serialize": "^1.1.2", + "@emotion/is-prop-valid": "^1.2.2", + "@emotion/serialize": "^1.1.4", "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", "@emotion/utils": "^1.2.1" }, @@ -2585,14 +2513,15 @@ "license": "MIT" }, "node_modules/@emurgo/cardano-serialization-lib-asmjs": { - "version": "12.0.0-alpha.19", - "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-asmjs/-/cardano-serialization-lib-asmjs-12.0.0-alpha.19.tgz", - "integrity": "sha512-fF3e5qPgJeYDDmPVcyZ7nCuqYI6H3JJ5cSjxnKRRKK/FzYxEsHRoxpLCuZ604A4j/4mYNXVlUYeV4KhgecgUBw==" + "version": "12.0.0-alpha.29", + "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-asmjs/-/cardano-serialization-lib-asmjs-12.0.0-alpha.29.tgz", + "integrity": "sha512-E9+jGLo8QciXbkb7dDYEbZL6YlEJfNRwzYkyR4kkuvzAsy0uKe93dtAY1tdj6ECp+NyeH5xqyKU6aUT8rxwm7A==", + "license": "MIT" }, "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==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz", + "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==", "cpu": [ "arm64" ], @@ -2656,9 +2585,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2689,6 +2618,7 @@ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -2704,36 +2634,37 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/@floating-ui/core": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.1.tgz", - "integrity": "sha512-QgcKYwzcc8vvZ4n/5uklchy8KVdjJwcOeI+HnnTNclJjs2nYsy23DOCf+sSV1kBwD9yDAoVKCkv/gEPzgQU3Pw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/dom": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", - "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", + "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.0.0", + "@floating-ui/utils": "^0.2.0" } }, "node_modules/@floating-ui/react-dom": { - "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==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.6.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -2741,9 +2672,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", - "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==", "license": "MIT" }, "node_modules/@hapi/hoek": { @@ -2764,9 +2695,9 @@ } }, "node_modules/@hookform/resolvers": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.3.2.tgz", - "integrity": "sha512-Tw+GGPnBp+5DOsSg4ek3LCPgkBOuOgS5DsDV7qsWNH9LZc433kgsWICjlsh2J9p04H2K66hsXPPb9qn9ILdUtA==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.3.4.tgz", + "integrity": "sha512-o5cgpGOuJYrd+iMKvkttOclgwRW86EsWJZZRC23prf0uU2i48Htq4PuT73AVb9ionFyZrwYEITuOFGF+BydEtQ==", "license": "MIT", "peerDependencies": { "react-hook-form": "^7.0.0" @@ -2777,6 +2708,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.2", "debug": "^4.3.1", @@ -2801,16 +2733,18 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz", - "integrity": "sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -2828,6 +2762,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -2835,29 +2770,19 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/@isaacs/cliui/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==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@isaacs/cliui/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==", "dev": true, + "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", "emoji-regex": "^9.2.2", @@ -2875,6 +2800,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -2885,23 +2811,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/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==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -3020,43 +2929,16 @@ } }, "node_modules/@jest/create-cache-key-function": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-27.5.1.tgz", - "integrity": "sha512-dmH1yW+makpTSURTy8VzdUwFnfQh1G8R+DxO2Ho2FFmBbKFEVm+3jWdvFhE2VqB/LATCTokkP0dotjyQyw5/AQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", "dev": true, "license": "MIT", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "@jest/types": "^29.6.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/create-cache-key-function/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/@jest/environment": { @@ -3181,15 +3063,15 @@ } }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -3197,6 +3079,22 @@ "node": ">=10" } }, + "node_modules/@jest/reporters/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", @@ -3352,24 +3250,24 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "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==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -3377,9 +3275,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "license": "MIT", "engines": { @@ -3394,9 +3292,9 @@ "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", - "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3451,17 +3349,17 @@ } }, "node_modules/@mui/base": { - "version": "5.0.0-beta.26", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.26.tgz", - "integrity": "sha512-gPMRKC84VRw+tjqYoyBzyrBUqHQucMXdlBpYazHa5rCXrb91fYEQk5SqQ2U5kjxx9QxZxTBvWAmZ6DblIgaGhQ==", + "version": "5.0.0-beta.40", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", + "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.4", - "@floating-ui/react-dom": "^2.0.4", - "@mui/types": "^7.2.10", - "@mui/utils": "^5.14.20", + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", "@popperjs/core": "^2.11.8", - "clsx": "^2.0.0", + "clsx": "^2.1.0", "prop-types": "^15.8.1" }, "engines": { @@ -3483,9 +3381,9 @@ } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.14.20", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.20.tgz", - "integrity": "sha512-fXoGe8VOrIYajqALysFuyal1q1YmBARqJ3tmnWYDVl0scu8f6h6tZQbS2K8BY28QwkWNGyv4WRfuUkzN5HR3Ow==", + "version": "5.15.15", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.15.tgz", + "integrity": "sha512-aXnw29OWQ6I5A47iuWEI6qSSUfH6G/aCsW9KmW3LiFqr7uXZBK4Ks+z8G+qeIub8k0T5CMqlT2q0L+ZJTMrqpg==", "license": "MIT", "funding": { "type": "opencollective", @@ -3493,12 +3391,12 @@ } }, "node_modules/@mui/icons-material": { - "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==", + "version": "5.15.15", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.15.15.tgz", + "integrity": "sha512-kkeU/pe+hABcYDH6Uqy8RmIsr2S/y5bP2rp+Gat4CcRjCcVne6KudS1NrZQhUCRysrTDCAhcbcf9gt+/+pGO2g==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.4" + "@babel/runtime": "^7.23.9" }, "engines": { "node": ">=12.0.0" @@ -3519,20 +3417,20 @@ } }, "node_modules/@mui/material": { - "version": "5.14.20", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.20.tgz", - "integrity": "sha512-SUcPZnN6e0h1AtrDktEl76Dsyo/7pyEUQ+SAVe9XhHg/iliA0b4Vo+Eg4HbNkELsMbpDsUF4WHp7rgflPG7qYQ==", - "license": "MIT", - "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", + "version": "5.15.15", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.15.tgz", + "integrity": "sha512-3zvWayJ+E1kzoIsvwyEvkTUKVKt1AjchFFns+JtluHCuvxgKcLSRJTADw37k0doaRtVAsyh8bz9Afqzv+KYrIA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.40", + "@mui/core-downloads-tracker": "^5.15.15", + "@mui/system": "^5.15.15", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1", "react-is": "^18.2.0", "react-transition-group": "^4.4.5" @@ -3564,13 +3462,13 @@ } }, "node_modules/@mui/private-theming": { - "version": "5.14.20", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.14.20.tgz", - "integrity": "sha512-WV560e1vhs2IHCh0pgUaWHznrcrVoW9+cDCahU1VTkuwPokWVvb71ccWQ1f8Y3tRBPPcNkU2dChkkRJChLmQlQ==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.14.tgz", + "integrity": "sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.4", - "@mui/utils": "^5.14.20", + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.14", "prop-types": "^15.8.1" }, "engines": { @@ -3591,14 +3489,14 @@ } }, "node_modules/@mui/styled-engine": { - "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==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz", + "integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.4", + "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", - "csstype": "^3.1.2", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -3623,18 +3521,18 @@ } }, "node_modules/@mui/system": { - "version": "5.14.20", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.20.tgz", - "integrity": "sha512-jKOGtK4VfYZG5kdaryUHss4X6hzcfh0AihT8gmnkfqRtWP7xjY+vPaUhhuSeibE5sqA5wCtdY75z6ep9pxFnIg==", - "license": "MIT", - "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", + "version": "5.15.15", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.15.tgz", + "integrity": "sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.14", + "@mui/styled-engine": "^5.15.14", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.14", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -3663,9 +3561,9 @@ } }, "node_modules/@mui/types": { - "version": "7.2.10", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.10.tgz", - "integrity": "sha512-wX1vbDC+lzF7FlhT6A3ffRZgEoKWPF8VqRoTu4lZwouFX2t90KyCMsgepMw5DxLak1BSp/KP86CmtZttikb/gQ==", + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", + "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", "license": "MIT", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" @@ -3677,12 +3575,12 @@ } }, "node_modules/@mui/utils": { - "version": "5.14.20", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.20.tgz", - "integrity": "sha512-Y6yL5MoFmtQml20DZnaaK1znrCEwG6/vRSzW8PKOTrzhyqKIql0FazZRUR7sA5EPASgiyKZfq0FPwISRXm5NdA==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.14.tgz", + "integrity": "sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.4", + "@babel/runtime": "^7.23.9", "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" @@ -3766,9 +3664,9 @@ } }, "node_modules/@polka/url": { - "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==", + "version": "1.0.0-next.25", + "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", + "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", "dev": true, "license": "MIT" }, @@ -4476,9 +4374,9 @@ } }, "node_modules/@remix-run/router": { - "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==", + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", + "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", "license": "MIT", "engines": { "node": ">=14.0.0" @@ -4507,17 +4405,10 @@ } } }, - "node_modules/@rollup/pluginutils/node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.9.2.tgz", - "integrity": "sha512-RKzxFxBHq9ysZ83fn8Iduv3A283K7zPPYuhL/z9CQuyFrjwpErJx0h4aeb/bnJ+q29GRLgJpY66ceQ/Wcsn3wA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.14.3.tgz", + "integrity": "sha512-X9alQ3XM6I9IlSlmC8ddAvMSyG1WuHk5oUnXGw+yUBs3BFoTizmG1La/Gr8fVJvDWAq+zlYTZ9DBgrlKRVY06g==", "cpu": [ "arm" ], @@ -4528,9 +4419,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.9.2.tgz", - "integrity": "sha512-yZ+MUbnwf3SHNWQKJyWh88ii2HbuHCFQnAYTeeO1Nb8SyEiWASEi5dQUygt3ClHWtA9My9RQAYkjvrsZ0WK8Xg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.14.3.tgz", + "integrity": "sha512-eQK5JIi+POhFpzk+LnjKIy4Ks+pwJ+NXmPxOCSvOKSNRPONzKuUvWE+P9JxGZVxrtzm6BAYMaL50FFuPe0oWMQ==", "cpu": [ "arm64" ], @@ -4541,9 +4432,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.9.2.tgz", - "integrity": "sha512-vqJ/pAUh95FLc/G/3+xPqlSBgilPnauVf2EXOQCZzhZJCXDXt/5A8mH/OzU6iWhb3CNk5hPJrh8pqJUPldN5zw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.14.3.tgz", + "integrity": "sha512-Od4vE6f6CTT53yM1jgcLqNfItTsLt5zE46fdPaEmeFHvPs5SjZYlLpHrSiHEKR1+HdRfxuzXHjDOIxQyC3ptBA==", "cpu": [ "arm64" ], @@ -4555,9 +4446,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.9.2.tgz", - "integrity": "sha512-otPHsN5LlvedOprd3SdfrRNhOahhVBwJpepVKUN58L0RnC29vOAej1vMEaVU6DadnpjivVsNTM5eNt0CcwTahw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.14.3.tgz", + "integrity": "sha512-0IMAO21axJeNIrvS9lSe/PGthc8ZUS+zC53O0VhF5gMxfmcKAP4ESkKOCwEi6u2asUrt4mQv2rjY8QseIEb1aw==", "cpu": [ "x64" ], @@ -4568,9 +4459,22 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.9.2.tgz", - "integrity": "sha512-ewG5yJSp+zYKBYQLbd1CUA7b1lSfIdo9zJShNTyc2ZP1rcPrqyZcNlsHgs7v1zhgfdS+kW0p5frc0aVqhZCiYQ==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.14.3.tgz", + "integrity": "sha512-ge2DC7tHRHa3caVEoSbPRJpq7azhG+xYsd6u2MEnJ6XzPSzQsTKyXvh6iWjXRf7Rt9ykIUWHtl0Uz3T6yXPpKw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.14.3.tgz", + "integrity": "sha512-ljcuiDI4V3ySuc7eSk4lQ9wU8J8r8KrOUvB2U+TtK0TiW6OFDmJ+DdIjjwZHIw9CNxzbmXY39wwpzYuFDwNXuw==", "cpu": [ "arm" ], @@ -4581,9 +4485,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.9.2.tgz", - "integrity": "sha512-pL6QtV26W52aCWTG1IuFV3FMPL1m4wbsRG+qijIvgFO/VBsiXJjDPE/uiMdHBAO6YcpV4KvpKtd0v3WFbaxBtg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.14.3.tgz", + "integrity": "sha512-Eci2us9VTHm1eSyn5/eEpaC7eP/mp5n46gTRB3Aar3BgSvDQGJZuicyq6TsH4HngNBgVqC5sDYxOzTExSU+NjA==", "cpu": [ "arm64" ], @@ -4605,10 +4509,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.14.3.tgz", + "integrity": "sha512-5aRjvsS8q1nWN8AoRfrq5+9IflC3P1leMoy4r2WjXyFqf3qcqsxRCfxtZIV58tCxd+Yv7WELPcO9mY9aeQyAmw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.9.2.tgz", - "integrity": "sha512-Wnx/IVMSZ31D/cO9HSsU46FjrPWHqtdF8+0eyZ1zIB5a6hXaZXghUKpRrC4D5DcRTZOjml2oBhXoqfGYyXKipw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.14.3.tgz", + "integrity": "sha512-sk/Qh1j2/RJSX7FhEpJn8n0ndxy/uf0kI/9Zc4b1ELhqULVdTfN6HL31CDaTChiBAOgLcsJ1sgVZjWv8XNEsAQ==", "cpu": [ "riscv64" ], @@ -4618,10 +4535,23 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.14.3.tgz", + "integrity": "sha512-jOO/PEaDitOmY9TgkxF/TQIjXySQe5KVYB57H/8LRP/ux0ZoO8cSHCX17asMSv3ruwslXW/TLBcxyaUzGRHcqg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.9.2.tgz", - "integrity": "sha512-ym5x1cj4mUAMBummxxRkI4pG5Vht1QMsJexwGP8547TZ0sox9fCLDHw9KCH9c1FO5d9GopvkaJsBIOkTKxksdw==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.14.3.tgz", + "integrity": "sha512-8ybV4Xjy59xLMyWo3GCfEGqtKV5M5gCSrZlxkPGvEPCGDLNla7v48S662HSGwRd6/2cSneMQWiv+QzcttLrrOA==", "cpu": [ "x64" ], @@ -4632,9 +4562,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.9.2.tgz", - "integrity": "sha512-m0hYELHGXdYx64D6IDDg/1vOJEaiV8f1G/iO+tejvRCJNSwK4jJ15e38JQy5Q6dGkn1M/9KcyEOwqmlZ2kqaZg==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.14.3.tgz", + "integrity": "sha512-s+xf1I46trOY10OqAtZ5Rm6lzHre/UiLA1J2uOhCFXWkbZrJRkYBPO6FhvGfHmdtQ3Bx793MNa7LvoWFAm93bg==", "cpu": [ "x64" ], @@ -4645,9 +4575,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.9.2.tgz", - "integrity": "sha512-x1CWburlbN5JjG+juenuNa4KdedBdXLjZMp56nHFSHTOsb/MI2DYiGzLtRGHNMyydPGffGId+VgjOMrcltOksA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.14.3.tgz", + "integrity": "sha512-+4h2WrGOYsOumDQ5S2sYNyhVfrue+9tc9XcLWLh+Kw3UOxAvrfOrSMFon60KspcDdytkNDh7K2Vs6eMaYImAZg==", "cpu": [ "arm64" ], @@ -4658,9 +4588,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.9.2.tgz", - "integrity": "sha512-VVzCB5yXR1QlfsH1Xw1zdzQ4Pxuzv+CPr5qpElpKhVxlxD3CRdfubAG9mJROl6/dmj5gVYDDWk8sC+j9BI9/kQ==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.14.3.tgz", + "integrity": "sha512-T1l7y/bCeL/kUwh9OD4PQT4aM7Bq43vX05htPJJ46RTI4r5KNt6qJRzAfNfM+OYMNEVBWQzR2Gyk+FXLZfogGw==", "cpu": [ "ia32" ], @@ -4671,9 +4601,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.9.2.tgz", - "integrity": "sha512-SYRedJi+mweatroB+6TTnJYLts0L0bosg531xnQWtklOI6dezEagx4Q0qDyvRdK+qgdA3YZpjjGuPFtxBmddBA==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.14.3.tgz", + "integrity": "sha512-/BypzV0H1y1HzgYpxqRaXGBRqfodgoBBCcsrujT6QRcakDQdfU+Lq9PENPh5jB4I44YWq+0C2eHsHya+nZY1sA==", "cpu": [ "x64" ], @@ -4684,72 +4614,89 @@ ] }, "node_modules/@sentry-internal/feedback": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.85.0.tgz", - "integrity": "sha512-MlbIN+N8CWFJBjbqMmARe4+UPo9QRhRar0YoOfmNA2Xqk/EwXcjHWkealosHznXH7tqVbjB25QJpHtDystft/Q==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.110.1.tgz", + "integrity": "sha512-0aR3wuEW+SZKOVNamuy0pTQyPmqDjWPPLrB2GAXGT3ZjrVxjEzzVPqk6DVBYxSV2MuJaD507SZnvfoSPNgoBmw==", + "license": "MIT", + "dependencies": { + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sentry-internal/replay-canvas": { + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.110.1.tgz", + "integrity": "sha512-zdcCmWFXM4DHOau/BCZVb6jf9zozdbAiJ1MzQ6azuZEuysOl00YfktoWZBbZjjjpWT6025s+wrmFz54t0O+enw==", "license": "MIT", "dependencies": { - "@sentry/core": "7.85.0", - "@sentry/types": "7.85.0", - "@sentry/utils": "7.85.0" + "@sentry/core": "7.110.1", + "@sentry/replay": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.85.0.tgz", - "integrity": "sha512-p3YMUwkPCy2su9cm/3+7QYR4RiMI0+07DU1BZtht9NLTzY2O87/yvUbn1v2yHR3vJQTy/+7N0ud9/mPBFznRQQ==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.110.1.tgz", + "integrity": "sha512-4kTd6EM0OP1SVWl2yLn3KIwlCpld1lyhNDeR8G1aKLm1PN+kVsR6YB/jy9KPPp4Q3lN3W9EkTSES3qhP4jVffQ==", "license": "MIT", "dependencies": { - "@sentry/core": "7.85.0", - "@sentry/types": "7.85.0", - "@sentry/utils": "7.85.0" + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/browser": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.85.0.tgz", - "integrity": "sha512-x4sH7vTQnZQgy1U7NuN8XwhleAw7YMQitccHeC5m+kpIKGUO7w4Mdvu8rD3dnjmVmZvASpnwocAxy57/vCU6Ww==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.110.1.tgz", + "integrity": "sha512-H3TZlbdsgxuoVxhotMtBDemvAofx3UPNcS+UjQ40Bd+hKX01IIbEN3i+9RQ0jmcbU6xjf+yhjwp+Ejpm4FmYMw==", "license": "MIT", "dependencies": { - "@sentry-internal/feedback": "7.85.0", - "@sentry-internal/tracing": "7.85.0", - "@sentry/core": "7.85.0", - "@sentry/replay": "7.85.0", - "@sentry/types": "7.85.0", - "@sentry/utils": "7.85.0" + "@sentry-internal/feedback": "7.110.1", + "@sentry-internal/replay-canvas": "7.110.1", + "@sentry-internal/tracing": "7.110.1", + "@sentry/core": "7.110.1", + "@sentry/replay": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/core": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.85.0.tgz", - "integrity": "sha512-DFDAc4tWmHN5IWhr7XbHCiyF1Xgb95jz8Uj/JTX9atlgodId1UIbER77qpEmH3eQGid/QBdqrlR98zCixgSbwg==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.110.1.tgz", + "integrity": "sha512-yC1yeUFQlmHj9u/KxKmwOMVanBmgfX+4MZnZU31QPqN95adyZTwpaYFZl4fH5kDVnz7wXJI0qRP8SxuMePtqhw==", "license": "MIT", "dependencies": { - "@sentry/types": "7.85.0", - "@sentry/utils": "7.85.0" + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.85.0.tgz", - "integrity": "sha512-digw63l1A9n+74rW8uiG575Xh3qWTkmvwgTfNRFvDokDRMqRTP0iQEqZRBrBEzMZ5JUa6s+5NLc1/dbMh1QQgA==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.110.1.tgz", + "integrity": "sha512-kXdMrDexPyBf0KP/IfgCk5NS1Yfz6tFK/+UKWTxEM5PVRZkHzV7CBdd50IFGL3xMGbJmtE5Bly6WzezqUgWZ5w==", "license": "MIT", "dependencies": { - "@sentry/browser": "7.85.0", - "@sentry/types": "7.85.0", - "@sentry/utils": "7.85.0", + "@sentry/browser": "7.110.1", + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -4760,45 +4707,45 @@ } }, "node_modules/@sentry/replay": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.85.0.tgz", - "integrity": "sha512-zVtTKfO+lu5qTwHpETI/oGo8hU3rdKHr3CdI1vRLw+d60PcAa/pWVlXsQeLRTw8PFwE358gHcpFZezj/11afew==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.110.1.tgz", + "integrity": "sha512-R49fGOuKYsJ97EujPTzMjs3ZSuSkLTFFQmVBbsu/o6beRp4kK9l8H7r2BfLEcWJOXdWO5EU4KpRWgIxHaDK2aw==", "license": "MIT", "dependencies": { - "@sentry-internal/tracing": "7.85.0", - "@sentry/core": "7.85.0", - "@sentry/types": "7.85.0", - "@sentry/utils": "7.85.0" + "@sentry-internal/tracing": "7.110.1", + "@sentry/core": "7.110.1", + "@sentry/types": "7.110.1", + "@sentry/utils": "7.110.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/types": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.85.0.tgz", - "integrity": "sha512-R5jR4XkK5tBU2jDiPdSVqzkmjYRr666bcGaFGUHB/xDQCjPsjk+pEmCCL+vpuWoaZmQJUE1hVU7rgnVX81w8zg==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.110.1.tgz", + "integrity": "sha512-sZxOpM5gfyxvJeWVvNpHnxERTnlqcozjqNcIv29SZ6wonlkekmxDyJ3uCuPv85VO54WLyA4uzskPKnNFHacI8A==", "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.85.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.85.0.tgz", - "integrity": "sha512-JZ7seNOLvhjAQ8GeB3GYknPQJkuhF88xAYOaESZP3xPOWBMFUN+IO4RqjMqMLFDniOwsVQS7GB/MfP+hxufieg==", + "version": "7.110.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.110.1.tgz", + "integrity": "sha512-eibLo2m1a7sHkOHxYYmRujr3D7ek2l9sv26F1SLoQBVDF7Afw5AKyzPmtA1D+4M9P/ux1okj7cGj3SaBrVpxXA==", "license": "MIT", "dependencies": { - "@sentry/types": "7.85.0" + "@sentry/types": "7.110.1" }, "engines": { "node": ">=8" } }, "node_modules/@sideway/address": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", - "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4827,9 +4774,9 @@ "license": "MIT" }, "node_modules/@sinonjs/commons": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", - "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -4847,13 +4794,13 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.3.tgz", - "integrity": "sha512-f4HXteYE8IJXztAK+ab5heSjXWNWvyIAU63T3Fqe3zmqONwCerUKY54Op+RkAZc/R6aALTxvGRKAH2ff8g2vjQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.17.tgz", + "integrity": "sha512-TBphs4v6LRfyTpFo/WINF0TkMaE3rrNog7wW5mbz6n0j8o53kDN4o9ZEcygSL5zQX43CAaghQTeDCss7ueG7ZQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-events": "7.6.3", + "@storybook/core-events": "7.6.17", "@storybook/global": "^5.0.0", "@types/uuid": "^9.0.1", "dequal": "^2.0.2", @@ -4880,9 +4827,9 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.3.tgz", - "integrity": "sha512-ZZFNf8FBYBsuXvXdVk3sBgxJTn6s0HznuEE9OmAA7tMsLEDlUiWS9LEvjX2jX5K0kWivHTkJDTXV0NcLL1vWAg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.17.tgz", + "integrity": "sha512-7dize7x8+37PH77kmt69b0xSaeDqOcZ4fpzW6+hk53hIaCVU26eGs4+j+743Xva31eOgZWNLupUhOpUDc6SqZw==", "dev": true, "license": "MIT", "dependencies": { @@ -4896,13 +4843,13 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.3.tgz", - "integrity": "sha512-xsM3z+CY1YOPqrcCldQLoon947fbd/o3gSO7hM3NwKiw/2WikExPO3VM4R2oi4W4PvnhkSOIO+ZDRuSs1yFmOg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.17.tgz", + "integrity": "sha512-zR0aLaUF7FtV/nMRyfniFbCls/e0DAAoXACuOAUAwNAv0lbIS8AyZZiHSmKucCvziUQ6WceeCC7+du3C+9y0rQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/blocks": "7.6.3", + "@storybook/blocks": "7.6.17", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" }, @@ -4912,9 +4859,9 @@ } }, "node_modules/@storybook/addon-coverage": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@storybook/addon-coverage/-/addon-coverage-1.0.0.tgz", - "integrity": "sha512-7RMllRtDwyWH2fOeCS7ZG8o5eDTd44C0ZwA+m7dJDrnOXled75RddBPMYF+BsJjeAAWOkWxsII05EKCgS7QG2A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@storybook/addon-coverage/-/addon-coverage-1.0.1.tgz", + "integrity": "sha512-jGDYPBbh3+LXMDw0Nmw+fUEDH3kuHvHSOjE1fqi4ac00CnwHnyD5PD6RFSpVxR4Fw/tCDPmKEubbOzQCSZGyJg==", "dev": true, "license": "MIT", "dependencies": { @@ -4930,15 +4877,15 @@ } }, "node_modules/@storybook/addon-coverage/node_modules/istanbul-lib-instrument": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", - "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", + "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", "istanbul-lib-coverage": "^3.2.0", "semver": "^7.5.4" }, @@ -4946,6 +4893,22 @@ "node": ">=10" } }, + "node_modules/@storybook/addon-coverage/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@storybook/addon-coverage/node_modules/source-map": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", @@ -4957,27 +4920,27 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.3.tgz", - "integrity": "sha512-2Ts+3EFg9ehkQdbjBWnCH1SE0BdyCLN6hO2N030tGxi0Vko9t9O7NLj5qdBwxLcEzb/XzL4zWukzfU17pktQwA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.17.tgz", + "integrity": "sha512-FKa4Mdy7nhgvEVZJHpMkHriDzpVHbohn87zv9NCL+Ctjs1iAmzGwxEm0culszyDS1HN2ToVoY0h8CSi2RSSZqA==", "dev": true, "license": "MIT", "dependencies": { "@jest/transform": "^29.3.1", "@mdx-js/react": "^2.1.5", - "@storybook/blocks": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/components": "7.6.3", - "@storybook/csf-plugin": "7.6.3", - "@storybook/csf-tools": "7.6.3", + "@storybook/blocks": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/csf-tools": "7.6.17", "@storybook/global": "^5.0.0", "@storybook/mdx2-csf": "^1.0.0", - "@storybook/node-logger": "7.6.3", - "@storybook/postinstall": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/react-dom-shim": "7.6.3", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/node-logger": "7.6.17", + "@storybook/postinstall": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "fs-extra": "^11.1.0", "remark-external-links": "^8.0.0", "remark-slug": "^6.0.0", @@ -4993,25 +4956,25 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.3.tgz", - "integrity": "sha512-bpbt5O0wcB83VLZg8QMXut+8g+7EF4iuevpwiynN9mbpQFvG49c6SE6T2eFJKTvVb4zszyfcNA0Opne2G83wZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/addon-actions": "7.6.3", - "@storybook/addon-backgrounds": "7.6.3", - "@storybook/addon-controls": "7.6.3", - "@storybook/addon-docs": "7.6.3", - "@storybook/addon-highlight": "7.6.3", - "@storybook/addon-measure": "7.6.3", - "@storybook/addon-outline": "7.6.3", - "@storybook/addon-toolbars": "7.6.3", - "@storybook/addon-viewport": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/manager-api": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/preview-api": "7.6.3", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.17.tgz", + "integrity": "sha512-qlSpamxuYfT2taF953nC9QijGF2pSbg1ewMNpdwLTj16PTZvR/d8NCDMTJujI1bDwM2m18u8Yc43ibh5LEmxCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@storybook/addon-actions": "7.6.17", + "@storybook/addon-backgrounds": "7.6.17", + "@storybook/addon-controls": "7.6.17", + "@storybook/addon-docs": "7.6.17", + "@storybook/addon-highlight": "7.6.17", + "@storybook/addon-measure": "7.6.17", + "@storybook/addon-outline": "7.6.17", + "@storybook/addon-toolbars": "7.6.17", + "@storybook/addon-viewport": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/manager-api": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", "ts-dedent": "^2.0.0" }, "funding": { @@ -5024,9 +4987,9 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.3.tgz", - "integrity": "sha512-Z9AJ05XCTzFZPAxQSkQf9/Hazf5/QQI0jYSsvKqt7Vk+03q5727oD9KcIY5IHPYqQqN9fHExQh1eyqY8AnS8mg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.17.tgz", + "integrity": "sha512-R1yBPUUqGn+60aJakn8q+5Zt34E/gU3n3VmgPdryP0LJUdZ5q1/RZShoVDV+yYQ40htMH6oaCv3OyyPzFAGJ6A==", "dev": true, "license": "MIT", "dependencies": { @@ -5038,14 +5001,14 @@ } }, "node_modules/@storybook/addon-interactions": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.6.3.tgz", - "integrity": "sha512-Gm2UJvQC8xs9KIbVZQegTLT3VBsEZIRsXy3htNqWjSdoJZK5M4/YJ3jB247CA/Jc+Mkj7d5SlJe+bCGEzjKTbw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.6.17.tgz", + "integrity": "sha512-6zlX+RDQ1PlA6fp7C+hun8t7h2RXfCGs5dGrhEenp2lqnR/rYuUJRC0tmKpkZBb8kZVcbSChzkB/JYkBjBCzpQ==", "dev": true, "license": "MIT", "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/types": "7.6.3", + "@storybook/types": "7.6.17", "jest-mock": "^27.0.6", "polished": "^4.2.2", "ts-dedent": "^2.2.0" @@ -5097,9 +5060,9 @@ } }, "node_modules/@storybook/addon-links": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.6.3.tgz", - "integrity": "sha512-dUIf6Y0nckxZfVQvQSqcthaycRxy69dCJLo3aORrOPL8NvGz3v1bK0AUded5wv8vnOVxfSx/Zqu7MyFr9xyjOA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.6.17.tgz", + "integrity": "sha512-iFUwKObRn0EKI0zMETsil2p9a/81rCuSMEWECsi+khkCAs1FUnD2cT6Ag5ydcNcBXsdtdfDJdtXQrkw+TSoStQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5121,9 +5084,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.3.tgz", - "integrity": "sha512-DqxADof04ktA5GSA8XnckYGdVYyC4oN8vfKSGcPzpcKrJ2uVr0BXbcyJAEcJAshEJimmpA6nH5TxabXDFBZgPQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.17.tgz", + "integrity": "sha512-O5vnHZNkduvZ95jf1UssbOl6ivIxzl5tv+4EpScPYId7w700bxWsJH+QX7ip6KlrCf2o3iUhmPe8bm05ghG2KA==", "dev": true, "license": "MIT", "dependencies": { @@ -5136,9 +5099,9 @@ } }, "node_modules/@storybook/addon-onboarding": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.9.tgz", - "integrity": "sha512-HlHm05Py18XOf4g7abiWkvb2WteoHcRNk1PY3Wtsmjuu5aAAjBmp4mVEg59xEeA2HAMICZ2fb72NIpFlBvDN+g==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.11.tgz", + "integrity": "sha512-0Sa7PJDsM6AANOWZX7vq3kgCbS9AZFjr3tfr3bLGfXviwIBKjoZDDdIErJkS3D4mNcDa78lYQvp3PTCKwLIJ9A==", "dev": true, "license": "MIT", "dependencies": { @@ -5151,9 +5114,9 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.3.tgz", - "integrity": "sha512-M7d2tcqBBl+mPBUS6Nrwis50QYSCcmT/uKamud7CnlIWsMH/5GZFfAzGSLY5ETfiGsSFYssOwrXLOV4y0enu2g==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.17.tgz", + "integrity": "sha512-9o9JXDsYjNaDgz/cY5+jv694+aik/1aiRGGvsCv68e1p/ob0glkGKav4lnJe2VJqD+gCmaARoD8GOJlhoQl8JQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5166,9 +5129,9 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.3.tgz", - "integrity": "sha512-8GpwOt0J5yLrJhTr9/h0a/LTDjt49FhdvdxiVWLlLMrjIXSIc7j193ZgoHfnlwVhJS5zojcjB+HmRw/E+AneoA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.17.tgz", + "integrity": "sha512-UMrchbUHiyWrh6WuGnpy34Jqzkx/63B+MSgb3CW7YsQaXz64kE0Rol0TNSznnB+mYXplcqH+ndI4r4kFsmgwDg==", "dev": true, "license": "MIT", "funding": { @@ -5177,9 +5140,9 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.3.tgz", - "integrity": "sha512-I9FQxHi4W7RUyZut4NziYa+nkBCpD1k2YpEDE5IwSC3lqQpDzFZN89eNWQtZ38tIU4c90jL3L1k69IHvANGHsA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.17.tgz", + "integrity": "sha512-sA0QCcf4QAMixWvn8uvRYPfkKCSl6JajJaAspoPqXSxHEpK7uwOlpg3kqFU5XJJPXD0X957M+ONgNvBzYqSpEw==", "dev": true, "license": "MIT", "dependencies": { @@ -5191,23 +5154,23 @@ } }, "node_modules/@storybook/blocks": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.3.tgz", - "integrity": "sha512-EyjyNNCZMcV9UnBSujwduiq+F1VLVX/f16fTTPqqZOHigyfrG5LoEYC6dwOC4yO/xfWY+h3qJ51yiugMxVl0Vg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.17.tgz", + "integrity": "sha512-PsNVoe0bX1mMn4Kk3nbKZ0ItDZZ0YJnYAFJ6toAbsyBAbgzg1sce88sQinzvbn58/RT9MPKeWMPB45ZS7ggiNg==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/components": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/components": "7.6.17", + "@storybook/core-events": "7.6.17", "@storybook/csf": "^0.1.2", - "@storybook/docs-tools": "7.6.3", + "@storybook/docs-tools": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/manager-api": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/manager-api": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -5244,16 +5207,16 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.3.tgz", - "integrity": "sha512-eLMjRudhiRsg7kgbmPcCkuVf2ut753fbiVR7REtqIYwq5vu8UeNOzt1vA6HgfsUj77/7+1zG8/zeyBv/5nY5mw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.17.tgz", + "integrity": "sha512-Sj8hcDYiPCCMfeLzus37czl0zdrAxAz4IyYam2jBjVymrIrcDAFyL1OCZvnq33ft179QYQWhUs9qwzVmlR/ZWg==", "dev": true, "license": "MIT", "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "7.6.3", - "@storybook/manager": "7.6.3", - "@storybook/node-logger": "7.6.3", + "@storybook/core-common": "7.6.17", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", "@types/ejs": "^3.1.1", "@types/find-cache-dir": "^3.2.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", @@ -5344,20 +5307,20 @@ } }, "node_modules/@storybook/builder-vite": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.6.3.tgz", - "integrity": "sha512-r/G/6wdwgbhMiMZ8Z+Js8VLjIo7a0DG5SxJorTHSWNi0+jyM+3Qlg3Xj96I8yL4gfTIKWVScHqHprhjRb2E64g==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/builder-vite/-/builder-vite-7.6.17.tgz", + "integrity": "sha512-2Q32qalI401EsKKr9Hkk8TAOcHEerqwsjCpQgTNJnCu6GgCVKoVUcb99oRbR9Vyg0xh+jb19XiWqqQujFtLYlQ==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/csf-plugin": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/preview": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-plugin": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", "@types/find-cache-dir": "^3.2.1", "browser-assert": "^1.2.1", "es-module-lexer": "^0.9.3", @@ -5390,14 +5353,14 @@ } }, "node_modules/@storybook/channels": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.3.tgz", - "integrity": "sha512-o9J0TBbFon16tUlU5V6kJgzAlsloJcS1cTHWqh3VWczohbRm+X1PLNUihJ7Q8kBWXAuuJkgBu7RQH7Ib46WyYg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.17.tgz", + "integrity": "sha512-GFG40pzaSxk1hUr/J/TMqW5AFDDPUSu+HkeE/oqSWJbOodBOLJzHN6CReJS6y1DjYSZLNFt1jftPWZZInG/XUA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", "@storybook/global": "^5.0.0", "qs": "^6.10.0", "telejson": "^7.2.0", @@ -5409,9 +5372,9 @@ } }, "node_modules/@storybook/cli": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.3.tgz", - "integrity": "sha512-OuYnzZlAtpGm4rDgI4ZWkNbAkddutlJh6KmoU9oQAlZP0zmETyJN8REUWjj5T9Z1AS2iXjCMGlFVd4TC8nKocw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.17.tgz", + "integrity": "sha512-1sCo+nCqyR+nKfTcEidVu8XzNoECC7Y1l+uW38/r7s2f/TdDorXaIGAVrpjbSaXSoQpx5DxYJVaKCcQuOgqwcA==", "dev": true, "license": "MIT", "dependencies": { @@ -5419,14 +5382,14 @@ "@babel/preset-env": "^7.23.2", "@babel/types": "^7.23.0", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/core-events": "7.6.3", - "@storybook/core-server": "7.6.3", - "@storybook/csf-tools": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/telemetry": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/codemod": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", + "@storybook/core-server": "7.6.17", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -5451,7 +5414,6 @@ "puppeteer-core": "^2.1.1", "read-pkg-up": "^7.0.1", "semver": "^7.3.7", - "simple-update-notifier": "^2.0.0", "strip-json-comments": "^3.0.1", "tempy": "^1.0.1", "ts-dedent": "^2.0.0", @@ -5525,10 +5487,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@storybook/cli/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@storybook/client-logger": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.3.tgz", - "integrity": "sha512-BpsCnefrBFdxD6ukMjAblm1D6zB4U5HR1I85VWw6LOqZrfzA6l/1uBxItz0XG96HTjngbvAabWf5k7ZFCx5UCg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.17.tgz", + "integrity": "sha512-6WBYqixAXNAXlSaBWwgljWpAu10tPRBJrcFvx2gPUne58EeMM20Gi/iHYBz2kMCY+JLAgeIH7ZxInqwO8vDwiQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5540,9 +5518,9 @@ } }, "node_modules/@storybook/codemod": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.3.tgz", - "integrity": "sha512-A1i8+WQfNg3frVcwSyu8E/cDkCu88Sw7JiGNnq9iW2e2oWMr2awpCDgXp8WfTK+HiDb2X1Pq5y/GmUlh3qr77Q==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.17.tgz", + "integrity": "sha512-JuTmf2u3C4fCnjO7o3dqRgrq3ozNYfWlrRP8xuIdvT7niMap7a396hJtSKqS10FxCgKFcMAOsRgrCalH1dWxUg==", "dev": true, "license": "MIT", "dependencies": { @@ -5550,9 +5528,9 @@ "@babel/preset-env": "^7.23.2", "@babel/types": "^7.23.0", "@storybook/csf": "^0.1.2", - "@storybook/csf-tools": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/csf-tools": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^11.0.2", @@ -5567,19 +5545,19 @@ } }, "node_modules/@storybook/components": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.3.tgz", - "integrity": "sha512-UNV0WoUo+W0huOLvoEMuqRN/VB4p0CNswrXN1mi/oGWvAFJ8idu63lSuV4uQ/LKxAZ6v3Kpdd+oK/o+OeOoL6w==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.17.tgz", + "integrity": "sha512-lbh7GynMidA+CZcJnstVku6Nhs+YkqjYaZ+mKPugvlVhGVWv0DaaeQFVuZ8cJtUGJ/5FFU4Y+n+gylYUHkGBMA==", "dev": true, "license": "MIT", "dependencies": { "@radix-ui/react-select": "^1.2.2", "@radix-ui/react-toolbar": "^1.0.4", - "@storybook/client-logger": "7.6.3", + "@storybook/client-logger": "7.6.17", "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "memoizerific": "^1.11.3", "use-resize-observer": "^9.1.0", "util-deprecate": "^1.0.2" @@ -5594,14 +5572,14 @@ } }, "node_modules/@storybook/core-client": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.3.tgz", - "integrity": "sha512-RM0Svlajddl8PP4Vq7LK8T22sFefNcTDgo82iRPZzGz0oH8LT0oXGFanj2Nkn0jruOBFClkiJ7EcwrbGJZHELg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.17.tgz", + "integrity": "sha512-LuDbADK+DPNAOOCXOlvY09hdGVueXlDetsdOJ/DgYnSa9QSWv9Uv+F8QcEgR3QckZJbPlztKJIVLgP2n/Xkijw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/preview-api": "7.6.3" + "@storybook/client-logger": "7.6.17", + "@storybook/preview-api": "7.6.17" }, "funding": { "type": "opencollective", @@ -5609,15 +5587,15 @@ } }, "node_modules/@storybook/core-common": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.3.tgz", - "integrity": "sha512-/ZE4BEyGwBHCQCOo681GyBKF4IqCiwVV/ZJCHTMTHFCPLJT2r+Qwv4tnI7xt1kwflOlbBlG6B6CvAqTjjVw/Ew==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.17.tgz", + "integrity": "sha512-me2TP3Q9/qzqCLoDHUSsUF+VS1MHxfHbTVF6vAz0D/COTxzsxLpu9TxTbzJoBCxse6XRb6wWI1RgF1mIcjic7g==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-events": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/core-events": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/types": "7.6.17", "@types/find-cache-dir": "^3.2.1", "@types/node": "^18.0.0", "@types/node-fetch": "^2.6.4", @@ -5662,9 +5640,9 @@ } }, "node_modules/@storybook/core-common/node_modules/@types/node": { - "version": "18.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.2.tgz", - "integrity": "sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==", + "version": "18.19.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", + "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", "dev": true, "license": "MIT", "dependencies": { @@ -5757,17 +5735,17 @@ } }, "node_modules/@storybook/core-common/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" @@ -5796,9 +5774,9 @@ } }, "node_modules/@storybook/core-common/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "license": "ISC", "dependencies": { @@ -5864,9 +5842,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.3.tgz", - "integrity": "sha512-Vu3JX1mjtR8AX84lyqWsi2s2lhD997jKRWVznI3wx+UpTk8t7TTMLFk2rGYJRjaornhrqwvLYpnmtxRSxW9BOQ==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.17.tgz", + "integrity": "sha512-AriWMCm/k1cxlv10f+jZ1wavThTRpLaN3kY019kHWbYT9XgaSuLU67G7GPr3cGnJ6HuA6uhbzu8qtqVCd6OfXA==", "dev": true, "license": "MIT", "dependencies": { @@ -5878,27 +5856,27 @@ } }, "node_modules/@storybook/core-server": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.3.tgz", - "integrity": "sha512-IsM24MmiFmtZeyqoijiExpIPkJNBaWQg9ttkkHS6iYwf3yFNBpYVbvuX2OpT7FDdiF3uTl0R8IvfnJR58tHD7w==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.17.tgz", + "integrity": "sha512-KWGhTTaL1Q14FolcoKKZgytlPJUbH6sbJ1Ptj/84EYWFewcnEgVs0Zlnh1VStRZg+Rd1WC1V4yVd/bbDzxrvQA==", "dev": true, "license": "MIT", "dependencies": { "@aw-web-design/x-default-browser": "1.4.126", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "7.6.3", - "@storybook/channels": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/builder-manager": "7.6.17", + "@storybook/channels": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/core-events": "7.6.17", "@storybook/csf": "^0.1.2", - "@storybook/csf-tools": "7.6.3", + "@storybook/csf-tools": "7.6.17", "@storybook/docs-mdx": "^0.1.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "7.6.3", - "@storybook/node-logger": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/telemetry": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/manager": "7.6.17", + "@storybook/node-logger": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/telemetry": "7.6.17", + "@storybook/types": "7.6.17", "@types/detect-port": "^1.3.0", "@types/node": "^18.0.0", "@types/pretty-hrtime": "^1.0.0", @@ -5911,7 +5889,7 @@ "express": "^4.17.3", "fs-extra": "^11.1.0", "globby": "^11.0.2", - "ip": "^2.0.0", + "ip": "^2.0.1", "lodash": "^4.17.21", "open": "^8.4.0", "pretty-hrtime": "^1.0.3", @@ -5932,41 +5910,35 @@ } }, "node_modules/@storybook/core-server/node_modules/@types/node": { - "version": "18.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.2.tgz", - "integrity": "sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==", + "version": "18.19.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", + "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, - "node_modules/@storybook/core-server/node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "node_modules/@storybook/core-server/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "engines": { + "node": ">=10" } }, "node_modules/@storybook/csf": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", - "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.4.tgz", + "integrity": "sha512-B9UI/lsQMjF+oEfZCI6YXNoeuBcGZoOP5x8yKbe2tIEmsMjSztFKkpPzi5nLCnBk/MBtl6QJeI3ksJnbsWPkOw==", "dev": true, "license": "MIT", "dependencies": { @@ -5974,13 +5946,13 @@ } }, "node_modules/@storybook/csf-plugin": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.3.tgz", - "integrity": "sha512-8bMYPsWw2tv+fqZ5H436l4x1KLSB6gIcm6snsjyF916yCHG6WcWm+EI6+wNUoySEtrQY2AiwFJqE37wI5OUJFg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.17.tgz", + "integrity": "sha512-xTHv9BUh3bkDVCvcbmdfVF0/e96BdrEgqPJ3G3RmKbSzWLOkQ2U9yiPfHzT0KJWPhVwj12fjfZp0zunu+pcS6Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/csf-tools": "7.6.3", + "@storybook/csf-tools": "7.6.17", "unplugin": "^1.3.1" }, "funding": { @@ -5989,9 +5961,9 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.3.tgz", - "integrity": "sha512-Zi3pg2pg88/mvBKewkfWhFUR1J4uYpHI5fSjOE+J/FeZObX/DIE7r+wJxZ0UBGyrk0Wy7Jajlb2uSP56Y0i19w==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.17.tgz", + "integrity": "sha512-dAQtam0EBPeTJYcQPLxXgz4L9JFqD+HWbLFG9CmNIhMMjticrB0mpk1EFIS6vPXk/VsVWpBgMLD7dZlD6YMKcQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6000,7 +5972,7 @@ "@babel/traverse": "^7.23.2", "@babel/types": "^7.23.0", "@storybook/csf": "^0.1.2", - "@storybook/types": "7.6.3", + "@storybook/types": "7.6.17", "fs-extra": "^11.1.0", "recast": "^0.23.1", "ts-dedent": "^2.0.0" @@ -6018,15 +5990,15 @@ "license": "MIT" }, "node_modules/@storybook/docs-tools": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.3.tgz", - "integrity": "sha512-6MtirRCQIkBeQ3bksPignZgUuFmjWqcFleTEN6vrNEfbCzMlMvuBGfm9tl4sS3n8ATWmKGj87DcJepPOT3FB4A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.17.tgz", + "integrity": "sha512-bYrLoj06adqklyLkEwD32C0Ww6t+9ZVvrJHiVT42bIhTRpFiFPAetl1a9KPHtFLnfduh4n2IxIr1jv32ThPDTA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/core-common": "7.6.3", - "@storybook/preview-api": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/core-common": "7.6.17", + "@storybook/preview-api": "7.6.17", + "@storybook/types": "7.6.17", "@types/doctrine": "^0.0.3", "assert": "^2.1.0", "doctrine": "^3.0.0", @@ -6083,133 +6055,59 @@ "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "node_modules/@storybook/jest/node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@storybook/jest/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@types/yargs-parser": "*" + } + }, + "node_modules/@storybook/jest/node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" }, "engines": { - "node": ">=10" - }, + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@storybook/manager": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.17.tgz", + "integrity": "sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw==", + "dev": true, + "license": "MIT", "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/jest/node_modules/@testing-library/jest-dom": { - "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==", + "node_modules/@storybook/manager-api": { + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.17.tgz", + "integrity": "sha512-IJIV1Yc6yw1dhCY4tReHCfBnUKDqEBnMyHp3mbXpsaHxnxJZrXO45WjRAZIKlQKhl/Ge1CrnznmHRCmYgqmrWg==", "dev": true, "license": "MIT", "dependencies": { - "@adobe/css-tools": "^4.3.1", - "@babel/runtime": "^7.9.2", - "aria-query": "^5.0.0", - "chalk": "^3.0.0", - "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=14", - "npm": ">=6", - "yarn": ">=1" - }, - "peerDependencies": { - "@jest/globals": ">= 28", - "@types/jest": ">= 28", - "jest": ">= 28", - "vitest": ">= 0.32" - }, - "peerDependenciesMeta": { - "@jest/globals": { - "optional": true - }, - "@types/jest": { - "optional": true - }, - "jest": { - "optional": true - }, - "vitest": { - "optional": true - } - } - }, - "node_modules/@storybook/jest/node_modules/@types/yargs": { - "version": "16.0.9", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", - "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@storybook/jest/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@storybook/jest/node_modules/jest-mock": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", - "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@storybook/manager": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.3.tgz", - "integrity": "sha512-6eMaogHANCSVV2zLPt4Q7fp8RT+AdlOe6IR0583AuqpepcFzj33iGNYABk2rmXAlkD0WzoLcC4H5mouU0fduLA==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/storybook" - } - }, - "node_modules/@storybook/manager-api": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.3.tgz", - "integrity": "sha512-soDH7GZuukkhYRGzlw4jhCm5EzjfkuIAtb37/DFplqxuVbvlyJEVzkMUM2KQO7kq0/8GlWPiZ5mn56wagYyhKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/router": "7.6.3", - "@storybook/theming": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/router": "7.6.17", + "@storybook/theming": "7.6.17", + "@storybook/types": "7.6.17", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", - "semver": "^7.3.7", "store2": "^2.14.2", "telejson": "^7.2.0", "ts-dedent": "^2.0.0" @@ -6227,9 +6125,9 @@ "license": "MIT" }, "node_modules/@storybook/node-logger": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.3.tgz", - "integrity": "sha512-7yL0CMHuh1DhpUAoKCU0a53DvxBpkUom9SX5RaC1G2A9BK/B3XcHtDPAC0uyUwNCKLJMZo9QtmJspvxWjR0LtA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.17.tgz", + "integrity": "sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA==", "dev": true, "license": "MIT", "funding": { @@ -6238,9 +6136,9 @@ } }, "node_modules/@storybook/postinstall": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.3.tgz", - "integrity": "sha512-WpgdpJpY6rionluxjFZLbKiSDjvQJ5cPgufjvBRuXTsnVOsH3JNRWnPdkQkJLT9uTUMoNcyBMxbjYkK3vU6wSg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.17.tgz", + "integrity": "sha512-WaWqB8o9vUc9aaVls+povQSVirf1Xd1LZcVhUKfAocAF3mzYUsnJsVqvnbjRj/F96UFVihOyDt9Zjl/9OvrCvQ==", "dev": true, "license": "MIT", "funding": { @@ -6249,9 +6147,9 @@ } }, "node_modules/@storybook/preview": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.3.tgz", - "integrity": "sha512-obSmKN8arWSHuLbCDM1H0lTVRMvAP/l7vOi6TQtFi6TxBz9MRCJA3Ugc0PZrbDADVZP+cp0ZJA0JQtAm+SqNAA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.17.tgz", + "integrity": "sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw==", "dev": true, "license": "MIT", "funding": { @@ -6260,18 +6158,18 @@ } }, "node_modules/@storybook/preview-api": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.3.tgz", - "integrity": "sha512-uPaK7yLE1P++F+IOb/1j9pgdCwfMYZrUPHogF/Mf9r4cfEjDCcIeKgGMcsbU1KnkzNQQGPh8JRzRr/iYnLjswg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.17.tgz", + "integrity": "sha512-wLfDdI9RWo1f2zzFe54yRhg+2YWyxLZvqdZnSQ45mTs4/7xXV5Wfbv3QNTtcdw8tT3U5KRTrN1mTfTCiRJc0Kw==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", - "@storybook/client-logger": "7.6.3", - "@storybook/core-events": "7.6.3", + "@storybook/channels": "7.6.17", + "@storybook/client-logger": "7.6.17", + "@storybook/core-events": "7.6.17", "@storybook/csf": "^0.1.2", "@storybook/global": "^5.0.0", - "@storybook/types": "7.6.3", + "@storybook/types": "7.6.17", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -6287,19 +6185,19 @@ } }, "node_modules/@storybook/react": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.3.tgz", - "integrity": "sha512-W+530cC0BAU+yBc7NzSXYWR3e8Lo5qMsmFJjWYK7zGW/YZGhSG3mjhF9pDzNM+cMtHvUS6qf5PJPQM8jePpPhg==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.17.tgz", + "integrity": "sha512-lVqzQSU03rRJWYW+gK2gq6mSo3/qtnVICY8B8oP7gc36jVu4ksDIu45bTfukM618ODkUZy0vZe6T4engK3azjA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/core-client": "7.6.3", - "@storybook/docs-tools": "7.6.3", + "@storybook/client-logger": "7.6.17", + "@storybook/core-client": "7.6.17", + "@storybook/docs-tools": "7.6.17", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "7.6.3", - "@storybook/react-dom-shim": "7.6.3", - "@storybook/types": "7.6.3", + "@storybook/preview-api": "7.6.17", + "@storybook/react-dom-shim": "7.6.17", + "@storybook/types": "7.6.17", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^18.0.0", @@ -6334,9 +6232,9 @@ } }, "node_modules/@storybook/react-dom-shim": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.3.tgz", - "integrity": "sha512-UtaEaTQB27aBsAmn5IfAYkX2xl4wWWXkoAO/jUtx86FQ/r85FG0zxh/rac6IgzjYUqzjJtjIeLdeciG/48hMMA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.17.tgz", + "integrity": "sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw==", "dev": true, "license": "MIT", "funding": { @@ -6349,16 +6247,16 @@ } }, "node_modules/@storybook/react-vite": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-7.6.3.tgz", - "integrity": "sha512-sPrNJbnThmxsSeNj6vyG9pCCnnYzyiS+f7DVy2qeQrXvEuCYiQc503bavE3BKLxqjZQ3SkbhPsiEHcaw3I9x7A==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/react-vite/-/react-vite-7.6.17.tgz", + "integrity": "sha512-4dIm3CuRl44X1TLzN3WoZh/bChzJF7Ud28li9atj9C8db0bb/y0zl8cahrsRFoR7/LyfqdOVLqaztrnA5SsWfg==", "dev": true, "license": "MIT", "dependencies": { "@joshwooding/vite-plugin-react-docgen-typescript": "0.3.0", "@rollup/pluginutils": "^5.0.2", - "@storybook/builder-vite": "7.6.3", - "@storybook/react": "7.6.3", + "@storybook/builder-vite": "7.6.17", + "@storybook/react": "7.6.17", "@vitejs/plugin-react": "^3.0.1", "magic-string": "^0.30.0", "react-docgen": "^7.0.0" @@ -6417,23 +6315,36 @@ "license": "MIT" }, "node_modules/@storybook/react/node_modules/@types/node": { - "version": "18.19.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.2.tgz", - "integrity": "sha512-6wzfBdbWpe8QykUkXBjtmO3zITA0A3FIjoy+in0Y2K4KrCiRhNYJIdwAPDffZ3G6GnaKaSLSEa9ZuORLfEoiwg==", + "version": "18.19.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", + "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", "dev": true, "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/@storybook/react/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@storybook/router": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.3.tgz", - "integrity": "sha512-NZfhJqsXYca9mZCL/LGx6FmZDbrxX2S4ImW7Tqdtcc/sSlZ0BpCDkNUTesCA287cmoKMhXZRh/+bU+C2h2a+bw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.17.tgz", + "integrity": "sha512-GnyC0j6Wi5hT4qRhSyT8NPtJfGmf82uZw97LQRWeyYu5gWEshUdM7aj40XlNiScd5cZDp0owO1idduVF2k2l2A==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", + "@storybook/client-logger": "7.6.17", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -6443,15 +6354,15 @@ } }, "node_modules/@storybook/telemetry": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.3.tgz", - "integrity": "sha512-NDCZWhVIUI3M6Lq4M/HPOvZqDXqANDNbI3kyHr4pFGoVaCUXuDPokL9wR+CZcMvATkJ1gHrfLPBdcRq6Biw3Iw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.17.tgz", + "integrity": "sha512-WOcOAmmengYnGInH98Px44F47DSpLyk20BM+Z/IIQDzfttGOLlxNqBBG1XTEhNRn+AYuk4aZ2JEed2lCjVIxcA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/client-logger": "7.6.3", - "@storybook/core-common": "7.6.3", - "@storybook/csf-tools": "7.6.3", + "@storybook/client-logger": "7.6.17", + "@storybook/core-common": "7.6.17", + "@storybook/csf-tools": "7.6.17", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -6524,17 +6435,17 @@ } }, "node_modules/@storybook/test-runner/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.3.12", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", + "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", "dev": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", + "jackspeak": "^2.3.6", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "minipass": "^7.0.4", + "path-scurry": "^1.10.2" }, "bin": { "glob": "dist/esm/bin.mjs" @@ -6547,9 +6458,9 @@ } }, "node_modules/@storybook/test-runner/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "license": "ISC", "dependencies": { @@ -6597,29 +6508,15 @@ "ts-dedent": "^2.2.0" } }, - "node_modules/@storybook/testing-library/node_modules/@testing-library/user-event": { - "version": "14.5.1", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", - "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12", - "npm": ">=6" - }, - "peerDependencies": { - "@testing-library/dom": ">=7.21.4" - } - }, "node_modules/@storybook/theming": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.3.tgz", - "integrity": "sha512-9ToNU2LM6a2kVBjOXitXEeEOuMurVLhn+uaZO1dJjv8NGnJVYiLwNPwrLsImiUD8/XXNuil972aanBR6+Aj9jw==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.17.tgz", + "integrity": "sha512-ZbaBt3KAbmBtfjNqgMY7wPMBshhSJlhodyMNQypv+95xLD/R+Az6aBYbpVAOygLaUQaQk4ar7H/Ww6lFIoiFbA==", "dev": true, "license": "MIT", "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.0", - "@storybook/client-logger": "7.6.3", + "@storybook/client-logger": "7.6.17", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -6633,13 +6530,13 @@ } }, "node_modules/@storybook/types": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.3.tgz", - "integrity": "sha512-vj9Jzg5eR52l8O9512QywbQpNdo67Z6BQWR8QoZRcG+/Bhzt08YI8IZMPQLFMKzcmWDPK0blQ4GfyKDYplMjPA==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.17.tgz", + "integrity": "sha512-GRY0xEJQ0PrL7DY2qCNUdIfUOE0Gsue6N+GBJw9ku1IUDFLJRDOF+4Dx2BvYcVCPI5XPqdWKlEyZdMdKjiQN7Q==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/channels": "7.6.3", + "@storybook/channels": "7.6.17", "@types/babel__core": "^7.0.0", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" @@ -6650,14 +6547,14 @@ } }, "node_modules/@swc/core": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.100.tgz", - "integrity": "sha512-7dKgTyxJjlrMwFZYb1auj3Xq0D8ZBe+5oeIgfMlRU05doXZypYJe0LAk0yjj3WdbwYzpF+T1PLxwTWizI0pckw==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.4.14.tgz", + "integrity": "sha512-tHXg6OxboUsqa/L7DpsCcFnxhLkqN/ht5pCwav1HnvfthbiNIJypr86rNx4cUnQDJepETviSqBTIjxa7pSpGDQ==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { - "@swc/counter": "^0.1.1", + "@swc/counter": "^0.1.2", "@swc/types": "^0.1.5" }, "engines": { @@ -6668,15 +6565,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.100", - "@swc/core-darwin-x64": "1.3.100", - "@swc/core-linux-arm64-gnu": "1.3.100", - "@swc/core-linux-arm64-musl": "1.3.100", - "@swc/core-linux-x64-gnu": "1.3.100", - "@swc/core-linux-x64-musl": "1.3.100", - "@swc/core-win32-arm64-msvc": "1.3.100", - "@swc/core-win32-ia32-msvc": "1.3.100", - "@swc/core-win32-x64-msvc": "1.3.100" + "@swc/core-darwin-arm64": "1.4.14", + "@swc/core-darwin-x64": "1.4.14", + "@swc/core-linux-arm-gnueabihf": "1.4.14", + "@swc/core-linux-arm64-gnu": "1.4.14", + "@swc/core-linux-arm64-musl": "1.4.14", + "@swc/core-linux-x64-gnu": "1.4.14", + "@swc/core-linux-x64-musl": "1.4.14", + "@swc/core-win32-arm64-msvc": "1.4.14", + "@swc/core-win32-ia32-msvc": "1.4.14", + "@swc/core-win32-x64-msvc": "1.4.14" }, "peerDependencies": { "@swc/helpers": "^0.5.0" @@ -6688,9 +6586,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.100", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.100.tgz", - "integrity": "sha512-XVWFsKe6ei+SsDbwmsuRkYck1SXRpO60Hioa4hoLwR8fxbA9eVp6enZtMxzVVMBi8ej5seZ4HZQeAWepbukiBw==", + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.4.14.tgz", + "integrity": "sha512-8iPfLhYNspBl836YYsfv6ErXwDUqJ7IMieddV3Ey/t/97JAEAdNDUdtTKDtbyP0j/Ebyqyn+fKcqwSq7rAof0g==", "cpu": [ "arm64" ], @@ -6705,20 +6603,21 @@ } }, "node_modules/@swc/counter": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", - "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", "dev": true, "license": "Apache-2.0" }, "node_modules/@swc/jest": { - "version": "0.2.29", - "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.29.tgz", - "integrity": "sha512-8reh5RvHBsSikDC3WGCd5ZTd2BXKkyOdK7QwynrCH58jk2cQFhhHhFBg/jvnWZehUQe/EoOImLENc9/DwbBFow==", + "version": "0.2.36", + "resolved": "https://registry.npmjs.org/@swc/jest/-/jest-0.2.36.tgz", + "integrity": "sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/create-cache-key-function": "^27.4.2", + "@jest/create-cache-key-function": "^29.7.0", + "@swc/counter": "^0.1.3", "jsonc-parser": "^3.2.0" }, "engines": { @@ -6729,16 +6628,19 @@ } }, "node_modules/@swc/types": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", - "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.6.tgz", + "integrity": "sha512-/JLo/l2JsT/LRd80C3HfbmVpxOAJ11FO2RCEslFrgzLltoP9j8XIbsyDcfCt2WWyX+CM96rBoNM+IToAkFOugg==", "dev": true, - "license": "Apache-2.0" + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } }, "node_modules/@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", + "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6778,6 +6680,13 @@ "deep-equal": "^2.0.5" } }, + "node_modules/@testing-library/dom/node_modules/dom-accessibility-api": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "dev": true, + "license": "MIT" + }, "node_modules/@testing-library/dom/node_modules/pretty-format": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", @@ -6801,9 +6710,9 @@ "license": "MIT" }, "node_modules/@testing-library/jest-dom": { - "version": "6.1.6", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.6.tgz", - "integrity": "sha512-YwuiOdYEcxhfC2u5iNKlvg2Q5MgbutovP6drq7J1HrCbvR+G58BbtoCoq+L/kNlrNFsu2Kt3jaFAviLVxYHJZg==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz", + "integrity": "sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==", "dev": true, "license": "MIT", "dependencies": { @@ -6812,7 +6721,7 @@ "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", + "dom-accessibility-api": "^0.6.3", "lodash": "^4.17.15", "redent": "^3.0.0" }, @@ -6823,6 +6732,7 @@ }, "peerDependencies": { "@jest/globals": ">= 28", + "@types/bun": "latest", "@types/jest": ">= 28", "jest": ">= 28", "vitest": ">= 0.32" @@ -6831,6 +6741,9 @@ "@jest/globals": { "optional": true }, + "@types/bun": { + "optional": true + }, "@types/jest": { "optional": true }, @@ -6857,9 +6770,9 @@ } }, "node_modules/@testing-library/react": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", - "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", + "version": "14.3.1", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.3.1.tgz", + "integrity": "sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==", "dev": true, "license": "MIT", "dependencies": { @@ -6875,16 +6788,6 @@ "react-dom": "^18.0.0" } }, - "node_modules/@testing-library/react/node_modules/@types/react-dom": { - "version": "18.2.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", - "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/react": "*" - } - }, "node_modules/@testing-library/user-event": { "version": "14.5.2", "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", @@ -6921,9 +6824,9 @@ } }, "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==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "license": "MIT", "dependencies": { @@ -6942,9 +6845,9 @@ } }, "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==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7044,9 +6947,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "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==", + "version": "4.19.0", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.0.tgz", + "integrity": "sha512-bGyep3JqPCRry1wq+O5n7oiBgGWmeIJXPjXXCo8EK0u8duZGSYar7cGqd3ML2JUsLGeB7fmc06KYo9fLGWqPvQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7095,14 +6998,12 @@ "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, "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "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, "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" @@ -7112,7 +7013,6 @@ "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, "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" @@ -7241,31 +7141,33 @@ "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/jsonld": { "version": "1.5.13", "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.13.tgz", "integrity": "sha512-n7fUU6W4kSYK8VQlf/LsE9kddBHPKhODoVOjsZswmve+2qLwBy6naWxs/EiuSZN9NU0N06Ra01FR+j87C62T0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", + "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==", "license": "MIT" }, "node_modules/@types/mdx": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", - "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==", + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==", "dev": true, "license": "MIT" }, "node_modules/@types/mime": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.4.tgz", - "integrity": "sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==", + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", "dev": true, "license": "MIT" }, @@ -7284,19 +7186,18 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "20.10.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.3.tgz", - "integrity": "sha512-XJavIpZqiXID5Yxnxv3RUDKTN5b81ddNC3ecsA0SoFXz/QU8OGBwZGMomiq0zw+uuqbL/krztv/DINAQ/EV4gg==", - "dev": true, + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-24xFj9R5+rfQJLRyM56qh+wnVSYhyXC2tkoBndtY0U+vubqNsYXGjufB2nn8Q6gt0LrARwL6UBtMCSVCwl4B1g==", "dev": true, "license": "MIT", "dependencies": { @@ -7325,15 +7226,15 @@ "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.11", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", - "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==", + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==", "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.9.10", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", - "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true, "license": "MIT" }, @@ -7345,20 +7246,19 @@ "license": "MIT" }, "node_modules/@types/react": { - "version": "18.2.42", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.42.tgz", - "integrity": "sha512-c1zEr96MjakLYus/wPnuWDo1/zErfdU9rNsIGmE+NV71nx88FG9Ttgo5dqorXTu/LImX2f63WBP986gJkMPNbA==", + "version": "18.2.79", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.79.tgz", + "integrity": "sha512-RwGAGXPl9kSXwdNTafkOEuFrTBD5SA2B3iEB96xi8+xu5ddUa/cpvyVCSNn+asgLCTHkb5ZxN8gbuibYJi4s1w==", "license": "MIT", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", - "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", + "version": "18.2.25", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.25.tgz", + "integrity": "sha512-o/V48vf4MQh7juIKZU2QGDfli6p1+OOi5oXx36Hffpc9adsHeXjVp8rHuPkjd8VT8sOJ2Zp05HR7CdpGTIUFUA==", "dev": true, "license": "MIT", "dependencies": { @@ -7372,9 +7272,9 @@ "license": "MIT" }, "node_modules/@types/react-transition-group": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.9.tgz", - "integrity": "sha512-ZVNmWumUIh5NhH8aMD9CR2hdW0fNuYInlocZHaZ+dgk/1K49j1w/HoAuK1ki+pgscQrOFRTlXeoURtuzEkV3dg==", + "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==", "license": "MIT", "dependencies": { "@types/react": "*" @@ -7387,16 +7287,10 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/scheduler": { - "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==", - "license": "MIT" - }, "node_modules/@types/semver": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", - "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", "dev": true, "license": "MIT" }, @@ -7411,23 +7305,16 @@ "@types/node": "*" } }, - "node_modules/@types/send/node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/serve-static": { - "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==", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", - "@types/mime": "*", - "@types/node": "*" + "@types/node": "*", + "@types/send": "*" } }, "node_modules/@types/stack-utils": { @@ -7445,9 +7332,9 @@ "license": "MIT" }, "node_modules/@types/uuid": { - "version": "9.0.7", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", - "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", + "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true, "license": "MIT" }, @@ -7475,26 +7362,26 @@ "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, "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.3.1.tgz", - "integrity": "sha512-STEDMVQGww5lhCuNXVSQfbfuNII5E08QWkvAw5Qwf+bj2WT+JkG1uc+5/vXA3AOYMDHVOSpL+9rcbEUiHIm2dw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.7.0.tgz", + "integrity": "sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/type-utils": "7.3.1", - "@typescript-eslint/utils": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/type-utils": "7.7.0", + "@typescript-eslint/utils": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4", "graphemer": "^1.4.0", - "ignore": "^5.2.4", + "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7513,77 +7400,20 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", - "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", + "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "semver": "^7.5.4" + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "semver": "^7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7596,48 +7426,33 @@ "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, + "license": "ISC", "dependencies": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "lru-cache": "^6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, "node_modules/@typescript-eslint/parser": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.3.1.tgz", - "integrity": "sha512-Rq49+pq7viTRCH48XAbTA+wdLRrB/3sRq4Lpk0oGDm0VmnjBrAOVXH/Laalmwsv2VpekiEfVFwJYVk6/e8uvQw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.7.0.tgz", + "integrity": "sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4" }, "engines": { @@ -7656,28 +7471,16 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.7.0.tgz", + "integrity": "sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", - "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -7686,20 +7489,17 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "node_modules/@typescript-eslint/type-utils": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.7.0.tgz", + "integrity": "sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", + "@typescript-eslint/typescript-estree": "7.7.0", + "@typescript-eslint/utils": "7.7.0", "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7708,20 +7508,29 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, + "peerDependencies": { + "eslint": "^8.56.0" + }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.7.0.tgz", + "integrity": "sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.15", + "@types/semver": "^7.5.8", + "@typescript-eslint/scope-manager": "7.7.0", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/typescript-estree": "7.7.0", + "semver": "^7.6.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7729,51 +7538,56 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@typescript-eslint/type-utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, + "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=10" } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/@typescript-eslint/types": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.7.0.tgz", + "integrity": "sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.3.1.tgz", - "integrity": "sha512-iFhaysxFsMDQlzJn+vr3OrxN8NmdQkHks4WaqD4QBnt5hsq234wcYdyQ9uquzJJIDAj5W4wQne3yEsYA6OmXGw==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.7.0.tgz", + "integrity": "sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@typescript-eslint/typescript-estree": "7.3.1", - "@typescript-eslint/utils": "7.3.1", + "@typescript-eslint/types": "7.7.0", + "@typescript-eslint/visitor-keys": "7.7.0", "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7782,131 +7596,90 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "eslint": "^8.56.0" - }, "peerDependenciesMeta": { "typescript": { "optional": true } } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.3.1.tgz", - "integrity": "sha512-fVS6fPxldsKY2nFvyT7IP78UO1/I2huG+AYu5AMjCT9wtl6JFiDnsv4uad4jQ0GTFzcUV5HShVeN96/17bTBag==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, + "license": "ISC", "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.3.1.tgz", - "integrity": "sha512-2tUf3uWggBDl4S4183nivWQ2HqceOZh1U4hhu4p1tPiIJoRRXrab7Y+Y0p+dozYwZVvLPRI6r5wKe9kToF9FIw==", - "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=16 || 14 >=14.17" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.3.1.tgz", - "integrity": "sha512-tLpuqM46LVkduWP7JO7yVoWshpJuJzxDOPYIVWUUZbW+4dBpgGeUdl/fQkhuV0A8eGnphYw3pp8d2EnvPOfxmQ==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, + "license": "ISC", "dependencies": { - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/visitor-keys": "7.3.1", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "lru-cache": "^6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "bin": { + "semver": "bin/semver.js" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">=10" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.3.1.tgz", - "integrity": "sha512-jIERm/6bYQ9HkynYlNZvXpzmXWZGhMbrOvq3jJzOSOlKXsVjrrolzWBjDW6/TvT5Q3WqaN4EkmcfdQwi9tDjBQ==", + "node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "7.3.1", - "@typescript-eslint/types": "7.3.1", - "@typescript-eslint/typescript-estree": "7.3.1", - "semver": "^7.5.4" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.56.0" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.3.1.tgz", - "integrity": "sha512-9RMXwQF8knsZvfv9tdi+4D/j7dMG28X/wMJ8Jj6eOHyHWwDW4ngQJcqEczSsqIKKjFiLFr40Mnr7a5ulDD3vmw==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.3.1", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/types": { + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", @@ -7920,7 +7693,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", @@ -7948,21 +7721,15 @@ } } }, - "node_modules/@typescript-eslint/utils": { + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -7970,47 +7737,36 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@typescript-eslint/utils/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==", + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, - "license": "BSD-2-Clause", + "license": "ISC", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node": ">=10" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.7.0.tgz", + "integrity": "sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "7.7.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -8024,6 +7780,12 @@ "dev": true, "license": "ISC" }, + "node_modules/@usersnap/browser": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@usersnap/browser/-/browser-0.0.5.tgz", + "integrity": "sha512-EG6SOy63lKqqwgS03Olj7iQkptuCIYd2T/o9dM5KYa518F+jycWxlNFVY0Yd5uvzyIRoEAs9TN0goaBHXPBJ3w==", + "license": "MIT" + }, "node_modules/@vitejs/plugin-react": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.2.1.tgz", @@ -8044,15 +7806,56 @@ "vite": "^4.2.0 || ^5.0.0" } }, + "node_modules/@vitest/coverage-v8": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-1.5.0.tgz", + "integrity": "sha512-1igVwlcqw1QUMdfcMlzzY4coikSIBN944pkueGi0pawrX5I5Z+9hxdTR+w3Sg6Q3eZhvdMAs8ZaF9JuTG1uYOQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.1", + "@bcoe/v8-coverage": "^0.2.3", + "debug": "^4.3.4", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.4", + "istanbul-reports": "^3.1.6", + "magic-string": "^0.30.5", + "magicast": "^0.3.3", + "picocolors": "^1.0.0", + "std-env": "^3.5.0", + "strip-literal": "^2.0.0", + "test-exclude": "^6.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "vitest": "1.5.0" + } + }, + "node_modules/@vitest/coverage-v8/node_modules/istanbul-lib-source-maps": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.4.tgz", + "integrity": "sha512-wHOoEsNJTVltaJp8eVkm8w+GVkVNHT2YDYo53YdzQEL2gWm1hBX5cGFR9hQJtuGLebidVX7et3+dmDZrmclduw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@vitest/expect": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.2.2.tgz", - "integrity": "sha512-3jpcdPAD7LwHUUiT2pZTj2U82I2Tcgg2oVPvKxhn6mDI2On6tfvPQTjAI4628GUGDZrCm4Zna9iQHm5cEexOAg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.5.0.tgz", + "integrity": "sha512-0pzuCI6KYi2SIC3LQezmxujU9RK/vwC1U9R0rLuGlNGcOuDWxqWKu6nUdFsX9tH1WU0SXtAxToOsEjeUn1s3hA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "1.2.2", - "@vitest/utils": "1.2.2", + "@vitest/spy": "1.5.0", + "@vitest/utils": "1.5.0", "chai": "^4.3.10" }, "funding": { @@ -8060,13 +7863,13 @@ } }, "node_modules/@vitest/runner": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.2.2.tgz", - "integrity": "sha512-JctG7QZ4LSDXr5CsUweFgcpEvrcxOV1Gft7uHrvkQ+fsAVylmWQvnaAr/HDp3LAH1fztGMQZugIheTWjaGzYIg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-1.5.0.tgz", + "integrity": "sha512-7HWwdxXP5yDoe7DTpbif9l6ZmDwCzcSIK38kTSIt6CFEpMjX4EpCgT6wUmS0xTXqMI6E/ONmfgRKmaujpabjZQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.2.2", + "@vitest/utils": "1.5.0", "p-limit": "^5.0.0", "pathe": "^1.1.1" }, @@ -8104,9 +7907,9 @@ } }, "node_modules/@vitest/snapshot": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.2.2.tgz", - "integrity": "sha512-SmGY4saEw1+bwE1th6S/cZmPxz/Q4JWsl7LvbQIky2tKE35US4gd0Mjzqfr84/4OD0tikGWaWdMja/nWL5NIPA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.5.0.tgz", + "integrity": "sha512-qpv3fSEuNrhAO3FpH6YYRdaECnnRjg9VxbhdtPwPRnzSfHVXnNzzrpX4cJxqiwgRMo7uRMWDFBlsBq4Cr+rO3A==", "dev": true, "license": "MIT", "dependencies": { @@ -8119,9 +7922,9 @@ } }, "node_modules/@vitest/spy": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.2.2.tgz", - "integrity": "sha512-k9Gcahssw8d7X3pSLq3e3XEu/0L78mUkCjivUqCQeXJm9clfXR/Td8+AP+VC1O6fKPIDLcHDTAmBOINVuv6+7g==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.5.0.tgz", + "integrity": "sha512-vu6vi6ew5N5MMHJjD5PoakMRKYdmIrNJmyfkhRpQt5d9Ewhw9nZ5Aqynbi3N61bvk9UvZ5UysMT6ayIrZ8GA9w==", "dev": true, "license": "MIT", "dependencies": { @@ -8132,35 +7935,36 @@ } }, "node_modules/@vitest/ui": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.1.0.tgz", - "integrity": "sha512-7yU1QRFBplz0xJqcgt+agcbrNFdBmLo8UUppdKkFmYx+Ih0+yMYQOyr7kOB+YoggJY/p5ZzXxdbiOz7NBX2y+w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/ui/-/ui-1.5.0.tgz", + "integrity": "sha512-ETcToK2TzICf/Oartvt19IH7yR4oCs8GrQk5hRhZ5oZFaSdDHTh6o3EdzyxOaY24NZ20cXYYNGjj1se/5vHfFg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "1.1.0", + "@vitest/utils": "1.5.0", "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" + "sirv": "^2.0.4" }, "funding": { "url": "https://opencollective.com/vitest" }, "peerDependencies": { - "vitest": "^1.0.0" + "vitest": "1.5.0" } }, - "node_modules/@vitest/ui/node_modules/@vitest/utils": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.1.0.tgz", - "integrity": "sha512-z+s510fKmYz4Y41XhNs3vcuFTFhcij2YF7F8VQfMEYAAUfqQh0Zfg7+w9xdgFGhPf3tX3TicAe+8BDITk6ampQ==", + "node_modules/@vitest/utils": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.5.0.tgz", + "integrity": "sha512-BDU0GNL8MWkRkSRdNFvCUCAVOeHaUlVJ9Tx0TYBZyXaaOTmGtUFObzchCivIBrIwKzvZA7A9sCejVhXM2aY98A==", "dev": true, "license": "MIT", "dependencies": { "diff-sequences": "^29.6.3", + "estree-walker": "^3.0.3", "loupe": "^2.3.7", "pretty-format": "^29.7.0" }, @@ -8168,20 +7972,14 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/utils": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.2.2.tgz", - "integrity": "sha512-WKITBHLsBHlpjnDQahr+XK6RE7MiAsgrIkr0pGhQ9ygoxBfUeG0lUG5iLlzqjmKSlBv3+j5EGsriBzh+C3Tq9g==", + "node_modules/@vitest/utils/node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", "dev": true, "license": "MIT", "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "@types/estree": "^1.0.0" } }, "node_modules/@yarnpkg/fslib": { @@ -8229,12 +8027,14 @@ "node_modules/@yarnpkg/lockfile": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "license": "BSD-2-Clause" }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -8257,9 +8057,9 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "license": "MIT", "bin": { @@ -8300,9 +8100,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", "dependencies": { @@ -8468,9 +8268,9 @@ "license": "Python-2.0" }, "node_modules/aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "dev": true, "license": "MIT", "dependencies": { @@ -8495,6 +8295,7 @@ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "is-array-buffer": "^3.0.4" @@ -8514,15 +8315,17 @@ "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -8547,6 +8350,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -8567,6 +8371,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -8587,6 +8392,7 @@ "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, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -8605,6 +8411,7 @@ "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, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -8623,6 +8430,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -8635,6 +8443,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -8648,6 +8457,7 @@ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "call-bind": "^1.0.5", @@ -8706,7 +8516,8 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/async": { "version": "3.2.5", @@ -8732,6 +8543,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "license": "ISC", "engines": { "node": ">= 4.0.0" } @@ -8741,6 +8553,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -8756,17 +8569,18 @@ "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -8776,6 +8590,7 @@ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", "dev": true, + "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } @@ -8846,16 +8661,6 @@ "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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", @@ -8888,52 +8693,42 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.10.tgz", + "integrity": "sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.6.1", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/babel-plugin-polyfill-corejs2/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.1.tgz", + "integrity": "sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.6.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -9031,6 +8826,16 @@ "node": ">=12.0.0" } }, + "node_modules/bidi-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz", + "integrity": "sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==", + "dev": true, + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/big-integer": { "version": "1.6.52", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", @@ -9051,13 +8856,16 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "dev": true, "license": "MIT", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bl": { @@ -9150,14 +8958,14 @@ "license": "MIT" }, "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", "dev": true, "license": "MIT", "dependencies": { "bytes": "3.1.2", - "content-type": "~1.0.4", + "content-type": "~1.0.5", "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", @@ -9165,7 +8973,7 @@ "iconv-lite": "0.4.24", "on-finished": "2.4.1", "qs": "6.11.0", - "raw-body": "2.5.1", + "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" }, @@ -9274,9 +9082,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", - "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", "dev": true, "funding": [ { @@ -9294,8 +9102,8 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001565", - "electron-to-chromium": "^1.4.601", + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, @@ -9410,6 +9218,7 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -9454,9 +9263,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001566", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001566.tgz", - "integrity": "sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==", + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", "dev": true, "funding": [ { @@ -9477,12 +9286,13 @@ "node_modules/canonicalize": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", - "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==" + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==", + "license": "Apache-2.0" }, "node_modules/chai": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.10.tgz", - "integrity": "sha512-0UXG04VuVbruMUYbJ6JctvH0YnC/4q3/AkT18q4NaITo91CUm0liMS9VqzT9vZhVQ/1eqPanMWjBM+Juhfb/9g==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", "dev": true, "license": "MIT", "dependencies": { @@ -9538,16 +9348,10 @@ } }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "license": "MIT", "dependencies": { "anymatch": "~3.1.2", @@ -9561,6 +9365,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -9577,6 +9384,7 @@ "resolved": "https://registry.npmjs.org/chromatic/-/chromatic-11.3.0.tgz", "integrity": "sha512-q1ZtJDJrjLGnz60ivpC16gmd7KFzcaA4eTb7gcytCqbaKqlHhCFr1xQmcUDsm14CK7JsqdkFU6S+JQdOd2ZNJg==", "dev": true, + "license": "MIT", "bin": { "chroma": "dist/bin.js", "chromatic": "dist/bin.js", @@ -9610,6 +9418,16 @@ "node": ">=8" } }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, "node_modules/cjs-module-lexer": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", @@ -9654,9 +9472,9 @@ } }, "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.4.tgz", + "integrity": "sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==", "dev": true, "license": "MIT", "dependencies": { @@ -9670,18 +9488,30 @@ } }, "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==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "license": "ISC", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/cliui/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=8" } }, "node_modules/clone": { @@ -9723,9 +9553,9 @@ } }, "node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", "license": "MIT", "engines": { "node": ">=6" @@ -9790,13 +9620,6 @@ "simple-swizzle": "^0.2.2" } }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -9911,7 +9734,18 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } }, "node_modules/content-disposition": { "version": "0.5.4", @@ -9965,9 +9799,9 @@ "license": "MIT" }, "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", "dev": true, "license": "MIT", "engines": { @@ -9982,13 +9816,13 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.36.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", + "integrity": "sha512-Dk997v9ZCt3X/npqzyGdTlq6t7lDBhZwGvV94PKzDArjp7BTRm7WlDAXYd/OWdeFHO8OChQYRJNJvUCqCbrtKA==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -10018,6 +9852,15 @@ "node": ">=10" } }, + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -10064,6 +9907,20 @@ "node": ">=8" } }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/css.escape": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", @@ -10072,22 +9929,22 @@ "license": "MIT" }, "node_modules/cssstyle": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", - "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz", + "integrity": "sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==", "dev": true, "license": "MIT", "dependencies": { "rrweb-cssom": "^0.6.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "license": "MIT" }, "node_modules/cwd": { @@ -10108,12 +9965,14 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/data-uri-to-buffer": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "license": "MIT", "engines": { "node": ">= 12" } @@ -10137,6 +9996,7 @@ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -10154,6 +10014,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -10171,6 +10032,7 @@ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -10217,6 +10079,13 @@ } } }, + "node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true, + "license": "MIT" + }, "node_modules/decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", @@ -10235,9 +10104,9 @@ "license": "MIT" }, "node_modules/dedent": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.1.tgz", - "integrity": "sha512-+LxW+KLWxu3HW3M2w2ympwtqPrqYRzU8fqi6Fhd18fBALe15blJPI/I4+UHveMVG6lJqB4JNd4UG0S5cnVHwIg==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -10362,6 +10231,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -10403,9 +10273,9 @@ } }, "node_modules/defu": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", - "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", "dev": true, "license": "MIT" }, @@ -10596,9 +10466,9 @@ } }, "node_modules/dom-accessibility-api": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", - "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", "dev": true, "license": "MIT" }, @@ -10675,16 +10545,16 @@ } }, "node_modules/dotenv": { - "version": "16.3.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", - "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, "license": "BSD-2-Clause", "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/motdotla/dotenv?sponsor=1" + "url": "https://dotenvx.com" } }, "node_modules/dotenv-expand": { @@ -10714,7 +10584,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/ee-first": { "version": "1.1.1", @@ -10724,9 +10595,9 @@ "license": "MIT" }, "node_modules/ejs": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.9.tgz", - "integrity": "sha512-rC+QVNMJWv+MtPgkt0y+0rVEIdbtxVADApW9JXrUVlzHetgcyczP/E7DJmWJ4fJCZF2cPcBk0laWO9ZHMG3DmQ==", + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -10740,9 +10611,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.603", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.603.tgz", - "integrity": "sha512-Dvo5OGjnl7AZTU632dFJtWj0uJK835eeOVQIuRcmBmsFsTNn3cL05FqOyHAfGQDIoHfLhyJ1Tya3PJ0ceMz54g==", + "version": "1.4.737", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.737.tgz", + "integrity": "sha512-QvLTxaLHKdy5YxvixAw/FfHq2eWLUL9KvsPjp0aHK1gI5d3EDuDgITkvj0nFO2c6zUY3ZqVAJQiBYyQP9tQpfw==", "dev": true, "license": "ISC" }, @@ -10810,9 +10681,9 @@ } }, "node_modules/envinfo": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", - "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", + "version": "7.12.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.12.0.tgz", + "integrity": "sha512-Iw9rQJBGpJRd3rwXm9ft/JiGoAZmLxxJZELYDQoPRZ4USVhkKtIcNBPw6U+/K2mBpaqM25JSV6Yl4Az9vO2wJg==", "dev": true, "license": "MIT", "bin": { @@ -10832,10 +10703,11 @@ } }, "node_modules/es-abstract": { - "version": "1.23.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.2.tgz", - "integrity": "sha512-60s3Xv2T2p1ICykc7c+DNDPLDMm9t4QxCOUU0K9JxiLjM3C1zB9YVdN7tjxrFd4+AkZ8CdX1ovUga4P2+1e+/w==", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", "arraybuffer.prototype.slice": "^1.0.3", @@ -10876,11 +10748,11 @@ "safe-regex-test": "^1.0.3", "string.prototype.trim": "^1.2.9", "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.7", + "string.prototype.trimstart": "^1.0.8", "typed-array-buffer": "^1.0.2", "typed-array-byte-length": "^1.0.1", "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.5", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", "which-typed-array": "^1.1.15" }, @@ -10895,6 +10767,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4" }, @@ -10906,6 +10779,7 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -10936,6 +10810,7 @@ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.18.tgz", "integrity": "sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -10968,6 +10843,7 @@ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -10980,6 +10856,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, + "license": "MIT", "dependencies": { "get-intrinsic": "^1.2.4", "has-tostringtag": "^1.0.2", @@ -10994,6 +10871,7 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } @@ -11003,6 +10881,7 @@ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -11023,9 +10902,9 @@ "license": "MIT" }, "node_modules/esbuild": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", - "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "version": "0.19.12", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz", + "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==", "hasInstallScript": true, "license": "MIT", "bin": { @@ -11035,28 +10914,29 @@ "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" + "@esbuild/aix-ppc64": "0.19.12", + "@esbuild/android-arm": "0.19.12", + "@esbuild/android-arm64": "0.19.12", + "@esbuild/android-x64": "0.19.12", + "@esbuild/darwin-arm64": "0.19.12", + "@esbuild/darwin-x64": "0.19.12", + "@esbuild/freebsd-arm64": "0.19.12", + "@esbuild/freebsd-x64": "0.19.12", + "@esbuild/linux-arm": "0.19.12", + "@esbuild/linux-arm64": "0.19.12", + "@esbuild/linux-ia32": "0.19.12", + "@esbuild/linux-loong64": "0.19.12", + "@esbuild/linux-mips64el": "0.19.12", + "@esbuild/linux-ppc64": "0.19.12", + "@esbuild/linux-riscv64": "0.19.12", + "@esbuild/linux-s390x": "0.19.12", + "@esbuild/linux-x64": "0.19.12", + "@esbuild/netbsd-x64": "0.19.12", + "@esbuild/openbsd-x64": "0.19.12", + "@esbuild/sunos-x64": "0.19.12", + "@esbuild/win32-arm64": "0.19.12", + "@esbuild/win32-ia32": "0.19.12", + "@esbuild/win32-x64": "0.19.12" } }, "node_modules/esbuild-plugin-alias": { @@ -11067,9 +10947,9 @@ "license": "MIT" }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "license": "MIT", "engines": { @@ -11122,6 +11002,7 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -11177,6 +11058,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-19.0.4.tgz", "integrity": "sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-airbnb-base": "^15.0.0", "object.assign": "^4.1.2", @@ -11198,6 +11080,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", "dev": true, + "license": "MIT", "dependencies": { "confusing-browser-globals": "^1.0.10", "object.assign": "^4.1.2", @@ -11212,20 +11095,12 @@ "eslint-plugin-import": "^2.25.2" } }, - "node_modules/eslint-config-airbnb-base/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/eslint-import-resolver-node": { "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, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -11237,6 +11112,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -11246,6 +11122,7 @@ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -11263,6 +11140,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -11272,6 +11150,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -11303,6 +11182,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -11312,6 +11192,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -11319,20 +11200,12 @@ "node": ">=0.10.0" } }, - "node_modules/eslint-plugin-import/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/eslint-plugin-jest": { "version": "27.9.0", "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz", "integrity": "sha512-QIT7FH7fNmd9n4se7FFKHbsLKGQiw885Ds6Y/sxKgCZ6natwCsXdgPOADnYVxN2QrRweF0FZWbJ6S7Rsn7llug==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.10.0" }, @@ -11358,6 +11231,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.2", "aria-query": "^5.3.0", @@ -11387,13 +11261,15 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/eslint-plugin-react": { "version": "7.34.1", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlast": "^1.2.4", @@ -11449,6 +11325,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -11461,6 +11338,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -11473,15 +11351,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/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/eslint-plugin-storybook": { "version": "0.6.15", "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz", @@ -11512,20 +11381,27 @@ } }, "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "estraverse": "^4.1.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" } }, "node_modules/eslint-visitor-keys": { @@ -11541,6 +11417,23 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/eslint-scope": { + "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, + "license": "BSD-2-Clause", + "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/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -11572,9 +11465,9 @@ } }, "node_modules/eslint/node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11650,19 +11543,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -11714,14 +11594,11 @@ } }, "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", @@ -11747,6 +11624,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -11822,18 +11700,18 @@ "license": "MIT" }, "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.1", + "body-parser": "1.20.2", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.5.0", + "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", @@ -12010,9 +11888,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "license": "ISC", "dependencies": { @@ -12053,6 +11931,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -12069,9 +11948,9 @@ "license": "MIT" }, "node_modules/fflate": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.1.tgz", - "integrity": "sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", "dev": true, "license": "MIT" }, @@ -12279,6 +12158,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "license": "Apache-2.0", "dependencies": { "micromatch": "^4.0.2" } @@ -12299,16 +12179,16 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true, "license": "ISC" }, "node_modules/flow-parser": { - "version": "0.223.3", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.223.3.tgz", - "integrity": "sha512-9KxxDKSB22ovMpSULbOL/QAQGPN6M0YMS3PubQvB0jVc4W7QP6VhasIVic7MzKcJSh0BAVs4J6SZjoH0lDDNlg==", + "version": "0.233.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.233.0.tgz", + "integrity": "sha512-E/mv51GYJfLuRX6fZnw4M52gBxYa8pkHUOgNEZOcQK2RTXS8YXeU5rlalkTcY99UpwbeNVCSUFKaavpOksi/pQ==", "dev": true, "license": "MIT", "engines": { @@ -12316,9 +12196,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -12377,6 +12257,7 @@ "version": "4.0.10", "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", "dependencies": { "fetch-blob": "^3.1.2" }, @@ -12504,6 +12385,7 @@ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -12561,6 +12443,7 @@ "version": "1.2.4", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "function-bind": "^1.1.2", @@ -12636,6 +12519,7 @@ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "es-errors": "^1.3.0", @@ -12649,18 +12533,19 @@ } }, "node_modules/giget": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/giget/-/giget-1.1.3.tgz", - "integrity": "sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.3.tgz", + "integrity": "sha512-8EHPljDvs7qKykr6uw8b+lqLiUc/vUg+KVTI0uND4s63TdsZM2Xus3mflvF0DDG9SiM4RlCkFGL+7aAjRmV7KA==", "dev": true, "license": "MIT", "dependencies": { - "colorette": "^2.0.20", - "defu": "^6.1.2", - "https-proxy-agent": "^7.0.2", - "mri": "^1.2.0", - "node-fetch-native": "^1.4.0", - "pathe": "^1.1.1", + "citty": "^0.1.6", + "consola": "^3.2.3", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.3", + "nypm": "^0.3.8", + "ohash": "^1.1.3", + "pathe": "^1.1.2", "tar": "^6.2.0" }, "bin": { @@ -12792,6 +12677,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.1.3" }, @@ -12911,6 +12797,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -12922,6 +12809,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -12946,6 +12834,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -12987,6 +12876,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -13157,9 +13047,9 @@ } }, "node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { @@ -13171,9 +13061,9 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", - "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "license": "MIT", "dependencies": { @@ -13195,9 +13085,9 @@ } }, "node_modules/i18next": { - "version": "23.7.19", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.7.19.tgz", - "integrity": "sha512-1aP+YSJl+nLxr42ZJtNhpWpNWYsc6nCbVCf2x4uizIX1BYfcigiRMlb3vOkE1p3+qrI+aD6h5G2Fg+2d2oMIOQ==", + "version": "23.11.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.11.2.tgz", + "integrity": "sha512-qMBm7+qT8jdpmmDw/kQD16VpmkL9BdL+XNAK5MNbNFaf1iQQq35ZbPrSlqmnNPOSUY4m342+c0t0evinF5l7sA==", "funding": [ { "type": "individual", @@ -13217,18 +13107,6 @@ "@babel/runtime": "^7.23.2" } }, - "node_modules/i18next/node_modules/@babel/runtime": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -13263,9 +13141,9 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", - "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "license": "MIT", "engines": { @@ -13365,6 +13243,7 @@ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "hasown": "^2.0.0", @@ -13385,9 +13264,9 @@ } }, "node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", "dev": true, "license": "MIT" }, @@ -13433,6 +13312,7 @@ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1" @@ -13455,6 +13335,7 @@ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", "dev": true, + "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -13538,6 +13419,7 @@ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, + "license": "MIT", "dependencies": { "is-typed-array": "^1.1.13" }, @@ -13601,6 +13483,7 @@ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -13678,11 +13561,14 @@ } }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13709,6 +13595,7 @@ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -13796,11 +13683,14 @@ } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13810,6 +13700,7 @@ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7" }, @@ -13870,6 +13761,7 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, + "license": "MIT", "dependencies": { "which-typed-array": "^1.1.14" }, @@ -13901,11 +13793,14 @@ } }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13915,6 +13810,7 @@ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -13923,14 +13819,17 @@ } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -13980,6 +13879,15 @@ "node": ">=0.10.0" } }, + "node_modules/istanbul-badges-readme": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/istanbul-badges-readme/-/istanbul-badges-readme-1.8.5.tgz", + "integrity": "sha512-VEh90ofuufPZIbLeDF2g14wpe0sebhirG0xHooYKpNPYOkGXm6y+HJFotQqIzCg0NmbCnlKnOPL1B2oxG7/piA==", + "dev": true, + "bin": { + "istanbul-badges-readme": "lib/index.js" + } + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -14019,16 +13927,6 @@ "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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/istanbul-lib-processinfo": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", @@ -14078,6 +13976,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", @@ -14094,9 +14008,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -14112,6 +14026,7 @@ "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", @@ -14125,6 +14040,7 @@ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, @@ -14254,15 +14170,48 @@ "jest": "bin/jest.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/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, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-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==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/jest-cli/node_modules/y18n": { @@ -14744,6 +14693,22 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", @@ -14816,14 +14781,11 @@ } }, "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^3.0.0" - }, "engines": { "node": ">=14.16" }, @@ -14913,19 +14875,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/jest-watch-typeahead/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", @@ -14979,15 +14928,15 @@ } }, "node_modules/joi": { - "version": "17.11.0", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", - "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", + "version": "17.12.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz", + "integrity": "sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "@hapi/hoek": "^9.0.0", - "@hapi/topo": "^5.0.0", - "@sideway/address": "^4.1.3", + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", "@sideway/formula": "^3.0.1", "@sideway/pinpoint": "^2.0.0" } @@ -15018,9 +14967,9 @@ } }, "node_modules/jscodeshift": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.1.tgz", - "integrity": "sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.2.tgz", + "integrity": "sha512-FquR7Okgmc4Sd0aEDwqho3rEiKR3BdvuG9jfdHjLJ6JQoWSMpavug3AoIfnfWhxFlf+5pzQh8qjqz0DWFrNQzA==", "dev": true, "license": "MIT", "dependencies": { @@ -15058,13 +15007,14 @@ } }, "node_modules/jsdom": { - "version": "23.0.1", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.0.1.tgz", - "integrity": "sha512-2i27vgvlUsGEBO9+/kJQRbtqtm+191b5zAZrU/UezVmnC2dlDAFLgDYJvAEi94T4kjsRKkezEtLQTgsNEsW2lQ==", + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz", + "integrity": "sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==", "dev": true, "license": "MIT", "dependencies": { - "cssstyle": "^3.0.0", + "@asamuzakjp/dom-selector": "^2.0.1", + "cssstyle": "^4.0.1", "data-urls": "^5.0.0", "decimal.js": "^10.4.3", "form-data": "^4.0.0", @@ -15072,7 +15022,6 @@ "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.2", "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.7", "parse5": "^7.1.2", "rrweb-cssom": "^0.6.0", "saxes": "^6.0.0", @@ -15083,7 +15032,7 @@ "whatwg-encoding": "^3.1.1", "whatwg-mimetype": "^4.0.0", "whatwg-url": "^14.0.0", - "ws": "^8.14.2", + "ws": "^8.16.0", "xml-name-validator": "^5.0.0" }, "engines": { @@ -15135,6 +15084,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", + "license": "MIT", "dependencies": { "call-bind": "^1.0.5", "isarray": "^2.0.5", @@ -15169,9 +15119,9 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", "dev": true, "license": "MIT" }, @@ -15191,6 +15141,7 @@ "version": "0.0.1", "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", + "license": "Public Domain", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15199,6 +15150,7 @@ "version": "8.3.2", "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.2.tgz", "integrity": "sha512-MwBbq95szLwt8eVQ1Bcfwmgju/Y5P2GdtlHE2ncyfuYjIdEhluUVyj1eudacf1mOkWIoS9GpDBTECqhmq7EOaA==", + "license": "BSD-3-Clause", "dependencies": { "@digitalbazaar/http-client": "^3.4.1", "canonicalize": "^1.0.1", @@ -15214,6 +15166,7 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -15254,6 +15207,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.11" } @@ -15272,6 +15226,7 @@ "version": "0.33.3", "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -15283,6 +15238,7 @@ "version": "0.11.0", "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz", "integrity": "sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==", + "license": "MIT", "dependencies": { "abort-controller": "^3.0.0", "node-fetch": "^3.2.10" @@ -15307,6 +15263,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -15324,13 +15281,15 @@ "version": "0.3.22", "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true + "dev": true, + "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, + "license": "MIT", "dependencies": { "language-subtag-registry": "^0.3.20" }, @@ -15524,9 +15483,9 @@ } }, "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "version": "0.30.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz", + "integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==", "dev": true, "license": "MIT", "dependencies": { @@ -15536,6 +15495,17 @@ "node": ">=12" } }, + "node_modules/magicast": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.4.tgz", + "integrity": "sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.24.4", + "@babel/types": "^7.24.0", + "source-map-js": "^1.2.0" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -15552,16 +15522,6 @@ "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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", @@ -15580,9 +15540,9 @@ "license": "MIT" }, "node_modules/markdown-to-jsx": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.3.2.tgz", - "integrity": "sha512-B+28F5ucp83aQm+OxNrPkS8z0tMKaeHiy0lHJs3LqCyDQFtWuenaIrkaVTgAm1pf1AU85LXltva86hlaT17i8Q==", + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/markdown-to-jsx/-/markdown-to-jsx-7.4.7.tgz", + "integrity": "sha512-0+ls1IQZdU6cwM1yu0ZjjiVWYtkbExSyUIFU2ZeDIFuZM1W42Mh4OlJ4nb4apX4H8smxDHRdFaoIVJGwfv5hkg==", "dev": true, "license": "MIT", "engines": { @@ -15593,13 +15553,13 @@ } }, "node_modules/match-sorter": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.1.tgz", - "integrity": "sha512-mxybbo3pPNuA+ZuCUhm5bwNkXrJTbsk5VWbR5wiwz/GC6LIiegBGn2w3O08UG/jdbYLinw51fSQ5xNU1U3MgBw==", + "version": "6.3.4", + "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.4.tgz", + "integrity": "sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.12.5", - "remove-accents": "0.4.2" + "@babel/runtime": "^7.23.8", + "remove-accents": "0.5.0" } }, "node_modules/mdast-util-definitions": { @@ -15627,6 +15587,13 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, + "license": "CC0-1.0" + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", @@ -15843,39 +15810,16 @@ "license": "MIT" }, "node_modules/mlly": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", + "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", + "acorn": "^8.11.3", + "pathe": "^1.1.2", "pkg-types": "^1.0.3", - "ufo": "^1.3.0" - } - }, - "node_modules/mlly/node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" + "ufo": "^1.3.2" } }, "node_modules/mrmime": { @@ -15889,9 +15833,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, "license": "MIT" }, @@ -15974,6 +15918,7 @@ "url": "https://paypal.me/jimmywarting" } ], + "license": "MIT", "engines": { "node": ">=10.5.0" } @@ -16000,9 +15945,9 @@ } }, "node_modules/node-fetch-native": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz", - "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==", + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==", "dev": true, "license": "MIT" }, @@ -16058,107 +16003,264 @@ "dev": true, "license": "MIT" }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "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, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nyc": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", + "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^2.0.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^4.0.0", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/nyc/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, + "license": "MIT" + }, + "node_modules/nypm": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", + "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "dev": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.2.3", + "execa": "^8.0.1", + "pathe": "^1.1.2", + "ufo": "^1.4.0" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/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, + "license": "MIT", + "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/nypm/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, + "license": "MIT", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nypm/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, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/nypm/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, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/nypm/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, - "license": "ISC", - "bin": { - "semver": "bin/semver" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/nypm/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/nypm/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, "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "node_modules/nypm/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, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", + "node_modules/nypm/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, "license": "ISC", - "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" - }, "engines": { - "node": ">=8.9" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/nyc/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==", + "node_modules/nypm/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, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/object-assign": { "version": "4.1.1", @@ -16180,14 +16282,14 @@ } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -16229,6 +16331,7 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16243,6 +16346,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16261,6 +16365,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16271,13 +16376,18 @@ } }, "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16288,6 +16398,7 @@ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16306,6 +16417,13 @@ "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==", "license": "MIT" }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==", + "dev": true, + "license": "MIT" + }, "node_modules/on-finished": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", @@ -16428,6 +16546,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -16590,6 +16709,7 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz", "integrity": "sha512-da8BVIhzjtgScwDJ2TtKsfT5JFWz1hYoBl9rUQ1f38MC2HwnEIkK8VN3dKMKcP7P7bvvgzNDbfNHtx3MsQb5vA==", + "license": "MIT", "dependencies": { "@yarnpkg/lockfile": "^1.1.0", "chalk": "^4.1.2", @@ -16619,6 +16739,7 @@ "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "license": "MIT", "dependencies": { "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", @@ -16633,6 +16754,7 @@ "version": "7.4.2", "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "license": "MIT", "dependencies": { "is-docker": "^2.0.0", "is-wsl": "^2.1.1" @@ -16648,6 +16770,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -16655,25 +16778,30 @@ "rimraf": "bin.js" } }, + "node_modules/patch-package/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/patch-package/node_modules/slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/patch-package/node_modules/yaml": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", - "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -16709,13 +16837,13 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", + "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", + "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { @@ -16726,9 +16854,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", "dev": true, "license": "ISC", "engines": { @@ -16762,9 +16890,9 @@ } }, "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, "license": "MIT" }, @@ -16801,7 +16929,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "devOptional": true, "license": "ISC" }, "node_modules/picomatch": { @@ -16862,13 +16989,13 @@ } }, "node_modules/playwright": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.40.1.tgz", - "integrity": "sha512-2eHI7IioIpQ0bS1Ovg/HszsN/XKNwEG1kbzSDDmADpclKc7CyqkHw7Mg2JCz/bbCxg25QUPcjksoMW7JcIFQmw==", + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.43.1.tgz", + "integrity": "sha512-V7SoH0ai2kNt1Md9E3Gwas5B9m8KR2GVvwZnAI6Pg0m3sh7UvgiYhRrhsziCmqMJNouPckiOhk8T+9bSAK0VIA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.40.1" + "playwright-core": "1.43.1" }, "bin": { "playwright": "cli.js" @@ -16881,9 +17008,9 @@ } }, "node_modules/playwright-core": { - "version": "1.40.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.40.1.tgz", - "integrity": "sha512-+hkOycxPiV534c4HhpfX6yrlawqVUzITRKwHAmYfmsVreltEl6fAZJ3DPfLMOODw0H3s1Itd6MDCWmP1fl/QvQ==", + "version": "1.43.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.43.1.tgz", + "integrity": "sha512-EI36Mto2Vrx6VF7rm708qSnesVQKbxEWvPrfA1IPY6HgczBplDx7ENtx+K2n4kJ41sLLkuGfmb0ZLSSXlDhqPg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -16908,9 +17035,9 @@ } }, "node_modules/polished": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/polished/-/polished-4.2.2.tgz", - "integrity": "sha512-Sz2Lkdxz6F2Pgnpi9U5Ng/WdWAUZxmHrNPoVlm3aAemxoy2Qy7LGjQg4uf8qKelDAUW94F4np3iH2YPf2qefcQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/polished/-/polished-4.3.1.tgz", + "integrity": "sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==", "dev": true, "license": "MIT", "dependencies": { @@ -16925,14 +17052,15 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "devOptional": true, "funding": [ { @@ -16952,7 +17080,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -17240,9 +17368,9 @@ } }, "node_modules/pure-rand": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", - "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", "dev": true, "funding": [ { @@ -17257,13 +17385,13 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "version": "6.12.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -17322,9 +17450,9 @@ } }, "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "dev": true, "license": "MIT", "dependencies": { @@ -17341,6 +17469,7 @@ "version": "3.4.0", "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + "license": "BSD-3-Clause", "dependencies": { "setimmediate": "^1.0.5" }, @@ -17403,9 +17532,9 @@ } }, "node_modules/react-docgen": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.1.tgz", - "integrity": "sha512-rCz0HBIT0LWbIM+///LfRrJoTKftIzzwsYDf0ns5KwaEjejMHQRtphcns+IXFHDNY9pnz6G8l/JbbI6pD4EAIA==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.3.tgz", + "integrity": "sha512-i8aF1nyKInZnANZ4uZrH49qn1paRgBZ7wZiCNBMnenlPzEv0mRl+ShpTVEI6wZNl8sSc79xZkivtgLKQArcanQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17500,9 +17629,9 @@ "license": "MIT" }, "node_modules/react-hook-form": { - "version": "7.48.2", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.48.2.tgz", - "integrity": "sha512-H0T2InFQb1hX7qKtDIZmvpU1Xfn/bdahWBN1fH19gSe4bBEqTfmlr7H3XWTaVtiK4/tpPaI1F3355GPMZYge+A==", + "version": "7.51.3", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.51.3.tgz", + "integrity": "sha512-cvJ/wbHdhYx8aviSWh28w9ImjmVsb5Y05n1+FW786vEZQJV5STNM0pW6ujS+oiBecb0ARBxJFyAnXj9+GHXACQ==", "license": "MIT", "engines": { "node": ">=12.22.0" @@ -17516,12 +17645,12 @@ } }, "node_modules/react-i18next": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.0.1.tgz", - "integrity": "sha512-TMV8hFismBmpMdIehoFHin/okfvgjFhp723RYgIqB4XyhDobVMyukyM3Z8wtTRmajyFMZrBl/OaaXF2P6WjUAw==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-14.1.0.tgz", + "integrity": "sha512-3KwX6LHpbvGQ+sBEntjV4sYW3Zovjjl3fpoHbUwSgFHf0uRBcbeCBLR5al6ikncI5+W0EFb71QXZmfop+J6NrQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.22.5", + "@babel/runtime": "^7.23.9", "html-parse-stringify": "^3.0.1" }, "peerDependencies": { @@ -17537,18 +17666,6 @@ } } }, - "node_modules/react-i18next/node_modules/@babel/runtime": { - "version": "7.23.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.8.tgz", - "integrity": "sha512-Y7KbAP984rn1VGMbGqKmBLio9V7y5Je9GvU4rQPCPinCyNfUcToxIXl06d59URp/F3LwinvODxab5N/G6qggkw==", - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/react-is": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", @@ -17633,9 +17750,9 @@ } }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", - "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", "dev": true, "license": "MIT", "dependencies": { @@ -17656,12 +17773,12 @@ } }, "node_modules/react-router": { - "version": "6.20.1", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", - "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", + "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.13.1" + "@remix-run/router": "1.15.3" }, "engines": { "node": ">=14.0.0" @@ -17671,13 +17788,13 @@ } }, "node_modules/react-router-dom": { - "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==", + "version": "6.22.3", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", + "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.13.1", - "react-router": "6.20.1" + "@remix-run/router": "1.15.3", + "react-router": "6.22.3" }, "engines": { "node": ">=14.0.0" @@ -17818,16 +17935,16 @@ } }, "node_modules/recast": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", - "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", + "version": "0.23.6", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.6.tgz", + "integrity": "sha512-9FHoNjX1yjuesMwuthAmPKabxYQdOgihFYmT5ebXfYGBcnqXZf3WOVz+5foEZ8Y83P4ZY6yQD5GMmtV+pgCCAQ==", "dev": true, "license": "MIT", "dependencies": { - "assert": "^2.0.0", "ast-types": "^0.16.1", "esprima": "~4.0.0", "source-map": "~0.6.1", + "tiny-invariant": "^1.3.3", "tslib": "^2.0.1" }, "engines": { @@ -17853,6 +17970,7 @@ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -17890,9 +18008,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", "license": "MIT" }, "node_modules/regenerator-transform": { @@ -17910,6 +18028,7 @@ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "define-properties": "^1.2.1", @@ -18011,9 +18130,9 @@ } }, "node_modules/remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==", + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", "license": "MIT" }, "node_modules/require-directory": { @@ -18026,6 +18145,16 @@ "node": ">=0.10.0" } }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", @@ -18217,6 +18346,7 @@ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "get-intrinsic": "^1.2.4", @@ -18242,6 +18372,7 @@ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -18303,18 +18434,13 @@ } }, "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/send": { @@ -18372,13 +18498,6 @@ "node": ">=4" } }, - "node_modules/send/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/serve-static": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", @@ -18406,6 +18525,7 @@ "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -18423,6 +18543,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -18436,7 +18557,8 @@ "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -18484,6 +18606,7 @@ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -18526,19 +18649,6 @@ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", "license": "MIT" }, - "node_modules/simple-update-notifier": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", - "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/sirv": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", @@ -18582,9 +18692,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "devOptional": true, "license": "BSD-3-Clause", "engines": { @@ -18666,9 +18776,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, @@ -18684,9 +18794,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", "dev": true, "license": "CC0-1.0" }, @@ -18758,20 +18868,20 @@ } }, "node_modules/store2": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.2.tgz", - "integrity": "sha512-siT1RiqlfQnGqgT/YzXVUNsom9S0H1OX+dpdGN1xkyYATo4I6sep5NmsRD/40s3IIOvlCq6akxkqG82urIZW1w==", + "version": "2.14.3", + "resolved": "https://registry.npmjs.org/store2/-/store2-2.14.3.tgz", + "integrity": "sha512-4QcZ+yx7nzEFiV4BMLnr/pRa5HYzNITX2ri0Zh6sT9EyQHbBHacC6YigllUPU9X3D0f/22QCgfokpKs52YRrUg==", "dev": true, - "license": "(MIT OR GPL-3.0)" + "license": "MIT" }, "node_modules/storybook": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.3.tgz", - "integrity": "sha512-H3odxahMiR8vVW7ltlqcHhn3UVH5ta03weKlY7xvpv5DV+thZ+mEO2cDYfsufCSg0Ldb5LQ4qq3OyLVdpDBN8g==", + "version": "7.6.17", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.17.tgz", + "integrity": "sha512-8+EIo91bwmeFWPg1eysrxXlhIYv3OsXrznTr4+4Eq0NikqAoq6oBhtlN5K2RGS2lBVF537eN+9jTCNbR+WrzDA==", "dev": true, "license": "MIT", "dependencies": { - "@storybook/cli": "7.6.3" + "@storybook/cli": "7.6.17" }, "bin": { "sb": "index.js", @@ -18783,13 +18893,13 @@ } }, "node_modules/storybook-addon-manual-mocks": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/storybook-addon-manual-mocks/-/storybook-addon-manual-mocks-1.0.3.tgz", - "integrity": "sha512-/3+3kY8SETjlKIqxnX5MddLJAAFjPxzmj20yS+uxMhwAAyQacrarKjgBKZVy35ohpcc3LQCKZs3RLA6YEDOb1g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/storybook-addon-manual-mocks/-/storybook-addon-manual-mocks-1.0.4.tgz", + "integrity": "sha512-qOsmyJhTKW8ZpUjR91nYopXG+/1CkpA5HP3nDIoMUaYwedaeBgeLq+G7xr18AV+K9hDGwb5oho/gq1y7q0dIfA==", "license": "MIT", "peerDependencies": { - "vite": "^4", - "webpack": "^5" + "vite": "*", + "webpack": "*" }, "peerDependenciesMeta": { "vite": { @@ -18801,19 +18911,58 @@ } }, "node_modules/storybook-addon-module-mock": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/storybook-addon-module-mock/-/storybook-addon-module-mock-1.1.2.tgz", - "integrity": "sha512-IU0r+vMjfbCC4m54l60hEK1iPFSlXPW1D57FtU9O9/mvQSok4z18HEUNv9RXv9L7IwhcYSQ+gtWuB8l1oLDiSw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/storybook-addon-module-mock/-/storybook-addon-module-mock-1.1.6.tgz", + "integrity": "sha512-ZNCF1LVNuY3XmDGWYnTiufNe4kwW7srve9moI823I6r3ck7yoAWG4fG+QczjZOYKgxlk6FKEMiKMjHfkcpBHQA==", "license": "MIT", "dependencies": { - "minimatch": "*", + "jest-mock": "^27.3.0", + "minimatch": "^9.0.3", "react-json-tree": "^0.18.0" } }, + "node_modules/storybook-addon-module-mock/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/storybook-addon-module-mock/node_modules/@types/yargs": { + "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/storybook-addon-module-mock/node_modules/jest-mock": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", + "license": "MIT", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, "node_modules/storybook-addon-module-mock/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -18826,9 +18975,9 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", "dev": true, "license": "MIT" }, @@ -18877,6 +19026,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -18891,6 +19041,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -18917,6 +19068,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -18935,6 +19087,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -18945,14 +19098,18 @@ } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18977,6 +19134,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -19031,30 +19189,24 @@ } }, "node_modules/strip-literal": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", - "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-2.1.0.tgz", + "integrity": "sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.10.0" + "js-tokens": "^9.0.0" }, "funding": { "url": "https://github.com/sponsors/antfu" } }, - "node_modules/strip-literal/node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==", "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "license": "MIT" }, "node_modules/stylis": { "version": "4.2.0", @@ -19101,9 +19253,9 @@ "license": "BSD-3-Clause" }, "node_modules/tar": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", - "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", "dev": true, "license": "ISC", "dependencies": { @@ -19333,23 +19485,23 @@ "license": "MIT" }, "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", "dev": true, "license": "MIT" }, "node_modules/tinybench": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.5.1.tgz", - "integrity": "sha512-65NKvSuAVDP/n4CqH+a9w2kTlLReS9vhsAP06MWx+/89nMinJyB2icyl58RIcqCmIggpojIGeuJGhjU1aGMBSg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.7.0.tgz", + "integrity": "sha512-Qgayeb106x2o4hNzNjsZEfFziw8IbKqtbXBjVh7VIZfBxfD5M4gWtpyx5+YTae2gJ6Y6Dz/KLepiv16RFeQWNA==", "dev": true, "license": "MIT" }, "node_modules/tinypool": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.2.tgz", - "integrity": "sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.8.4.tgz", + "integrity": "sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==", "dev": true, "license": "MIT", "engines": { @@ -19357,9 +19509,9 @@ } }, "node_modules/tinyspy": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.0.tgz", - "integrity": "sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz", + "integrity": "sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==", "dev": true, "license": "MIT", "engines": { @@ -19370,6 +19522,7 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" }, @@ -19406,9 +19559,9 @@ } }, "node_modules/tocbot": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.23.0.tgz", - "integrity": "sha512-5DWuSZXsqG894mkGb8ZsQt9myyQyVxE50AiGRZ0obV0BVUTVkaZmc9jbgpknaAAPUm4FIrzGkEseD6FuQJYJDQ==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.25.0.tgz", + "integrity": "sha512-kE5wyCQJ40hqUaRVkyQ4z5+4juzYsv/eK+aqD97N62YH0TxFhzJvo22RUQQZdO3YnXAk42ZOfOpjVdy+Z0YokA==", "dev": true, "license": "MIT" }, @@ -19492,6 +19645,7 @@ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=16" }, @@ -19514,6 +19668,7 @@ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -19526,6 +19681,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -19538,6 +19694,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -19633,6 +19790,7 @@ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "es-errors": "^1.3.0", @@ -19647,6 +19805,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -19666,6 +19825,7 @@ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -19682,10 +19842,11 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.5.tgz", - "integrity": "sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", @@ -19719,9 +19880,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -19733,9 +19894,9 @@ } }, "node_modules/ufo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", - "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", "dev": true, "license": "MIT" }, @@ -19758,6 +19919,7 @@ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -19769,9 +19931,10 @@ } }, "node_modules/undici": { - "version": "5.28.3", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.3.tgz", - "integrity": "sha512-3ItfzbrhDlINjaP0duwnNsKpDQk3acHI3gVJ1z4fmwMK31k5G9OVIAMLSIaP6w4FaGkaAkN6zaQO9LUvZ1t7VA==", + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", + "license": "MIT", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -19783,7 +19946,6 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true, "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { @@ -19915,29 +20077,19 @@ } }, "node_modules/unplugin": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.1.tgz", - "integrity": "sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==", + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", + "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.11.2", - "chokidar": "^3.5.3", + "acorn": "^8.11.3", + "chokidar": "^3.6.0", "webpack-sources": "^3.2.3", - "webpack-virtual-modules": "^0.6.0" - } - }, - "node_modules/unplugin/node_modules/acorn": { - "version": "8.11.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz", - "integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" + "webpack-virtual-modules": "^0.6.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=14.0.0" } }, "node_modules/untildify": { @@ -20003,9 +20155,9 @@ } }, "node_modules/use-callback-ref": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", - "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", "dev": true, "license": "MIT", "dependencies": { @@ -20139,9 +20291,9 @@ } }, "node_modules/vite": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.1.tgz", - "integrity": "sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", "devOptional": true, "license": "MIT", "dependencies": { @@ -20195,9 +20347,9 @@ } }, "node_modules/vite-node": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.2.2.tgz", - "integrity": "sha512-1as4rDTgVWJO3n1uHmUYqq7nsFgINQ9u+mRcXpjeOMJUmviqNKjcZB7UfRZrlM7MjYXMKpuWp5oGkjaFLnjawg==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-1.5.0.tgz", + "integrity": "sha512-tV8h6gMj6vPzVCa7l+VGq9lwoJjW8Y79vst8QZZGiuRAfijU+EEWuc0kFpmndQrWhMMhet1jdSF+40KSZUqIIw==", "dev": true, "license": "MIT", "dependencies": { @@ -20218,9 +20370,9 @@ } }, "node_modules/vite-node/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -20235,9 +20387,9 @@ } }, "node_modules/vite-node/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.2.tgz", - "integrity": "sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz", + "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==", "cpu": [ "arm64" ], @@ -20248,9 +20400,9 @@ ] }, "node_modules/vite-node/node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -20261,37 +20413,40 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/vite-node/node_modules/rollup": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.2.tgz", - "integrity": "sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz", + "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, @@ -20300,32 +20455,35 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.2", - "@rollup/rollup-android-arm64": "4.9.2", - "@rollup/rollup-darwin-arm64": "4.9.2", - "@rollup/rollup-darwin-x64": "4.9.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.2", - "@rollup/rollup-linux-arm64-gnu": "4.9.2", - "@rollup/rollup-linux-arm64-musl": "4.9.2", - "@rollup/rollup-linux-riscv64-gnu": "4.9.2", - "@rollup/rollup-linux-x64-gnu": "4.9.2", - "@rollup/rollup-linux-x64-musl": "4.9.2", - "@rollup/rollup-win32-arm64-msvc": "4.9.2", - "@rollup/rollup-win32-ia32-msvc": "4.9.2", - "@rollup/rollup-win32-x64-msvc": "4.9.2", + "@rollup/rollup-android-arm-eabi": "4.14.3", + "@rollup/rollup-android-arm64": "4.14.3", + "@rollup/rollup-darwin-arm64": "4.14.3", + "@rollup/rollup-darwin-x64": "4.14.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.3", + "@rollup/rollup-linux-arm-musleabihf": "4.14.3", + "@rollup/rollup-linux-arm64-gnu": "4.14.3", + "@rollup/rollup-linux-arm64-musl": "4.14.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3", + "@rollup/rollup-linux-riscv64-gnu": "4.14.3", + "@rollup/rollup-linux-s390x-gnu": "4.14.3", + "@rollup/rollup-linux-x64-gnu": "4.14.3", + "@rollup/rollup-linux-x64-musl": "4.14.3", + "@rollup/rollup-win32-arm64-msvc": "4.14.3", + "@rollup/rollup-win32-ia32-msvc": "4.14.3", + "@rollup/rollup-win32-x64-msvc": "4.14.3", "fsevents": "~2.3.2" } }, "node_modules/vite-node/node_modules/vite": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", - "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.9.tgz", + "integrity": "sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -20402,16 +20560,6 @@ "node": ">=8" } }, - "node_modules/vite-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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/vite/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", @@ -20468,19 +20616,18 @@ } }, "node_modules/vitest": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.2.2.tgz", - "integrity": "sha512-d5Ouvrnms3GD9USIK36KG8OZ5bEvKEkITFtnGv56HFaSlbItJuYr7hv2Lkn903+AvRAgSixiamozUVfORUekjw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-1.5.0.tgz", + "integrity": "sha512-d8UKgR0m2kjdxDWX6911uwxout6GHS0XaGH1cksSIVVG8kRlE7G7aBw7myKQCvDI5dT4j7ZMa+l706BIORMDLw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "1.2.2", - "@vitest/runner": "1.2.2", - "@vitest/snapshot": "1.2.2", - "@vitest/spy": "1.2.2", - "@vitest/utils": "1.2.2", + "@vitest/expect": "1.5.0", + "@vitest/runner": "1.5.0", + "@vitest/snapshot": "1.5.0", + "@vitest/spy": "1.5.0", + "@vitest/utils": "1.5.0", "acorn-walk": "^8.3.2", - "cac": "^6.7.14", "chai": "^4.3.10", "debug": "^4.3.4", "execa": "^8.0.1", @@ -20489,11 +20636,11 @@ "pathe": "^1.1.1", "picocolors": "^1.0.0", "std-env": "^3.5.0", - "strip-literal": "^1.3.0", + "strip-literal": "^2.0.0", "tinybench": "^2.5.1", - "tinypool": "^0.8.2", + "tinypool": "^0.8.3", "vite": "^5.0.0", - "vite-node": "1.2.2", + "vite-node": "1.5.0", "why-is-node-running": "^2.2.2" }, "bin": { @@ -20508,8 +20655,8 @@ "peerDependencies": { "@edge-runtime/vm": "*", "@types/node": "^18.0.0 || >=20.0.0", - "@vitest/browser": "^1.0.0", - "@vitest/ui": "^1.0.0", + "@vitest/browser": "1.5.0", + "@vitest/ui": "1.5.0", "happy-dom": "*", "jsdom": "*" }, @@ -20535,9 +20682,9 @@ } }, "node_modules/vitest/node_modules/@esbuild/darwin-arm64": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.11.tgz", - "integrity": "sha512-ETp87DRWuSt9KdDVkqSoKoLFHYTrkyz2+65fj9nfXsaV3bMhTCjtQfw3y+um88vGRKRiF7erPrh/ZuIdLUIVxQ==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz", + "integrity": "sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==", "cpu": [ "arm64" ], @@ -20552,9 +20699,9 @@ } }, "node_modules/vitest/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.9.2.tgz", - "integrity": "sha512-On+cc5EpOaTwPSNetHXBuqylDW+765G/oqB9xGmWU3npEhCh8xu0xqHGUA+4xwZLqBbIZNcBlKSIYfkBm6ko7g==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.14.3.tgz", + "integrity": "sha512-UrBoMLCq4E92/LCqlh+blpqMz5h1tJttPIniwUgOFJyjWI1qrtrDhhpHPuFxULlUmjFHfloWdixtDhSxJt5iKw==", "cpu": [ "arm64" ], @@ -20575,9 +20722,9 @@ } }, "node_modules/vitest/node_modules/esbuild": { - "version": "0.19.11", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.11.tgz", - "integrity": "sha512-HJ96Hev2hX/6i5cDVwcqiJBBtuo9+FeIJOtZ9W1kA5M6AMJRHUZlpYZ1/SbEwtO0ioNAW8rUooVpC/WehY2SfA==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz", + "integrity": "sha512-WdOOppmUNU+IbZ0PaDiTst80zjnrOkyJNHoKupIcVyU8Lvla3Ugx94VzkQ32Ijqd7UhHJy75gNWDMUekcrSJ6g==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -20588,29 +20735,29 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.19.11", - "@esbuild/android-arm": "0.19.11", - "@esbuild/android-arm64": "0.19.11", - "@esbuild/android-x64": "0.19.11", - "@esbuild/darwin-arm64": "0.19.11", - "@esbuild/darwin-x64": "0.19.11", - "@esbuild/freebsd-arm64": "0.19.11", - "@esbuild/freebsd-x64": "0.19.11", - "@esbuild/linux-arm": "0.19.11", - "@esbuild/linux-arm64": "0.19.11", - "@esbuild/linux-ia32": "0.19.11", - "@esbuild/linux-loong64": "0.19.11", - "@esbuild/linux-mips64el": "0.19.11", - "@esbuild/linux-ppc64": "0.19.11", - "@esbuild/linux-riscv64": "0.19.11", - "@esbuild/linux-s390x": "0.19.11", - "@esbuild/linux-x64": "0.19.11", - "@esbuild/netbsd-x64": "0.19.11", - "@esbuild/openbsd-x64": "0.19.11", - "@esbuild/sunos-x64": "0.19.11", - "@esbuild/win32-arm64": "0.19.11", - "@esbuild/win32-ia32": "0.19.11", - "@esbuild/win32-x64": "0.19.11" + "@esbuild/aix-ppc64": "0.20.2", + "@esbuild/android-arm": "0.20.2", + "@esbuild/android-arm64": "0.20.2", + "@esbuild/android-x64": "0.20.2", + "@esbuild/darwin-arm64": "0.20.2", + "@esbuild/darwin-x64": "0.20.2", + "@esbuild/freebsd-arm64": "0.20.2", + "@esbuild/freebsd-x64": "0.20.2", + "@esbuild/linux-arm": "0.20.2", + "@esbuild/linux-arm64": "0.20.2", + "@esbuild/linux-ia32": "0.20.2", + "@esbuild/linux-loong64": "0.20.2", + "@esbuild/linux-mips64el": "0.20.2", + "@esbuild/linux-ppc64": "0.20.2", + "@esbuild/linux-riscv64": "0.20.2", + "@esbuild/linux-s390x": "0.20.2", + "@esbuild/linux-x64": "0.20.2", + "@esbuild/netbsd-x64": "0.20.2", + "@esbuild/openbsd-x64": "0.20.2", + "@esbuild/sunos-x64": "0.20.2", + "@esbuild/win32-arm64": "0.20.2", + "@esbuild/win32-ia32": "0.20.2", + "@esbuild/win32-x64": "0.20.2" } }, "node_modules/vitest/node_modules/execa": { @@ -20687,9 +20834,9 @@ } }, "node_modules/vitest/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -20732,11 +20879,14 @@ } }, "node_modules/vitest/node_modules/rollup": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.9.2.tgz", - "integrity": "sha512-66RB8OtFKUTozmVEh3qyNfH+b+z2RXBVloqO2KCC/pjFaGaHtxP9fVfOQKPSGXg2mElmjmxjW/fZ7iKrEpMH5Q==", + "version": "4.14.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.14.3.tgz", + "integrity": "sha512-ag5tTQKYsj1bhrFC9+OEWqb5O6VYgtQDO9hPDBMmIbePwhfSr+ExlcU741t8Dhw5DkPCQf6noz0jb36D6W9/hw==", "dev": true, "license": "MIT", + "dependencies": { + "@types/estree": "1.0.5" + }, "bin": { "rollup": "dist/bin/rollup" }, @@ -20745,19 +20895,22 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.9.2", - "@rollup/rollup-android-arm64": "4.9.2", - "@rollup/rollup-darwin-arm64": "4.9.2", - "@rollup/rollup-darwin-x64": "4.9.2", - "@rollup/rollup-linux-arm-gnueabihf": "4.9.2", - "@rollup/rollup-linux-arm64-gnu": "4.9.2", - "@rollup/rollup-linux-arm64-musl": "4.9.2", - "@rollup/rollup-linux-riscv64-gnu": "4.9.2", - "@rollup/rollup-linux-x64-gnu": "4.9.2", - "@rollup/rollup-linux-x64-musl": "4.9.2", - "@rollup/rollup-win32-arm64-msvc": "4.9.2", - "@rollup/rollup-win32-ia32-msvc": "4.9.2", - "@rollup/rollup-win32-x64-msvc": "4.9.2", + "@rollup/rollup-android-arm-eabi": "4.14.3", + "@rollup/rollup-android-arm64": "4.14.3", + "@rollup/rollup-darwin-arm64": "4.14.3", + "@rollup/rollup-darwin-x64": "4.14.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.14.3", + "@rollup/rollup-linux-arm-musleabihf": "4.14.3", + "@rollup/rollup-linux-arm64-gnu": "4.14.3", + "@rollup/rollup-linux-arm64-musl": "4.14.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.14.3", + "@rollup/rollup-linux-riscv64-gnu": "4.14.3", + "@rollup/rollup-linux-s390x-gnu": "4.14.3", + "@rollup/rollup-linux-x64-gnu": "4.14.3", + "@rollup/rollup-linux-x64-musl": "4.14.3", + "@rollup/rollup-win32-arm64-msvc": "4.14.3", + "@rollup/rollup-win32-ia32-msvc": "4.14.3", + "@rollup/rollup-win32-x64-msvc": "4.14.3", "fsevents": "~2.3.2" } }, @@ -20788,15 +20941,15 @@ } }, "node_modules/vitest/node_modules/vite": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", - "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", + "version": "5.2.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.2.9.tgz", + "integrity": "sha512-uOQWfuZBlc6Y3W/DTuQ1Sr+oIXWvqljLvS881SVmAj00d5RdgShLcuXWxseWPd4HXwiYBFW/vXHfKFeqj9uQnw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.32", - "rollup": "^4.2.0" + "esbuild": "^0.20.1", + "postcss": "^8.4.38", + "rollup": "^4.13.0" }, "bin": { "vite": "bin/vite.js" @@ -20982,9 +21135,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", + "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", "dev": true, "license": "MIT", "dependencies": { @@ -21009,6 +21162,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -21127,6 +21281,7 @@ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", "dev": true, + "license": "MIT", "dependencies": { "function.prototype.name": "^1.1.5", "has-tostringtag": "^1.0.0", @@ -21149,16 +21304,19 @@ } }, "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -21176,6 +21334,7 @@ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.7", @@ -21215,18 +21374,18 @@ "license": "MIT" }, "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": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" @@ -21238,6 +21397,7 @@ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -21250,6 +21410,73 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi/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==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -21338,12 +21565,15 @@ "license": "ISC" }, "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.4.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.1.tgz", + "integrity": "sha512-pIXzoImaqmfOrL7teGUBt/T7ZDnyeGBWyXQBvOVhLkWLN37GXv8NMLK406UY6dS51JfcQHsmcW5cJ441bHg6Lg==", "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargs": { @@ -21383,33 +21613,6 @@ "node": ">=6" } }, - "node_modules/yargs/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/yargs/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==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -21435,9 +21638,9 @@ } }, "node_modules/yup": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/yup/-/yup-1.3.2.tgz", - "integrity": "sha512-6KCM971iQtJ+/KUaHdrhVr2LDkfhBtFPRnsG1P8F4q3uUVQ2RfEM9xekpha9aA4GXWJevjM10eDcPQ1FfWlmaQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.4.0.tgz", + "integrity": "sha512-wPbgkJRCqIf+OHyiTBQoJiP5PFuAXaWiJK6AmYkzQAh5/c2K9hzSApBZG5wV9KoKSePF7sAxmNSvh/13YHkFDg==", "license": "MIT", "dependencies": { "property-expr": "^2.0.5", diff --git a/govtool/frontend/package.json b/govtool/frontend/package.json index b27e98257..c98fa4870 100644 --- a/govtool/frontend/package.json +++ b/govtool/frontend/package.json @@ -14,14 +14,18 @@ "preview": "vite preview", "storybook": "storybook dev -p 6006", "test": "vitest", - "test-storybook": "test-storybook", + "test:coverage": "vitest --coverage", + "test:make-badges": "npx istanbul-badges-readme --readmeDir='../../'", + "test:verbose": "vitest --reporter=verbose", + "test:ui": "vitest --ui", + "test:storybook": "test-storybook", "test:watch": "vitest watch", "tsc": "npx tsc --noEmit --skipLibCheck" }, "dependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", - "@emurgo/cardano-serialization-lib-asmjs": "12.0.0-alpha.19", + "@emurgo/cardano-serialization-lib-asmjs": "12.0.0-alpha.29", "@hookform/resolvers": "^3.3.1", "@mui/icons-material": "^5.14.3", "@mui/material": "^5.14.4", @@ -29,6 +33,7 @@ "@types/jsonld": "^1.5.13", "@types/react": "^18.2.12", "@types/react-gtm-module": "^2.0.2", + "@usersnap/browser": "^0.0.5", "axios": "^1.4.0", "bech32": "^2.0.0", "blakejs": "^1.2.1", @@ -71,6 +76,7 @@ "@typescript-eslint/eslint-plugin": "^7.3.1", "@typescript-eslint/parser": "^7.3.1", "@vitejs/plugin-react": "^4.0.0", + "@vitest/coverage-v8": "^1.5.0", "@vitest/ui": "^1.1.0", "chromatic": "^11.3.0", "eslint": "^8.38.0", diff --git a/govtool/frontend/patches/@emurgo+cardano-serialization-lib-asmjs+12.0.0-alpha.19.patch b/govtool/frontend/patches/@emurgo+cardano-serialization-lib-asmjs+12.0.0-alpha.29.patch similarity index 84% rename from govtool/frontend/patches/@emurgo+cardano-serialization-lib-asmjs+12.0.0-alpha.19.patch rename to govtool/frontend/patches/@emurgo+cardano-serialization-lib-asmjs+12.0.0-alpha.29.patch index bf0c63b21..5905fb1f6 100644 --- a/govtool/frontend/patches/@emurgo+cardano-serialization-lib-asmjs+12.0.0-alpha.19.patch +++ b/govtool/frontend/patches/@emurgo+cardano-serialization-lib-asmjs+12.0.0-alpha.29.patch @@ -1,12 +1,12 @@ diff --git a/node_modules/@emurgo/cardano-serialization-lib-asmjs/package.json b/node_modules/@emurgo/cardano-serialization-lib-asmjs/package.json -index 7140a36..999ac42 100644 +index f3f9dc2..5048761 100644 --- a/node_modules/@emurgo/cardano-serialization-lib-asmjs/package.json +++ b/node_modules/@emurgo/cardano-serialization-lib-asmjs/package.json -@@ -18,6 +18,7 @@ - "cardano_serialization_lib.js.flow" +@@ -19,6 +19,7 @@ ], "module": "cardano_serialization_lib.js", -+ "main":"cardano_serialization_lib.js", "types": "cardano_serialization_lib.d.ts", ++ "main":"cardano_serialization_lib.js", "sideEffects": [ "./cardano_serialization_lib.js", + "./snippets/*" diff --git a/govtool/frontend/src/App.tsx b/govtool/frontend/src/App.tsx index ceb2bda75..2e90bca47 100644 --- a/govtool/frontend/src/App.tsx +++ b/govtool/frontend/src/App.tsx @@ -15,7 +15,6 @@ import { CreateGovernanceAction, Dashboard, DashboardGovernanceActionsCategory, - DelegateTodRep, DRepDetails, DRepDirectory, DRepDirectoryContent, @@ -123,16 +122,12 @@ export default () => { path={PATHS.dRepDirectory} element={} /> - } - /> + } /> } /> - } /> } /> } /> { + it("should execute onChange with the correct value on click", () => { + const handleChange = vi.fn(); + render( + , + ); + + const radio = screen.getByTestId("action-radio"); + fireEvent.click(radio); + + expect(handleChange).toHaveBeenCalledTimes(1); + expect(handleChange).toHaveBeenCalledWith("test-value"); + }); + + it("should change styles based on isChecked change", () => { + const { rerender } = render( + {}} + dataTestId="action-radio" + />, + ); + let radio = screen.getByTestId("action-radio"); + + expect(radio).toHaveStyle("borderColor: white"); + expect(radio).toHaveStyle("backgroundColor: rgb(255, 255, 255)"); + + rerender( + {}} + dataTestId="action-radio" + />, + ); + radio = screen.getByTestId("action-radio"); + + expect(radio).toHaveStyle("borderColor: specialCyanBorder"); + expect(radio).toHaveStyle("backgroundColor: specialCyan"); + }); + + it("should display correct title and optional subtitle", () => { + render( + {}} + dataTestId="action-radio" + />, + ); + + const title = screen.getByText("Main Title"); + const subtitle = screen.getByText("Sub Title"); + + expect(title).toBeInTheDocument(); + expect(subtitle).toBeInTheDocument(); + }); + + it("should display tooltip text when InfoOutlinedIcon is hovered over", async () => { + render( + {}} + dataTestId="action-radio" + />, + ); + + const icon = screen.getByTestId("InfoOutlinedIcon"); + fireEvent.mouseOver(icon); + + const tooltip = await screen.findByText("Info Here", {}, { timeout: 500 }); + expect(tooltip).toBeInTheDocument(); + }); +}); diff --git a/govtool/frontend/src/components/atoms/CopyButton.test.tsx b/govtool/frontend/src/components/atoms/CopyButton.test.tsx new file mode 100644 index 000000000..8f7666858 --- /dev/null +++ b/govtool/frontend/src/components/atoms/CopyButton.test.tsx @@ -0,0 +1,69 @@ +import { describe, it, expect, vi } from "vitest"; +import { render, screen } from "@testing-library/react"; +import userEvent from "@testing-library/user-event"; +import { SnackbarProvider } from "@context"; +import { CopyButton } from "@atoms"; + +Object.defineProperty(global.navigator, "clipboard", { + value: { + writeText: vi.fn(), + }, + writable: true, +}); + +vi.mock("@hooks", () => ({ + useTranslation: () => ({ + t: (key: string) => key, + }), + useScreenDimension: () => ({ + isMobile: false, + }), +})); + +const writeTextMock = navigator.clipboard.writeText as unknown as { + mockClear: () => void; +}; + +describe("CopyButton", () => { + beforeEach(() => { + writeTextMock.mockClear(); + }); + + it("renders correctly with the default icon", () => { + render(); + const image = screen.getByRole("img"); + expect(image).toHaveAttribute("src", "/icons/Copy.svg"); + }); + + it("renders the blue icon when variant is 'blue'", () => { + render(); + const image = screen.getByRole("img"); + expect(image).toHaveAttribute("src", "/icons/CopyBlue.svg"); + }); + + it("renders the blue thin icon when variant is 'blueThin'", () => { + render(); + const image = screen.getByRole("img"); + expect(image).toHaveAttribute("src", "/icons/CopyBlueThin.svg"); + }); + + it("renders the white icon when isChecked prop is true", () => { + render(); + const image = screen.getByRole("img"); + expect(image).toHaveAttribute("src", "/icons/CopyWhite.svg"); + }); + + it("copies text to clipboard and shows success alert on click", async () => { + render( + + , + , + ); + + const copyButton = screen.getByTestId("copy-button"); + await userEvent.click(copyButton); + expect(navigator.clipboard.writeText).toHaveBeenCalledWith("Example Text"); + + expect(screen.getByText("alerts.copiedToClipboard")).toBeInTheDocument(); + }); +}); diff --git a/govtool/frontend/src/components/atoms/DrawerLink.test.tsx b/govtool/frontend/src/components/atoms/DrawerLink.test.tsx new file mode 100644 index 000000000..70449e3a8 --- /dev/null +++ b/govtool/frontend/src/components/atoms/DrawerLink.test.tsx @@ -0,0 +1,90 @@ +import { describe, it, expect, vi } from "vitest"; +import { render, screen, fireEvent } from "@testing-library/react"; +import { MemoryRouter, Route, Routes } from "react-router-dom"; +import { DrawerLink } from "@atoms"; +import { theme } from "@/theme"; + +describe("DrawerLink", () => { + const mockOnClick = vi.fn(); + + it("renders correctly with mandatory props", () => { + render( + + + , + ); + + const linkElement = screen.getByRole("link"); + expect(linkElement).toHaveAttribute("href", "/home"); + expect(screen.getByText("Home")).toBeInTheDocument(); + }); + + it("applies active styles correctly when active", () => { + render( + + + } + /> + + , + ); + + const linkElement = screen.getByRole("link"); + expect(linkElement).toHaveStyle( + `backgroundColor: ${theme.palette.highlightBlue}`, + ); + }); + + it("does not apply active styles when not active", () => { + render( + + + , + ); + + const linkElement = screen.getByRole("link"); + expect(linkElement).not.toHaveStyle( + `backgroundColor: ${theme.palette.highlightBlue}`, + ); + }); + + it("renders with an icon and activeIcon", () => { + const icon = "icon-path.png"; + const activeIcon = "active-icon-path.png"; + + render( + + + + } + /> + + , + ); + + const img = screen.getByAltText("icon") as HTMLImageElement; + expect(img.src).toContain("active-icon-path.png"); + }); + + it("executes onClick callback when clicked", () => { + render( + + + , + ); + + const linkElement = screen.getByRole("link"); + fireEvent.click(linkElement); + expect(mockOnClick).toHaveBeenCalled(); + }); +}); diff --git a/govtool/frontend/src/components/atoms/LoadingButton.test.tsx b/govtool/frontend/src/components/atoms/LoadingButton.test.tsx new file mode 100644 index 000000000..f6e543bd9 --- /dev/null +++ b/govtool/frontend/src/components/atoms/LoadingButton.test.tsx @@ -0,0 +1,53 @@ +import { describe, it, expect } from "vitest"; +import { render, screen } from "@testing-library/react"; +import { LoadingButton } from "@atoms"; + +describe("LoadingButton", () => { + it("renders its children", () => { + render(Click me); + expect(screen.getByText("Click me")).toBeInTheDocument(); + }); + + it("is disabled when isLoading is true", () => { + render(Loading...); + expect(screen.getByRole("button", { name: "Loading..." })).toBeDisabled(); + }); + + it("is disabled when disabled prop is true", () => { + render(Disabled); + expect(screen.getByRole("button", { name: "Disabled" })).toBeDisabled(); + }); + + it("shows a CircularProgress when isLoading", () => { + render(Loading...); + expect(screen.getByRole("progressbar")).toBeInTheDocument(); + }); + + it("applies different heights based on size prop", () => { + const { rerender } = render( + Small Button, + ); + + expect(screen.getByText("Small Button")).toHaveStyle({ height: "32px" }); + + rerender(Medium Button); + expect(screen.getByText("Medium Button")).toHaveStyle({ height: "36px" }); + + rerender(Large Button); + expect(screen.getByText("Large Button")).toHaveStyle({ height: "40px" }); + + rerender( + Extra Large Button, + ); + expect(screen.getByText("Extra Large Button")).toHaveStyle("height: 48px"); + }); + + it("applies custom styles via sx prop", () => { + const customStyles = { backgroundColor: "specialCyan" }; + render(Styled Button); + + expect(screen.getByText("Styled Button")).toHaveStyle({ + backgroundColor: "specialCyan", + }); + }); +}); diff --git a/govtool/frontend/src/components/atoms/VotePill.test.tsx b/govtool/frontend/src/components/atoms/VotePill.test.tsx new file mode 100644 index 000000000..24f09a4d0 --- /dev/null +++ b/govtool/frontend/src/components/atoms/VotePill.test.tsx @@ -0,0 +1,55 @@ +import { describe, it, expect } from "vitest"; +import { render } from "@testing-library/react"; +import { VotePill } from "@atoms"; + +describe("VotePill", () => { + it('renders the VotePill component with "yes" vote correctly', () => { + const { getByText } = render(); + const voteText = getByText("yes"); + expect(voteText).toBeInTheDocument(); + expect(voteText.parentNode).toHaveStyle({ + borderColor: "#C0E4BA", + backgroundColor: "#F0F9EE", + }); + }); + + it('renders the VotePill component with "no" vote correctly', () => { + const { getByText } = render(); + const voteText = getByText("no"); + expect(voteText).toBeInTheDocument(); + expect(voteText.parentNode).toHaveStyle({ + borderColor: "#EDACAC", + backgroundColor: "#FBEBEB", + }); + }); + + it('renders the VotePill component with "abstain" vote correctly', () => { + const { getByText } = render(); + const voteText = getByText("abstain"); + expect(voteText).toBeInTheDocument(); + expect(voteText.parentNode).toHaveStyle({ + borderColor: "#99ADDE", + backgroundColor: "#E6EBF7", + }); + }); + + it("handles custom width and maxWidth props correctly", () => { + const { container } = render( + , + ); + const pillBox = container.firstChild; + expect(pillBox).toHaveStyle({ + width: "100px", + maxWidth: "120px", + }); + }); + + it("defaults width and maxWidth when not provided", () => { + const { container } = render(); + const pillBox = container.firstChild; + expect(pillBox).toHaveStyle({ + width: "auto", + maxWidth: "auto", + }); + }); +}); diff --git a/govtool/frontend/src/components/atoms/VotingPowerChips.test.tsx b/govtool/frontend/src/components/atoms/VotingPowerChips.test.tsx new file mode 100644 index 000000000..af80779fc --- /dev/null +++ b/govtool/frontend/src/components/atoms/VotingPowerChips.test.tsx @@ -0,0 +1,95 @@ +import { render, screen, fireEvent } from "@testing-library/react"; +import { describe, it, expect, vi } from "vitest"; +import * as Hooks from "@hooks"; +import * as Context from "@context"; +import * as Utils from "@utils"; +import { VotingPowerChips } from "@atoms"; + +describe("VotingPowerChips", () => { + const mockUseCardano = vi.spyOn(Context, "useCardano"); + const mockUseGetDRepVotingPowerQuery = vi.spyOn( + Hooks, + "useGetDRepVotingPowerQuery", + ); + const mockUseScreenDimension = vi.spyOn(Hooks, "useScreenDimension"); + const mockCorrectAdaFormat = vi.spyOn(Utils, "correctAdaFormat"); + const mockUseTranslation = vi.spyOn(Hooks, "useTranslation"); + const mockUseGetVoterInfo = vi.spyOn(Hooks, "useGetVoterInfo"); + + it("renders loading spinner when data is loading", () => { + mockUseCardano.mockReturnValue({ + isEnableLoading: 'demos', + } as ReturnType); + mockUseGetDRepVotingPowerQuery.mockReturnValue( + {} as ReturnType, + ); + mockUseScreenDimension.mockReturnValue({ + isMobile: false, + screenWidth: 1024, + } as ReturnType); + mockUseTranslation.mockReturnValue({ + t: (key: string) => key, + } as ReturnType); + mockUseGetVoterInfo.mockReturnValue( + { voter: { isRegisteredAsDRep: true } } as ReturnType, + ); + + render(); + expect(screen.getByRole("progressbar")).toBeInTheDocument(); + }); + + it("displays formatted ADA amount when data is available and not loading", () => { + mockUseCardano.mockReturnValue({ + isEnableLoading: null, + } as ReturnType); + mockUseGetDRepVotingPowerQuery.mockReturnValue({ + dRepVotingPower: 1000, + } as ReturnType); + mockUseScreenDimension.mockReturnValue({ + isMobile: false, + screenWidth: 1024, + } as ReturnType); + mockUseTranslation.mockReturnValue({ + t: (key: string) => key, + } as ReturnType); + mockUseGetVoterInfo.mockReturnValue({ + voter: { isRegisteredAsDRep: true }, + } as ReturnType); + mockCorrectAdaFormat.mockReturnValue(1000); + + render(); + expect(screen.getByText(/₳ 1000/)).toBeInTheDocument(); + }); + + it("displays the tooltip correctly for non-mobile DRep registered users", async () => { + mockUseCardano.mockReturnValue({ + isEnableLoading: null, + } as ReturnType); + mockUseGetDRepVotingPowerQuery.mockReturnValue({ + dRepVotingPower: 1000, + } as ReturnType); + mockUseScreenDimension.mockReturnValue({ + isMobile: false, + screenWidth: 800, + } as ReturnType); + mockUseTranslation.mockReturnValue({ + t: (key: string) => key, + } as ReturnType); + mockUseGetVoterInfo.mockReturnValue({ + voter: { isRegisteredAsDRep: true }, + } as ReturnType); + mockCorrectAdaFormat.mockReturnValue(1000); + + render(); + + const icon = screen.getByTestId("InfoOutlinedIcon"); + fireEvent.mouseOver(icon); + + const tooltip = await screen.findByText( + "tooltips.votingPower.heading", + {}, + { timeout: 500 }, + ); + expect(tooltip).toBeInTheDocument(); + }); +}); diff --git a/govtool/frontend/src/components/atoms/VotingPowerChips.tsx b/govtool/frontend/src/components/atoms/VotingPowerChips.tsx index 4e5381e56..a81cfb582 100644 --- a/govtool/frontend/src/components/atoms/VotingPowerChips.tsx +++ b/govtool/frontend/src/components/atoms/VotingPowerChips.tsx @@ -4,7 +4,6 @@ import InfoOutlinedIcon from "@mui/icons-material/InfoOutlined"; import { Typography, Tooltip } from "@atoms"; import { useCardano } from "@context"; import { - useGetAdaHolderVotingPowerQuery, useGetDRepVotingPowerQuery, useGetVoterInfo, useScreenDimension, @@ -13,67 +12,62 @@ import { import { correctAdaFormat } from "@utils"; export const VotingPowerChips = () => { - const { stakeKey, isEnableLoading } = useCardano(); - const { dRepVotingPower } = useGetDRepVotingPowerQuery(); - const { votingPower } = useGetAdaHolderVotingPowerQuery(stakeKey); + const { isEnableLoading } = useCardano(); + const { voter } = useGetVoterInfo(); + const { dRepVotingPower } = useGetDRepVotingPowerQuery(voter); const { isMobile, screenWidth } = useScreenDimension(); const { t } = useTranslation(); - const { voter } = useGetVoterInfo(); return ( - - {voter?.isRegisteredAsDRep && ( - - - - )} - {screenWidth >= 1024 && ( - - {t("votingPower")} - - )} - {(voter?.isRegisteredAsDRep && dRepVotingPower === undefined) || - (!voter?.isRegisteredAsDRep && votingPower === undefined) || - isEnableLoading || - !voter ? ( + (voter?.isRegisteredAsDRep || voter?.isRegisteredAsSoleVoter) && ( + + {!isMobile && ( + + + + )} + {screenWidth >= 1024 && ( + + {t("votingPower")}: + + )} + {dRepVotingPower === undefined || isEnableLoading || !voter ? ( - ) : ( - - ₳{" "} - {voter?.isRegisteredAsDRep - ? correctAdaFormat(dRepVotingPower) ?? 0 - : correctAdaFormat(votingPower) ?? 0} - - )} - + ) : ( + + ₳ {correctAdaFormat(dRepVotingPower) ?? 0} + + )} + + ) ); }; diff --git a/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx b/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx index dd17fa3cf..5a9e0ba3d 100644 --- a/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx +++ b/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx @@ -1,26 +1,33 @@ import { Box, Divider } from "@mui/material"; -import { Button, Typography } from "@atoms"; +import { Button, LoadingButton, Typography } from "@atoms"; +import { primaryBlue } from "@consts"; +import { useModal } from "@context"; import { useScreenDimension, useTranslation } from "@hooks"; -import { AutomatedVotingCardProps } from "./types"; +import { openInNewTab } from "@utils"; + import { Card } from "./Card"; -import { primaryBlue } from "@/consts"; -import { useModal } from "@/context"; +import { AutomatedVotingCardProps } from "./types"; export const AutomatedVotingCard = ({ description, inProgress, isConnected, + isDelegateLoading, isSelected, onClickDelegate, onClickInfo, title, votingPower, + transactionId, }: AutomatedVotingCardProps) => { const { isMobile, screenWidth } = useScreenDimension(); const { openModal } = useModal(); const { t } = useTranslation(); + const onClickShowTransaction = () => + openInNewTab(`https://sancho.cexplorer.io/tx/${transactionId}`); + return ( {title} - + {description} + {transactionId && ( + + )} - - - - {t("dRepDirectory.votingPower")} - - - {'₳ '} - {votingPower} - - - - - - {!isConnected - ? ( + {!inProgress && !isSelected && ( + <> + + + + {t("dRepDirectory.votingPower")} + + + {"₳ "} + {votingPower} + + + + - ) - : !isSelected && ( - - )} - + {!isConnected ? ( + + ) : ( + !isSelected && ( + + {t("delegate")} + + ) + )} + + + )} ); }; diff --git a/govtool/frontend/src/components/molecules/Breadcrumbs.tsx b/govtool/frontend/src/components/molecules/Breadcrumbs.tsx index c0766d345..83f191034 100644 --- a/govtool/frontend/src/components/molecules/Breadcrumbs.tsx +++ b/govtool/frontend/src/components/molecules/Breadcrumbs.tsx @@ -4,12 +4,14 @@ import Divider from "@mui/material/Divider"; import { useScreenDimension } from "@hooks"; import { Typography } from "@atoms"; +import { getMetadataDataMissingStatusTranslation } from "@/utils"; +import { MetadataValidationStatus } from "@/models"; type BreadcrumbsProps = { elementOne: string; elementOnePath: To; elementTwo: string; - isDataMissing: boolean; + isDataMissing: MetadataValidationStatus | boolean; }; export const Breadcrumbs = ({ @@ -19,7 +21,6 @@ export const Breadcrumbs = ({ isDataMissing, }: BreadcrumbsProps) => { const { isMobile } = useScreenDimension(); - return ( - {isDataMissing || elementTwo} + {(isDataMissing !== false && + getMetadataDataMissingStatusTranslation( + isDataMissing as MetadataValidationStatus, + )) || + elementTwo} ); diff --git a/govtool/frontend/src/components/molecules/DashboardActionCard.tsx b/govtool/frontend/src/components/molecules/DashboardActionCard.tsx index feb9f39fb..a3d127e56 100644 --- a/govtool/frontend/src/components/molecules/DashboardActionCard.tsx +++ b/govtool/frontend/src/components/molecules/DashboardActionCard.tsx @@ -3,8 +3,9 @@ import { FC, ReactNode } from "react"; import { Button, LoadingButton, LoadingButtonProps, Typography } from "@atoms"; import { useScreenDimension, useTranslation } from "@hooks"; +import { openInNewTab } from "@utils"; + import { Card } from "./Card"; -import { openInNewTab } from "@/utils"; export type DashboardActionCardProps = { buttons?: LoadingButtonProps[]; @@ -16,7 +17,8 @@ export type DashboardActionCardProps = { isInProgressOnCard?: boolean; state?: "active" | "inProgress" | "default"; title?: ReactNode; - transactionId?: string; + transactionId?: string | null; + isSpaceBetweenButtons?: boolean; }; export const DashboardActionCard: FC = ({ @@ -33,6 +35,7 @@ export const DashboardActionCard: FC = ({ state = "default", title, transactionId, + isSpaceBetweenButtons, } = props; const { screenWidth } = useScreenDimension(); @@ -103,20 +106,21 @@ export const DashboardActionCard: FC = ({ )} ) : null} + {children} + {transactionId && ( + + )} - {children} - {transactionId && ( - - )} diff --git a/govtool/frontend/src/components/molecules/DataActionsBar.tsx b/govtool/frontend/src/components/molecules/DataActionsBar.tsx index f8f1587c5..f66274ced 100644 --- a/govtool/frontend/src/components/molecules/DataActionsBar.tsx +++ b/govtool/frontend/src/components/molecules/DataActionsBar.tsx @@ -86,7 +86,7 @@ export const DataActionsBar: FC = ({ ...props }) => { fontWeight: 500, height: 48, padding: "16px 24px", - width: 500, + maxWidth: 500, }} /> { const { t } = useTranslation(); const gaMetadataErrorMessage = { - [GAMetedataErrors.DATA_MISSING]: t("errors.gAMetadata.message.dataMissing"), - [GAMetedataErrors.INCORRECT_FORMAT]: t( + [MetadataValidationStatus.URL_NOT_FOUND]: t( + "errors.gAMetadata.message.dataMissing", + ), + [MetadataValidationStatus.INVALID_JSONLD]: t( "errors.gAMetadata.message.incorrectFormat", ), - [GAMetedataErrors.NOT_VERIFIABLE]: t( + [MetadataValidationStatus.INVALID_HASH]: t( "errors.gAMetadata.message.notVerifiable", ), - }[isDataMissing as GAMetedataErrors]; + }[isDataMissing as MetadataValidationStatus]; const gaMetadataErrorDescription = { - [GAMetedataErrors.DATA_MISSING]: t( + [MetadataValidationStatus.URL_NOT_FOUND]: t( "errors.gAMetadata.description.dataMissing", ), - [GAMetedataErrors.INCORRECT_FORMAT]: t( + [MetadataValidationStatus.INVALID_JSONLD]: t( "errors.gAMetadata.description.incorrectFormat", ), - [GAMetedataErrors.NOT_VERIFIABLE]: t( + [MetadataValidationStatus.INVALID_HASH]: t( "errors.gAMetadata.description.notVerifiable", ), - }[isDataMissing as GAMetedataErrors]; + }[isDataMissing as MetadataValidationStatus]; return isDataMissing && !isSubmitted && !isInProgress ? ( @@ -29,14 +32,24 @@ export const GovernanceActionCardHeader = ({ fontSize: 18, fontWeight: 600, lineHeight: "24px", + display: "-webkit-box", + WebkitBoxOrient: "vertical", + WebkitLineClamp: 2, + wordBreak: "break-word", ...(isDataMissing && { color: "#9E2323" }), }} > - {isDataMissing || title} + {(isDataMissing !== false && + getMetadataDataMissingStatusTranslation( + isDataMissing as MetadataValidationStatus, + )) || + title} {isDataMissing && typeof isDataMissing === "string" && ( { +export const GovernanceActionCardMyVote = ({ voteTxHash, vote }: Props) => { const { t } = useTranslation(); return ( @@ -41,8 +42,7 @@ export const GovernanceActionCardMyVote = ({ vote }: Props) => { - } label={t("createGovernanceAction.storingInformationStep2Label")} stepNumber={2} /> diff --git a/govtool/frontend/src/components/organisms/DRepCard.tsx b/govtool/frontend/src/components/organisms/DRepCard.tsx index 786969754..280201c65 100644 --- a/govtool/frontend/src/components/organisms/DRepCard.tsx +++ b/govtool/frontend/src/components/organisms/DRepCard.tsx @@ -1,13 +1,13 @@ import { useNavigate } from "react-router-dom"; import { Box, ButtonBase, Divider } from "@mui/material"; -import { useTranslation } from "@hooks"; import { Button, StatusPill, Typography } from "@atoms"; +import { ICONS, PATHS } from "@consts"; +import { useModal, useSnackbar } from "@context"; +import { useTranslation } from "@hooks"; +import { DRepData } from "@models"; import { Card } from "@molecules"; -import { correctAdaFormat } from "@/utils"; -import { ICONS, PATHS } from "@/consts"; -import { DRepData } from "@/models"; -import { useSnackbar } from "@/context"; +import { correctAdaFormat } from "@utils"; type DRepCardProps = { dRep: DRepData; @@ -15,15 +15,10 @@ type DRepCardProps = { isInProgress?: boolean; isMe?: boolean; onDelegate?: () => void; -} +}; export const DRepCard = ({ - dRep: { - status, - type, - view, - votingPower, - }, + dRep: { status, type, view, votingPower }, isConnected, isInProgress, isMe, @@ -32,16 +27,28 @@ export const DRepCard = ({ const navigate = useNavigate(); const { t } = useTranslation(); const { addSuccessAlert } = useSnackbar(); + const { openModal } = useModal(); + + const openChooseWalletModal = () => + openModal({ + type: "chooseWallet", + state: { + pathToNavigate: PATHS.dashboardDRepDirectoryDRep.replace( + ":dRepId", + view, + ), + }, + }); return ( @@ -95,7 +102,7 @@ export const DRepCard = ({ - + - ₳ - {' '} - {correctAdaFormat(votingPower)} + ₳ {correctAdaFormat(votingPower)} - {status === "Active" && isConnected && onDelegate && ( - - )} + {status === "Active" && + isConnected && + onDelegate && + !isMe && + !isInProgress && ( + + )} {status === "Active" && !isConnected && ( - + )} diff --git a/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx b/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx index 04f2b8849..65c9fd22b 100644 --- a/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx +++ b/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx @@ -41,6 +41,9 @@ export const DRepDashboardCard = ({ ), }; + const navigateToDrepDirectory = () => + navigate(PATHS.dashboardDRepDirectoryDRep.replace(":dRepId", dRepIDBech32)); + const cardProps: Partial = (() => { // transaction in progress if (inProgress) { @@ -49,6 +52,7 @@ export const DRepDashboardCard = ({ state: "inProgress", ...(pendingTransaction.registerAsDrep && { description: t("dashboard.cards.drep.registrationInProgress"), + transactionId: pendingTransaction?.registerAsDrep.transactionHash, title: t("dashboard.cards.drep.dRepRegistration"), }), ...(pendingTransaction.retireAsDrep && { @@ -58,10 +62,12 @@ export const DRepDashboardCard = ({ values={{ deposit: correctAdaFormat(voter?.deposit) }} /> ), + transactionId: pendingTransaction?.retireAsDrep.transactionHash, title: t("dashboard.cards.drep.dRepRetirement"), }), ...(pendingTransaction.updateMetaData && { description: t("dashboard.cards.drep.metadataUpdateInProgress"), + transactionId: pendingTransaction?.updateMetaData.transactionHash, title: t("dashboard.cards.drep.dRepUpdate"), }), }; @@ -74,8 +80,7 @@ export const DRepDashboardCard = ({ { children: t("dashboard.cards.drep.viewDetails"), dataTestId: "view-drep-details-button", - // TODO: change navigation to drep explorer - onClick: () => navigate("/"), + onClick: navigateToDrepDirectory, variant: "outlined", sx: { backgroundColor: "arcticWhite" }, }, @@ -88,6 +93,7 @@ export const DRepDashboardCard = ({ ], description: t("dashboard.cards.drep.registeredDescription"), state: "active", + transactionId: voter?.dRepRegisterTxHash, title: t("dashboard.cards.drep.registeredTitle"), }; } @@ -115,6 +121,7 @@ export const DRepDashboardCard = ({ description: ( ), + transactionId: voter?.dRepRetireTxHash, title: t("dashboard.cards.drep.notRegisteredWasRegisteredTitle"), }; } @@ -130,10 +137,6 @@ export const DRepDashboardCard = ({ return ( {voter?.isRegisteredAsDRep && !pendingTransaction?.retireAsDrep && ( diff --git a/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx b/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx index 6f68f06a9..0af605808 100644 --- a/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx +++ b/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx @@ -1,18 +1,20 @@ +import { useCallback } from "react"; import { useNavigate } from "react-router-dom"; import { Trans } from "react-i18next"; import { IMAGES, PATHS } from "@consts"; +import { PendingTransaction } from "@context"; import { useTranslation } from "@hooks"; +import { CurrentDelegation } from "@models"; import { - CopyableInfo, DashboardActionCard, DashboardActionCardProps, + DelegationAction, } from "@molecules"; import { correctAdaFormat, formHexToBech32, openInNewTab } from "@utils"; -import { PendingTransaction } from "@/context/pendingTransaction"; type DelegateDashboardCardProps = { - currentDelegation: string; + currentDelegation: CurrentDelegation; delegateTx: PendingTransaction["delegate"]; dRepID: string; votingPower: number; @@ -27,45 +29,55 @@ export const DelegateDashboardCard = ({ const navigate = useNavigate(); const { t } = useTranslation(); + const learnMoreButton = { + children: t("learnMore"), + dataTestId: "delegate-learn-more-button", + onClick: () => + openInNewTab( + "https://docs.sanchogov.tools/faqs/ways-to-use-your-voting-power", + ), + sx: { backgroundColor: "arcticWhite" }, + }; + + const displayedDelegationId = getDisplayedDelegationId({ + currentDelegation: currentDelegation?.dRepView, + delegateTo: delegateTx?.resourceId, + dRepID, + }); + + const onClickDelegateToAnotherDRep = () => + navigate(PATHS.dashboardDRepDirectory); + const ada = correctAdaFormat(votingPower); const cardProps: Partial = (() => { // transaction in progress if (delegateTx) { return { - buttons: [ - { - children: t("seeTransaction"), - dataTestId: "see-transaction-button", - onClick: () => - openInNewTab("https://adanordic.com/latest_transactions"), - }, - ], - description: getProgressDescription( - delegateTx?.resourceId, - dRepID, - ada - ), + buttons: [learnMoreButton], + description: getProgressDescription(delegateTx?.resourceId, ada), state: "inProgress", - title: t("dashboard.delegation.votingPowerDelegation"), + title: t("dashboard.cards.delegation.inProgress.title"), }; } // current delegation if (currentDelegation) { return { - buttons: [ - { - children: t("dashboard.delegation.changeDelegation"), - dataTestId: "change-dRep-button", - onClick: () => navigate(PATHS.delegateTodRep), - }, - ], - description: getDelegationDescription(currentDelegation, dRepID, ada), + buttons: currentDelegation?.dRepView + ? [ + learnMoreButton, + { + children: t("dashboard.cards.delegation.delegateToAnotherDRep"), + dataTestId: "delegate-to-another-drep-button", + onClick: onClickDelegateToAnotherDRep, + sx: { backgroundColor: "arcticWhite" }, + }, + ] + : [learnMoreButton], + description: getDelegationDescription(currentDelegation.dRepView), state: "active", - title: ( - - ), + title: getDelegationTitle(currentDelegation.dRepView, ada), }; } @@ -73,96 +85,94 @@ export const DelegateDashboardCard = ({ return { buttons: [ { - children: t("delegate"), + children: t("dashboard.cards.delegation.noDelegationActionButton"), dataTestId: "delegate-button", - onClick: () => navigate(PATHS.delegateTodRep), + onClick: () => navigate(PATHS.dashboardDRepDirectory), variant: "contained", }, - { - children: t("learnMore"), - dataTestId: "delegate-learn-more-button", - onClick: () => - openInNewTab( - "https://docs.sanchogov.tools/faqs/ways-to-use-your-voting-power" - ), - }, + learnMoreButton, ], - description: ( - - ), - title: t("dashboard.delegation.useYourVotingPower"), + description: t("dashboard.cards.delegation.noDelegationDescription"), + title: t("dashboard.cards.delegation.noDelegationTitle"), }; })(); - const displayedDelegationId = getDisplayedDelegationId( - currentDelegation, - delegateTx?.resourceId, - dRepID + const navigateToDRepDetails = useCallback( + () => + navigate( + PATHS.dashboardDRepDirectoryDRep.replace( + ":dRepId", + displayedDelegationId || "", + ), + ), + [displayedDelegationId], ); return ( {displayedDelegationId && ( - )} ); }; -const getDelegationDescription = ( - currentDelegation: string, - dRepID: string, - ada: number -) => { +const getDelegationTitle = (currentDelegation: string | null, ada: number) => { const key = - currentDelegation === dRepID - ? "dashboard.delegation.toYourself" - : currentDelegation === "drep_always_no_confidence" - ? "dashboard.delegation.voteNo" - : currentDelegation === "drep_always_abstain" - ? "dashboard.delegation.voteAbstain" - : currentDelegation - ? "dashboard.delegation.toDRep" - : undefined; + currentDelegation === "drep_always_no_confidence" + ? "dashboard.cards.delegation.noConfidenceDelegationTitle" + : currentDelegation === "drep_always_abstain" + ? "dashboard.cards.delegation.abstainDelegationTitle" + : "dashboard.cards.delegation.dRepDelegationTitle"; + return ; }; -const getProgressDescription = ( - delegateTo: string, - dRepID: string, - ada: number -) => { +const getDelegationDescription = (currentDelegation: string | null) => { + const key = + currentDelegation === "drep_always_no_confidence" + ? "dashboard.cards.delegation.noDescription" + : currentDelegation === "drep_always_abstain" + ? "dashboard.cards.delegation.abstainDescription" + : undefined; + return ; +}; + +const getProgressDescription = (delegateTo: string, ada: number) => { const key = (() => { if (!delegateTo) return undefined; switch (delegateTo) { - case dRepID: - return "dashboard.delegation.inProgress.toYourself"; case "no confidence": - return "dashboard.delegation.inProgress.voteNo"; + return "dashboard.cards.delegation.inProgress.no"; case "abstain": - return "dashboard.delegation.inProgress.voteAbstain"; + return "dashboard.cards.delegation.inProgress.abstain"; default: - return "dashboard.delegation.inProgress.toDRep"; + return "dashboard.cards.delegation.inProgress.dRep"; } })(); return ; }; -const getDisplayedDelegationId = ( - currentDelegation: string, - delegateTo: string | undefined, - dRepID: string -) => { +const getDisplayedDelegationId = ({ + dRepID, + currentDelegation, + delegateTo, +}: { + dRepID: string; + currentDelegation?: string | null; + delegateTo?: string; +}) => { const restrictedNames = [ dRepID, "drep_always_abstain", @@ -178,8 +188,9 @@ const getDisplayedDelegationId = ( } return undefined; } - if (!restrictedNames.includes(currentDelegation)) { - return formHexToBech32(currentDelegation); + + if (!restrictedNames.includes(currentDelegation ?? "")) { + return formHexToBech32(currentDelegation ?? ""); } return undefined; }; diff --git a/govtool/frontend/src/components/organisms/DashboardCards/SoleVoterDashboardCard.tsx b/govtool/frontend/src/components/organisms/DashboardCards/SoleVoterDashboardCard.tsx index 5656d9c5d..fd244b3d5 100644 --- a/govtool/frontend/src/components/organisms/DashboardCards/SoleVoterDashboardCard.tsx +++ b/govtool/frontend/src/components/organisms/DashboardCards/SoleVoterDashboardCard.tsx @@ -46,11 +46,13 @@ export const SoleVoterDashboardCard = ({ state: "inProgress", ...(pendingTransaction.registerAsSoleVoter && { description: t("dashboard.cards.soleVoter.registrationInProgress"), + transactionId: + pendingTransaction?.registerAsSoleVoter?.transactionHash, title: t("dashboard.cards.soleVoter.registration"), - transactionId: pendingTransaction.registerAsSoleVoter.resourceId, }), ...(pendingTransaction.retireAsSoleVoter && { description: t("dashboard.cards.soleVoter.retirementInProgress"), + transactionId: pendingTransaction?.retireAsSoleVoter?.transactionHash, title: t("dashboard.cards.soleVoter.retirement"), }), }; @@ -75,6 +77,7 @@ export const SoleVoterDashboardCard = ({ /> ), state: "active", + transactionId: voter?.soleVoterRegisterTxHash, title: t("dashboard.cards.soleVoter.youAreSoleVoterTitle"), }; } @@ -97,6 +100,7 @@ export const SoleVoterDashboardCard = ({ values={{ votingPower: ada }} /> ), + transactionId: voter?.soleVoterRetireTxHash, title: t("dashboard.cards.soleVoter.wasSoleVoterTitle"), }; } @@ -123,14 +127,6 @@ export const SoleVoterDashboardCard = ({ })(); return ( - + ); }; diff --git a/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx b/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx index ab224032e..d2a2619e6 100644 --- a/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx +++ b/govtool/frontend/src/components/organisms/DashboardGovernanceActions.tsx @@ -2,10 +2,12 @@ import { useState, useEffect } from "react"; import { Box, CircularProgress, Tab, Tabs, styled } from "@mui/material"; import { useLocation } from "react-router-dom"; -import { GOVERNANCE_ACTIONS_FILTERS, GOVERNANCE_ACTIONS_SORTING } from "@consts"; -import { useCardano } from "@context"; import { - useDataActionsBar, + GOVERNANCE_ACTIONS_FILTERS, + GOVERNANCE_ACTIONS_SORTING, +} from "@consts"; +import { useCardano, useDataActionsBar } from "@context"; +import { useGetProposalsQuery, useGetVoterInfo, useScreenDimension, diff --git a/govtool/frontend/src/components/organisms/DashboardGovernanceActionsVotedOn.tsx b/govtool/frontend/src/components/organisms/DashboardGovernanceActionsVotedOn.tsx index 145f2e4cf..5e5667109 100644 --- a/govtool/frontend/src/components/organisms/DashboardGovernanceActionsVotedOn.tsx +++ b/govtool/frontend/src/components/organisms/DashboardGovernanceActionsVotedOn.tsx @@ -22,7 +22,11 @@ export const DashboardGovernanceActionsVotedOn = ({ searchPhrase, sorting, }: DashboardGovernanceActionsVotedOnProps) => { - const { data, areDRepVotesLoading } = useGetDRepVotesQuery(filters, sorting); + const { data, areDRepVotesLoading } = useGetDRepVotesQuery( + filters, + sorting, + searchPhrase, + ); const { isMobile } = useScreenDimension(); const { pendingTransaction } = useCardano(); const { t } = useTranslation(); diff --git a/govtool/frontend/src/components/organisms/DashboardTopNav.tsx b/govtool/frontend/src/components/organisms/DashboardTopNav.tsx index 787735251..fdf0a29c9 100644 --- a/govtool/frontend/src/components/organisms/DashboardTopNav.tsx +++ b/govtool/frontend/src/components/organisms/DashboardTopNav.tsx @@ -53,6 +53,7 @@ export const DashboardTopNav = ({ display: "flex", justifyContent: "space-between", position: "sticky", + minHeight: isMobile ? 36 : 48, px: isMobile ? 2 : 5, py: 3, top: 0, diff --git a/govtool/frontend/src/components/organisms/DelegateTodRepStepOne.tsx b/govtool/frontend/src/components/organisms/DelegateTodRepStepOne.tsx deleted file mode 100644 index 6524497d4..000000000 --- a/govtool/frontend/src/components/organisms/DelegateTodRepStepOne.tsx +++ /dev/null @@ -1,326 +0,0 @@ -import { useEffect, useState, useCallback, useMemo } from "react"; -import { useNavigate } from "react-router-dom"; -import { Box, Grid } from "@mui/material"; - -import { ActionRadio, Button, LoadingButton, Typography } from "@atoms"; -import { ICONS, PATHS } from "@consts"; -import { useCardano, useModal } from "@context"; -import { - useGetAdaHolderCurrentDelegationQuery, - useGetAdaHolderVotingPowerQuery, - useGetVoterInfo, - useScreenDimension, - useTranslation, -} from "@hooks"; -import { correctAdaFormat } from "@utils"; -import { theme } from "@/theme"; - -interface DelegateProps { - setStep: (newStep: number) => void; -} - -export const DelegateTodRepStepOne = ({ setStep }: DelegateProps) => { - const navigate = useNavigate(); - const { - dRepID, - buildSignSubmitConwayCertTx, - buildVoteDelegationCert, - stakeKey, - } = useCardano(); - const { voter } = useGetVoterInfo(); - const { currentDelegation } = useGetAdaHolderCurrentDelegationQuery(stakeKey); - const { openModal, closeModal } = useModal(); - const [areOptions, setAreOptions] = useState(false); - const [chosenOption, setChosenOption] = useState(""); - const [isDelegationLoading, setIsDelegationLoading] = - useState(false); - const { - palette: { boxShadow2 }, - } = theme; - const { isMobile } = useScreenDimension(); - const { t } = useTranslation(); - - const { votingPower } = useGetAdaHolderVotingPowerQuery(stakeKey); - const correctAdaRepresentation = correctAdaFormat(votingPower); - - const openSuccessDelegationModal = useCallback(() => { - openModal({ - type: "statusModal", - state: { - status: "success", - title: t("modals.delegation.title"), - message: t("modals.delegation.message"), - link: "https://adanordic.com/latest_transactions", - buttonText: t("modals.common.goToDashboard"), - onSubmit: () => { - navigate(PATHS.dashboard); - closeModal(); - }, - dataTestId: "delegation-transaction-submitted-modal", - }, - }); - }, []); - - const openErrorDelegationModal = useCallback((errorMessage: string) => { - openModal({ - type: "statusModal", - state: { - status: "warning", - title: t("modals.delegation.title"), - message: errorMessage, - isWarning: true, - buttonText: t("modals.common.goToDashboard"), - onSubmit: () => { - navigate(PATHS.dashboard); - closeModal(); - }, - dataTestId: "delegation-transaction-error-modal", - }, - }); - }, []); - - useEffect(() => { - if ( - !areOptions && - (chosenOption === "no confidence" || chosenOption === "abstain") - ) { - setChosenOption(""); - } - }, [chosenOption, areOptions]); - - const delegate = useCallback(async () => { - setIsDelegationLoading(true); - try { - const certBuilder = await buildVoteDelegationCert(chosenOption); - const result = await buildSignSubmitConwayCertTx({ - certBuilder, - type: "delegate", - resourceId: chosenOption, - }); - if (result) openSuccessDelegationModal(); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (error: any) { - const errorMessage = error.info ? error.info : error; - - openErrorDelegationModal(errorMessage); - } finally { - setIsDelegationLoading(false); - } - }, [chosenOption, buildSignSubmitConwayCertTx, buildVoteDelegationCert]); - - const renderDelegateButton = useMemo( - () => ( - { - if (chosenOption === "Delegate to DRep") { - setStep(2); - } else { - delegate(); - } - }} - size="extraLarge" - sx={{ - px: 6, - width: isMobile ? "100%" : "auto", - }} - variant="contained" - > - {chosenOption !== dRepID ? t("nextStep") : t("delegate")} - - ), - [ - chosenOption, - delegate, - voter?.isRegisteredAsDRep, - voter?.isRegisteredAsSoleVoter, - dRepID, - isDelegationLoading, - isMobile, - ], - ); - - const renderCancelButton = useMemo( - () => ( - - ), - [isMobile], - ); - - return ( - - - {!isMobile && ( - - - - - {t("delegation.votingPowerToDelegate")} - - - {`₳ ${correctAdaRepresentation}`} - - - - - )} - - {t("delegation.heading")} - - - {t("delegation.description")} - - - {(voter?.isRegisteredAsDRep || voter?.isRegisteredAsSoleVoter) && - currentDelegation !== dRepID && ( - - - - )} - - - - setAreOptions((prev) => !prev)} - textAlign="center" - sx={[ - { - "&:hover": { cursor: "pointer" }, - display: "flex", - alignItems: "center", - justifyContent: "center", - }, - ]} - > - - {t("delegation.otherOptions")} - - arrow - - {areOptions ? ( - <> - - - - - - - - ) : null} - - - - {isMobile ? renderDelegateButton : renderCancelButton} - - {isMobile ? renderCancelButton : renderDelegateButton} - - - ); -}; diff --git a/govtool/frontend/src/components/organisms/DelegateTodRepStepTwo.tsx b/govtool/frontend/src/components/organisms/DelegateTodRepStepTwo.tsx deleted file mode 100644 index 7ac503d7a..000000000 --- a/govtool/frontend/src/components/organisms/DelegateTodRepStepTwo.tsx +++ /dev/null @@ -1,132 +0,0 @@ -import { useMemo } from "react"; -import { Box, Link } from "@mui/material"; - -import { - useScreenDimension, - useDelegateTodRepForm, - useTranslation, -} from "@hooks"; -import { openInNewTab } from "@utils"; -import { Button, LoadingButton, Typography } from "../atoms"; -import { theme } from "@/theme"; -import { ControlledField } from "."; - -interface DelegateProps { - setStep: (newStep: number) => void; -} - -export const DelegateTodRepStepTwo = ({ setStep }: DelegateProps) => { - const { isMobile } = useScreenDimension(); - const { t } = useTranslation(); - - const { - palette: { boxShadow2 }, - } = theme; - - const { - control, - delegate, - errors, - isDelegateButtonDisabled, - isDelegationLoading, - } = useDelegateTodRepForm(); - - const renderDelegateButton = useMemo( - () => ( - - {t("delegate")} - - ), - [isDelegateButtonDisabled, delegate, isMobile, isDelegationLoading], - ); - - const renderBackButton = useMemo( - () => ( - - ), - [isMobile], - ); - - return ( - - - - {t("delegation.pasteDRepId")} - - - {t("delegation.dRepIdDescription")} - - - - - - openInNewTab( - "https://docs.sanchogov.tools/faqs/where-can-i-find-a-drep-id", - ) - } - alignSelf="center" - mt={4} - sx={[{ "&:hover": { cursor: "pointer" } }]} - > - - {t("delegation.whereFindDRepId")} - - - - - {isMobile ? renderDelegateButton : renderBackButton} - - {isMobile ? renderBackButton : renderDelegateButton} - - - ); -}; diff --git a/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx b/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx index 5a7b6293c..119664349 100644 --- a/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx +++ b/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx @@ -35,9 +35,10 @@ export const EditDRepStorageInformation = ({ const fileName = getValues("dRepName"); - // TODO: Change link to correct const openGuideAboutStoringInformation = () => - openInNewTab("https://sancho.network/"); + openInNewTab( + "https://docs.sanchogov.tools/faqs/how-to-create-a-metadata-anchor", + ); const isActionButtonDisabled = !watch("storingURL") || !!errors.storingURL; diff --git a/govtool/frontend/src/components/organisms/Footer.tsx b/govtool/frontend/src/components/organisms/Footer.tsx index 709bf7ae2..4eb76e6fe 100644 --- a/govtool/frontend/src/components/organisms/Footer.tsx +++ b/govtool/frontend/src/components/organisms/Footer.tsx @@ -2,6 +2,7 @@ import { Box, Link } from "@mui/material"; import { Button, Typography } from "@atoms"; import { ICONS } from "@consts"; +import { useUsersnapApi } from "@context"; import { useScreenDimension, useTranslation } from "@hooks"; import { openInNewTab } from "@utils"; @@ -30,6 +31,7 @@ const FooterLink = ({ label, onClick }: FooterLinkProps) => ( export const Footer = () => { const { screenWidth } = useScreenDimension(); const { t } = useTranslation(); + const { openFeedbackWindow } = useUsersnapApi(); const onClickHelp = () => openInNewTab("https://docs.sanchogov.tools/support/get-help-in-discord"); @@ -41,8 +43,7 @@ export const Footer = () => { const onClickTermOfService = () => openInNewTab("https://docs.sanchogov.tools/legal/privacy-policy"); - // TODO: add feedback action - const onClickFeedback = () => {}; + const onClickFeedback = () => openFeedbackWindow(); return ( {index < proposals.length - 1 && ( diff --git a/govtool/frontend/src/components/organisms/HomeCards.tsx b/govtool/frontend/src/components/organisms/HomeCards.tsx index d3316679c..b381a24b0 100644 --- a/govtool/frontend/src/components/organisms/HomeCards.tsx +++ b/govtool/frontend/src/components/organisms/HomeCards.tsx @@ -18,39 +18,34 @@ export const HomeCards = () => { openModal({ type: "chooseWallet" }); }, [openModal]); - const onClickLearnMoreAboutDelegation = useCallback( - () => - openInNewTab( - "https://docs.sanchogov.tools/faqs/ways-to-use-your-voting-power", - ), - [], - ); + const onClickLearnMoreAboutDelegation = () => + openInNewTab( + "https://docs.sanchogov.tools/faqs/ways-to-use-your-voting-power", + ); - const onClickLearnMoreAboutDRepRegistration = useCallback( - () => - openInNewTab( - "https://docs.sanchogov.tools/faqs/what-does-it-mean-to-register-as-a-drep", - ), - [], - ); + const onClickLearnMoreAboutDRepRegistration = () => + openInNewTab( + "https://docs.sanchogov.tools/faqs/what-does-it-mean-to-register-as-a-drep", + ); - const onClickLearnMoreAboutSoleVoterRegistration = useCallback( - // TODO: Update the link - () => openInNewTab("https://docs.sanchogov.tools/"), - [], - ); + // TODO: Update the link + const onClickLearnMoreAboutSoleVoterRegistration = () => + openInNewTab("https://docs.sanchogov.tools/"); - const onClickLearnMoreAboutProposingGovAction = useCallback( - // TODO: Update the link - () => openInNewTab("https://docs.sanchogov.tools/"), - [], - ); + // TODO: Update the link + const onClickLearnMoreAboutProposingGovAction = () => + openInNewTab("https://docs.sanchogov.tools/"); const navigateToGovActions = useCallback( () => navigate(PATHS.governanceActions), [navigate], ); + const navigateToDRepDirecotry = useCallback( + () => navigate(PATHS.dRepDirectory), + [navigate], + ); + return ( { dataTestIdFirstButton="delegate-connect-wallet-button" dataTestIdSecondButton="delegate-learn-more-button" description={t("home.cards.delegate.description")} - firstButtonAction={openWalletModal} + firstButtonAction={navigateToDRepDirecotry} firstButtonLabel={t("home.cards.delegate.firstButtonLabel")} imageHeight={80} imageURL={IMAGES.govActionDelegateImage} diff --git a/govtool/frontend/src/components/organisms/Modal/ChooseWalletModal.tsx b/govtool/frontend/src/components/organisms/Modal/ChooseWalletModal.tsx index e66f28ab3..043beb1e3 100644 --- a/govtool/frontend/src/components/organisms/Modal/ChooseWalletModal.tsx +++ b/govtool/frontend/src/components/organisms/Modal/ChooseWalletModal.tsx @@ -2,13 +2,20 @@ import { Box, Link, Typography } from "@mui/material"; import { useMemo } from "react"; import { ModalContents, ModalHeader, ModalWrapper } from "@atoms"; +import { useModal } from "@context"; import type { WalletOption } from "@molecules"; import { WalletOptionButton } from "@molecules"; import { openInNewTab } from "@utils"; import { useTranslation } from "@hooks"; +import { To } from "react-router-dom"; + +type ChooseWalletModalState = { + pathToNavigate?: To; +}; export const ChooseWalletModal = () => { const { t } = useTranslation(); + const { state } = useModal(); const walletOptions: WalletOption[] = useMemo(() => { if (!window.cardano) return []; @@ -81,6 +88,7 @@ export const ChooseWalletModal = () => { label={label} name={name} cip95Available={cip95Available} + pathToNavigate={state?.pathToNavigate} /> )) )} diff --git a/govtool/frontend/src/components/organisms/Modal/StatusModal.tsx b/govtool/frontend/src/components/organisms/Modal/StatusModal.tsx index 4c0a4416b..95270c78c 100644 --- a/govtool/frontend/src/components/organisms/Modal/StatusModal.tsx +++ b/govtool/frontend/src/components/organisms/Modal/StatusModal.tsx @@ -2,7 +2,7 @@ import { Button, Link, Typography } from "@mui/material"; import { ModalContents, ModalHeader, ModalWrapper } from "@atoms"; import { ICONS, IMAGES } from "@consts"; -import { useModal } from "@context"; +import { useModal, useUsersnapApi } from "@context"; import { openInNewTab } from "@utils"; import { useScreenDimension, useTranslation } from "@hooks"; @@ -26,6 +26,12 @@ export const StatusModal = () => { const { state, closeModal } = useModal(); const { isMobile } = useScreenDimension(); const { t } = useTranslation(); + const { openFeedbackWindow } = useUsersnapApi(); + + const onClickFeedback = () => { + openFeedbackWindow(); + closeModal(); + }; return ( @@ -95,7 +101,7 @@ export const StatusModal = () => { {state?.feedbackText && ( } label={t("registration.storingInformationStep1Label")} diff --git a/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/WhatRetirementMeans.tsx b/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/WhatRetirementMeans.tsx index 23f0fe766..4a95e2ddf 100644 --- a/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/WhatRetirementMeans.tsx +++ b/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/WhatRetirementMeans.tsx @@ -2,7 +2,12 @@ import { useCallback, useState } from "react"; import { Typography } from "@atoms"; import { useCardano, useModal } from "@context"; -import { useGetVoterInfo, useScreenDimension, useTranslation } from "@hooks"; +import { + useGetVoterInfo, + useScreenDimension, + useTranslation, + useWalletErrorModal, +} from "@hooks"; import { BgCard } from ".."; @@ -22,6 +27,7 @@ export const WhatRetirementMeans = ({ const [isRetirementLoading, setIsRetirementLoading] = useState(false); const { voter } = useGetVoterInfo(); + const openWalletErrorModal = useWalletErrorModal(); const onSubmit = () => { onClickCancel(); @@ -49,7 +55,7 @@ export const WhatRetirementMeans = ({ state: { buttonText: t("modals.common.goToDashboard"), dataTestId: "retirement-transaction-submitted-modal", - link: "https://adanordic.com/latest_transactions", + link: `https://sancho.cexplorer.io/tx/${result}`, message: t("modals.retirement.message"), onSubmit, status: "success", @@ -59,18 +65,11 @@ export const WhatRetirementMeans = ({ } // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { - const errorMessage = error.info ? error.info : error; - - openModal({ - type: "statusModal", - state: { - buttonText: t("modals.common.goToDashboard"), - dataTestId: "retirement-transaction-error-modal", - message: errorMessage, - onSubmit, - status: "warning", - title: t("modals.common.oops"), - }, + openWalletErrorModal({ + error, + onSumbit: onClickCancel, + buttonText: t("modals.common.goToDashboard"), + dataTestId: "retirement-transaction-error-modal", }); } finally { setIsRetirementLoading(false); diff --git a/govtool/frontend/src/components/organisms/RegisterAsSoleVoterBox.tsx b/govtool/frontend/src/components/organisms/RegisterAsSoleVoterBox.tsx index 445b0a474..d7fe60c77 100644 --- a/govtool/frontend/src/components/organisms/RegisterAsSoleVoterBox.tsx +++ b/govtool/frontend/src/components/organisms/RegisterAsSoleVoterBox.tsx @@ -6,7 +6,7 @@ import { PATHS } from "@consts"; import { RegisterAsSoleVoterBoxContent } from "@organisms"; import { CenteredBoxBottomButtons } from "@molecules"; import { useCardano, useModal } from "@context"; -import { useGetVoterInfo } from "@/hooks"; +import { useGetVoterInfo, useWalletErrorModal } from "@hooks"; export const RegisterAsSoleVoterBox = () => { const [isLoading, setIsLoading] = useState(false); @@ -17,6 +17,7 @@ export const RegisterAsSoleVoterBox = () => { const { openModal, closeModal } = useModal(); const { t } = useTranslation(); const { voter } = useGetVoterInfo(); + const openWalletErrorModal = useWalletErrorModal(); const onRegister = useCallback(async () => { setIsLoading(true); @@ -36,7 +37,7 @@ export const RegisterAsSoleVoterBox = () => { status: "success", title: t("modals.registration.title"), message: t("modals.registration.message"), - link: "https://adanordic.com/latest_transactions", + link: `https://sancho.cexplorer.io/tx/${result}`, buttonText: t("modals.common.goToDashboard"), onSubmit: () => { navigate(PATHS.dashboard); @@ -47,22 +48,12 @@ export const RegisterAsSoleVoterBox = () => { }); } // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (e: any) { - const errorMessage = e.info ? e.info : e; - - openModal({ - type: "statusModal", - state: { - status: "warning", - title: t("modals.common.oops"), - message: errorMessage, - buttonText: t("modals.common.goToDashboard"), - onSubmit: () => { - navigate(PATHS.dashboard); - closeModal(); - }, - dataTestId: "registration-transaction-error-modal", - }, + } catch (error: any) { + openWalletErrorModal({ + error, + buttonText: t("modals.common.goToDashboard"), + onSumbit: () => navigate(PATHS.dashboard), + dataTestId: "registration-transaction-error-modal", }); } finally { setIsLoading(false); diff --git a/govtool/frontend/src/components/organisms/RetireAsSoleVoterBox.tsx b/govtool/frontend/src/components/organisms/RetireAsSoleVoterBox.tsx index 081e05d40..d8acfa91e 100644 --- a/govtool/frontend/src/components/organisms/RetireAsSoleVoterBox.tsx +++ b/govtool/frontend/src/components/organisms/RetireAsSoleVoterBox.tsx @@ -6,7 +6,7 @@ import { PATHS } from "@consts"; import { CenteredBoxBottomButtons } from "@molecules"; import { useCardano, useModal } from "@context"; import { RetireAsSoleVoterBoxContent } from "@organisms"; -import { useGetVoterInfo } from "@/hooks"; +import { useGetVoterInfo, useWalletErrorModal } from "@hooks"; export const RetireAsSoleVoterBox = () => { const [isLoading, setIsLoading] = useState(false); @@ -20,6 +20,7 @@ export const RetireAsSoleVoterBox = () => { const { openModal, closeModal } = useModal(); const { t } = useTranslation(); const { voter } = useGetVoterInfo(); + const openWalletErrorModal = useWalletErrorModal(); const onRetire = useCallback(async () => { try { @@ -44,7 +45,7 @@ export const RetireAsSoleVoterBox = () => { status: "success", title: t("modals.retirement.title"), message: t("modals.retirement.message"), - link: "https://adanordic.com/latest_transactions", + link: `https://sancho.cexplorer.io/tx/${result}`, buttonText: t("modals.common.goToDashboard"), dataTestId: "retirement-transaction-submitted-modal", onSubmit: () => { @@ -56,21 +57,11 @@ export const RetireAsSoleVoterBox = () => { } // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { - const errorMessage = error.info ? error.info : error; - - openModal({ - type: "statusModal", - state: { - status: "warning", - message: errorMessage, - buttonText: t("modals.common.goToDashboard"), - title: t("modals.common.oops"), - dataTestId: "retirement-transaction-error-modal", - onSubmit: () => { - navigate(PATHS.dashboard); - closeModal(); - }, - }, + openWalletErrorModal({ + error, + buttonText: t("modals.common.goToDashboard"), + onSumbit: () => navigate(PATHS.dashboard), + dataTestId: "retirement-transaction-error-modal", }); } finally { setIsLoading(false); diff --git a/govtool/frontend/src/components/organisms/VoteContext/VoteContextStoringInformation.tsx b/govtool/frontend/src/components/organisms/VoteContext/VoteContextStoringInformation.tsx index 96d91b3a8..3646a7cb7 100644 --- a/govtool/frontend/src/components/organisms/VoteContext/VoteContextStoringInformation.tsx +++ b/govtool/frontend/src/components/organisms/VoteContext/VoteContextStoringInformation.tsx @@ -34,9 +34,10 @@ export const VoteContextStoringInformation = ({ onClickDownloadJson, } = useVoteContextForm(setSavedHash, setStep, setErrorMessage); - // TODO: Change link to correct const openGuideAboutStoringInformation = () => - openInNewTab("https://sancho.network/"); + openInNewTab( + "https://docs.sanchogov.tools/faqs/how-to-create-a-metadata-anchor", + ); const isContinueDisabled = !watch("storingURL"); diff --git a/govtool/frontend/src/components/organisms/index.ts b/govtool/frontend/src/components/organisms/index.ts index 98b15c721..298b66492 100644 --- a/govtool/frontend/src/components/organisms/index.ts +++ b/govtool/frontend/src/components/organisms/index.ts @@ -10,8 +10,6 @@ export * from "./DashboardGovernanceActionDetails"; export * from "./DashboardGovernanceActions"; export * from "./DashboardGovernanceActionsVotedOn"; export * from "./DashboardTopNav"; -export * from "./DelegateTodRepStepOne"; -export * from "./DelegateTodRepStepTwo"; export * from "./Drawer"; export * from "./DrawerMobile"; export * from "./DRepCard"; diff --git a/govtool/frontend/src/consts/dRepDirectory/sorting.ts b/govtool/frontend/src/consts/dRepDirectory/sorting.ts index ab5b531bb..9604e9c61 100644 --- a/govtool/frontend/src/consts/dRepDirectory/sorting.ts +++ b/govtool/frontend/src/consts/dRepDirectory/sorting.ts @@ -1,7 +1,7 @@ export const DREP_DIRECTORY_SORTING = [ { - key: "NewestRegistered", - label: "Newest registered", + key: "RegistrationDate", + label: "Registration date", }, { key: "VotingPower", diff --git a/govtool/frontend/src/consts/governanceAction/fields.ts b/govtool/frontend/src/consts/governanceAction/fields.ts index b46cc8480..59fec4bcd 100644 --- a/govtool/frontend/src/consts/governanceAction/fields.ts +++ b/govtool/frontend/src/consts/governanceAction/fields.ts @@ -7,6 +7,11 @@ import { SharedGovernanceActionFieldSchema, } from "@/types/governanceAction"; +export const GovernanceActionTootlip = { + Info: I18n.t("govActions.tooltips.info"), + Treasury: I18n.t("govActions.tooltips.treasury"), +}; + export const CIP_100 = "https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#"; export const CIP_108 = @@ -19,6 +24,12 @@ export const sharedGovernanceActionFields: SharedGovernanceActionFieldSchema = { placeholderI18nKey: "createGovernanceAction.fields.declarations.title.placeholder", rules: { + maxLength: { + value: 80, + message: I18n.t("createGovernanceAction.fields.validations.maxLength", { + maxLength: 80, + }), + }, required: { value: true, message: I18n.t("createGovernanceAction.fields.validations.required"), diff --git a/govtool/frontend/src/consts/governanceAction/filters.ts b/govtool/frontend/src/consts/governanceAction/filters.ts index 26b18c02b..dbe25adbc 100644 --- a/govtool/frontend/src/consts/governanceAction/filters.ts +++ b/govtool/frontend/src/consts/governanceAction/filters.ts @@ -1,30 +1,39 @@ +import I18n from "@/i18n"; + export const GOVERNANCE_ACTIONS_FILTERS = [ { key: "NoConfidence", - label: "No Confidence", + title: I18n.t("govActions.type.noConfidence.title"), + label: I18n.t("govActions.type.noConfidence.label"), }, { key: "NewCommittee", - label: "New Constitutional Committee or Quorum Size", + title: I18n.t("govActions.type.newCommittee.title"), + label: I18n.t("govActions.type.newCommittee.label"), }, { key: "NewConstitution", - label: "Update to the Constitution", + title: I18n.t("govActions.type.newConstitution.title"), + label: I18n.t("govActions.type.newConstitution.label"), }, { key: "HardForkInitiation", - label: "Hard Fork", + title: I18n.t("govActions.type.hardFork.title"), + label: I18n.t("govActions.type.hardFork.label"), }, { key: "ParameterChange", - label: "Protocol Parameter Changes", + title: I18n.t("govActions.type.parameterChange.title"), + label: I18n.t("govActions.type.parameterChange.label"), }, { key: "TreasuryWithdrawals", - label: "Treasury Withdrawals", + title: I18n.t("govActions.type.treasuryWithdrawals.title"), + label: I18n.t("govActions.type.treasuryWithdrawals.label"), }, { key: "InfoAction", - label: "Info Action", + title: I18n.t("govActions.type.infoAction.title"), + label: I18n.t("govActions.type.infoAction.label"), }, ]; diff --git a/govtool/frontend/src/consts/paths.ts b/govtool/frontend/src/consts/paths.ts index 7fb2d92f4..f51a27926 100644 --- a/govtool/frontend/src/consts/paths.ts +++ b/govtool/frontend/src/consts/paths.ts @@ -7,7 +7,6 @@ export const PATHS = { "/connected/governance_actions/category/:category", dashboardDRepDirectory: "/connected/drep_directory", dashboardDRepDirectoryDRep: "/connected/drep_directory/:dRepId", - delegateTodRep: "/delegate", dRepDirectory: "/drep_directory", dRepDirectoryDRep: "/drep_directory/:dRepId", editDrepMetadata: "/edit_drep", diff --git a/govtool/frontend/src/context/contextProviders.tsx b/govtool/frontend/src/context/contextProviders.tsx index 8dd95da9c..451beb2f0 100644 --- a/govtool/frontend/src/context/contextProviders.tsx +++ b/govtool/frontend/src/context/contextProviders.tsx @@ -1,6 +1,7 @@ import { CardanoProvider, useCardano } from "./wallet"; import { ModalProvider, useModal } from "./modal"; import { SnackbarProvider, useSnackbar } from "./snackbar"; +import { DataActionsBarProvider } from "./dataActionsBar"; interface Props { children: React.ReactNode; @@ -9,7 +10,9 @@ interface Props { const ContextProviders = ({ children }: Props) => ( - {children} + + {children} + ); diff --git a/govtool/frontend/src/context/dataActionsBar.tsx b/govtool/frontend/src/context/dataActionsBar.tsx new file mode 100644 index 000000000..eab02a6f6 --- /dev/null +++ b/govtool/frontend/src/context/dataActionsBar.tsx @@ -0,0 +1,137 @@ +import React, { + createContext, + useContext, + useState, + useCallback, + Dispatch, + SetStateAction, + useEffect, + useMemo, + FC, +} from "react"; +import { useLocation } from "react-router-dom"; + +import { useDebounce } from "@hooks"; + +interface DataActionsBarContextType { + chosenFilters: string[]; + chosenFiltersLength: number; + chosenSorting: string; + closeFilters: () => void; + closeSorts: () => void; + debouncedSearchText: string; + filtersOpen: boolean; + searchText: string; + setChosenFilters: Dispatch>; + setChosenSorting: Dispatch>; + setFiltersOpen: Dispatch>; + setSearchText: Dispatch>; + setSortOpen: Dispatch>; + sortingActive: boolean; + sortOpen: boolean; +} + +const DataActionsBarContext = createContext< + DataActionsBarContextType | undefined +>(undefined); +DataActionsBarContext.displayName = "DataActionsBarContext"; + +interface ProviderProps { + children: React.ReactNode; +} + +const DataActionsBarProvider: FC = ({ children }) => { + const [searchText, setSearchText] = useState(""); + const debouncedSearchText = useDebounce(searchText, 300); + const [filtersOpen, setFiltersOpen] = useState(false); + const [chosenFilters, setChosenFilters] = useState([]); + const [sortOpen, setSortOpen] = useState(false); + const [chosenSorting, setChosenSorting] = useState(""); + const [lastPath, setLastPath] = useState(""); + + const { pathname } = useLocation(); + + const closeFilters = useCallback(() => { + setFiltersOpen(false); + }, []); + + const closeSorts = useCallback(() => { + setSortOpen(false); + }, []); + + const resetState = useCallback(() => { + setSearchText(""); + setChosenFilters([]); + setChosenSorting(""); + }, []); + + const userMovedToDifferentAppArea = + pathname !== lastPath && !pathname.startsWith(lastPath); + const userOpenedGADetailsFromCategoryPage = + lastPath.includes("governance_actions/category") && + pathname.includes("governance_actions/"); + const userMovedFromGAListToCategoryPage = + lastPath.endsWith("governance_actions") && + pathname.includes("governance_actions/category"); + + useEffect(() => { + if ( + (userMovedToDifferentAppArea && !userOpenedGADetailsFromCategoryPage) || + userMovedFromGAListToCategoryPage + ) { + resetState(); + } + }, [pathname, resetState]); + + useEffect(() => { + setLastPath(pathname); + }, [searchText, chosenFilters, chosenSorting]); + + const contextValue = useMemo( + () => ({ + chosenFilters, + chosenFiltersLength: chosenFilters.length, + chosenSorting, + closeFilters, + closeSorts, + debouncedSearchText, + filtersOpen, + searchText, + setChosenFilters, + setChosenSorting, + setFiltersOpen, + setSearchText, + setSortOpen, + sortingActive: Boolean(chosenSorting), + sortOpen, + }), + [ + chosenFilters, + chosenSorting, + debouncedSearchText, + filtersOpen, + searchText, + sortOpen, + closeFilters, + closeSorts, + ], + ); + + return ( + + {children} + + ); +}; + +function useDataActionsBar() { + const context = useContext(DataActionsBarContext); + if (!context) { + throw new Error( + "useDataActionsBar must be used within a DataActionsBarProvider", + ); + } + return context; +} + +export { DataActionsBarProvider, useDataActionsBar }; diff --git a/govtool/frontend/src/context/index.ts b/govtool/frontend/src/context/index.ts index 4fe6a9c62..3a67109b3 100644 --- a/govtool/frontend/src/context/index.ts +++ b/govtool/frontend/src/context/index.ts @@ -1,5 +1,7 @@ export * from "./contextProviders"; +export * from "./dataActionsBar"; export * from "./modal"; export * from "./pendingTransaction"; export * from "./snackbar"; +export * from "./usersnapContext"; export * from "./wallet"; diff --git a/govtool/frontend/src/context/usersnapContext.tsx b/govtool/frontend/src/context/usersnapContext.tsx new file mode 100644 index 000000000..55ea92831 --- /dev/null +++ b/govtool/frontend/src/context/usersnapContext.tsx @@ -0,0 +1,93 @@ +import React, { + useEffect, + useState, + useContext, + useCallback, + useMemo, +} from "react"; +import { InitOptions, WidgetApi, loadSpace } from "@usersnap/browser"; + +type WidgetValues = { + assignee?: string; + custom?: object; + labels?: Array; + visitor?: string; +}; +type WidgetEventApi = { + setValue: ( + key: K, + value: WidgetValues[K], + ) => void; +}; + +type WidgetBeforeSubmitEvent = { + apiKey: string; + api: WidgetEventApi; + values: WidgetValues; +}; + +type WidgetOpenEvent = { + api: WidgetEventApi; + type: "open"; +}; + +type SpaceEventCallback = ( + event: WidgetOpenEvent | WidgetBeforeSubmitEvent, +) => void; + +type SpaceEventName = "open" | "close" | "beforeSubmit" | "submit"; + +const API_KEY = import.meta.env.VITE_USERSNAP_SPACE_API_KEY; + +type UsersnapProviderProps = { + initParams?: InitOptions; + children?: React.ReactNode; +}; + +type UsersnapAPI = { + init: (params?: InitOptions | undefined) => Promise; + logEvent: (eventName: string) => Promise; + show: (apiKey: string) => Promise; + hide: (apiKey: string) => Promise; + destroy: () => Promise; + on: (eventName: SpaceEventName, callback: SpaceEventCallback) => void; + off: (eventName: SpaceEventName, callback: SpaceEventCallback) => void; +}; + +const defaultValues = { + openFeedbackWindow: () => {}, +}; + +export const UsersnapContext = React.createContext(defaultValues); + +export const UsersnapProvider = ({ + initParams, + children, +}: UsersnapProviderProps) => { + const [usersnapApi, setUsersnapApi] = useState(null); + + const openFeedbackWindow = useCallback(() => { + if (usersnapApi) { + usersnapApi.logEvent("open_feedback"); + } + }, [usersnapApi]); + + useEffect(() => { + loadSpace(API_KEY).then((api) => { + api.init(initParams); + setUsersnapApi(api); + }); + }, [initParams]); + + const value = useMemo(() => ({ openFeedbackWindow }), [openFeedbackWindow]); + + return ( + + {children} + + ); +}; + +export function useUsersnapApi() { + return useContext(UsersnapContext); +} diff --git a/govtool/frontend/src/hooks/forms/useCreateGovernanceActionForm.ts b/govtool/frontend/src/hooks/forms/useCreateGovernanceActionForm.ts index 24ed8a26b..87b05f9c5 100644 --- a/govtool/frontend/src/hooks/forms/useCreateGovernanceActionForm.ts +++ b/govtool/frontend/src/hooks/forms/useCreateGovernanceActionForm.ts @@ -7,14 +7,19 @@ import { useTranslation } from "react-i18next"; import { NodeObject } from "jsonld"; import { - CIP_100, CIP_108, GOVERNANCE_ACTION_CONTEXT, PATHS, storageInformationErrorModals, } from "@consts"; import { useCardano, useModal } from "@context"; -import { canonizeJSON, downloadJson, generateJsonld } from "@utils"; +import { + canonizeJSON, + downloadJson, + generateJsonld, + generateMetadataBody, +} from "@utils"; +import { useWalletErrorModal } from "@hooks"; import { MetadataValidationStatus } from "@models"; import { GovernanceActionFieldSchemas, @@ -40,18 +45,28 @@ export const defaulCreateGovernanceActionValues: CreateGovernanceActionValues = export const useCreateGovernanceActionForm = ( setStep?: Dispatch>, ) => { + // Local state + const [isLoading, setIsLoading] = useState(false); + const [hash, setHash] = useState(null); + const [json, setJson] = useState(null); + + // DApp Connector const { buildNewInfoGovernanceAction, buildTreasuryGovernanceAction, buildSignSubmitConwayCertTx, } = useCardano(); - const { validateMetadata } = useValidateMutation(); + + // App Management const { t } = useTranslation(); - const [isLoading, setIsLoading] = useState(false); - const [hash, setHash] = useState(null); - const [json, setJson] = useState(null); const navigate = useNavigate(); const { openModal, closeModal } = useModal(); + const openWalletErrorModal = useWalletErrorModal(); + + // Queries + const { validateMetadata } = useValidateMutation(); + + // Form const { control, formState: { errors, isValid }, @@ -64,6 +79,7 @@ export const useCreateGovernanceActionForm = ( } = useFormContext(); const govActionType = watch("governance_action_type"); + // Navigation const backToForm = useCallback(() => { setStep?.(3); closeModal(); @@ -74,31 +90,17 @@ export const useCreateGovernanceActionForm = ( closeModal(); }, []); + // Business Logic const generateMetadata = useCallback(async () => { - const data = getValues(); - if (!govActionType) { throw new Error("Governance action type is not defined"); } - const acceptedKeys = ["title", "motivation", "abstract", "rationale"]; - - const filteredData = Object.entries(data) - .filter(([key]) => acceptedKeys.includes(key)) - .map(([key, value]) => [CIP_108 + key, value]); - - const references = (data as CreateGovernanceActionValues).links - ?.filter((link) => link.link) - .map((link) => ({ - "@type": "Other", - [`${CIP_100}reference-label`]: "Label", - [`${CIP_100}reference-uri`]: link.link, - })); - - const body = { - ...Object.fromEntries(filteredData), - [`${CIP_108}references`]: references, - }; + const body = generateMetadataBody({ + data: getValues(), + acceptedKeys: ["title", "motivation", "abstract", "rationale"], + standardReference: CIP_108, + }); const jsonld = await generateJsonld(body, GOVERNANCE_ACTION_CONTEXT); @@ -117,42 +119,6 @@ export const useCreateGovernanceActionForm = ( downloadJson(json, govActionType); }, [govActionType, json]); - const validateHash = useCallback( - async (url: string, localHash: string | null) => { - try { - if (!localHash) { - throw new Error(MetadataValidationStatus.INVALID_HASH); - } - const result = await validateMetadata({ url, hash: localHash }); - - if (result.status) { - throw result.status; - } - } catch (error) { - if ( - Object.values(MetadataValidationStatus).includes( - error as MetadataValidationStatus, - ) - ) { - openModal({ - type: "statusModal", - state: { - ...storageInformationErrorModals[ - error as MetadataValidationStatus - ], - onSubmit: backToForm, - onCancel: backToDashboard, - // TODO: Open usersnap feedback - onFeedback: backToDashboard, - }, - }); - } - throw error; - } - }, - [backToForm], - ); - const buildTransaction = useCallback( async (data: CreateGovernanceActionValues) => { if (!hash) return; @@ -184,10 +150,8 @@ export const useCreateGovernanceActionForm = ( default: throw new Error(t("errors.invalidGovernanceActionType")); } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (error: any) { - console.error(error); - throw error; + } catch (error) { + captureException(error); } }, [hash], @@ -211,12 +175,33 @@ export const useCreateGovernanceActionForm = ( }); }, []); + const showLoadingModal = useCallback(() => { + openModal({ + type: "loadingModal", + state: { + title: t("modals.pendingValidation.title"), + message: t("modals.pendingValidation.message"), + dataTestId: "storing-information-loading", + }, + }); + }, []); + const onSubmit = useCallback( async (data: CreateGovernanceActionValues) => { try { setIsLoading(true); + showLoadingModal(); + if (!hash) { + throw new Error(MetadataValidationStatus.INVALID_HASH); + } + const { status } = await validateMetadata({ + url: data.storingURL, + hash, + }); - await validateHash(data.storingURL, hash); + if (status) { + throw status; + } const govActionBuilder = await buildTransaction(data); await buildSignSubmitConwayCertTx({ @@ -227,12 +212,33 @@ export const useCreateGovernanceActionForm = ( showSuccessModal(); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { - captureException(error); + if ( + Object.values(MetadataValidationStatus).includes( + error as MetadataValidationStatus, + ) + ) { + openModal({ + type: "statusModal", + state: { + ...storageInformationErrorModals[ + error as MetadataValidationStatus + ], + onSubmit: backToForm, + onCancel: backToDashboard, + }, + }); + } else { + openWalletErrorModal({ + error, + dataTestId: "create-governance-action-error-modal", + }); + captureException(error); + } } finally { setIsLoading(false); } }, - [hash], + [hash, buildTransaction, buildSignSubmitConwayCertTx], ); return { diff --git a/govtool/frontend/src/hooks/forms/useEditDRepInfoForm.ts b/govtool/frontend/src/hooks/forms/useEditDRepInfoForm.ts index 60a3e6bd0..b3796ae9b 100644 --- a/govtool/frontend/src/hooks/forms/useEditDRepInfoForm.ts +++ b/govtool/frontend/src/hooks/forms/useEditDRepInfoForm.ts @@ -7,17 +7,20 @@ import { captureException } from "@sentry/react"; import { NodeObject } from "jsonld"; import { - CIP_100, CIP_QQQ, DREP_CONTEXT, - MetadataHashValidationErrors, PATHS, storageInformationErrorModals, } from "@consts"; import { useCardano, useModal } from "@context"; -import { canonizeJSON, downloadJson, generateJsonld } from "@utils"; +import { + canonizeJSON, + downloadJson, + generateJsonld, + generateMetadataBody, +} from "@utils"; import { MetadataValidationStatus } from "@models"; - +import { useWalletErrorModal } from "@hooks"; import { useValidateMutation } from "../mutations"; export type EditDRepInfoValues = { @@ -41,25 +44,24 @@ export const defaultEditDRepInfoValues: EditDRepInfoValues = { export const useEditDRepInfoForm = ( setStep?: Dispatch>, ) => { - const { validateMetadata } = useValidateMutation(); - const { t } = useTranslation(); - const navigate = useNavigate(); + // Local state const [isLoading, setIsLoading] = useState(false); const [hash, setHash] = useState(null); const [json, setJson] = useState(null); - const { closeModal, openModal } = useModal(); + + // DApp Connector const { buildDRepUpdateCert, buildSignSubmitConwayCertTx } = useCardano(); - const backToForm = useCallback(() => { - setStep?.(1); - closeModal(); - }, [setStep]); + // App Management + const { closeModal, openModal } = useModal(); + const { t } = useTranslation(); + const navigate = useNavigate(); + const openWalletErrorModal = useWalletErrorModal(); - const backToDashboard = useCallback(() => { - navigate(PATHS.dashboard); - closeModal(); - }, []); + // Queries + const { validateMetadata } = useValidateMutation(); + // Form const { control, getValues, @@ -69,30 +71,27 @@ export const useEditDRepInfoForm = ( resetField, watch, } = useFormContext(); - const dRepName = watch("dRepName"); const isError = Object.keys(errors).length > 0; + // Navigation + const backToForm = useCallback(() => { + setStep?.(1); + closeModal(); + }, [setStep]); + + const backToDashboard = useCallback(() => { + navigate(PATHS.dashboard); + closeModal(); + }, []); + + // Business Logic const generateMetadata = useCallback(async () => { - const data = getValues(); - const acceptedKeys = ["dRepName", "bio", "email"]; - - const filteredData = Object.entries(data) - .filter(([key]) => acceptedKeys.includes(key)) - .map(([key, value]) => [CIP_QQQ + key, value]); - - const references = (data as EditDRepInfoValues).links - ?.filter((link) => link.link) - .map((link) => ({ - "@type": "Other", - [`${CIP_100}reference-label`]: "Label", - [`${CIP_100}reference-uri`]: link.link, - })); - - const body = { - ...Object.fromEntries(filteredData), - [`${CIP_QQQ}references`]: references, - }; + const body = generateMetadataBody({ + data: getValues(), + acceptedKeys: ["dRepName", "bio", "email"], + standardReference: CIP_QQQ, + }); const jsonld = await generateJsonld(body, DREP_CONTEXT, CIP_QQQ); @@ -107,41 +106,19 @@ export const useEditDRepInfoForm = ( const onClickDownloadJson = async () => { if (!json) return; - downloadJson(json, dRepName); }; - const validateHash = useCallback( - async (url: string) => { - try { - if (!hash) throw new Error(MetadataHashValidationErrors.INVALID_HASH); - - const result = await validateMetadata({ url, hash }); - - if (result.status) { - throw result.status; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (error: any) { - if (Object.values(MetadataValidationStatus).includes(error)) { - openModal({ - type: "statusModal", - state: { - ...storageInformationErrorModals[ - error as MetadataValidationStatus - ], - onSubmit: backToForm, - onCancel: backToDashboard, - // TODO: Open usersnap feedback - onFeedback: backToDashboard, - }, - }); - } - throw error; - } - }, - [backToForm, hash], - ); + const showLoadingModal = useCallback(() => { + openModal({ + type: "loadingModal", + state: { + title: t("modals.pendingValidation.title"), + message: t("modals.pendingValidation.message"), + dataTestId: "storing-information-loading", + }, + }); + }, []); const showSuccessModal = useCallback(() => { openModal({ @@ -161,12 +138,21 @@ export const useEditDRepInfoForm = ( async (data: EditDRepInfoValues) => { const url = data.storingURL; - if (!hash) return; - try { + if (!hash) throw MetadataValidationStatus.INVALID_HASH; + setIsLoading(true); + showLoadingModal(); + + const { status } = await validateMetadata({ + url, + hash, + }); + + if (status) { + throw status; + } - await validateHash(url); const updateDRepMetadataCert = await buildDRepUpdateCert(url, hash); await buildSignSubmitConwayCertTx({ certBuilder: updateDRepMetadataCert, @@ -176,12 +162,31 @@ export const useEditDRepInfoForm = ( showSuccessModal(); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { - captureException(error); + if (Object.values(MetadataValidationStatus).includes(error)) { + openModal({ + type: "statusModal", + state: { + ...storageInformationErrorModals[ + error as MetadataValidationStatus + ], + onSubmit: backToForm, + onCancel: backToDashboard, + }, + }); + } else { + captureException(error); + + openWalletErrorModal({ + error, + onSumbit: () => backToDashboard(), + dataTestId: "edit-drep-transaction-error-modal", + }); + } } finally { setIsLoading(false); } }, - [buildDRepUpdateCert, buildSignSubmitConwayCertTx, hash, validateHash], + [buildDRepUpdateCert, buildSignSubmitConwayCertTx, hash], ); return { diff --git a/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx b/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx index d7f502f43..88cd630aa 100644 --- a/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx +++ b/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx @@ -7,7 +7,6 @@ import { captureException } from "@sentry/react"; import { NodeObject } from "jsonld"; import { - CIP_100, CIP_QQQ, DREP_CONTEXT, PATHS, @@ -15,9 +14,15 @@ import { } from "@consts"; import { useCardano, useModal } from "@context"; import { MetadataValidationStatus } from "@models"; -import { canonizeJSON, downloadJson, generateJsonld } from "@utils"; - -import { useGetVoterInfo } from ".."; +import { + canonizeJSON, + downloadJson, + ellipsizeText, + generateJsonld, + generateMetadataBody, +} from "@utils"; + +import { useGetVoterInfo, useWalletErrorModal } from "@hooks"; import { useValidateMutation } from "../mutations"; export type RegisterAsDRepValues = { @@ -41,27 +46,26 @@ export const defaultRegisterAsDRepValues: RegisterAsDRepValues = { export const useRegisterAsdRepForm = ( setStep?: Dispatch>, ) => { - const { validateMetadata } = useValidateMutation(); - const { t } = useTranslation(); - const navigate = useNavigate(); + // Local state const [isLoading, setIsLoading] = useState(false); const [hash, setHash] = useState(null); const [json, setJson] = useState(null); - const { closeModal, openModal } = useModal(); + + // DApp Connector const { buildDRepRegCert, buildDRepUpdateCert, buildSignSubmitConwayCertTx } = useCardano(); - const { voter } = useGetVoterInfo(); - const backToForm = useCallback(() => { - setStep?.(2); - closeModal(); - }, [setStep]); + // App Management + const { t } = useTranslation(); + const navigate = useNavigate(); + const { closeModal, openModal } = useModal(); + const openWalletErrorModal = useWalletErrorModal(); - const backToDashboard = useCallback(() => { - navigate(PATHS.dashboard); - closeModal(); - }, []); + // Queries + const { validateMetadata } = useValidateMutation(); + const { voter } = useGetVoterInfo(); + // Form const { control, getValues, @@ -75,26 +79,24 @@ export const useRegisterAsdRepForm = ( const dRepName = watch("dRepName"); const isError = Object.keys(errors).length > 0; + // Navigation + const backToForm = useCallback(() => { + setStep?.(2); + closeModal(); + }, [setStep]); + + const backToDashboard = useCallback(() => { + navigate(PATHS.dashboard); + closeModal(); + }, []); + + // Business Logic const generateMetadata = useCallback(async () => { - const data = getValues(); - const acceptedKeys = ["dRepName", "bio", "email"]; - - const filteredData = Object.entries(data) - .filter(([key]) => acceptedKeys.includes(key)) - .map(([key, value]) => [CIP_QQQ + key, value]); - - const references = (data as RegisterAsDRepValues).links - ?.filter((link) => link.link) - .map((link) => ({ - "@type": "Other", - [`${CIP_100}reference-label`]: "Label", - [`${CIP_100}reference-uri`]: link.link, - })); - - const body = { - ...Object.fromEntries(filteredData), - [`${CIP_QQQ}references`]: references, - }; + const body = generateMetadataBody({ + data: getValues(), + acceptedKeys: ["dRepName", "bio", "email"], + standardReference: CIP_QQQ, + }); const jsonld = await generateJsonld(body, DREP_CONTEXT, CIP_QQQ); @@ -110,45 +112,9 @@ export const useRegisterAsdRepForm = ( const onClickDownloadJson = async () => { if (!json) return; - downloadJson(json, dRepName); + downloadJson(json, ellipsizeText(dRepName, 16, "")); }; - const validateHash = useCallback( - async (url: string) => { - try { - if (!hash) throw new Error(MetadataValidationStatus.INVALID_HASH); - - const result = await validateMetadata({ url, hash }); - - if (result.status) { - throw result.status; - } - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (error: any) { - if ( - Object.values(MetadataValidationStatus).includes( - error as MetadataValidationStatus, - ) - ) { - openModal({ - type: "statusModal", - state: { - ...storageInformationErrorModals[ - error as MetadataValidationStatus - ], - onSubmit: backToForm, - onCancel: backToDashboard, - // TODO: Open usersnap feedback - onFeedback: backToDashboard, - }, - }); - } - throw error; - } - }, - [backToForm, hash], - ); - const createRegistrationCert = useCallback( async (data: RegisterAsDRepValues) => { if (!hash) return; @@ -160,10 +126,8 @@ export const useRegisterAsdRepForm = ( } return await buildDRepRegCert(url, hash); - // eslint-disable-next-line @typescript-eslint/no-explicit-any - } catch (error: any) { - console.error(error); - throw error; + } catch (error) { + captureException(error); } }, [ @@ -174,6 +138,17 @@ export const useRegisterAsdRepForm = ( ], ); + const showLoadingModal = useCallback(() => { + openModal({ + type: "loadingModal", + state: { + title: t("modals.pendingValidation.title"), + message: t("modals.pendingValidation.message"), + dataTestId: "storing-information-loading", + }, + }); + }, []); + const showSuccessModal = useCallback(() => { openModal({ type: "statusModal", @@ -191,9 +166,19 @@ export const useRegisterAsdRepForm = ( const onSubmit = useCallback( async (data: RegisterAsDRepValues) => { try { + if (!hash) throw MetadataValidationStatus.INVALID_HASH; + setIsLoading(true); + showLoadingModal(); + + const { status } = await validateMetadata({ + url: data.storingURL, + hash, + }); - await validateHash(data.storingURL); + if (status) { + throw status; + } const registerAsDRepCert = await createRegistrationCert(data); await buildSignSubmitConwayCertTx({ certBuilder: registerAsDRepCert, @@ -203,12 +188,31 @@ export const useRegisterAsdRepForm = ( showSuccessModal(); // eslint-disable-next-line @typescript-eslint/no-explicit-any } catch (error: any) { - captureException(error); + if (Object.values(MetadataValidationStatus).includes(error)) { + openModal({ + type: "statusModal", + state: { + ...storageInformationErrorModals[ + error as MetadataValidationStatus + ], + onSubmit: backToForm, + onCancel: backToDashboard, + }, + }); + } else { + captureException(error); + + openWalletErrorModal({ + error, + onSumbit: () => backToDashboard(), + dataTestId: "registration-transaction-error-modal", + }); + } } finally { setIsLoading(false); } }, - [buildSignSubmitConwayCertTx, createRegistrationCert, hash, validateHash], + [buildSignSubmitConwayCertTx, createRegistrationCert, hash], ); return { diff --git a/govtool/frontend/src/hooks/forms/useVoteActionForm.tsx b/govtool/frontend/src/hooks/forms/useVoteActionForm.tsx index 50d85c5e6..b554413a4 100644 --- a/govtool/frontend/src/hooks/forms/useVoteActionForm.tsx +++ b/govtool/frontend/src/hooks/forms/useVoteActionForm.tsx @@ -6,6 +6,7 @@ import { useLocation, useNavigate } from "react-router-dom"; import { PATHS } from "@consts"; import { useCardano, useSnackbar } from "@context"; +import { useWalletErrorModal } from "@hooks"; export interface VoteActionFormValues { vote: string; @@ -34,9 +35,10 @@ export const useVoteActionForm = ( const [isLoading, setIsLoading] = useState(false); const { buildSignSubmitConwayCertTx, buildVote, isPendingTransaction } = useCardano(); - const { addErrorAlert, addSuccessAlert } = useSnackbar(); + const { addSuccessAlert } = useSnackbar(); const navigate = useNavigate(); const { state } = useLocation(); + const openWalletErrorModal = useWalletErrorModal(); const { control, @@ -84,8 +86,11 @@ export const useVoteActionForm = ( }, }); } - } catch (e) { - addErrorAlert("Please try again later"); + } catch (error) { + openWalletErrorModal({ + error, + dataTestId: "vote-transaction-error-modal", + }); } finally { setIsLoading(false); } diff --git a/govtool/frontend/src/hooks/forms/useVoteContextForm.tsx b/govtool/frontend/src/hooks/forms/useVoteContextForm.tsx index b14f1722f..c8f78b8b0 100644 --- a/govtool/frontend/src/hooks/forms/useVoteContextForm.tsx +++ b/govtool/frontend/src/hooks/forms/useVoteContextForm.tsx @@ -5,7 +5,12 @@ import { blake2bHex } from "blakejs"; import { captureException } from "@sentry/react"; import { CIP_108, VOTE_TEST_CONTEXT } from "@consts"; -import { canonizeJSON, downloadJson, generateJsonld } from "@utils"; +import { + canonizeJSON, + downloadJson, + generateJsonld, + generateMetadataBody, +} from "@utils"; import { MetadataValidationStatus } from "@models"; import { useValidateMutation } from "../mutations"; @@ -37,17 +42,11 @@ export const useVoteContextForm = ( } = useFormContext(); const generateMetadata = useCallback(async () => { - const data = getValues(); - - const acceptedKeys = ["voteContextText"]; - - const filteredData = Object.entries(data) - .filter(([key]) => acceptedKeys.includes(key)) - .map(([key, value]) => [CIP_108 + key, value]); - - const body = { - ...Object.fromEntries(filteredData), - }; + const body = generateMetadataBody({ + data: getValues(), + acceptedKeys: ["voteContextText"], + standardReference: CIP_108, + }); const jsonld = await generateJsonld(body, VOTE_TEST_CONTEXT); const canonizedJson = await canonizeJSON(jsonld); diff --git a/govtool/frontend/src/hooks/index.ts b/govtool/frontend/src/hooks/index.ts index 8fdb31e31..e2a7c78e7 100644 --- a/govtool/frontend/src/hooks/index.ts +++ b/govtool/frontend/src/hooks/index.ts @@ -1,6 +1,5 @@ export { useTranslation } from "react-i18next"; -export * from "./useDataActionsBar"; export * from "./useDebounce"; export * from "./useDelegateToDrep"; export * from "./useFetchNextPageDetector"; @@ -9,6 +8,7 @@ export * from "./useSaveScrollPosition"; export * from "./useScreenDimension"; export * from "./useSlider"; export * from "./useWalletConnectionListener"; +export * from "./useWalletErrorModal"; export * from "./forms"; export * from "./queries"; diff --git a/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts b/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts index 2d5882fe8..47161bcc4 100644 --- a/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts +++ b/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts @@ -9,7 +9,7 @@ export const useGetDRepListQuery = ( params?: GetDRepListParams, options?: UseQueryOptions ) => { - const { drepView, sort, status } = params || {}; + const { search, sort, status } = params || {}; const { pendingTransaction } = useCardano(); const { data, isLoading, isPreviousData } = useQuery({ @@ -19,12 +19,12 @@ export const useGetDRepListQuery = ( pendingTransaction.registerAsDrep || pendingTransaction.retireAsSoleVoter || pendingTransaction.retireAsDrep)?.transactionHash, - drepView, + search, sort, status, ], queryFn: () => getDRepList({ - ...(drepView && { drepView }), + ...(search && { search }), ...(sort && { sort }), ...(status && { status }), }), diff --git a/govtool/frontend/src/hooks/queries/useGetDRepVotesQuery.ts b/govtool/frontend/src/hooks/queries/useGetDRepVotesQuery.ts index 81ed7c9a8..3578ba955 100644 --- a/govtool/frontend/src/hooks/queries/useGetDRepVotesQuery.ts +++ b/govtool/frontend/src/hooks/queries/useGetDRepVotesQuery.ts @@ -5,17 +5,30 @@ import { useCardano } from "@context"; import { getDRepVotes } from "@services"; import { VotedProposalToDisplay } from "@/models/api"; -export const useGetDRepVotesQuery = (filters: string[], sorting: string) => { +export const useGetDRepVotesQuery = ( + type?: string[], + sort?: string, + search?: string, +) => { const { dRepID, pendingTransaction } = useCardano(); const { data, isLoading, refetch, isRefetching } = useQuery({ queryKey: [ QUERY_KEYS.useGetDRepVotesKey, pendingTransaction.vote?.transactionHash, - filters, - sorting, + type, + sort, + search, ], - queryFn: () => getDRepVotes({ dRepID, filters, sorting }), + queryFn: () => + getDRepVotes({ + dRepID, + params: { + ...(search && { search }), + ...(sort && { sort }), + ...(type && { type }), + }, + }), enabled: !!dRepID, }); diff --git a/govtool/frontend/src/hooks/queries/useGetDRepVotingPowerQuery.ts b/govtool/frontend/src/hooks/queries/useGetDRepVotingPowerQuery.ts index 03247b518..5c7709fe9 100644 --- a/govtool/frontend/src/hooks/queries/useGetDRepVotingPowerQuery.ts +++ b/govtool/frontend/src/hooks/queries/useGetDRepVotingPowerQuery.ts @@ -3,11 +3,10 @@ import { useQuery } from "react-query"; import { QUERY_KEYS } from "@consts"; import { useCardano } from "@context"; import { getDRepVotingPower } from "@services"; -import { useGetVoterInfo } from "."; +import { VoterInfo } from "@/models"; -export const useGetDRepVotingPowerQuery = () => { +export const useGetDRepVotingPowerQuery = (voter?: VoterInfo) => { const { dRepID } = useCardano(); - const { voter } = useGetVoterInfo(); const { data, isLoading } = useQuery({ queryKey: [ diff --git a/govtool/frontend/src/hooks/useDataActionsBar.tsx b/govtool/frontend/src/hooks/useDataActionsBar.tsx deleted file mode 100644 index 61723d0ea..000000000 --- a/govtool/frontend/src/hooks/useDataActionsBar.tsx +++ /dev/null @@ -1,58 +0,0 @@ -import { useState, useCallback, Dispatch, SetStateAction } from "react"; - -import { - useDebounce, -} from "@hooks"; - -type UseDataActionsBarReturnType = { - chosenFilters: string[]; - chosenFiltersLength: number; - chosenSorting: string; - closeFilters: () => void; - closeSorts: () => void; - debouncedSearchText: string; - filtersOpen: boolean; - searchText: string; - setChosenFilters: Dispatch>; - setChosenSorting: Dispatch>; - setFiltersOpen: Dispatch>; - setSearchText: Dispatch>; - setSortOpen: Dispatch>; - sortingActive: boolean; - sortOpen: boolean; -}; - -export const useDataActionsBar = (): UseDataActionsBarReturnType => { - const [searchText, setSearchText] = useState(""); - const debouncedSearchText = useDebounce(searchText, 300); - const [filtersOpen, setFiltersOpen] = useState(false); - const [chosenFilters, setChosenFilters] = useState([]); - const [sortOpen, setSortOpen] = useState(false); - const [chosenSorting, setChosenSorting] = useState(""); - - const closeFilters = useCallback(() => { - setFiltersOpen(false); - }, [setFiltersOpen]); - - const closeSorts = useCallback(() => { - setSortOpen(false); - }, [setSortOpen]); - - return { - chosenFilters, - chosenFiltersLength: chosenFilters.length, - chosenSorting, - closeFilters, - closeSorts, - debouncedSearchText, - filtersOpen, - searchText, - setChosenFilters, - setChosenSorting, - setFiltersOpen, - setSearchText, - setSortOpen, - sortingActive: Boolean(chosenSorting), - sortOpen, - }; -}; diff --git a/govtool/frontend/src/hooks/useDelegateToDrep.ts b/govtool/frontend/src/hooks/useDelegateToDrep.ts index db43104a5..5a4394446 100644 --- a/govtool/frontend/src/hooks/useDelegateToDrep.ts +++ b/govtool/frontend/src/hooks/useDelegateToDrep.ts @@ -1,44 +1,48 @@ import { useCallback, useState } from "react"; import * as Sentry from "@sentry/react"; -import { useTranslation } from "@hooks"; +import { useTranslation, useWalletErrorModal } from "@hooks"; import { useCardano, useSnackbar } from "@/context"; export const useDelegateTodRep = () => { - const { - buildSignSubmitConwayCertTx, - buildVoteDelegationCert, - } = useCardano(); + const { buildSignSubmitConwayCertTx, buildVoteDelegationCert } = useCardano(); const { t } = useTranslation(); const { addSuccessAlert, addErrorAlert } = useSnackbar(); + const openWalletErrorModal = useWalletErrorModal(); const [isDelegating, setIsDelegating] = useState(false); - const delegate = useCallback(async (dRepId: string | undefined) => { - if (!dRepId) return; - setIsDelegating(true); - try { - const certBuilder = await buildVoteDelegationCert(dRepId); - const result = await buildSignSubmitConwayCertTx({ - certBuilder, - type: "delegate", - resourceId: dRepId, - }); - if (result) { - addSuccessAlert(t("alerts.delegate.success")); + const delegate = useCallback( + async (dRepId: string | undefined) => { + if (!dRepId) return; + setIsDelegating(true); + try { + const certBuilder = await buildVoteDelegationCert(dRepId); + const result = await buildSignSubmitConwayCertTx({ + certBuilder, + type: "delegate", + resourceId: dRepId, + }); + if (result) { + addSuccessAlert(t("alerts.delegate.success")); + } + } catch (error) { + openWalletErrorModal({ + error, + dataTestId: "delegate-transaction-error-modal", + }); + Sentry.captureException(error); + } finally { + setIsDelegating(false); } - } catch (error) { - Sentry.captureException(error); - addErrorAlert(t("alerts.delegate.failed")); - } finally { - setIsDelegating(false); - } - }, [ - addErrorAlert, - addSuccessAlert, - buildSignSubmitConwayCertTx, - buildVoteDelegationCert, - t, - ]); + }, + [ + addErrorAlert, + addSuccessAlert, + buildSignSubmitConwayCertTx, + buildVoteDelegationCert, + t, + ], + ); return { delegate, diff --git a/govtool/frontend/src/hooks/useWalletErrorModal.tsx b/govtool/frontend/src/hooks/useWalletErrorModal.tsx new file mode 100644 index 000000000..78f7a2896 --- /dev/null +++ b/govtool/frontend/src/hooks/useWalletErrorModal.tsx @@ -0,0 +1,42 @@ +import { useModal } from "@context"; +import { useTranslation } from "react-i18next"; + +type WalletErrorModalProps = { + error: unknown; + onSumbit?: () => void; + title?: string; + buttonText?: string; + dataTestId?: string; +}; + +export const useWalletErrorModal = () => { + const { openModal, closeModal } = useModal(); + const { t } = useTranslation(); + + const openWalletErrorModal = ({ + error, + onSumbit, + title, + buttonText, + dataTestId, + }: WalletErrorModalProps) => { + const errorMessage = (error && typeof error === 'object' && 'info' in error) ? error.info : error; + + openModal({ + type: "statusModal", + state: { + status: "warning", + title: title ?? t("modals.common.oops"), + message: errorMessage, + buttonText: buttonText ?? t("cancel"), + onSubmit: () => { + if (onSumbit) onSumbit(); + closeModal(); + }, + dataTestId: dataTestId ?? "wallet-error-modal", + }, + }); + }; + + return openWalletErrorModal; +}; diff --git a/govtool/frontend/src/i18n/locales/en.ts b/govtool/frontend/src/i18n/locales/en.ts index 29f239569..979d0f6ca 100644 --- a/govtool/frontend/src/i18n/locales/en.ts +++ b/govtool/frontend/src/i18n/locales/en.ts @@ -119,33 +119,28 @@ export const en = { "You cannot vote on Governance Actions using your own voting power of ₳{{votingPower}}. until you re-register.", youAreSoleVoterTitle: "You are a Sole Voter", }, - }, - delegation: { - changeDelegation: "Change delegation", - delegateOwnPower: - "If you want to delegate your own voting power of ₳{{ada}}.", - dRepDelegatedTo: "DRep you delegated to", - toDRep: - "You have delegated your voting power of ₳{{ada}} to a selected DRep.", - toYourself: - "You have delegated your voting power of ₳{{ada}} to yourself.", - useYourVotingPower: "Use your Voting Power", - voteAbstain: - "You have delegated your voting power of ₳{{ada}}. You are going to vote 'ABSTAIN' as default.", - voteNo: - "You have delegated your voting power of ₳{{ada}}. You are going to vote 'NO' as default.", - votingPowerDelegation: "Voting Power Delegation", - yourVotingPowerIsDelegated: - "Your Voting Power is Delegated", - inProgress: { - toDRep: - "Your own voting power of ₳{{ada}} is progress of being delegated. You are going to delegate your voting power to a selected DRep.", - toYourself: - "Your own voting power of ₳{{ada}} is in progress of being delegated. You are going to delegate your voting power to yourself.", - voteAbstain: - "Your own voting power of ₳{{ada}} is in progress of being delegated. You are going to vote ‘ABSTAIN’ as default.", - voteNo: - "Your own voting power of ₳{{ada}} is in progress of being delegated. You are going to vote ‘NO’ as default.", + delegation: { + noDelegationTitle: "Delegate your Voting Power", + delegateToAnotherDRep: "Delegate to Another DRep", + noDelegationDescription: "Find a DRep to vote on your behalf.", + noDelegationActionButton: "View DRep Directory", + dRepDelegationTitle: + "Your Voting Power of ₳{{ada}}\nis Delegated to:", + noConfidenceDelegationTitle: + "You have delegated ₳{{ada}}\nto “No Confidence”", + abstainDelegationTitle: + "You have delegated ₳{{ada}}\nto “Abstain”", + abstainDescription: + "You have selected to apply your Voting Power to Abstain on every vote.", + noDescription: + "You have selected to apply your Voting Power to No Confidence on every vote.", + inProgress: { + title: "Delegation", + dRep: "Your voting power of ₳{{ada}} is being delegated to:", + abstain: + "You have selected to apply your Voting Power to Abstain on every vote.", + no: "You have selected to apply your Voting Power to No Confidence on every vote.", + }, }, }, }, @@ -219,11 +214,6 @@ export const en = { "Your Governance Action may take a little time to submit to the chain.", title: "Governance Action submitted!", }, - loading: { - title: "GovTool Is Checking Your Data", - message: - "GovTool will read the URL that you supplied and make a check to see if it’s identical with the information that you entered on the form.", - }, }, }, delegation: { @@ -434,6 +424,40 @@ export const en = { partOne: "Governance action with id", partTwo: "does not exist.", }, + tooltips: { + info: "An action that has no effect on-chain, other than an on-chain record", + treasury: "Withdrawals from the treasury", + }, + type: { + noConfidence: { + title: "No Confidence", + label: "No Confidence", + }, + newCommittee: { + title: "New Committee", + label: "New Committee", + }, + newConstitution: { + title: "Update to the Constitution", + label: "Update to the Constitution", + }, + hardFork: { + title: "Hard Fork", + label: "Hard Fork", + }, + parameterChange: { + title: "Protocol Parameter Changes", + label: "Protocol Parameter Change", + }, + treasuryWithdrawals: { + title: "Treasury Withdrawals", + label: "Treasury Withdrawal", + }, + infoAction: { + title: "Info Action", + label: "Info Action", + }, + }, }, hero: { connectWallet: "Connect your wallet", @@ -547,6 +571,11 @@ export const en = { message: "Before performing a new action please wait for the previous action transaction to be completed.", }, + pendingValidation: { + title: "GovTool Is Checking Your Data", + message: + "GovTool will read the URL that you supplied and make a check to see if it’s identical with the information that you entered on the form.", + }, }, editMetadata: { pageTitle: "Edit DRep Info", @@ -719,6 +748,11 @@ export const en = { usingUnregisteredStakeKeys: "Warning, no registered stake keys, using unregistered stake keys", }, + dataMissingErrors: { + dataMissing: "Data Missing", + notVerifiable: "Not Verifiable", + incorrectFormat: "Incorrect Format", + }, about: "About", abstain: "Abstain", addLink: "+ Add link", @@ -741,7 +775,7 @@ export const en = { goBack: "Go back", here: "here", info: "Info", - inProgress: "In progress", + inProgress: "In Progress", learnMore: "Learn more", linkCopied: "Link copied", loading: "Loading...", diff --git a/govtool/frontend/src/main.tsx b/govtool/frontend/src/main.tsx index 6243d91d8..5615a22ce 100644 --- a/govtool/frontend/src/main.tsx +++ b/govtool/frontend/src/main.tsx @@ -13,7 +13,7 @@ import TagManager from "react-gtm-module"; import { ThemeProvider } from "@emotion/react"; import * as Sentry from "@sentry/react"; -import { ContextProviders } from "@context"; +import { ContextProviders, UsersnapProvider } from "@context"; import App from "./App.tsx"; import { theme } from "./theme.ts"; @@ -84,11 +84,13 @@ ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( - - - - - + + + + + + + {import.meta.env.VITE_IS_DEV && ( diff --git a/govtool/frontend/src/models/api.ts b/govtool/frontend/src/models/api.ts index 0686601b7..5b72cff60 100644 --- a/govtool/frontend/src/models/api.ts +++ b/govtool/frontend/src/models/api.ts @@ -1,4 +1,4 @@ -import { GAMetedataErrors } from "@utils"; +import { MetadataValidationStatus } from "@models"; export interface VoterInfo { isRegisteredAsDRep: boolean; @@ -6,6 +6,10 @@ export interface VoterInfo { isRegisteredAsSoleVoter: boolean; wasRegisteredAsSoleVoter: boolean; deposit: number; + dRepRegisterTxHash: string | null; + dRepRetireTxHash: string | null; + soleVoterRegisterTxHash: string | null; + soleVoterRetireTxHash: string | null; } export enum DRepStatus { @@ -22,7 +26,7 @@ export interface DRepData { deposit: number; votingPower: number; status: DRepStatus; - type: 'DRep' | 'SoleVoter'; + type: "DRep" | "SoleVoter"; } export type Vote = "yes" | "no" | "abstain"; @@ -35,13 +39,14 @@ export type InfinityProposals = { }; type ProposalVote = { - proposalId: string; - drepId: string; - vote: Vote; - url: string; - metadataHash: string; date: string; + drepId: string; epochNo: number; + metadataHash: string; + proposalId: string; + txHash: string; + url: string; + vote: Vote; }; type ProposalData = { @@ -70,5 +75,13 @@ export interface VotedProposal { } export type VotedProposalToDisplay = { vote: ProposalVote; - proposal: ProposalData & { isDataMissing: boolean | GAMetedataErrors }; + proposal: ProposalData & { + isDataMissing: boolean | MetadataValidationStatus; + }; }; + +export type CurrentDelegation = { + dRepHash: string | null; + dRepView: string | null; + txHash: string | null; +} | null; diff --git a/govtool/frontend/src/models/metadataValidation.ts b/govtool/frontend/src/models/metadataValidation.ts index 284a8821c..e36e7c226 100644 --- a/govtool/frontend/src/models/metadataValidation.ts +++ b/govtool/frontend/src/models/metadataValidation.ts @@ -10,7 +10,12 @@ export type ValidateMetadataResult = { valid: boolean; }; +export enum MetadataStandard { + CIP108 = "CIP108", +} + export type MetadataValidationDTO = { url: string; hash: string; + standard?: MetadataStandard; }; diff --git a/govtool/frontend/src/pages/DRepDetails.tsx b/govtool/frontend/src/pages/DRepDetails.tsx index 690634bcc..a5b9f7f0e 100644 --- a/govtool/frontend/src/pages/DRepDetails.tsx +++ b/govtool/frontend/src/pages/DRepDetails.tsx @@ -3,18 +3,16 @@ import { Navigate, useNavigate, useParams } from "react-router-dom"; import { Box, ButtonBase, Chip, CircularProgress } from "@mui/material"; import { Button, LoadingButton, StatusPill, Typography } from "@atoms"; -import { Card, LinkWithIcon, Share } from "@molecules"; import { ICONS, PATHS } from "@consts"; +import { useCardano, useModal } from "@context"; import { useDelegateTodRep, - useGetAdaHolderCurrentDelegationQuery, useGetDRepListQuery, useScreenDimension, useTranslation, } from "@hooks"; -import { correctAdaFormat, openInNewTab } from "@utils"; -import { useCardano, useModal } from "@/context"; -import { isSameDRep } from "@/utils"; +import { Card, LinkWithIcon, Share } from "@molecules"; +import { correctAdaFormat, isSameDRep, openInNewTab } from "@utils"; const LINKS = [ "darlenelonglink1.DRepwebsiteorwhatever.com", @@ -29,7 +27,7 @@ type DRepDetailsProps = { }; export const DRepDetails = ({ isConnected }: DRepDetailsProps) => { - const { dRepID: myDRepId, pendingTransaction, stakeKey } = useCardano(); + const { dRepID: myDRepId, pendingTransaction } = useCardano(); const { t } = useTranslation(); const navigate = useNavigate(); const { openModal } = useModal(); @@ -38,19 +36,30 @@ export const DRepDetails = ({ isConnected }: DRepDetailsProps) => { const { delegate, isDelegating } = useDelegateTodRep(); - const { currentDelegation } = useGetAdaHolderCurrentDelegationQuery(stakeKey); - const { data, isLoading } = useGetDRepListQuery({ drepView: dRepParam }); + const { data, isLoading } = useGetDRepListQuery({ search: dRepParam }); const dRep = data?.[0]; - if (!dRep && isLoading) - return ; + if (data === undefined || isLoading) + return ( + + + + ); if (!dRep) return ; const { view, status, votingPower, type } = dRep; const isMe = isSameDRep(dRep, myDRepId); - const isMyDrep = isSameDRep(dRep, currentDelegation); + const isMyDrep = isSameDRep(dRep, myDRepId); const isMyDrepInProgress = isSameDRep( dRep, pendingTransaction.delegate?.resourceId, @@ -179,9 +188,19 @@ export const DRepDetails = ({ isConnected }: DRepDetailsProps) => { {t("delegate")} )} - {!isConnected && ( + {!isConnected && status === "Active" && (