diff --git a/.github/images/cardano-govtool-header.png b/.github/images/cardano-govtool-header.png
new file mode 100644
index 000000000..f7a7ded9c
Binary files /dev/null and b/.github/images/cardano-govtool-header.png differ
diff --git a/.github/workflows/add-issue-to-project.yml b/.github/workflows/add-issue-to-project.yml
new file mode 100644
index 000000000..50f3c22de
--- /dev/null
+++ b/.github/workflows/add-issue-to-project.yml
@@ -0,0 +1,24 @@
+name: Add all issues created to projects
+
+on:
+ issues:
+ types: [opened]
+
+jobs:
+ add-to-govtool-all-project:
+ name: Add issue to GovTool all project
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/add-to-project@v1.0.2
+ with:
+ project-url: https://github.com/orgs/IntersectMBO/projects/30
+ github-token: ${{ secrets.ADD_ISSUE_TO_PROJECT_PAT }}
+
+ add-to-community-backlog-project:
+ name: Add issue to governance tools community backlog project
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/add-to-project@v1.0.2
+ with:
+ project-url: https://github.com/orgs/IntersectMBO/projects/34
+ github-token: ${{ secrets.ADD_ISSUE_TO_PROJECT_PAT }}
\ No newline at end of file
diff --git a/.github/workflows/build-and-deploy-test-stack.yml b/.github/workflows/build-and-deploy-test-stack.yml
index a4d3c07a2..01802be3c 100644
--- a/.github/workflows/build-and-deploy-test-stack.yml
+++ b/.github/workflows/build-and-deploy-test-stack.yml
@@ -29,6 +29,7 @@ jobs:
key: ${{ secrets.TEST_STACK_SSH_KEY }}
command_timeout: 100m ## Haskell container build takes a lot of time.
script: |
+ set -euo pipefail
REPO_URL="https://github.com/${{ github.repository }}"
DEST_DIR="$HOME/Documents/govtool"
@@ -59,9 +60,8 @@ jobs:
# Execute the build-and-deploy.sh script
cd $DEST_DIR/tests/test-infrastructure
./build-and-deploy.sh update-images
- docker system prune
- (docker image ls -q | xargs docker image rm --force ) || echo "Images cleaned-up"
- envs: GOVTOOL_TAG, GRAFANA_ADMIN_PASSWORD, GRAFANA_SLACK_RECIPIENT, GRAFANA_SLACK_OAUTH_TOKEN, SENTRY_DSN_BACKEND, GTM_ID, NPMRC_TOKEN, SENTRY_DSN_FRONTEND, PIPELINE_URL, USERSNAP_SPACE_API_KEY, APP_ENV, PDF_API_URL
+ yes | docker system prune -f || echo "Ignoring system prune eror"
+ envs: GOVTOOL_TAG, GRAFANA_ADMIN_PASSWORD, GRAFANA_SLACK_RECIPIENT, GRAFANA_SLACK_OAUTH_TOKEN, SENTRY_DSN_BACKEND, GTM_ID, NPMRC_TOKEN, SENTRY_DSN_FRONTEND, PIPELINE_URL, USERSNAP_SPACE_API_KEY, APP_ENV, PDF_API_URL, KUBER_API_KEY
env:
GOVTOOL_TAG: ${{ github.sha }}
GRAFANA_ADMIN_PASSWORD: ${{ secrets.GRAFANA_ADMIN_PASSWORD }}
@@ -75,4 +75,4 @@ jobs:
USERSNAP_SPACE_API_KEY: ${{ secrets.USERSNAP_SPACE_API_KEY }}
APP_ENV: test
PDF_API_URL: ${{ secrets.PDF_API_URL }}
- KUBER_API_KEY: ${{secrets.KUBER_API_KEY}}
+ KUBER_API_KEY: ${{ secrets.KUBER_API_KEY }}
diff --git a/.github/workflows/merge.yaml b/.github/workflows/merge.yaml
index d89b4ee3f..a21f26b48 100644
--- a/.github/workflows/merge.yaml
+++ b/.github/workflows/merge.yaml
@@ -162,3 +162,11 @@ jobs:
docker load -i '/tmp/image-${{ matrix.name }}-${{ env.ENVIRONMENT }}.tar'
rm -rf '/tmp/image-${{ matrix.name }}-${{ env.ENVIRONMENT }}.tar'
docker push ${{ steps.image_lowercase.outputs.lowercase }}:${{ env.TAG }}
+
+ - name: Add tag as a PR comment
+ uses: ubie-oss/comment-to-merged-pr-action@v0.3.3
+ id: comment-to-merged-pr
+ with:
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ message: |-
+ This PR is in the tag: ${{ env.TAG }} , for ${{ matrix.name }} service
diff --git a/.github/workflows/test_integration_playwright.yml b/.github/workflows/test_integration_playwright.yml
index 95a5151a8..f1c149685 100644
--- a/.github/workflows/test_integration_playwright.yml
+++ b/.github/workflows/test_integration_playwright.yml
@@ -14,6 +14,7 @@ on:
- "sanchogov.tools"
- "staging.govtool.byron.network"
- "govtool.cardanoapi.io"
+ - "preview.gov.tools"
workflow_run:
workflows: ["Build and deploy GovTool to TEST server"]
@@ -79,6 +80,8 @@ jobs:
KUBER_API_KEY: ${{secrets.KUBER_API_KEY}}
TEST_WORKERS: ${{vars.TEST_WORKERS}}
CI: ${{vars.CI}}
+ NETWORK: ${{vars.NETWORK}}
+ FAUCET_ADDRESS: ${{vars.FAUCET_ADDRESS}}
CARDANOAPI_METADATA_URL: ${{vars.CARDANOAPI_METADATA_URL}}
publish-report:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 4ec1ed241..fee842e2c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -12,20 +12,212 @@ changes.
### Added
+- Handle displaying votes based on bootstrap phase, full governance and security groups [Issue 2316](https://github.com/IntersectMBO/govtool/issues/2316)
+- Add support for displaying Motion of No Confidence Governance Action [Issue 1597](https://github.com/IntersectMBO/govtool/issues/1597)
+- Add support for displaying Update committee/threshold Governance Action [Issue 1598](https://github.com/IntersectMBO/govtool/issues/1598)
+- Add support for displaying New Constitution and/or Guardrails Script Governance Action [Issue 1599](https://github.com/IntersectMBO/govtool/issues/1598)
+
+### Fixed
+
+- Fix submitting treasury governance action [Issue 1845](https://github.com/IntersectMBO/govtool/issues/1845)
+- Fix failing github action workflow [Issue 2277](https://github.com/IntersectMBO/govtool/issues/2277)
+
+### Changed
+
+- Bumped Cardano node version to `10.1.0-pre`.
+- Bumped Cardano DB Sync version to `13.6.0.0-pre`.
+
+### Removed
+
+-
+
+## [v1.0.26](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.26) 2024-11-07
+
+### Added
+
+- add support for CIP-129 governance identifiers [Issue 2183](https://github.com/IntersectMBO/govtool/issues/2183)
+- Add label to supporting links in Governance Action details [Issue 2305](https://github.com/IntersectMBO/govtool/issues/2305)
+
+### Fixed
+
+- Fix certificates order where vote delegation cert is before the DRep registration cert [Issue 2333](https://github.com/IntersectMBO/govtool/issues/2333)
+
+### Changed
+
+- Change multilanguage support to use json file [Issue 2325](https://github.com/IntersectMBO/govtool/issues/2325)
+- Display full Governance Action IDs on desktop
+- Support space on given name [Issue 2276](https://github.com/IntersectMBO/govtool/issues/2276)
+- Display ADA in 'en-US' format [Issue 2305](https://github.com/IntersectMBO/govtool/issues/2305)
+
+### Removed
+
+-
+
+## [v1.0.25](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.25) 2024-11-04
+
+### Added
+
+-
+
+### Fixed
+
+- Fix searching by DRep Given name
+- Fix displaying the wallet connected modal
+- Fix navigating to DRep details [Issue 2307](https://github.com/IntersectMBO/govtool/issues/2307)
+
+### Changed
+
+-
+
+### Removed
+
+-
+
+## [v1.0.24](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.24) 2024-10-31
+
+### Added
+
+-
+
+### Fixed
+
+- Fix infinite DRep list loading [Issue 2285](https://github.com/IntersectMBO/govtool/issues/2285)
+
+### Changed
+
+-
+
+### Removed
+
+-
+
+## [v1.0.23](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.23) 2024-10-29
+
+### Added
+
+- Add searching for DRep and Proposal metadatas [Issue 1893](https://github.com/IntersectMBO/govtool/issues/1783)
+
+### Fixed
+
+- Fix validating metadata against the CIP standard [Issue 2233](https://github.com/IntersectMBO/govtool/issues/2233)
+- Fix counting the CC votes [Issue 2247](https://github.com/IntersectMBO/govtool/issues/2247)
+
+### Changed
+
+-
+
+### Removed
+
+-
+
+## [v1.0.22](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.22) 2024-10-24
+
+### Added
+
+-
+
+### Fixed
+
+- Fix unwanted horizontal page scroll on Governance Actions page [Issue 1897](https://github.com/IntersectMBO/govtool/issues/1897)
+- Fix duplicate testIds for reference errors and hints in DRep metadata form [Issue 1965](https://github.com/IntersectMBO/govtool/issues/1965)
+- Eliminate duplicate DReps in the DRep Directory [Issue 2171](https://github.com/IntersectMBO/govtool/issues/2171)
+- Handle script based DReps [Issue 1951](https://github.com/IntersectMBO/govtool/issues/1951)
+- Fix displaying protocol parameter cost models [Issue 2191](https://github.com/IntersectMBO/govtool/issues/2191)
+
+### Changed
+
+- Bump to use Cardano Node `10.0.0-pre`
+- Changed copy for no DRep found via search
+
+### Removed
+
+-
+
+## [v1.0.21](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.21) 2024-10-15
+
+### Added
+
-
### Fixed
+- Fix counting epoch boundaries for Governance Actions [Issue 2125](https://github.com/IntersectMBO/govtool/issues/2125)
+- Fix displaying the SPO Votes [Issue 2085](https://github.com/IntersectMBO/govtool/issues/2085)
+- Fix counting ada holder voting power [Issue 2000](https://github.com/IntersectMBO/govtool/issues/2000)
+
+### Changed
+
+-
+
+### Removed
+
-
+## [v1.0.20](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.20) 2024-10-03
+
+### Added
+
+- Add useful external links to home page and dashboard [Issue 1995](https://github.com/IntersectMBO/govtool/issues/1995)
+
+### Fixed
+
+- Add missing testIds for submitted votes [Issue 1875](https://github.com/IntersectMBO/govtool/issues/1875)
+- Provide workaround for iOS for downloading metadata on iOS [Issue 1989](https://github.com/IntersectMBO/govtool/issues/1989)
+- Fix infinite loading in DRep Directory [Issue 2090](https://github.com/IntersectMBO/govtool/issues/2090)
+
### Changed
+- Change constitutional committee vote totals to be constitutional for yes and unconstitutional for no [Issue 2062](https://github.com/IntersectMBO/govtool/issues/2062)
+- Bump @intersect.mbo/pdf-ui to v0.4.0
+- Include @language property in generated jsonld files [Issue 1856](https://github.com/IntersectMBO/govtool/issues/1856)
+
+### Removed
+
+-
+
+## [v1.0.19](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.19) 2024-09-19
+
+### Added
+
-
+### Fixed
+
+- Fix private policy link and get support link
+- Fixed poor UTxO management when building transactions [Issue 2059](https://github.com/IntersectMBO/govtool/issues/2059)
+
+### Changed
+
+- Bump cardano-db-sync 13.5.0.2 [Issue 1945](https://github.com/IntersectMBO/govtool/issues/1945)
+- Add Mainnet link to network banner [Issue 2002](https://github.com/IntersectMBO/govtool/issues/2002)
+- Bump CSL version to 12.1.0
+- Add random sorting as default sorting for DRep list [Issue 2013](https://github.com/IntersectMBO/govtool/issues/2013)
+
### Removed
-
+## [v1.0.18](https://github.com/IntersectMBO/govtool/releases/tag/v1.0.18) 2024-09-12
+
+### Added
+
+- Add script for Matomo Analytics [Issue 1817](https://github.com/IntersectMBO/govtool/issues/1817)
+
+### Fixed
+
+- Correctly show all kinds of votes in the modal showing vote numbers [Issue 1941](https://github.com/IntersectMBO/govtool/issues/1941)
+- Fixed terms and conditions link [Issue 1968](https://github.com/IntersectMBO/govtool/issues/1968)
+- Hide Delegate button in DRep list and details if user has already delegated to this DRep [Issue 1982](https://github.com/IntersectMBO/govtool/issues/1982)
+- Fix condition for disabling voting on different GA types [Issue 2008](https://github.com/IntersectMBO/govtool/issues/2008)
+- Fix incorrect copy (ex. github) to (e.g. github) [Issue 1748](https://github.com/IntersectMBO/govtool/issues/1748)
+- Fix broken translation in DRep Details [Issue 2036](https://github.com/IntersectMBO/govtool/issues/2036)
+
+### Changed
+
+- Bump @intersect.mbo/pdf-ui to v0.3.9
+- Changed misleading text for direct voter registration [Issue 1976](https://github.com/IntersectMBO/govtool/issues/1976)
+- Change base repo README header image to have correct branding and reflect mainnet launch.
+
## [sancho-v1.0.17](https://github.com/IntersectMBO/govtool/releases/tag/sancho-v1.0.17) 2024-09-05
### Added
diff --git a/README.md b/README.md
index 8a8aea50b..db07e081c 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
@@ -24,7 +24,7 @@ The Cardano GovTool enables ada holders to experience the governance features de
#### Mainnet
-- _Coming soon_
+- [gov.tools](https://gov.tools/)
#### SanchoNet
diff --git a/docs/architecture/README.md b/docs/architecture/README.md
index 9b8e3fafa..66689da9c 100644
--- a/docs/architecture/README.md
+++ b/docs/architecture/README.md
@@ -35,7 +35,7 @@ Frontend is a React application using Vite as a built tool to enhance developmen
Direct voter uses following CSL services:
- TransactionBuilder - to build the transaction
- CertificatesBuilder - to build the delegation certificate
- - DrepRegistration - to build the DRep registration certificate
+ - DRepRegistration - to build the DRep registration certificate
- **DRep** - DRep is a Decentralized Representative which has a metadata and can delegate ADA to other DReps. DRep registration and delegation are separate processes. DReps are visible in the DRep directory.
@@ -46,9 +46,9 @@ Frontend is a React application using Vite as a built tool to enhance developmen
DRep uses following CSL services:
- TransactionBuilder - to build the transaction
- CertificatesBuilder - to build the DRep registration certificate
- - DrepRegistration - to build the DRep registration certificate
- - DrepDeregistration - to build the DRep deregistration certificate
- - DrepUpdate - to build the DRep update certificate
+ - DRepRegistration - to build the DRep registration certificate
+ - DRepDeregistration - to build the DRep deregistration certificate
+ - DRepUpdate - to build the DRep update certificate
**Note**
diff --git a/gov-action-loader/backend/app/transaction.py b/gov-action-loader/backend/app/transaction.py
index 0d9027960..fda74247c 100644
--- a/gov-action-loader/backend/app/transaction.py
+++ b/gov-action-loader/backend/app/transaction.py
@@ -39,8 +39,8 @@ def get_base_proposal():
def get_base_proposal_for_multiple():
base_proposal = get_base_proposal()
base_proposal["anchor"] = {
- "url": "http://bit.ly/3QFMhii",
- "dataHash": "1111111111111111111111111111111111111111111111111111111111111112",
+ "url": "https://metadata-govtool.cardanoapi.io/data/gov-action-loader",
+ "dataHash": "bcb2fadedbe928519ff000051d8e78ffcabadba0f92b91334cee3e8786491462",
}
base_proposal["deposit"] = default_proposal_deposit_ada * 1000000
return base_proposal
@@ -69,7 +69,7 @@ def generate_bytes(length):
def generate_withdraw(number):
- stake_addresses = [generate_raw_address() for _ in range(number)]
+ stake_addresses = ["e02fe0d8c1b1c600249e8b9663e18790425e9589ac17cb5ee952d54bee"]
amounts = [
random.choice([10000000, 20000000, 30000000, 40000000, 50000000])
for _ in range(number)
@@ -78,7 +78,7 @@ def generate_withdraw(number):
def generate_update(number):
- stake_addresses = [generate_raw_address() for _ in range(number)]
+ stake_addresses = ["e02fe0d8c1b1c600249e8b9663e18790425e9589ac17cb5ee952d54bee"]
current_epoch = int((int(time.time()) - 1506635071) / (5 * 24 * 60 * 60))
maximum_epoch = 10000
epochs = [random.randint(current_epoch + 2, maximum_epoch) for _ in range(number)]
diff --git a/gov-action-loader/frontend/src/views/SpecificLoad.vue b/gov-action-loader/frontend/src/views/SpecificLoad.vue
index 05fd0507f..b9cc8744a 100644
--- a/gov-action-loader/frontend/src/views/SpecificLoad.vue
+++ b/gov-action-loader/frontend/src/views/SpecificLoad.vue
@@ -72,15 +72,17 @@ import config from '../config'
-
+
+ +
+
+
Guardrail Script
-
- +
-
+
@@ -915,6 +917,12 @@ export default {
...(this.DRepDeposit != null ? { DRepDeposit: parseInt(this.DRepDeposit) } : {}),
...(this.DRepActivity != null ? { DRepActivity: parseInt(this.DRepActivity) } : {}),
}
+ proposal_data['script'] =
+ {
+ type: "PlutusScriptV3",
+ description: "",
+ cborHex: this.guardrailScript
+ }
break
}
diff --git a/govtool/backend/Dockerfile b/govtool/backend/Dockerfile
index 38c09931d..c601511c6 100644
--- a/govtool/backend/Dockerfile
+++ b/govtool/backend/Dockerfile
@@ -4,4 +4,4 @@ FROM $BASE_IMAGE_REPO:$BASE_IMAGE_TAG
WORKDIR /src
COPY . .
RUN cabal build
-RUN cp dist-newstyle/build/x86_64-linux/ghc-9.2.7/vva-be-1.0.17/x/vva-be/build/vva-be/vva-be /usr/local/bin
+RUN cp dist-newstyle/build/x86_64-linux/ghc-9.2.7/vva-be-1.0.26/x/vva-be/build/vva-be/vva-be /usr/local/bin
diff --git a/govtool/backend/Dockerfile.base b/govtool/backend/Dockerfile.base
index 6dd3c75a3..fcdf388ab 100644
--- a/govtool/backend/Dockerfile.base
+++ b/govtool/backend/Dockerfile.base
@@ -3,16 +3,60 @@
# process by ensuring it only needs to compile against these dependencies. This
# is a common practice in Haskell projects, as it can significantly reduce the
# time it takes to build the project.
+#
+# The reason why we do not use the official haskell image is that the official
+# image does not include the necessary dependencies for the project, which are
+# unobtainable from the official image.
-FROM haskell:9.2.7-buster
+FROM ubuntu:24.04
+
+# Set the working directory
WORKDIR /src
+# Set noninteractive mode
+ENV DEBIAN_FRONTEND=noninteractive
+
+# Update package list and install dependencies
RUN apt-get update && \
- apt-get install -y wget lsb-release && \
- sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' && \
+ apt-get install -y \
+ software-properties-common \
+ wget \
+ gnupg \
+ curl \
+ build-essential \
+ libncurses-dev \
+ libgmp-dev \
+ liblzma-dev \
+ pkg-config \
+ zlib1g-dev \
+ xz-utils
+
+# Install PostgreSQL 14
+RUN sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' && \
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \
apt-get update && \
apt-get install -y postgresql-14 libpq-dev
+# Download and install GHC 9.2.7
+RUN wget https://downloads.haskell.org/~ghc/9.2.7/ghc-9.2.7-x86_64-deb10-linux.tar.xz && \
+ tar -xf ghc-9.2.7-x86_64-deb10-linux.tar.xz && \
+ cd ghc-9.2.7 && \
+ ./configure && \
+ make install && \
+ cd .. && \
+ rm -rf ghc-9.2.7 ghc-9.2.7-x86_64-deb10-linux.tar.xz
+
+# Install Cabal
+RUN wget https://downloads.haskell.org/~cabal/cabal-install-3.6.2.0/cabal-install-3.6.2.0-x86_64-linux-deb10.tar.xz && \
+ tar -xf cabal-install-3.6.2.0-x86_64-linux-deb10.tar.xz && \
+ mv cabal /usr/local/bin/ && \
+ rm cabal-install-3.6.2.0-x86_64-linux-deb10.tar.xz
+
+# Copy the project files into the container
COPY . .
-RUN cabal update && cabal configure && cabal install --only-dependencies && rm -rf /src/*
+
+# Install the project dependencies
+RUN cabal update && \
+ cabal configure && \
+ cabal install --only-dependencies && \
+ rm -rf /src/*
diff --git a/govtool/backend/Dockerfile.qovery b/govtool/backend/Dockerfile.qovery
index cdf1acc79..41cf5dfd4 100644
--- a/govtool/backend/Dockerfile.qovery
+++ b/govtool/backend/Dockerfile.qovery
@@ -4,7 +4,7 @@ FROM $BASE_IMAGE_REPO:$BASE_IMAGE_TAG
WORKDIR /src
COPY . .
RUN cabal build
-RUN cp dist-newstyle/build/x86_64-linux/ghc-9.2.7/vva-be-1.0.17/x/vva-be/build/vva-be/vva-be /usr/local/bin
+RUN cp dist-newstyle/build/x86_64-linux/ghc-9.2.7/vva-be-1.0.26/x/vva-be/build/vva-be/vva-be /usr/local/bin
# Expose the necessary port
EXPOSE 9876
diff --git a/govtool/backend/app/Main.hs b/govtool/backend/app/Main.hs
index fb2f7b524..91a743025 100644
--- a/govtool/backend/app/Main.hs
+++ b/govtool/backend/app/Main.hs
@@ -82,7 +82,7 @@ startApp vvaConfig = do
settings =
setPort vvaPort
$ setHost vvaHost
- $ setTimeout 60 -- 60 seconds timeout
+ $ setTimeout 120 -- 120 seconds timeout
$ setBeforeMainLoop
( Text.hPutStrLn stderr $
Text.pack
@@ -117,7 +117,7 @@ startApp vvaConfig = do
, dRepListCache
, networkMetricsCache
}
- connectionPool <- createPool (connectPostgreSQL (encodeUtf8 (dbSyncConnectionString $ getter vvaConfig))) close 1 1 60
+ connectionPool <- createPool (connectPostgreSQL (encodeUtf8 (dbSyncConnectionString $ getter vvaConfig))) close 10 10 120
let appEnv = AppEnv {vvaConfig=vvaConfig, vvaCache=cacheEnv, vvaConnectionPool=connectionPool }
server' <- mkVVAServer appEnv
runSettings settings server'
diff --git a/govtool/backend/example-config.json b/govtool/backend/example-config.json
index 463fdc7df..fe6a47420 100644
--- a/govtool/backend/example-config.json
+++ b/govtool/backend/example-config.json
@@ -1,14 +1,14 @@
{
- "dbsyncconfig" : {
- "host" : "localhost",
- "dbname" : "cexplorer",
- "user" : "postgres",
- "password" : "postgres",
- "port" : 5432
- },
- "port" : 9999,
- "host" : "localhost",
- "cachedurationseconds": 20,
- "sentrydsn": "https://username:password@senty.host/id",
- "sentryenv": "dev"
+ "dbsyncconfig" : {
+ "host" : "localhost",
+ "dbname" : "cexplorer",
+ "user" : "postgres",
+ "password" : "postgres",
+ "port" : 5432
+ },
+ "port" : 9999,
+ "host" : "localhost",
+ "cachedurationseconds": 20,
+ "sentrydsn": "https://username:password@senty.host/id",
+ "sentryenv": "dev"
}
diff --git a/govtool/backend/sql/get-current-delegation.sql b/govtool/backend/sql/get-current-delegation.sql
index e4a92d392..365344eff 100644
--- a/govtool/backend/sql/get-current-delegation.sql
+++ b/govtool/backend/sql/get-current-delegation.sql
@@ -4,6 +4,13 @@ select
else encode(drep_hash.raw,'hex')
end as drep_raw,
drep_hash.view as drep_view,
+ EXISTS (
+ SELECT dh.has_script
+ FROM drep_hash as dh
+ WHERE drep_hash.raw = dh.raw
+ AND dh.has_script = true
+ LIMIT 1
+ ) AS has_script,
encode(tx.hash, 'hex')
from delegation_vote
join tx on tx.id = delegation_vote.tx_id
diff --git a/govtool/backend/sql/get-current-epoch-params.sql b/govtool/backend/sql/get-current-epoch-params.sql
index 9fd642903..2b591a0b4 100644
--- a/govtool/backend/sql/get-current-epoch-params.sql
+++ b/govtool/backend/sql/get-current-epoch-params.sql
@@ -1 +1,18 @@
-select ROW_TO_JSON(epoch_param) from epoch_param order by epoch_no desc limit 1;
+SELECT
+ jsonb_set(
+ ROW_TO_JSON(epoch_param)::jsonb,
+ '{cost_model}',
+ CASE
+ WHEN cost_model.id IS NOT NULL THEN
+ ROW_TO_JSON(cost_model)::jsonb
+ ELSE
+ 'null'::jsonb
+ END
+ ) AS epoch_param
+FROM
+ epoch_param
+LEFT JOIN
+ cost_model ON epoch_param.cost_model_id = cost_model.id
+ORDER BY
+ epoch_no DESC
+LIMIT 1;
diff --git a/govtool/backend/sql/get-drep-info.sql b/govtool/backend/sql/get-drep-info.sql
index ca4505d6c..3b25285d2 100644
--- a/govtool/backend/sql/get-drep-info.sql
+++ b/govtool/backend/sql/get-drep-info.sql
@@ -34,6 +34,18 @@ LatestRegistrationEntry AS (
drep_registration.tx_id DESC
LIMIT 1
),
+IsScriptHash AS (
+ SELECT EXISTS(
+ SELECT
+ drep_hash.has_script
+ FROM
+ drep_hash
+ CROSS JOIN DRepId
+ WHERE
+ drep_hash.raw = DRepId.raw
+ AND
+ drep_hash.has_script = true
+) AS has_script),
IsRegisteredAsDRep AS (
SELECT
(LatestRegistrationEntry.deposit IS NULL
@@ -165,6 +177,7 @@ SoleVoterRetire AS (
LIMIT 1
)
SELECT
+ IsScriptHash.has_script,
IsRegisteredAsDRep.value,
WasRegisteredAsDRep.value,
IsRegisteredAsSoleVoter.value,
@@ -197,5 +210,6 @@ FROM
CROSS JOIN SoleVoterRegister
CROSS JOIN SoleVoterRetire
CROSS JOIN LatestRegistrationEntry
+ CROSS JOIN IsScriptHash
LEFT JOIN off_chain_vote_data ON off_chain_vote_data.voting_anchor_id = LatestRegistrationEntry.voting_anchor_id
LEFT JOIN off_chain_vote_drep_data ON off_chain_vote_drep_data.off_chain_vote_data_id = off_chain_vote_data.id
diff --git a/govtool/backend/sql/get-stake-key-voting-power.sql b/govtool/backend/sql/get-stake-key-voting-power.sql
index 59aa5049b..b42da7ed9 100644
--- a/govtool/backend/sql/get-stake-key-voting-power.sql
+++ b/govtool/backend/sql/get-stake-key-voting-power.sql
@@ -1,6 +1,11 @@
-select coalesce(sum(utxo_view.value), 0), encode(stake_address.hash_raw, 'hex')
-from stake_address
-join utxo_view
-on utxo_view.stake_address_id = stake_address.id
-where stake_address.hash_raw = decode(?, 'hex')
-group by stake_address.hash_raw
+SELECT COALESCE(SUM(utxo_view.value::numeric), 0) + COALESCE(reward_sum.total_reward, 0) AS total_value,
+ encode(stake_address.hash_raw, 'hex')
+FROM stake_address
+JOIN utxo_view ON utxo_view.stake_address_id = stake_address.id
+LEFT JOIN (
+ SELECT addr_id, SUM(reward_rest.amount) AS total_reward
+ FROM reward_rest
+ GROUP BY addr_id
+) AS reward_sum ON reward_sum.addr_id = stake_address.id
+WHERE stake_address.hash_raw = decode(?, 'hex')
+GROUP BY stake_address.hash_raw, reward_sum.total_reward;
diff --git a/govtool/backend/sql/list-dreps.sql b/govtool/backend/sql/list-dreps.sql
index 917f0641f..043b316d2 100644
--- a/govtool/backend/sql/list-dreps.sql
+++ b/govtool/backend/sql/list-dreps.sql
@@ -21,6 +21,7 @@ DRepActivity AS (
SELECT
encode(dh.raw, 'hex'),
dh.view,
+ dh.has_script,
va.url,
encode(va.data_hash, 'hex'),
dr_deposit.deposit,
@@ -30,6 +31,7 @@ SELECT
newestRegister.time AS last_register_time,
COALESCE(latestDeposit.deposit, 0),
non_deregister_voting_anchor.url IS NOT NULL AS has_non_deregister_voting_anchor,
+ fetch_error.message,
off_chain_vote_drep_data.payment_address,
off_chain_vote_drep_data.given_name,
off_chain_vote_drep_data.objectives,
@@ -95,7 +97,15 @@ FROM
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
- LEFT JOIN voting_anchor non_deregister_voting_anchor on non_deregister_voting_anchor.id = dr_non_deregister_voting_anchor.voting_anchor_id
+ LEFT JOIN voting_anchor non_deregister_voting_anchor ON non_deregister_voting_anchor.id = dr_non_deregister_voting_anchor.voting_anchor_id
+ LEFT JOIN (
+ SELECT fetch_error as message, voting_anchor_id
+ FROM off_chain_vote_fetch_error
+ WHERE fetch_time = (
+ SELECT max(fetch_time)
+ FROM off_chain_vote_fetch_error)
+ GROUP BY fetch_error, voting_anchor_id
+ ) AS fetch_error ON fetch_error.voting_anchor_id = va.id
LEFT JOIN off_chain_vote_data ON off_chain_vote_data.voting_anchor_id = va.id
LEFT JOIN off_chain_vote_drep_data on off_chain_vote_drep_data.off_chain_vote_data_id = off_chain_vote_data.id
CROSS JOIN DRepActivity
@@ -124,10 +134,18 @@ FROM
AND dr_first_register.rn = 1
LEFT JOIN tx AS tx_first_register ON tx_first_register.id = dr_first_register.tx_id
LEFT JOIN block AS block_first_register ON block_first_register.id = tx_first_register.block_id
+WHERE
+ (
+ COALESCE(?, '') = '' OR
+ (CASE WHEN LENGTH(?) % 2 = 0 AND ? ~ '^[0-9a-fA-F]+$' THEN dh.raw = decode(?, 'hex') ELSE false END) OR
+ dh.view ILIKE ? OR
+ off_chain_vote_drep_data.given_name ILIKE ?
+ )
GROUP BY
dh.raw,
second_to_newest_drep_registration.voting_anchor_id,
dh.view,
+ dh.has_script,
va.url,
va.data_hash,
dr_deposit.deposit,
@@ -138,6 +156,7 @@ GROUP BY
newestRegister.time,
latestDeposit.deposit,
non_deregister_voting_anchor.url,
+ fetch_error.message,
off_chain_vote_drep_data.payment_address,
off_chain_vote_drep_data.given_name,
off_chain_vote_drep_data.objectives,
diff --git a/govtool/backend/sql/list-proposals.sql b/govtool/backend/sql/list-proposals.sql
index 7926fd6ba..7380dbcdf 100644
--- a/govtool/backend/sql/list-proposals.sql
+++ b/govtool/backend/sql/list-proposals.sql
@@ -5,13 +5,12 @@ WITH LatestDrepDistr AS (
FROM
drep_distr
),
-EpochUtils AS (
+LatestEpoch 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
+ start_time,
+ no
FROM
- epoch
+ epoch ORDER BY no DESC LIMIT 1
),
always_no_confidence_voting_power AS (
SELECT
@@ -32,6 +31,74 @@ always_abstain_voting_power AS (
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
+),
+committee_data AS (
+ SELECT DISTINCT ON (ch.raw)
+ encode(ch.raw, 'hex') AS hash,
+ cm.expiration_epoch,
+ ch.has_script
+ FROM
+ committee_member cm
+ JOIN
+ committee_hash ch ON cm.committee_hash_id = ch.id
+ ORDER BY ch.raw, cm.expiration_epoch DESC
+),
+parsed_description AS (
+ SELECT
+ gov_action_proposal.id,
+ description->'tag' AS tag,
+ description->'contents'->1 AS members_to_be_removed,
+ description->'contents'->2 AS members,
+ description->'contents'->3 AS threshold
+ FROM
+ gov_action_proposal
+ WHERE
+ gov_action_proposal.type = 'NewCommittee'
+),
+members_to_be_removed AS (
+ SELECT
+ id,
+ json_agg(value->>'keyHash') AS members_to_be_removed
+ FROM
+ parsed_description,
+ json_array_elements(members_to_be_removed::json) AS value
+ GROUP BY
+ id
+),
+processed_current_members AS (
+ SELECT
+ pd.id,
+ json_agg(
+ json_build_object(
+ 'hash', regexp_replace(kv.key, '^keyHash-', ''),
+ 'newExpirationEpoch', kv.value::int
+ )
+ ) AS current_members
+ FROM
+ parsed_description pd,
+ jsonb_each_text(pd.members) AS kv(key, value)
+ GROUP BY
+ pd.id
+),
+enriched_current_members AS (
+ SELECT
+ pcm.id,
+ json_agg(
+ json_build_object(
+ 'hash', cm.hash,
+ 'expirationEpoch', cm.expiration_epoch,
+ 'hasScript', cm.has_script,
+ 'newExpirationEpoch', (member->>'newExpirationEpoch')::int
+ )
+ ) AS enriched_members
+ FROM
+ processed_current_members pcm
+ LEFT JOIN
+ json_array_elements(pcm.current_members) AS member ON true
+ LEFT JOIN
+ committee_data cm ON cm.hash = encode(decode(member->>'hash', 'hex'), 'hex')
+ GROUP BY
+ pcm.id
)
SELECT
gov_action_proposal.id,
@@ -43,24 +110,67 @@ SELECT
json_build_object('Reward Address', stake_address.view, 'Amount', treasury_withdrawal.amount)
when gov_action_proposal.type::text = 'InfoAction' then
- json_build_object()
+ json_build_object('data', gov_action_proposal.description)
when gov_action_proposal.type::text = 'HardForkInitiation' then
json_build_object(
'major', (gov_action_proposal.description->'contents'->1->>'major')::int,
'minor', (gov_action_proposal.description->'contents'->1->>'minor')::int
)
+
+ when gov_action_proposal.type::text = 'NoConfidence' then
+ json_build_object('data', gov_action_proposal.description->'contents')
+
+ when gov_action_proposal.type::text = 'ParameterChange' then
+ json_build_object('data', gov_action_proposal.description->'contents')
+
+ when gov_action_proposal.type::text = 'NewConstitution' then
+ json_build_object(
+ 'anchor', gov_action_proposal.description->'contents'->1->'anchor'
+ )
+ when gov_action_proposal.type::text = 'NewCommittee' then
+ (
+ SELECT
+ json_build_object(
+ 'tag', pd.tag,
+ 'members', em.enriched_members,
+ 'membersToBeRemoved', mtr.members_to_be_removed,
+ 'threshold', pd.threshold::float
+ )
+ FROM
+ parsed_description pd
+ JOIN
+ members_to_be_removed mtr ON pd.id = mtr.id
+ JOIN
+ enriched_current_members em ON pd.id = em.id
+ WHERE
+ pd.id = gov_action_proposal.id
+ )
else
null
end
) as description,
- epoch_utils.last_epoch_end_time + epoch_utils.epoch_duration * (gov_action_proposal.expiration - epoch_utils.last_epoch_no),
+ CASE
+ WHEN meta.network_name::text = 'mainnet' OR meta.network_name::text = 'preprod' THEN
+ latest_epoch.start_time + (gov_action_proposal.expiration - latest_epoch.no)::bigint * INTERVAL '5 days'
+ ELSE
+ latest_epoch.start_time + (gov_action_proposal.expiration - latest_epoch.no)::bigint * INTERVAL '1 day'
+ END AS expiry_date,
gov_action_proposal.expiration,
creator_block.time,
creator_block.epoch_no,
voting_anchor.url,
encode(voting_anchor.data_hash, 'hex'),
- ROW_TO_JSON(proposal_params),
+ jsonb_set(
+ ROW_TO_JSON(proposal_params)::jsonb,
+ '{cost_model}',
+ CASE
+ WHEN cost_model.id IS NOT NULL THEN
+ ROW_TO_JSON(cost_model)::jsonb
+ ELSE
+ 'null'::jsonb
+ END
+ ) AS proposal_params,
off_chain_vote_gov_action_data.title,
off_chain_vote_gov_action_data.abstract,
off_chain_vote_gov_action_data.motivation,
@@ -78,9 +188,9 @@ SELECT
always_no_confidence_voting_power.amount
END) "no_votes",
coalesce(Sum(ldd_drep.amount) FILTER (WHERE voting_procedure.vote::text = 'Abstain'), 0) + always_abstain_voting_power.amount "abstain_votes",
- coalesce(vp_by_pool.poolYesVotes, 0),
- coalesce(vp_by_pool.poolNoVotes, 0),
- coalesce(vp_by_pool.poolAbstainVotes, 0),
+ coalesce(Sum(ldd_pool.amount) FILTER (WHERE voting_procedure.vote::text = 'Yes'), 0),
+ coalesce(Sum(ldd_pool.amount) FILTER (WHERE voting_procedure.vote::text = 'No'), 0),
+ coalesce(Sum(ldd_pool.amount) FILTER (WHERE voting_procedure.vote::text = 'Abstain'), 0),
coalesce(vp_by_cc.ccYesVotes, 0),
coalesce(vp_by_cc.ccNoVotes, 0),
coalesce(vp_by_cc.ccAbstainVotes, 0),
@@ -92,33 +202,22 @@ FROM
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 LatestEpoch AS latest_epoch
CROSS JOIN always_no_confidence_voting_power
CROSS JOIN always_abstain_voting_power
+ CROSS JOIN meta
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 param_proposal as proposal_params ON gov_action_proposal.param_proposal = proposal_params.id
+ LEFT JOIN cost_model AS cost_model ON proposal_params.cost_model_id = cost_model.id
LEFT JOIN off_chain_vote_data ON off_chain_vote_data.voting_anchor_id = voting_anchor.id
LEFT JOIN off_chain_vote_gov_action_data ON off_chain_vote_gov_action_data.off_chain_vote_data_id = off_chain_vote_data.id
LEFT JOIN voting_procedure ON voting_procedure.gov_action_proposal_id = gov_action_proposal.id
LEFT JOIN LatestDrepDistr ldd_drep ON ldd_drep.hash_id = voting_procedure.drep_voter
AND ldd_drep.rn = 1
- LEFT JOIN
- (
- SELECT
- gov_action_proposal_id,
- SUM(CASE WHEN vote = 'Yes' THEN 1 ELSE 0 END) AS poolYesVotes,
- SUM(CASE WHEN vote = 'No' THEN 1 ELSE 0 END) AS poolNoVotes,
- SUM(CASE WHEN vote = 'Abstain' THEN 1 ELSE 0 END) AS poolAbstainVotes
- FROM
- voting_procedure
- WHERE
- pool_voter IS NOT NULL
- GROUP BY
- gov_action_proposal_id
- ) vp_by_pool
- ON gov_action_proposal.id = vp_by_pool.gov_action_proposal_id
+ LEFT JOIN LatestDrepDistr ldd_pool ON ldd_pool.hash_id = voting_procedure.pool_voter
+ AND ldd_pool.rn = 1
LEFT JOIN
(
SELECT
@@ -127,20 +226,30 @@ FROM
SUM(CASE WHEN vote = 'No' THEN 1 ELSE 0 END) AS ccNoVotes,
SUM(CASE WHEN vote = 'Abstain' THEN 1 ELSE 0 END) AS ccAbstainVotes
FROM
- voting_procedure
+ voting_procedure AS vp
WHERE
- committee_voter IS NOT NULL
+ vp.committee_voter IS NOT NULL
+ AND (vp.tx_id, vp.committee_voter, vp.gov_action_proposal_id) IN (
+ SELECT MAX(tx_id), committee_voter, gov_action_proposal_id
+ FROM voting_procedure
+ WHERE committee_voter IS NOT NULL
+ GROUP BY committee_voter, gov_action_proposal_id
+ )
GROUP BY
gov_action_proposal_id
) vp_by_cc
ON gov_action_proposal.id = vp_by_cc.gov_action_proposal_id
-
LEFT JOIN LatestDrepDistr ldd_cc ON ldd_cc.hash_id = voting_procedure.committee_voter
AND ldd_cc.rn = 1
LEFT JOIN gov_action_proposal AS prev_gov_action ON gov_action_proposal.prev_gov_action_proposal = prev_gov_action.id
LEFT JOIN tx AS prev_gov_action_tx ON prev_gov_action.tx_id = prev_gov_action_tx.id
-WHERE (NOT ?
- OR (concat(encode(creator_tx.hash, 'hex'), '#', gov_action_proposal.index) IN ?))
+WHERE
+ (COALESCE(?, '') = '' OR
+ off_chain_vote_gov_action_data.title ILIKE ? OR
+ off_chain_vote_gov_action_data.abstract ILIKE ? OR
+ off_chain_vote_gov_action_data.motivation ILIKE ? OR
+ off_chain_vote_gov_action_data.rationale ILIKE ? OR
+ concat(encode(creator_tx.hash, 'hex'), '#', gov_action_proposal.index) ILIKE ?)
AND gov_action_proposal.expiration >(
SELECT
Max(NO)
@@ -159,22 +268,19 @@ GROUP BY
off_chain_vote_gov_action_data.abstract,
off_chain_vote_gov_action_data.motivation,
off_chain_vote_gov_action_data.rationale,
- vp_by_pool.poolYesVotes,
- vp_by_pool.poolNoVotes,
- vp_by_pool.poolAbstainVotes,
vp_by_cc.ccYesVotes,
vp_by_cc.ccNoVotes,
vp_by_cc.ccAbstainVotes,
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,
+ latest_epoch.start_time,
+ latest_epoch.no,
proposal_params,
voting_anchor.url,
voting_anchor.data_hash,
always_no_confidence_voting_power.amount,
always_abstain_voting_power.amount,
prev_gov_action.index,
- prev_gov_action_tx.hash)
\ No newline at end of file
+ prev_gov_action_tx.hash,
+ meta.network_name)
\ No newline at end of file
diff --git a/govtool/backend/src/VVA/API.hs b/govtool/backend/src/VVA/API.hs
index 64f6236dd..d13150d44 100644
--- a/govtool/backend/src/VVA/API.hs
+++ b/govtool/backend/src/VVA/API.hs
@@ -29,6 +29,7 @@ import Numeric.Natural (Natural)
import Servant.API
import Servant.Server
+import System.Random (randomRIO)
import Text.Read (readMaybe)
@@ -105,7 +106,8 @@ mapDRepStatus Types.Inactive = Inactive
drepRegistrationToDrep :: Types.DRepRegistration -> DRep
drepRegistrationToDrep Types.DRepRegistration {..} =
DRep
- { dRepDrepId = DRepHash dRepRegistrationDRepHash,
+ { dRepIsScriptBased = dRepRegistrationIsScriptBased,
+ dRepDrepId = DRepHash dRepRegistrationDRepHash,
dRepView = dRepRegistrationView,
dRepUrl = dRepRegistrationUrl,
dRepMetadataHash = dRepRegistrationDataHash,
@@ -115,6 +117,7 @@ drepRegistrationToDrep Types.DRepRegistration {..} =
dRepType = mapDRepType dRepRegistrationType,
dRepLatestTxHash = HexText <$> dRepRegistrationLatestTxHash,
dRepLatestRegistrationDate = dRepRegistrationLatestRegistrationDate,
+ dRepMetadataError = dRepRegistrationMetadataError,
dRepPaymentAddress = dRepRegistrationPaymentAddress,
dRepGivenName = dRepRegistrationGivenName,
dRepObjectives = dRepRegistrationObjectives,
@@ -129,6 +132,7 @@ delegationToResponse Types.Delegation {..} =
DelegationResponse
{ delegationResponseDRepHash = HexText <$> delegationDRepHash,
delegationResponseDRepView = delegationDRepView,
+ delegationResponseIsDRepScriptBased = delegationIsDRepScriptBased,
delegationResponseTxHash = HexText delegationTxHash
}
@@ -136,23 +140,32 @@ delegationToResponse Types.Delegation {..} =
drepList :: App m => Maybe Text -> [DRepStatus] -> Maybe DRepSortMode -> Maybe Natural -> Maybe Natural -> m ListDRepsResponse
drepList mSearchQuery statuses mSortMode mPage mPageSize = do
CacheEnv {dRepListCache} <- asks vvaCache
- dreps <- cacheRequest dRepListCache () DRep.listDReps
+ dreps <- cacheRequest dRepListCache (fromMaybe "" mSearchQuery) (DRep.listDReps mSearchQuery)
let filterDRepsByQuery = case mSearchQuery of
- Nothing -> filter $ \Types.DRepRegistration {..} -> dRepRegistrationType == Types.DRep
+ 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 searchLower = Text.toLower query
+ viewLower = Text.toLower dRepRegistrationView
+ hashLower = Text.toLower dRepRegistrationDRepHash
+ nameLower = maybe "" Text.toLower dRepRegistrationGivenName
+ in case dRepRegistrationType of
+ Types.SoleVoter -> searchLower == viewLower || searchLower == hashLower
+ Types.DRep -> searchLower `isInfixOf` viewLower
+ || searchLower `isInfixOf` hashLower
+ || searchLower `isInfixOf` nameLower
let filterDRepsByStatus = case statuses of
[] -> id
_ -> filter $ \Types.DRepRegistration {..} ->
mapDRepStatus dRepRegistrationStatus `elem` statuses
+ randomizedOrderList <- mapM (\_ -> randomRIO (0, 1 :: Double)) dreps
+
let sortDReps = case mSortMode of
Nothing -> id
+ Just Random -> fmap snd . sortOn fst . Prelude.zip randomizedOrderList
Just VotingPower -> sortOn $ \Types.DRepRegistration {..} ->
Down dRepRegistrationVotingPower
Just RegistrationDate -> sortOn $ \Types.DRepRegistration {..} ->
@@ -281,7 +294,8 @@ drepInfo (unHexText -> dRepId) = do
CacheEnv {dRepInfoCache} <- asks vvaCache
Types.DRepInfo {..} <- cacheRequest dRepInfoCache dRepId $ DRep.getDRepInfo dRepId
return $ DRepInfoResponse
- { dRepInfoResponseIsRegisteredAsDRep = dRepInfoIsRegisteredAsDRep
+ { dRepInfoResponseIsScriptBased = dRepInfoIsScriptBased
+ , dRepInfoResponseIsRegisteredAsDRep = dRepInfoIsRegisteredAsDRep
, dRepInfoResponseWasRegisteredAsDRep = dRepInfoWasRegisteredAsDRep
, dRepInfoResponseIsRegisteredAsSoleVoter = dRepInfoIsRegisteredAsSoleVoter
, dRepInfoResponseWasRegisteredAsSoleVoter = dRepInfoWasRegisteredAsSoleVoter
@@ -349,20 +363,20 @@ listProposals selectedTypes sortMode mPage mPageSize mDrepRaw mSearchQuery = do
map (voteParamsProposalId . voteResponseVote)
<$> getVotes drepId [] Nothing Nothing
-
CacheEnv {proposalListCache} <- asks vvaCache
- mappedAndSortedProposals <- do
- proposals <- cacheRequest proposalListCache () Proposal.listProposals
- mappedSortedAndFilteredProposals <- mapSortAndFilterProposals selectedTypes sortMode proposals
- return $ filter
- ( \p@ProposalResponse {proposalResponseId} ->
- proposalResponseId `notElem` proposalsToRemove
- && isProposalSearchedFor mSearchQuery p
- ) mappedSortedAndFilteredProposals
-
- let total = length mappedAndSortedProposals :: Int
-
- let elements = take pageSize $ drop (page * pageSize) mappedAndSortedProposals
+
+ proposals <- cacheRequest proposalListCache () (Proposal.listProposals mSearchQuery)
+
+ mappedSortedAndFilteredProposals <- mapSortAndFilterProposals selectedTypes sortMode proposals
+ let filteredProposals = filter
+ ( \p@ProposalResponse {proposalResponseId} ->
+ proposalResponseId `notElem` proposalsToRemove
+ && isProposalSearchedFor mSearchQuery p
+ ) mappedSortedAndFilteredProposals
+
+ let total = length filteredProposals :: Int
+
+ let elements = take pageSize $ drop (page * pageSize) filteredProposals
return $ ListProposalsResponse
{ listProposalsResponsePage = fromIntegral page
diff --git a/govtool/backend/src/VVA/API/Types.hs b/govtool/backend/src/VVA/API/Types.hs
index 308c17669..79b8915a0 100644
--- a/govtool/backend/src/VVA/API/Types.hs
+++ b/govtool/backend/src/VVA/API/Types.hs
@@ -202,7 +202,7 @@ instance ToParamSchema GovernanceActionType where
& enum_ ?~ map toJSON (enumFromTo minBound maxBound :: [GovernanceActionType])
-data DRepSortMode = VotingPower | RegistrationDate | Status deriving (Bounded, Enum, Eq, Generic, Read, Show)
+data DRepSortMode = Random | VotingPower | RegistrationDate | Status deriving (Bounded, Enum, Eq, Generic, Read, Show)
instance FromJSON DRepSortMode where
parseJSON (Aeson.String dRepSortMode) = pure $ fromJust $ readMaybe (Text.unpack dRepSortMode)
@@ -561,7 +561,8 @@ instance ToSchema VoteResponse where
data DRepInfoResponse
= DRepInfoResponse
- { dRepInfoResponseIsRegisteredAsDRep :: Bool
+ { dRepInfoResponseIsScriptBased :: Bool
+ , dRepInfoResponseIsRegisteredAsDRep :: Bool
, dRepInfoResponseWasRegisteredAsDRep :: Bool
, dRepInfoResponseIsRegisteredAsSoleVoter :: Bool
, dRepInfoResponseWasRegisteredAsSoleVoter :: Bool
@@ -758,7 +759,8 @@ instance ToSchema DRepType where
data DRep
= DRep
- { dRepDrepId :: DRepHash
+ { dRepIsScriptBased :: Bool
+ , dRepDrepId :: DRepHash
, dRepView :: Text
, dRepUrl :: Maybe Text
, dRepMetadataHash :: Maybe Text
@@ -768,6 +770,7 @@ data DRep
, dRepType :: DRepType
, dRepLatestTxHash :: Maybe HexText
, dRepLatestRegistrationDate :: UTCTime
+ , dRepMetadataError :: Maybe Text
, dRepPaymentAddress :: Maybe Text
, dRepGivenName :: Maybe Text
, dRepObjectives :: Maybe Text
@@ -854,9 +857,10 @@ instance ToSchema ListDRepsResponse where
data DelegationResponse
= DelegationResponse
- { delegationResponseDRepHash :: Maybe HexText
- , delegationResponseDRepView :: Text
- , delegationResponseTxHash :: HexText
+ { delegationResponseDRepHash :: Maybe HexText
+ , delegationResponseDRepView :: Text
+ , delegationResponseIsDRepScriptBased :: Bool
+ , delegationResponseTxHash :: HexText
}
deriveJSON (jsonOptions "delegationResponse") ''DelegationResponse
diff --git a/govtool/backend/src/VVA/AdaHolder.hs b/govtool/backend/src/VVA/AdaHolder.hs
index c12a531c7..6a2ac3c33 100644
--- a/govtool/backend/src/VVA/AdaHolder.hs
+++ b/govtool/backend/src/VVA/AdaHolder.hs
@@ -29,9 +29,6 @@ import VVA.Types
sqlFrom :: ByteString -> SQL.Query
sqlFrom bs = fromString $ unpack $ Text.decodeUtf8 bs
-listDRepsSql :: SQL.Query
-listDRepsSql = sqlFrom $(embedFile "sql/list-dreps.sql")
-
getCurrentDelegationSql :: SQL.Query
getCurrentDelegationSql = sqlFrom $(embedFile "sql/get-current-delegation.sql")
@@ -42,9 +39,9 @@ getCurrentDelegation ::
getCurrentDelegation stakeKey = withPool $ \conn -> do
result <- liftIO $ SQL.query conn getCurrentDelegationSql (SQL.Only stakeKey)
case result of
- [] -> return Nothing
- [(mDRepHash, dRepView, txHash)] -> return $ Just $ Delegation mDRepHash dRepView txHash
- _ -> error ("multiple delegations for stake key: " <> unpack stakeKey)
+ [] -> return Nothing
+ [(mDRepHash, dRepView, isDRepScriptBased, txHash)] -> return $ Just $ Delegation mDRepHash dRepView isDRepScriptBased txHash
+ _ -> error ("multiple delegations for stake key: " <> unpack stakeKey)
getVotingPowerSql :: SQL.Query
getVotingPowerSql = sqlFrom $(embedFile "sql/get-stake-key-voting-power.sql")
diff --git a/govtool/backend/src/VVA/DRep.hs b/govtool/backend/src/VVA/DRep.hs
index fd262bc94..fd4034c12 100644
--- a/govtool/backend/src/VVA/DRep.hs
+++ b/govtool/backend/src/VVA/DRep.hs
@@ -26,7 +26,6 @@ import qualified Data.Text.Encoding as Text
import Data.Time
import qualified Database.PostgreSQL.Simple as SQL
-
import VVA.Config
import VVA.Pool (ConnectionPool, withPool)
import qualified VVA.Proposal as Proposal
@@ -36,34 +35,28 @@ import VVA.Types (AppError, DRepInfo (..), DRepRegist
sqlFrom :: ByteString -> SQL.Query
sqlFrom bs = fromString $ unpack $ Text.decodeUtf8 bs
-getVotingPowerSql :: SQL.Query
-getVotingPowerSql = sqlFrom $(embedFile "sql/get-voting-power.sql")
-
-getVotingPower ::
- (Has ConnectionPool r, Has VVAConfig r, MonadReader r m, MonadIO m, MonadFail m) =>
- Text ->
- m Integer
-getVotingPower drepId = withPool $ \conn -> do
- result <-
- liftIO
- (SQL.query @_ @(SQL.Only Scientific) conn getVotingPowerSql $ SQL.Only drepId)
- case result of
- [SQL.Only votingPower] -> return $ floor votingPower
- [] -> return 0
-
listDRepsSql :: SQL.Query
listDRepsSql = sqlFrom $(embedFile "sql/list-dreps.sql")
listDReps ::
(Has ConnectionPool r, Has VVAConfig r, MonadReader r m, MonadIO m) =>
- m [DRepRegistration]
-listDReps = withPool $ \conn -> do
- results <- liftIO $ SQL.query_ conn listDRepsSql
+ Maybe Text -> m [DRepRegistration]
+listDReps mSearchQuery = withPool $ \conn -> do
+ let searchParam = fromMaybe "" mSearchQuery
+ results <- liftIO $ SQL.query conn listDRepsSql
+ ( searchParam
+ , searchParam
+ , searchParam
+ , searchParam
+ , "%" <> searchParam <> "%"
+ , "%" <> searchParam <> "%"
+ )
timeZone <- liftIO getCurrentTimeZone
return
- [ DRepRegistration drepHash drepView url dataHash (floor @Scientific deposit) votingPower status drepType txHash (localTimeToUTC timeZone date) paymentAddress givenName objectives motivations qualifications imageUrl imageHash
+ [ DRepRegistration drepHash drepView isScriptBased url dataHash (floor @Scientific deposit) votingPower status drepType txHash (localTimeToUTC timeZone date) metadataError paymentAddress givenName objectives motivations qualifications imageUrl imageHash
| ( drepHash
, drepView
+ , isScriptBased
, url
, dataHash
, deposit
@@ -73,6 +66,7 @@ listDReps = withPool $ \conn -> do
, date
, latestDeposit
, latestNonDeregisterVotingAnchorWasNotNull
+ , metadataError
, paymentAddress
, givenName
, objectives
@@ -93,6 +87,19 @@ listDReps = withPool $ \conn -> do
| Data.Maybe.isJust url = DRep
]
+getVotingPowerSql :: SQL.Query
+getVotingPowerSql = sqlFrom $(embedFile "sql/get-voting-power.sql")
+
+getVotingPower ::
+ (Has ConnectionPool r, Has VVAConfig r, MonadReader r m, MonadIO m, MonadFail m) =>
+ Text ->
+ m Integer
+getVotingPower drepId = withPool $ \conn -> do
+ result <- liftIO (SQL.query @_ @(SQL.Only Scientific) conn getVotingPowerSql $ SQL.Only drepId)
+ case result of
+ [SQL.Only votingPower] -> return $ floor votingPower
+ [] -> return 0
+
getVotesSql :: SQL.Query
getVotesSql = sqlFrom $(embedFile "sql/get-votes.sql")
@@ -103,17 +110,23 @@ getVotes ::
m ([Vote], [Proposal])
getVotes drepId selectedProposals = withPool $ \conn -> do
results <- liftIO $ SQL.query conn getVotesSql (SQL.Only drepId)
- let proposalsToSelect = if null selectedProposals
- then [ govActionId | (_, govActionId, _, _, _, _, _, _, _) <- results]
- else selectedProposals
- proposals <- Proposal.getProposals (Just proposalsToSelect)
- let proposalMap = M.fromList $ map (\x -> (proposalId x, x)) proposals
- timeZone <- liftIO getCurrentTimeZone
- return
- ([ Vote proposalId' drepId' vote' url' docHash' epochNo' (localTimeToUTC timeZone date') voteTxHash'
- | (proposalId', govActionId', drepId', vote', url', docHash', epochNo', date', voteTxHash') <- results
- , govActionId' `elem` proposalsToSelect
- ], proposals)
+
+ if null results
+ then return ([], [])
+ else do
+ let proposalsToSelect = if null selectedProposals
+ then [ govActionId | (_, govActionId, _, _, _, _, _, _, _) <- results]
+ else selectedProposals
+ proposals <- if null proposalsToSelect
+ then return []
+ else Proposal.getProposals (Just proposalsToSelect)
+ let proposalMap = M.fromList $ map (\x -> (proposalId x, x)) proposals
+ timeZone <- liftIO getCurrentTimeZone
+ let votes = [ Vote proposalId' drepId' vote' url' docHash' epochNo' (localTimeToUTC timeZone date') voteTxHash'
+ | (proposalId', govActionId', drepId', vote', url', docHash', epochNo', date', voteTxHash') <- results
+ , govActionId' `elem` proposalsToSelect
+ ]
+ return (votes, proposals)
getDRepInfoSql :: SQL.Query
getDRepInfoSql = sqlFrom $(embedFile "sql/get-drep-info.sql")
@@ -131,7 +144,8 @@ getDRepInfo
getDRepInfo drepId = withPool $ \conn -> do
result <- liftIO $ SQL.query conn getDRepInfoSql (SQL.Only drepId)
case result of
- [ ( isRegisteredAsDRep
+ [ ( isScriptBased
+ , isRegisteredAsDRep
, wasRegisteredAsDRep
, isRegisteredAsSoleVoter
, wasRegisteredAsSoleVoter
@@ -152,7 +166,8 @@ getDRepInfo drepId = withPool $ \conn -> do
, imageHash
)] ->
return $ DRepInfo
- { dRepInfoIsRegisteredAsDRep = fromMaybe False isRegisteredAsDRep
+ { dRepInfoIsScriptBased = isScriptBased
+ , dRepInfoIsRegisteredAsDRep = fromMaybe False isRegisteredAsDRep
, dRepInfoWasRegisteredAsDRep = fromMaybe False wasRegisteredAsDRep
, dRepInfoIsRegisteredAsSoleVoter = fromMaybe False isRegisteredAsSoleVoter
, dRepInfoWasRegisteredAsSoleVoter = fromMaybe False wasRegisteredAsSoleVoter
@@ -172,4 +187,4 @@ getDRepInfo drepId = withPool $ \conn -> do
, dRepInfoImageUrl = imageUrl
, dRepInfoImageHash = imageHash
}
- [] -> return $ DRepInfo False False False False Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
+ [] -> return $ DRepInfo False False False False False Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing
diff --git a/govtool/backend/src/VVA/Proposal.hs b/govtool/backend/src/VVA/Proposal.hs
index bc9fb6a2d..328b091eb 100644
--- a/govtool/backend/src/VVA/Proposal.hs
+++ b/govtool/backend/src/VVA/Proposal.hs
@@ -28,10 +28,9 @@ import qualified Data.Text.IO as Text
import Data.Time
import qualified Database.PostgreSQL.Simple as SQL
-
-import qualified GHC.Generics as SQL
-
-import Text.Read (readMaybe)
+import qualified Database.PostgreSQL.Simple.Types as PG
+import Database.PostgreSQL.Simple.ToField (ToField(..))
+import Database.PostgreSQL.Simple.ToRow (ToRow(..))
import VVA.Config
import VVA.Pool (ConnectionPool, withPool)
@@ -43,10 +42,15 @@ sqlFrom bs = fromString $ unpack $ Text.decodeUtf8 bs
listProposalsSql :: SQL.Query
listProposalsSql = sqlFrom $(embedFile "sql/list-proposals.sql")
+newtype TextArray = TextArray [Text]
+
+instance ToRow TextArray where
+ toRow (TextArray texts) = map toField texts
+
listProposals ::
(Has ConnectionPool r, Has VVAConfig r, MonadReader r m, MonadIO m, MonadFail m, MonadError AppError m) =>
- m [Proposal]
-listProposals = getProposals Nothing
+ Maybe Text -> m [Proposal]
+listProposals mSearch = getProposals (fmap (:[]) mSearch)
getProposal ::
(Has ConnectionPool r, Has VVAConfig r, MonadReader r m, MonadIO m, MonadFail m, MonadError AppError m) =>
@@ -54,17 +58,23 @@ getProposal ::
Integer ->
m Proposal
getProposal txHash index = do
- result <- getProposals (Just [txHash <> "#" <> pack (show index)])
+ let proposalId = txHash <> "#" <> pack (show index)
+ result <- getProposals (Just [proposalId])
case result of
- [] -> throwError $ NotFoundError ("Proposal with id: " <> txHash <> "#" <> pack (show index) <> " not found")
+ [] -> throwError $ NotFoundError ("Proposal with id: " <> proposalId <> " not found")
[a] -> return a
- _ -> throwError $ CriticalError ("Multiple proposal found for id: " <> txHash <> "#" <> pack (show index) <> ". This should never happen")
+ _ -> throwError $ CriticalError ("Multiple proposals found for id: " <> proposalId <> ". This should never happen")
getProposals ::
(Has ConnectionPool r, Has VVAConfig r, MonadReader r m, MonadIO m, MonadFail m, MonadError AppError m) =>
- Maybe [Text] ->
- m [Proposal]
-getProposals mProposalIds = withPool $ \conn ->
- liftIO $ case mProposalIds of
- Nothing -> SQL.query @(Bool, SQL.In [Text]) conn listProposalsSql (False, SQL.In [])
- Just proposalIds -> SQL.query conn listProposalsSql (True, SQL.In proposalIds)
+ Maybe [Text] -> m [Proposal]
+getProposals mSearchTerms = withPool $ \conn -> do
+ let searchParam = maybe "" head mSearchTerms
+ liftIO $ SQL.query conn listProposalsSql
+ ( searchParam
+ , "%" <> searchParam <> "%"
+ , "%" <> searchParam <> "%"
+ , "%" <> searchParam <> "%"
+ , "%" <> searchParam <> "%"
+ , "%" <> searchParam <> "%"
+ )
diff --git a/govtool/backend/src/VVA/Types.hs b/govtool/backend/src/VVA/Types.hs
index d3965ff34..c67e70189 100644
--- a/govtool/backend/src/VVA/Types.hs
+++ b/govtool/backend/src/VVA/Types.hs
@@ -72,7 +72,8 @@ data Vote
data DRepInfo
= DRepInfo
- { dRepInfoIsRegisteredAsDRep :: Bool
+ { dRepInfoIsScriptBased :: Bool
+ , dRepInfoIsRegisteredAsDRep :: Bool
, dRepInfoWasRegisteredAsDRep :: Bool
, dRepInfoIsRegisteredAsSoleVoter :: Bool
, dRepInfoWasRegisteredAsSoleVoter :: Bool
@@ -101,6 +102,7 @@ data DRepRegistration
= DRepRegistration
{ dRepRegistrationDRepHash :: Text
, dRepRegistrationView :: Text
+ , dRepRegistrationIsScriptBased :: Bool
, dRepRegistrationUrl :: Maybe Text
, dRepRegistrationDataHash :: Maybe Text
, dRepRegistrationDeposit :: Integer
@@ -109,6 +111,7 @@ data DRepRegistration
, dRepRegistrationType :: DRepType
, dRepRegistrationLatestTxHash :: Maybe Text
, dRepRegistrationLatestRegistrationDate :: UTCTime
+ , dRepRegistrationMetadataError :: Maybe Text
, dRepRegistrationPaymentAddress :: Maybe Text
, dRepRegistrationGivenName :: Maybe Text
, dRepRegistrationObjectives :: Maybe Text
@@ -193,7 +196,7 @@ data CacheEnv
, dRepGetVotesCache :: Cache.Cache Text ([Vote], [Proposal])
, dRepInfoCache :: Cache.Cache Text DRepInfo
, dRepVotingPowerCache :: Cache.Cache Text Integer
- , dRepListCache :: Cache.Cache () [DRepRegistration]
+ , dRepListCache :: Cache.Cache Text [DRepRegistration]
, networkMetricsCache :: Cache.Cache () NetworkMetrics
}
@@ -214,7 +217,8 @@ data NetworkMetrics
data Delegation
= Delegation
- { delegationDRepHash :: Maybe Text
- , delegationDRepView :: Text
- , delegationTxHash :: Text
+ { delegationDRepHash :: Maybe Text
+ , delegationDRepView :: Text
+ , delegationIsDRepScriptBased :: Bool
+ , delegationTxHash :: Text
}
diff --git a/govtool/backend/vva-be.cabal b/govtool/backend/vva-be.cabal
index 97e5c5692..c8fa636c0 100644
--- a/govtool/backend/vva-be.cabal
+++ b/govtool/backend/vva-be.cabal
@@ -1,6 +1,6 @@
cabal-version: 3.6
name: vva-be
-version: 1.0.17
+version: 1.0.26
-- A short (one-line) description of the package.
-- synopsis:
@@ -103,6 +103,7 @@ library
, http-client-tls
, vector
, async
+ , random
exposed-modules: VVA.Config
, VVA.CommandLine
diff --git a/govtool/frontend/Dockerfile.qovey b/govtool/frontend/Dockerfile.qovey
new file mode 100644
index 000000000..33e83cbe9
--- /dev/null
+++ b/govtool/frontend/Dockerfile.qovey
@@ -0,0 +1,31 @@
+FROM node:18-alpine as builder
+
+ARG VITE_APP_ENV='beta'
+ARG VITE_BASE_URL
+ARG VITE_METADATA_API_URL
+ARG VITE_GTM_ID
+ARG VITE_NETWORK_FLAG=0
+ARG VITE_SENTRY_DSN
+ARG NPMRC_TOKEN
+ARG VITE_USERSNAP_SPACE_API_KEY
+ARG VITE_IS_PROPOSAL_DISCUSSION_FORUM_ENABLED='true'
+ARG VITE_PDF_API_URL
+
+ENV NODE_OPTIONS=--max_old_space_size=8192
+
+WORKDIR /src
+
+# Set npm configuration settings using environment variables
+RUN npm config set @intersect.mbo:registry "https://registry.npmjs.org/" --location=global
+RUN npm config set //registry.npmjs.org/:_authToken ${NPMRC_TOKEN} --location=global
+
+COPY package.json package-lock.json ./
+RUN npm install
+COPY . .
+RUN npm run build
+
+FROM nginx:stable-alpine
+EXPOSE 80
+COPY nginx.conf /etc/nginx/conf.d/default.conf
+COPY --from=builder /src/maintenance-page/index.html /usr/share/nginx/html/maintenance.html
+COPY --from=builder /src/dist /usr/share/nginx/html
diff --git a/govtool/frontend/index.html b/govtool/frontend/index.html
index 8032b4a36..cb8734a1b 100644
--- a/govtool/frontend/index.html
+++ b/govtool/frontend/index.html
@@ -24,6 +24,21 @@
+
diff --git a/govtool/frontend/junit-report.xml b/govtool/frontend/junit-report.xml
index 2f3434f92..1396b87e1 100644
--- a/govtool/frontend/junit-report.xml
+++ b/govtool/frontend/junit-report.xml
@@ -1,230 +1,256 @@
-
-
-
+
+
+
-
-
-
+
-
+
-
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
-
+
+
+
-
+
+
+
-
+
-
+
-
+
-
-
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
-
+
-
+
-
+
+
+
-
+
-
+
+
+
-
+
-
-
-
-
+
+
-
+
-
-
+
+
-
-
-
-
-
-
+
+
-
+
-
+
-
+
-
+
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
+
+
-
+
-
-
+
+
-
+
-
+
-
+
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
+
+
-
-
+
+
-
+
+
+
-
+
-
+
-
-
+
+
-
+
-
+
+
+
+
+Error: Failed to get PubDRepKey
+ at [90m/Users/asiadyczka/Desktop/govtool/govtool/frontend/[39msrc/utils/tests/getDRepID.test.ts:46:40
+ at [90mfile:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4m@vitest[24m/runner/dist/index.js:135:14
+ at [90mfile:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4m@vitest[24m/runner/dist/index.js:60:26
+ at runTest [90m(file:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4m@vitest[24m/runner/dist/index.js:781:17[90m)[39m
+[90m at processTicksAndRejections (node:internal/process/task_queues:95:5)[39m
+ at runSuite [90m(file:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4m@vitest[24m/runner/dist/index.js:909:15[90m)[39m
+ at runSuite [90m(file:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4m@vitest[24m/runner/dist/index.js:909:15[90m)[39m
+ at runFiles [90m(file:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4m@vitest[24m/runner/dist/index.js:958:5[90m)[39m
+ at startTests [90m(file:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4m@vitest[24m/runner/dist/index.js:967:3[90m)[39m
+ at [90mfile:///Users/asiadyczka/Desktop/govtool/govtool/frontend/[39mnode_modules/[4mvitest[24m/dist/chunks/runtime-runBaseTests.oAvMKtQC.js:116:7
+
+
-
-
+
+
-
+
-
+
-
-
-
+
-
+
-
+
+
+
-
+
-
-
-
+
+
+
-
-
+
+
-
+
-
-
-
+
-
+
-
+
@@ -234,88 +260,112 @@
-
-
+
+
-
+
-
-
-
+
-
+
-
-
+
+
-
+
-
-
-
+
-
+
-
+
-
-
-
+
-
+
-
+
-
+
-
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
+
+
+
+
+
-
-
+
+
-
+
-
+
-
+
+
+
+
+
-
-
+
+
-
+
-
+
-
+
+
+
-
+
+
+
+
+
-
-
+
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
diff --git a/govtool/frontend/package-lock.json b/govtool/frontend/package-lock.json
index fdb9a75d1..395102589 100644
--- a/govtool/frontend/package-lock.json
+++ b/govtool/frontend/package-lock.json
@@ -1,20 +1,20 @@
{
"name": "@govtool/frontend",
- "version": "1.0.17",
+ "version": "1.0.26",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@govtool/frontend",
- "version": "1.0.17",
+ "version": "1.0.26",
"hasInstallScript": true,
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
- "@emurgo/cardano-serialization-lib-asmjs": "12.0.0-beta.2",
+ "@emurgo/cardano-serialization-lib-asmjs": "^12.1.0",
"@hookform/resolvers": "^3.3.1",
"@intersect.mbo/intersectmbo.org-icons-set": "^1.0.8",
- "@intersect.mbo/pdf-ui": "^0.3.8",
+ "@intersect.mbo/pdf-ui": "^0.4.0",
"@mui/icons-material": "^5.14.3",
"@mui/material": "^5.14.4",
"@rollup/plugin-babel": "^6.0.4",
@@ -2901,10 +2901,9 @@
"license": "MIT"
},
"node_modules/@emurgo/cardano-serialization-lib-asmjs": {
- "version": "12.0.0-beta.2",
- "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-asmjs/-/cardano-serialization-lib-asmjs-12.0.0-beta.2.tgz",
- "integrity": "sha512-WVM/TDBb2/Pvq/PxKkoMFz/iuxXfFDuBbD1dem+olg4kqut7x2Fu5SM/iNmKvZF3DbiuA7fQVTabj14i7C9g+w==",
- "license": "MIT"
+ "version": "12.1.0",
+ "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-asmjs/-/cardano-serialization-lib-asmjs-12.1.0.tgz",
+ "integrity": "sha512-LVClEWmZmTvaXTBUpSOdyAYr10PlnfEycG1Z5m96aHWN08mdQH/x2LyZxuCjWVSusrG3ZwFnsOYZCHLel7tu4g=="
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.19.12",
@@ -3551,9 +3550,9 @@
"license": "ISC"
},
"node_modules/@intersect.mbo/pdf-ui": {
- "version": "0.3.8",
- "resolved": "https://registry.npmjs.org/@intersect.mbo/pdf-ui/-/pdf-ui-0.3.8.tgz",
- "integrity": "sha512-eI8Uo2b6Byi7kQKOYA7TGCj3h96P4WP+kv0ZHKCPs/yVR6w1IGQHrXmBM9B0SlXh/gAQvW/kzTeZyL+nnL5ZOg==",
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/@intersect.mbo/pdf-ui/-/pdf-ui-0.4.0.tgz",
+ "integrity": "sha512-0Wc0fze9zFy7wCGVaDMdWf5eI9flwLHnUDlGQYKEFi7y5DM2uH2rT1OSFw7h2uAnfjZJ0w3pivI1TjPi3HkAIg==",
"dependencies": {
"@emurgo/cardano-serialization-lib-asmjs": "^12.0.0-beta.2",
"@fontsource/poppins": "^5.0.14",
diff --git a/govtool/frontend/package.json b/govtool/frontend/package.json
index 541024da5..dc3cb3c1c 100644
--- a/govtool/frontend/package.json
+++ b/govtool/frontend/package.json
@@ -1,7 +1,7 @@
{
"name": "@govtool/frontend",
"private": true,
- "version": "1.0.17",
+ "version": "1.0.26",
"type": "module",
"scripts": {
"build": "vite build",
@@ -25,10 +25,10 @@
"dependencies": {
"@emotion/react": "^11.11.1",
"@emotion/styled": "^11.11.0",
- "@emurgo/cardano-serialization-lib-asmjs": "12.0.0-beta.2",
+ "@emurgo/cardano-serialization-lib-asmjs": "^12.1.0",
"@hookform/resolvers": "^3.3.1",
"@intersect.mbo/intersectmbo.org-icons-set": "^1.0.8",
- "@intersect.mbo/pdf-ui": "^0.3.8",
+ "@intersect.mbo/pdf-ui": "^0.4.0",
"@mui/icons-material": "^5.14.3",
"@mui/material": "^5.14.4",
"@rollup/plugin-babel": "^6.0.4",
@@ -109,5 +109,5 @@
"typescript": "^5.0.2"
},
"readme": "ERROR: No README data found!",
- "_id": "govtool@1.0.17"
+ "_id": "govtool@1.0.26"
}
diff --git a/govtool/frontend/src/App.tsx b/govtool/frontend/src/App.tsx
index 9b667cb04..553d5295f 100644
--- a/govtool/frontend/src/App.tsx
+++ b/govtool/frontend/src/App.tsx
@@ -6,7 +6,6 @@ import { PATHS, PDF_PATHS } from "@consts";
import { useCardano, useFeatureFlag, useModal } from "@context";
import { useWalletConnectionListener } from "@hooks";
import {
- DashboardCards,
DashboardGovernanceActions,
DashboardGovernanceActionDetails,
} from "@organisms";
@@ -39,6 +38,7 @@ import {
} from "@utils";
import { PublicRoute } from "./pages/PublicRoute";
import { TopBanners } from "./components/organisms/TopBanners";
+import { DashboardHome } from "./pages/DashboardHome";
export default () => {
const { isProposalDiscussionForumEnabled } = useFeatureFlag();
@@ -104,7 +104,7 @@ export default () => {
/>
)}
}>
- } />
+ } />
{isProposalDiscussionForumEnabled && (
errorMessage && (
= ({ ...props }) => {
palette: { boxShadow1 },
} = theme;
const { isMobile } = useScreenDimension();
- // const { powerIsLoading, votingPower } =
- // useGetAdaHolderVotingPowerQuery(stakeKey);
- // const { t } = useTranslation();
+ const { powerIsLoading, votingPower } =
+ useGetAdaHolderVotingPowerQuery(stakeKey);
+ const { t } = useTranslation();
return (
= ({ ...props }) => {
/>
- {/* TODO uncomment when voting power value s correct */}
- {/*
+
- {t("votingPower")}
- :
+ {t("votingPower")}:
{powerIsLoading ? (
@@ -82,7 +85,7 @@ export const StakeRadio: FC = ({ ...props }) => {
₳ {correctAdaFormat(votingPower) ?? 0}
)}
- */}
+
);
diff --git a/govtool/frontend/src/components/atoms/VotePill.test.tsx b/govtool/frontend/src/components/atoms/VotePill.test.tsx
index 24f09a4d0..69bae3985 100644
--- a/govtool/frontend/src/components/atoms/VotePill.test.tsx
+++ b/govtool/frontend/src/components/atoms/VotePill.test.tsx
@@ -5,7 +5,7 @@ import { VotePill } from "@atoms";
describe("VotePill", () => {
it('renders the VotePill component with "yes" vote correctly', () => {
const { getByText } = render( );
- const voteText = getByText("yes");
+ const voteText = getByText("Yes");
expect(voteText).toBeInTheDocument();
expect(voteText.parentNode).toHaveStyle({
borderColor: "#C0E4BA",
@@ -15,7 +15,7 @@ describe("VotePill", () => {
it('renders the VotePill component with "no" vote correctly', () => {
const { getByText } = render( );
- const voteText = getByText("no");
+ const voteText = getByText("No");
expect(voteText).toBeInTheDocument();
expect(voteText.parentNode).toHaveStyle({
borderColor: "#EDACAC",
@@ -25,7 +25,7 @@ describe("VotePill", () => {
it('renders the VotePill component with "abstain" vote correctly', () => {
const { getByText } = render( );
- const voteText = getByText("abstain");
+ const voteText = getByText("Abstain");
expect(voteText).toBeInTheDocument();
expect(voteText.parentNode).toHaveStyle({
borderColor: "#99ADDE",
diff --git a/govtool/frontend/src/components/atoms/VotePill.tsx b/govtool/frontend/src/components/atoms/VotePill.tsx
index de29ac900..cd37c9e02 100644
--- a/govtool/frontend/src/components/atoms/VotePill.tsx
+++ b/govtool/frontend/src/components/atoms/VotePill.tsx
@@ -1,3 +1,4 @@
+import { useTranslation } from "react-i18next";
import { Box, Typography } from "@mui/material";
import { Vote } from "@models";
@@ -6,12 +7,15 @@ export const VotePill = ({
vote,
width,
maxWidth,
+ isCC,
}: {
vote: Vote;
width?: number;
maxWidth?: number;
+ isCC?: boolean;
}) => {
- const VOTE = vote.toLowerCase();
+ const { t } = useTranslation();
+ const VOTE = vote.toLowerCase() as "yes" | "no" | "abstain";
return (
- {vote}
+ {t(
+ `votes.${
+ isCC
+ ? VOTE === "yes"
+ ? "constitutional"
+ : vote === "no"
+ ? "unconstitutional"
+ : VOTE
+ : VOTE
+ }`,
+ )}
);
diff --git a/govtool/frontend/src/components/atoms/VotingPowerChips.tsx b/govtool/frontend/src/components/atoms/VotingPowerChips.tsx
index 159859c90..fa11d764c 100644
--- a/govtool/frontend/src/components/atoms/VotingPowerChips.tsx
+++ b/govtool/frontend/src/components/atoms/VotingPowerChips.tsx
@@ -33,6 +33,7 @@ export const VotingPowerChips = ({
height: isMobile ? 16 : 24,
px: 2,
py: isMobile ? 1 : 1.5,
+ maxHeight: "14px",
}}
>
{!isMobile && (
diff --git a/govtool/frontend/src/components/atoms/modal/ModalWrapper.tsx b/govtool/frontend/src/components/atoms/modal/ModalWrapper.tsx
index 807cded95..772063fc5 100644
--- a/govtool/frontend/src/components/atoms/modal/ModalWrapper.tsx
+++ b/govtool/frontend/src/components/atoms/modal/ModalWrapper.tsx
@@ -32,6 +32,8 @@ export const BaseWrapper = styled("div")>`
width: 80vw;
max-width: 510px;
padding: 52px 24px 34px 24px;
+ max-height: 80vh;
+ overflow: auto;
`;
}
if (variant === "popup") {
diff --git a/govtool/frontend/src/components/atoms/types.ts b/govtool/frontend/src/components/atoms/types.ts
index 97307a5f3..52bf82151 100644
--- a/govtool/frontend/src/components/atoms/types.ts
+++ b/govtool/frontend/src/components/atoms/types.ts
@@ -57,11 +57,13 @@ export type CheckboxProps = Omit & {
};
export type FormErrorMessageProps = {
+ dataTestId?: string;
errorMessage?: string;
errorStyles?: MUITypographyProps;
};
export type FormHelpfulTextProps = {
+ dataTestId?: string;
helpfulText?: string;
helpfulTextStyle?: MUITypographyProps;
sx?: SxProps;
diff --git a/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx b/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx
index 855631938..729a02523 100644
--- a/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx
+++ b/govtool/frontend/src/components/molecules/AutomatedVotingCard.tsx
@@ -1,4 +1,4 @@
-import { Box } from "@mui/material";
+import { Box, Divider } from "@mui/material";
import { Button, Typography } from "@atoms";
import { primaryBlue } from "@consts";
@@ -20,6 +20,7 @@ export const AutomatedVotingCard = ({
onClickInfo,
title,
transactionId,
+ votingPower,
}: AutomatedVotingCardProps) => {
const { cExplorerBaseUrl } = useAppContext();
const { isMobile, screenWidth } = useScreenDimension();
@@ -83,8 +84,7 @@ export const AutomatedVotingCard = ({
{!inProgress && !isSelected && (
<>
- {/* TODO uncomment when voting power value s correct */}
- {/* */}
+ />
diff --git a/govtool/frontend/src/components/molecules/DRepInfoCard.tsx b/govtool/frontend/src/components/molecules/DRepInfoCard.tsx
index 00663ea63..f1ac53a8d 100644
--- a/govtool/frontend/src/components/molecules/DRepInfoCard.tsx
+++ b/govtool/frontend/src/components/molecules/DRepInfoCard.tsx
@@ -5,18 +5,24 @@ import { CopyButton } from "@atoms";
import { useTranslation } from "@hooks";
import { Card } from "./Card";
import { gray } from "@/consts";
+import { useGetDRepDetailsQuery } from "@/hooks";
export const DRepInfoCard = () => {
- const { dRepIDBech32 } = useCardano();
+ const { dRepID } = useCardano();
+ const { dRep } = useGetDRepDetailsQuery(dRepID);
const { t } = useTranslation();
+ if (!dRep) {
+ return null;
+ }
+
return (
{t("myDRepId")}
-
+
{
fontSize={14}
fontWeight={500}
>
- {dRepIDBech32}
+ {dRep.view}
diff --git a/govtool/frontend/src/components/molecules/DataActionsBar.tsx b/govtool/frontend/src/components/molecules/DataActionsBar.tsx
index f66274ced..c2839ae78 100644
--- a/govtool/frontend/src/components/molecules/DataActionsBar.tsx
+++ b/govtool/frontend/src/components/molecules/DataActionsBar.tsx
@@ -25,7 +25,6 @@ type DataActionsBarProps = {
setFiltersOpen?: Dispatch>;
setSearchText: Dispatch>;
setSortOpen: Dispatch>;
- sortingActive: boolean;
sortOpen: boolean;
sortOptions?: {
key: string;
@@ -50,7 +49,6 @@ export const DataActionsBar: FC = ({ ...props }) => {
setFiltersOpen,
setSearchText,
setSortOpen,
- sortingActive,
sortOpen,
sortOptions = [],
} = props;
@@ -94,8 +92,8 @@ export const DataActionsBar: FC = ({ ...props }) => {
filtersOpen={filtersOpen}
isFiltering={isFiltering}
setFiltersOpen={setFiltersOpen}
+ chosenSorting={chosenSorting}
setSortOpen={setSortOpen}
- sortingActive={sortingActive}
sortOpen={sortOpen}
>
{filtersOpen && (
diff --git a/govtool/frontend/src/components/molecules/DataMissingHeader.tsx b/govtool/frontend/src/components/molecules/DataMissingHeader.tsx
index 7e19844e9..6267d8742 100644
--- a/govtool/frontend/src/components/molecules/DataMissingHeader.tsx
+++ b/govtool/frontend/src/components/molecules/DataMissingHeader.tsx
@@ -1,13 +1,11 @@
import { Box, SxProps } from "@mui/material";
import { Typography } from "@atoms";
-import { Share } from "@molecules";
import { MetadataValidationStatus } from "@models";
import { getMetadataDataMissingStatusTranslation } from "@/utils";
type DataMissingHeaderProps = {
isDataMissing: MetadataValidationStatus | null;
- shareLink?: string;
title?: string;
titleStyle?: SxProps;
};
@@ -15,7 +13,6 @@ type DataMissingHeaderProps = {
export const DataMissingHeader = ({
title,
isDataMissing,
- shareLink,
titleStyle,
}: DataMissingHeaderProps) => (
- {shareLink && }
);
diff --git a/govtool/frontend/src/components/molecules/Field/Input.tsx b/govtool/frontend/src/components/molecules/Field/Input.tsx
index fac305b1f..9d3b1f4df 100644
--- a/govtool/frontend/src/components/molecules/Field/Input.tsx
+++ b/govtool/frontend/src/components/molecules/Field/Input.tsx
@@ -14,8 +14,10 @@ import { InputFieldProps } from "./types";
export const Input = forwardRef(
(
{
+ errorDataTestId,
errorMessage,
errorStyles,
+ helpfulTextDataTestId,
helpfulText,
helpfulTextStyle,
label,
@@ -71,10 +73,12 @@ export const Input = forwardRef(
ref={inputRef}
/>
diff --git a/govtool/frontend/src/components/molecules/Field/types.ts b/govtool/frontend/src/components/molecules/Field/types.ts
index 56912fbc4..4c59a6a93 100644
--- a/govtool/frontend/src/components/molecules/Field/types.ts
+++ b/govtool/frontend/src/components/molecules/Field/types.ts
@@ -8,8 +8,10 @@ import {
} from "@atoms";
export type InputFieldProps = InputProps & {
+ errorDataTestId?: string;
errorMessage?: string;
errorStyles?: MUITypographyProps;
+ helpfulTextDataTestId?: string;
helpfulText?: string;
helpfulTextStyle?: MUITypographyProps;
label?: string;
diff --git a/govtool/frontend/src/components/molecules/GovernanceActionCard.tsx b/govtool/frontend/src/components/molecules/GovernanceActionCard.tsx
index 89b802254..51ae0fdf9 100644
--- a/govtool/frontend/src/components/molecules/GovernanceActionCard.tsx
+++ b/govtool/frontend/src/components/molecules/GovernanceActionCard.tsx
@@ -11,6 +11,7 @@ import {
import { useScreenDimension, useTranslation } from "@hooks";
import {
+ encodeCIP129Identifier,
getFullGovActionId,
getProposalTypeLabel,
getProposalTypeNoEmptySpaces,
@@ -53,6 +54,11 @@ export const GovernanceActionCard: FC = ({ ...props }) => {
const { t } = useTranslation();
const govActionId = getFullGovActionId(txHash, index);
+ const cip129GovernanceActionId = encodeCIP129Identifier({
+ txID: txHash,
+ index: index.toString(16).padStart(2, "0"),
+ bech32Prefix: "gov_action",
+ });
return (
= ({ ...props }) => {
title={title}
isDataMissing={metadataStatus}
/>
-
+ {!metadataStatus && (
+
+ )}
= ({ ...props }) => {
/>
+
diff --git a/govtool/frontend/src/components/molecules/GovernanceActionCardElement.tsx b/govtool/frontend/src/components/molecules/GovernanceActionCardElement.tsx
index 4fc52f937..4ff9709be 100644
--- a/govtool/frontend/src/components/molecules/GovernanceActionCardElement.tsx
+++ b/govtool/frontend/src/components/molecules/GovernanceActionCardElement.tsx
@@ -108,9 +108,11 @@ export const GovernanceActionCardElement = ({
{isMarkdown ? (
diff --git a/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardLinks.tsx b/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardLinks.tsx
index 1615a2716..e6ee3cdaf 100644
--- a/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardLinks.tsx
+++ b/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardLinks.tsx
@@ -4,12 +4,11 @@ import { Typography } from "@atoms";
import { ICONS } from "@consts";
import { useModal } from "@context";
import { useScreenDimension, useTranslation } from "@hooks";
-import { LinkWithIcon } from "@molecules";
export const GovernanceActionDetailsCardLinks = ({
links,
}: {
- links?: string[];
+ links?: Reference[];
}) => {
const { isMobile } = useScreenDimension();
const { t } = useTranslation();
@@ -41,21 +40,58 @@ export const GovernanceActionDetailsCardLinks = ({
rowGap: 2,
}}
>
- {links.map((link) => (
- {
- openModal({
- type: "externalLink",
- state: {
- externalLink: link,
- },
- });
- }}
- icon={ }
- cutWithEllipsis
- />
+ {links.map(({ uri, label }) => (
+
+ {label && (
+
+ {label}
+
+ )}
+
+ {uri}
+
+ {label && (
+
+ {
+ openModal({
+ type: "externalLink",
+ state: {
+ externalLink: uri,
+ },
+ });
+ }}
+ />
+
+ )}
+
))}
>
diff --git a/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardOnChainData.tsx b/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardOnChainData.tsx
index 8cb0230c2..72d594189 100644
--- a/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardOnChainData.tsx
+++ b/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardOnChainData.tsx
@@ -1,3 +1,4 @@
+import { ReactNode } from "react";
import { Box } from "@mui/material";
import { Typography } from "@atoms";
@@ -65,7 +66,7 @@ export const GovernanceActionDetailsCardOnChainData = ({
ml: 0.5,
}}
>
- {content}
+ {content as ReactNode}
))}
diff --git a/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardVotes.tsx b/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardVotes.tsx
index f56c6d8d9..cdb211e7d 100644
--- a/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardVotes.tsx
+++ b/govtool/frontend/src/components/molecules/GovernanceActionDetailsCardVotes.tsx
@@ -1,10 +1,11 @@
-import { Dispatch, SetStateAction } from "react";
+import { Dispatch, SetStateAction, useCallback } from "react";
import { Box } from "@mui/material";
import { useScreenDimension } from "@hooks";
import { VoteActionForm, VotesSubmitted } from "@molecules";
import { useFeatureFlag } from "@/context";
import { ProposalData, ProposalVote } from "@/models";
+import { SECURITY_RELEVANT_PARAMS_MAP } from "@/consts";
type GovernanceActionCardVotesProps = {
setIsVoteSubmitted: Dispatch>;
@@ -23,24 +24,20 @@ export const GovernanceActionDetailsCardVotes = ({
vote,
isDashboard,
isInProgress,
- proposal: {
- dRepAbstainVotes,
- dRepNoVotes,
- dRepYesVotes,
- poolAbstainVotes,
- poolNoVotes,
- poolYesVotes,
- ccAbstainVotes,
- ccNoVotes,
- ccYesVotes,
- expiryDate,
- expiryEpochNo,
- type,
- },
+ proposal,
}: GovernanceActionCardVotesProps) => {
- const { isVotingOnGovernanceActionEnabled } = useFeatureFlag();
+ const { areDRepVoteTotalsDisplayed } = useFeatureFlag();
const { screenWidth } = useScreenDimension();
-
+ const isSecurityGroup = useCallback(
+ () =>
+ Object.values(SECURITY_RELEVANT_PARAMS_MAP).some(
+ (paramKey) =>
+ proposal.protocolParams?.[
+ paramKey as keyof typeof proposal.protocolParams
+ ] !== null,
+ ),
+ [proposal.protocolParams],
+ );
const isModifiedPadding =
(isDashboard && screenWidth < 1368) ?? screenWidth < 1100;
@@ -52,29 +49,16 @@ export const GovernanceActionDetailsCardVotes = ({
p: `40px ${isModifiedPadding ? "24px" : "80px"}`,
}}
>
- {isVoter && isVotingOnGovernanceActionEnabled(type) ? (
+ {isVoter &&
+ areDRepVoteTotalsDisplayed(proposal.type, isSecurityGroup()) ? (
) : (
-
+
)}
);
diff --git a/govtool/frontend/src/components/molecules/GovernanceActionNewCommitteeDetailsTabContent.tsx b/govtool/frontend/src/components/molecules/GovernanceActionNewCommitteeDetailsTabContent.tsx
new file mode 100644
index 000000000..920b72b08
--- /dev/null
+++ b/govtool/frontend/src/components/molecules/GovernanceActionNewCommitteeDetailsTabContent.tsx
@@ -0,0 +1,210 @@
+import { useTranslation } from "react-i18next";
+import { Box } from "@mui/material";
+
+import { ProposalData } from "@/models";
+import { encodeCIP129Identifier } from "@/utils";
+
+import { CopyButton, Typography } from "../atoms";
+
+type CCMember = {
+ expirationEpoch: number;
+ hasScript: boolean;
+ hash: string;
+ newExpirationEpoch?: number;
+};
+
+export const GovernanceActionNewCommitteeDetailsTabContent = ({
+ details,
+}: Pick) => {
+ const { t } = useTranslation();
+ const membersToBeAdded = ((details?.members as CCMember[]) || [])
+ .filter((member) => member.newExpirationEpoch === undefined)
+ .map((member) => ({
+ cip129Identifier: encodeCIP129Identifier({
+ txID: member.hash,
+ bech32Prefix: member.hasScript ? "cc_hot" : "cc_cold",
+ }),
+ expirationEpoch: member.expirationEpoch,
+ }));
+
+ const membersToBeUpdated = ((details?.members as CCMember[]) || [])
+ .filter((member) => member.newExpirationEpoch !== undefined)
+ .map((member) => ({
+ cip129Identifier: encodeCIP129Identifier({
+ txID: member.hash,
+ bech32Prefix: member.hasScript ? "cc_hot" : "cc_cold",
+ }),
+ expirationEpoch: member.expirationEpoch,
+ newExpirationEpoch: member.newExpirationEpoch,
+ }));
+
+ return (
+
+ {membersToBeAdded.length > 0 && (
+
+
+ {t("govActions.membersToBeAdded")}
+
+ {membersToBeAdded.map(({ cip129Identifier }) => (
+
+
+ {cip129Identifier}
+
+
+
+
+
+ ))}
+
+ )}
+ {(details?.membersToBeRemoved as string[]).length > 0 && (
+
+
+ {t("govActions.membersToBeRemoved")}
+
+ {(details?.membersToBeRemoved as string[]).map((hash) => (
+
+
+ {encodeCIP129Identifier({
+ txID: hash,
+ bech32Prefix: "cc_cold",
+ })}
+
+
+
+
+
+ ))}
+
+ )}
+
+ {membersToBeUpdated.length > 0 && (
+
+
+ {t("govActions.changeToTermsOfExistingMembers")}
+
+ {membersToBeUpdated.map(
+ ({ cip129Identifier, newExpirationEpoch, expirationEpoch }) => (
+ <>
+
+
+ {cip129Identifier}
+
+
+
+
+
+
+ {t("govActions.changeToTermsEpochs", {
+ epochTo: newExpirationEpoch,
+ epochFrom: expirationEpoch,
+ })}
+
+ >
+ ),
+ )}
+
+ )}
+ {details?.threshold && (
+
+
+ {t("govActions.newThresholdValue")}
+
+
+ {(details?.threshold as number).toString()}
+
+
+ )}
+
+ );
+};
diff --git a/govtool/frontend/src/components/molecules/GovernanceVotedOnCard.tsx b/govtool/frontend/src/components/molecules/GovernanceVotedOnCard.tsx
index e47980920..0ece58804 100644
--- a/govtool/frontend/src/components/molecules/GovernanceVotedOnCard.tsx
+++ b/govtool/frontend/src/components/molecules/GovernanceVotedOnCard.tsx
@@ -5,6 +5,7 @@ import { Button } from "@atoms";
import { PATHS } from "@consts";
import { useScreenDimension, useTranslation } from "@hooks";
import {
+ encodeCIP129Identifier,
getFullGovActionId,
getProposalTypeLabel,
getProposalTypeNoEmptySpaces,
@@ -43,6 +44,13 @@ export const GovernanceVotedOnCard = ({ votedProposal, inProgress }: Props) => {
const { isMobile, screenWidth } = useScreenDimension();
const { t } = useTranslation();
+ const govActionId = getFullGovActionId(txHash, index);
+ const cip129GovernanceActionId = encodeCIP129Identifier({
+ txID: txHash,
+ index: index.toString(16).padStart(2, "0"),
+ bech32Prefix: "gov_action",
+ });
+
return (
{
/>
+
@@ -120,15 +135,12 @@ export const GovernanceVotedOnCard = ({ votedProposal, inProgress }: Props) => {
>
navigate(
PATHS.dashboardGovernanceActionsAction.replace(
":proposalId",
- getFullGovActionId(txHash, index),
+ govActionId,
),
{
state: {
diff --git a/govtool/frontend/src/components/molecules/OrderActionsChip.tsx b/govtool/frontend/src/components/molecules/OrderActionsChip.tsx
index 006133653..63a233d1e 100644
--- a/govtool/frontend/src/components/molecules/OrderActionsChip.tsx
+++ b/govtool/frontend/src/components/molecules/OrderActionsChip.tsx
@@ -10,9 +10,9 @@ type Props = {
filtersOpen?: boolean;
setFiltersOpen?: Dispatch>;
chosenFiltersLength?: number;
+ chosenSorting: string;
sortOpen: boolean;
setSortOpen: Dispatch>;
- sortingActive: boolean;
children?: React.ReactNode;
isFiltering?: boolean;
};
@@ -29,9 +29,9 @@ export const OrderActionsChip = (props: Props) => {
filtersOpen,
setFiltersOpen = () => {},
chosenFiltersLength = 0,
+ chosenSorting,
sortOpen,
setSortOpen,
- sortingActive,
isFiltering = true,
children,
} = props;
@@ -163,31 +163,12 @@ export const OrderActionsChip = (props: Props) => {
sx={{
color: sortOpen ? "white" : "primaryBlue",
fontWeight: 500,
+ whiteSpace: "nowrap",
}}
>
- {t("sort")}
+ {chosenSorting ? `${t("sortBy")}: ${chosenSorting}` : t("sort")}
)}
- {!sortOpen && sortingActive && (
-
-
-
- )}
{children}
diff --git a/govtool/frontend/src/components/molecules/VoteActionForm.tsx b/govtool/frontend/src/components/molecules/VoteActionForm.tsx
index 964edcf5c..e7fd496f0 100644
--- a/govtool/frontend/src/components/molecules/VoteActionForm.tsx
+++ b/govtool/frontend/src/components/molecules/VoteActionForm.tsx
@@ -13,28 +13,22 @@ import {
useGetVoteContextTextFromFile,
} from "@hooks";
import { formatDisplayDate } from "@utils";
-import { ProposalVote } from "@/models";
+import { ProposalData, ProposalVote } from "@/models";
+import { VoteContextModalState, SubmittedVotesModalState } from "../organisms";
type VoteActionFormProps = {
setIsVoteSubmitted: Dispatch>;
- expiryDate: string | undefined;
- expiryEpochNo: number | undefined;
isInProgress?: boolean;
previousVote?: ProposalVote;
- dRepYesVotes: number;
- dRepNoVotes: number;
- dRepAbstainVotes: number;
+ proposal: ProposalData;
};
export const VoteActionForm = ({
setIsVoteSubmitted,
- expiryDate,
- expiryEpochNo,
previousVote,
- dRepAbstainVotes,
- dRepNoVotes,
- dRepYesVotes,
isInProgress,
+ proposal,
+ proposal: { expiryDate, expiryEpochNo },
}: VoteActionFormProps) => {
const [voteContextHash, setVoteContextHash] = useState();
const [voteContextUrl, setVoteContextUrl] = useState();
@@ -59,9 +53,9 @@ export const VoteActionForm = ({
canVote,
} = useVoteActionForm({ previousVote, voteContextHash, voteContextUrl });
- const setVoteContextData = (url: string, hash: string) => {
+ const setVoteContextData = (url: string, hash: string | null) => {
setVoteContextUrl(url);
- setVoteContextHash(hash);
+ setVoteContextHash(hash ?? undefined);
};
useEffect(() => {
@@ -176,7 +170,7 @@ export const VoteActionForm = ({
name="vote"
register={registerInput}
setValue={setValue}
- title={t("yes")}
+ title={t("votes.yes")}
value="yes"
disabled={isInProgress}
/>
@@ -186,7 +180,7 @@ export const VoteActionForm = ({
name="vote"
register={registerInput}
setValue={setValue}
- title={t("no")}
+ title={t("votes.no")}
value="no"
disabled={isInProgress}
/>
@@ -196,7 +190,7 @@ export const VoteActionForm = ({
name="vote"
register={registerInput}
setValue={setValue}
- title={t("abstain")}
+ title={t("votes.abstain")}
value="abstain"
disabled={isInProgress}
/>
@@ -215,13 +209,11 @@ export const VoteActionForm = ({
}}
onClick={() => {
openModal({
- type: "votingPower",
+ type: "submittedVotes",
state: {
- dRepYesVotes,
- dRepNoVotes,
- dRepAbstainVotes,
+ ...proposal,
vote: previousVote?.vote,
- },
+ } satisfies SubmittedVotesModalState,
});
}}
>
@@ -309,7 +301,7 @@ export const VoteActionForm = ({
type: "voteContext",
state: {
onSubmit: setVoteContextData,
- },
+ } satisfies VoteContextModalState,
});
}}
sx={{
diff --git a/govtool/frontend/src/components/molecules/VotesSubmitted.tsx b/govtool/frontend/src/components/molecules/VotesSubmitted.tsx
index d148a49a9..921aec6f4 100644
--- a/govtool/frontend/src/components/molecules/VotesSubmitted.tsx
+++ b/govtool/frontend/src/components/molecules/VotesSubmitted.tsx
@@ -1,61 +1,100 @@
-import { Box, Typography } from "@mui/material";
+import { useCallback } from "react";
+import { Box } from "@mui/material";
-import { IMAGES } from "@consts";
-import { VotePill } from "@atoms";
+import { IMAGES, SECURITY_RELEVANT_PARAMS_MAP } from "@consts";
+import { Typography, VotePill } from "@atoms";
import { useTranslation } from "@hooks";
-import { correctAdaFormat } from "@utils";
+import { correctVoteAdaFormat, getGovActionVotingThresholdKey } from "@utils";
+import { SubmittedVotesData } from "@models";
+import { useFeatureFlag, useAppContext } from "@/context";
type Props = {
- dRepYesVotes: number;
- dRepNoVotes: number;
- dRepAbstainVotes: number;
- poolYesVotes: number;
- poolNoVotes: number;
- poolAbstainVotes: number;
- ccYesVotes: number;
- ccNoVotes: number;
- ccAbstainVotes: number;
+ votes: SubmittedVotesData;
};
-const Vote = ({
- vote,
- value,
-}: {
- vote: "yes" | "no" | "abstain";
- value: string | number;
-}) => (
-
-
-
- {value}
-
-
-);
-
export const VotesSubmitted = ({
- dRepAbstainVotes,
- dRepNoVotes,
- dRepYesVotes,
- poolAbstainVotes,
- poolNoVotes,
- poolYesVotes,
- ccAbstainVotes,
- ccNoVotes,
- ccYesVotes,
+ votes: {
+ dRepYesVotes,
+ dRepAbstainVotes,
+ dRepNoVotes,
+ poolYesVotes,
+ poolAbstainVotes,
+ poolNoVotes,
+ ccYesVotes,
+ ccAbstainVotes,
+ ccNoVotes,
+ type,
+ protocolParams,
+ },
}: Props) => {
+ const isSecurityGroup = useCallback(
+ () =>
+ Object.values(SECURITY_RELEVANT_PARAMS_MAP).some(
+ (paramKey) =>
+ protocolParams?.[paramKey as keyof typeof protocolParams] !== null,
+ ),
+ [protocolParams],
+ );
+
+ const {
+ areDRepVoteTotalsDisplayed,
+ areSPOVoteTotalsDisplayed,
+ areCCVoteTotalsDisplayed,
+ } = useFeatureFlag();
const { t } = useTranslation();
+ const { networkMetrics, epochParams } = useAppContext();
+ const totalDRepStake =
+ dRepYesVotes +
+ dRepAbstainVotes +
+ dRepNoVotes +
+ (networkMetrics?.alwaysAbstainVotingPower || 0) +
+ (networkMetrics?.alwaysNoConfidenceVotingPower || 0);
+ const totalPoolStake = poolYesVotes + poolAbstainVotes + poolNoVotes;
+ const totalCCStake = ccYesVotes + ccAbstainVotes + ccNoVotes;
+
+ const dRepNegativeVotesPercentage = totalDRepStake
+ ? ((dRepAbstainVotes +
+ dRepNoVotes +
+ (networkMetrics?.alwaysAbstainVotingPower || 0) +
+ (networkMetrics?.alwaysNoConfidenceVotingPower || 0)) /
+ totalDRepStake) *
+ 100
+ : undefined;
+ const dRepNoVotesPercentage = totalDRepStake
+ ? (dRepNoVotes / totalDRepStake) * 100
+ : undefined;
+ const dRepYesVotesPercentage = dRepNegativeVotesPercentage
+ ? 100 - dRepNegativeVotesPercentage
+ : undefined;
+
+ // TODO: add abstain votes to the calculation
+ const poolNegativeVotesPercentage = totalPoolStake
+ ? ((poolAbstainVotes + poolNoVotes) / totalPoolStake) * 100
+ : undefined;
+ const poolNoVotesPercentage = totalPoolStake
+ ? (poolNoVotes / totalPoolStake) * 100
+ : undefined;
+ const poolYesVotesPercentage = poolNegativeVotesPercentage
+ ? 100 - poolNegativeVotesPercentage
+ : undefined;
+
+ // TODO: add abstain votes to the calculation
+ const ccNegativeVotesPercentage = totalCCStake
+ ? (ccAbstainVotes + ccNoVotes) / totalCCStake
+ : undefined;
+ const ccNoVotesPercentage = totalCCStake
+ ? ccNoVotes / totalCCStake
+ : undefined;
+ const ccYesVotesPercentage = ccNegativeVotesPercentage
+ ? 100 - ccNegativeVotesPercentage
+ : undefined;
return (
-
- {t("govActions.dReps")}
-
-
-
-
+ {areDRepVoteTotalsDisplayed(type, isSecurityGroup()) && (
+ {
+ const votingThresholdKey = getGovActionVotingThresholdKey({
+ govActionType: type,
+ protocolParams,
+ voterType: "dReps",
+ });
+ return votingThresholdKey && epochParams?.[votingThresholdKey];
+ })()}
+ />
+ )}
+ {areSPOVoteTotalsDisplayed(type, isSecurityGroup()) && (
+ {
+ const votingThresholdKey = getGovActionVotingThresholdKey({
+ govActionType: type,
+ protocolParams,
+ voterType: "sPos",
+ });
+ return votingThresholdKey && epochParams?.[votingThresholdKey];
+ })()}
+ />
+ )}
+ {areCCVoteTotalsDisplayed(type) && (
+
+ )}
+
+
+ );
+};
+
+export type VoterType = "ccCommittee" | "dReps" | "sPos";
+
+type VotesGroupProps = {
+ type: VoterType;
+ yesVotes: number;
+ yesVotesPercentage?: number;
+ noVotes: number;
+ noVotesPercentage?: number;
+ abstainVotes: number;
+ threshold?: number | null;
+};
+
+const VotesGroup = ({
+ type,
+ yesVotes,
+ yesVotesPercentage,
+ noVotes,
+ noVotesPercentage,
+ abstainVotes,
+ threshold,
+}: VotesGroupProps) => {
+ const { t } = useTranslation();
+ return (
+
+
+ {t(`govActions.${type}`)}
+
+
+
+
+ {threshold !== undefined && (
- {t("govActions.sPos")}
+ {t("govActions.threshold")}
-
-
-
-
-
- {t("govActions.ccCommittee")}
-
-
-
-
-
+ {threshold}
+
-
+ )}
);
};
+
+type VoteProps = {
+ type: VoterType;
+ vote: VoteType;
+ value: number;
+ percentage?: number;
+};
+const Vote = ({ type, vote, value, percentage }: VoteProps) => (
+
+
+
+
+ {type !== "ccCommittee" ? `₳ ${correctVoteAdaFormat(value)}` : value}
+
+ {vote !== "abstain" && typeof percentage === "number" && (
+
+ {typeof percentage === "number" ? `${percentage.toFixed(2)}%` : ""}
+
+ )}
+
+
+);
diff --git a/govtool/frontend/src/components/molecules/index.ts b/govtool/frontend/src/components/molecules/index.ts
index 36f1e485f..205eff64e 100644
--- a/govtool/frontend/src/components/molecules/index.ts
+++ b/govtool/frontend/src/components/molecules/index.ts
@@ -5,6 +5,8 @@ export * from "./Card";
export * from "./CenteredBoxBottomButtons";
export * from "./CenteredBoxPageWrapper";
export * from "./CopyableInfo";
+export * from "./DRepDataForm";
+export * from "./DRepInfoCard";
export * from "./DashboardActionCard";
export * from "./DataActionsBar";
export * from "./DataActionsFilters";
@@ -12,8 +14,6 @@ export * from "./DataActionsSorting";
export * from "./DataMissingHeader";
export * from "./DataMissingInfoBox";
export * from "./DelegationAction";
-export * from "./DRepInfoCard";
-export * from "./DRepDataForm";
export * from "./EmptyStateDrepDirectory";
export * from "./EmptyStateGovernanceActionsCategory";
export * from "./Field";
@@ -27,6 +27,7 @@ export * from "./GovernanceActionDetailsCardLinks";
export * from "./GovernanceActionDetailsCardOnChainData";
export * from "./GovernanceActionDetailsCardVotes";
export * from "./GovernanceActionDetailsDiffView";
+export * from "./GovernanceActionNewCommitteeDetailsTabContent";
export * from "./GovernanceActionsDatesBox";
export * from "./GovernanceVotedOnCard";
export * from "./LinkWithIcon";
diff --git a/govtool/frontend/src/components/organisms/DRepCard.tsx b/govtool/frontend/src/components/organisms/DRepCard.tsx
index 8391f3f1c..d63d0b859 100644
--- a/govtool/frontend/src/components/organisms/DRepCard.tsx
+++ b/govtool/frontend/src/components/organisms/DRepCard.tsx
@@ -19,6 +19,7 @@ type DRepCardProps = {
isDelegationLoading?: boolean;
isInProgress?: boolean;
isMe?: boolean;
+ isMyDrep?: boolean;
onDelegate?: () => void;
};
@@ -28,6 +29,7 @@ export const DRepCard = ({
isDelegationLoading,
isInProgress,
isMe,
+ isMyDrep,
onDelegate,
}: DRepCardProps) => {
const navigate = useNavigate();
@@ -116,6 +118,7 @@ export const DRepCard = ({
sx={{
gap: 1,
width: "250px",
+ maxWidth: "100%",
"&:hover": {
opacity: 0.6,
transition: "opacity 0.3s",
@@ -209,6 +212,7 @@ export const DRepCard = ({
{status === "Active" &&
isConnected &&
onDelegate &&
+ !isMyDrep &&
!isInProgress && (
{
const { pendingTransaction } = useCardano();
const { t } = useTranslation();
@@ -40,10 +44,6 @@ export const DRepDetailsCard = ({
votingPower,
} = dRepData;
- const isMe = variant === "meAsDRep";
- const isMyDrep = variant === "myDRep";
- const isMyDrepInProgress = variant === "myDRepInProgress";
-
const groupedReferences = references?.reduce>(
(acc, reference) => {
const type = reference["@type"];
@@ -85,7 +85,11 @@ export const DRepDetailsCard = ({
gap: 2,
}}
>
-
+
{/* ERROR MESSAGES */}
{metadataStatus && (
{
const { stakeKey } = useCardano();
const { t } = useTranslation();
@@ -37,9 +40,6 @@ export const DRepDetailsCardHeader = ({
});
};
- const isMe = variant === "meAsDRep";
- const isMyDrep = variant === "myDRep";
-
return (
{(isMe || isMyDrep) && (
@@ -59,11 +59,18 @@ export const DRepDetailsCardHeader = ({
}
sx={{
boxShadow: (theme) => theme.shadows[2],
@@ -116,9 +123,6 @@ export const DRepDetailsCardHeader = ({
diff --git a/govtool/frontend/src/components/organisms/DashboardCards.tsx b/govtool/frontend/src/components/organisms/DashboardCards.tsx
index 869faf2a7..c31448450 100644
--- a/govtool/frontend/src/components/organisms/DashboardCards.tsx
+++ b/govtool/frontend/src/components/organisms/DashboardCards.tsx
@@ -14,7 +14,7 @@ import { ListGovActionsDashboardCards } from "./DashboardCards/ListGovActionsDas
import { ProposeGovActionDashboardCard } from "./DashboardCards/ProposeGovActionDashboardCard";
export const DashboardCards = () => {
- const { dRepID, dRepIDBech32, pendingTransaction, stakeKey } = useCardano();
+ const { dRepID, pendingTransaction, stakeKey } = useCardano();
const { screenWidth } = useScreenDimension();
const { currentDelegation } = useGetAdaHolderCurrentDelegationQuery(stakeKey);
@@ -32,7 +32,7 @@ export const DashboardCards = () => {
alignItems: "center",
display: "flex",
flex: 1,
- height: "100vh",
+ minHeight: "calc(100vh - 175px)",
justifyContent: "center",
}}
>
@@ -42,49 +42,45 @@ export const DashboardCards = () => {
}
return (
-
- = 1728
- ? "repeat(3, minmax(300px, 570px))"
- : "repeat(2, minmax(300px, 530px))",
- justifyContent: screenWidth < 1024 ? "center" : "flex-start",
- px: screenWidth < 640 ? 2 : 5,
- py: 3,
- rowGap: 3,
- }}
- >
-
+ = 1728
+ ? "repeat(3, minmax(300px, 570px))"
+ : "repeat(2, minmax(300px, 530px))",
+ justifyContent: screenWidth < 1024 ? "center" : "flex-start",
+ rowGap: 3,
+ }}
+ >
+
-
+
-
+
-
+
-
-
+
);
};
diff --git a/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx b/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx
index 9fe20bbc9..b9c4338f7 100644
--- a/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx
+++ b/govtool/frontend/src/components/organisms/DashboardCards/DRepDashboardCard.tsx
@@ -3,7 +3,7 @@ import { Trans } from "react-i18next";
import { IMAGES, PATHS } from "@consts";
import { PendingTransaction } from "@context";
-import { useTranslation } from "@hooks";
+import { useGetDRepDetailsQuery, useTranslation } from "@hooks";
import { VoterInfo } from "@models";
import {
CopyableInfo,
@@ -13,19 +13,21 @@ import {
import { correctAdaFormat, openInNewTab } from "@utils";
type DRepDashboardCardProps = {
- dRepIDBech32: string;
+ dRepID: string;
pendingTransaction: PendingTransaction;
voter: VoterInfo;
};
export const DRepDashboardCard = ({
- dRepIDBech32,
+ dRepID,
pendingTransaction,
voter,
}: DRepDashboardCardProps) => {
const navigate = useNavigate();
const { t } = useTranslation();
+ const { dRep } = useGetDRepDetailsQuery(dRepID);
+
const inProgress = !!(
pendingTransaction.registerAsDrep ||
pendingTransaction.retireAsDrep ||
@@ -41,11 +43,13 @@ export const DRepDashboardCard = ({
),
};
- const navigateToDrepDirectory = () =>
- navigate(
- PATHS.dashboardDRepDirectoryDRep.replace(":dRepId", dRepIDBech32),
- { state: { enteredFromWithinApp: true } },
- );
+ const navigateToDrepDirectory = () => {
+ if (dRep) {
+ navigate(PATHS.dashboardDRepDirectoryDRep.replace(":dRepId", dRep.view), {
+ state: { enteredFromWithinApp: true },
+ });
+ }
+ };
const cardProps: Partial = (() => {
// transaction in progress
@@ -165,14 +169,16 @@ export const DRepDashboardCard = ({
type="d-rep"
{...cardProps}
>
- {voter?.isRegisteredAsDRep && !pendingTransaction?.retireAsDrep && (
-
- )}
+ {voter?.isRegisteredAsDRep &&
+ !pendingTransaction?.retireAsDrep &&
+ dRep && (
+
+ )}
);
};
diff --git a/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx b/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx
index ba122db3f..16459cd0b 100644
--- a/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx
+++ b/govtool/frontend/src/components/organisms/DashboardCards/DelegateDashboardCard.tsx
@@ -4,7 +4,7 @@ import { Trans } from "react-i18next";
import { IMAGES, PATHS } from "@consts";
import { PendingTransaction } from "@context";
-import { useGetDRepListInfiniteQuery, useTranslation } from "@hooks";
+import { useGetDRepDetailsQuery, useTranslation } from "@hooks";
import { CurrentDelegation, VoterInfo } from "@models";
import {
DashboardActionCard,
@@ -13,7 +13,6 @@ import {
} from "@molecules";
import {
correctAdaFormat,
- formHexToBech32,
getMetadataDataMissingStatusTranslation,
openInNewTab,
} from "@utils";
@@ -39,17 +38,10 @@ export const DelegateDashboardCard = ({
const navigate = useNavigate();
const { t } = useTranslation();
- const { dRepData, isDRepListFetching } = useGetDRepListInfiniteQuery(
- {
- searchPhrase: delegateTx?.resourceId ?? currentDelegation?.dRepHash ?? "",
- },
- {
- enabled: !!currentDelegation?.dRepHash || !!delegateTx?.resourceId,
- },
+ const { dRep: myDRepDelegationData, isLoading } = useGetDRepDetailsQuery(
+ delegateTx?.resourceId ?? currentDelegation?.dRepHash,
);
- const myDRepDelegationData = dRepData?.[0];
-
const learnMoreButton = {
children: t("learnMore"),
dataTestId: "delegate-learn-more-button",
@@ -161,7 +153,7 @@ export const DelegateDashboardCard = ({
// eslint-disable-next-line react/jsx-indent
- openInNewTab("https://docs.gov.tools/support/get-help-in-discord");
+ openInNewTab("https://docs.gov.tools/support/");
return (
{
setStep(2);
@@ -43,7 +40,7 @@ export const EditDRepForm = ({
useEffect(() => {
if (loadUserData) {
- const data: DRepData = state ?? yourselfDRepList?.[0];
+ const data: DRepData = state ?? yourselfDRep;
const groupedReferences = data?.references?.reduce<
Record
>((acc, reference) => {
@@ -66,7 +63,7 @@ export const EditDRepForm = ({
],
});
}
- }, [yourselfDRepList?.[0], loadUserData]);
+ }, [yourselfDRep, loadUserData]);
return (
diff --git a/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx b/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx
index 1102b8b72..8739557ea 100644
--- a/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx
+++ b/govtool/frontend/src/components/organisms/EditDRepInfoSteps/EditDRepStorageInformation.tsx
@@ -33,7 +33,7 @@ export const EditDRepStorageInformation = ({
} = useEditDRepInfoForm(setStep);
const { screenWidth } = useScreenDimension();
- const fileName = getValues("givenName").replace(/\s/g, "");
+ const fileName = getValues("givenName");
const openGuideAboutStoringInformation = () =>
openInNewTab(
"https://docs.gov.tools/using-govtool/govtool-functions/storing-information-offline",
diff --git a/govtool/frontend/src/components/organisms/Footer.tsx b/govtool/frontend/src/components/organisms/Footer.tsx
index d758cbd0f..942ec70bb 100644
--- a/govtool/frontend/src/components/organisms/Footer.tsx
+++ b/govtool/frontend/src/components/organisms/Footer.tsx
@@ -35,13 +35,13 @@ export const Footer = () => {
const { openFeedbackWindow } = useUsersnapApi();
const onClickHelp = () =>
- openInNewTab("https://docs.gov.tools/support/get-help-in-discord");
+ openInNewTab("https://docs.gov.tools/support");
const onClickPrivacyPolicy = () =>
- openInNewTab("https://docs.gov.tools/legal/privacy-policy");
+ openInNewTab("https://docs.intersectmbo.org/legal/policies-and-conditions/privacy-policy");
const onClickTermOfService = () =>
- openInNewTab("https://docs.gov.tools/legal/terms-and-conditions");
+ openInNewTab("https://docs.intersectmbo.org/legal/policies-and-conditions/terms-of-use");
const onClickFeedback = () => openFeedbackWindow();
diff --git a/govtool/frontend/src/components/organisms/GovernanceActionDetailsCard.tsx b/govtool/frontend/src/components/organisms/GovernanceActionDetailsCard.tsx
index 48f3a5918..d4ba7bfee 100644
--- a/govtool/frontend/src/components/organisms/GovernanceActionDetailsCard.tsx
+++ b/govtool/frontend/src/components/organisms/GovernanceActionDetailsCard.tsx
@@ -5,9 +5,11 @@ import { useScreenDimension } from "@hooks";
import {
GovernanceActionCardStatePill,
GovernanceActionDetailsCardVotes,
+ Share,
} from "@molecules";
import { GovernanceActionDetailsCardData } from "@organisms";
import { MetadataValidationStatus, ProposalData, ProposalVote } from "@models";
+import { useLocation } from "react-router-dom";
type GovernanceActionDetailsCardProps = {
isDashboard?: boolean;
@@ -29,7 +31,14 @@ export const GovernanceActionDetailsCard = ({
const [isVoteSubmitted, setIsVoteSubmitted] = useState(false);
const { screenWidth, isMobile } = useScreenDimension();
- const isOneColumn = (isDashboard && screenWidth < 1036) ?? isMobile;
+ const isOneColumn = (isDashboard && screenWidth < 1645) ?? isMobile;
+ const { pathname, hash } = useLocation();
+
+ const govActionLinkToShare = `${window.location.protocol}//${
+ window.location.hostname
+ }${window.location.port ? `:${window.location.port}` : ""}${pathname}${
+ hash ?? ""
+ }`;
return (
+
+
+
);
};
diff --git a/govtool/frontend/src/components/organisms/GovernanceActionDetailsCardData.tsx b/govtool/frontend/src/components/organisms/GovernanceActionDetailsCardData.tsx
index 0a42e0be5..a1d97ec1b 100644
--- a/govtool/frontend/src/components/organisms/GovernanceActionDetailsCardData.tsx
+++ b/govtool/frontend/src/components/organisms/GovernanceActionDetailsCardData.tsx
@@ -1,6 +1,5 @@
import { useMemo, useState } from "react";
import { Box, Tabs, Tab, styled } from "@mui/material";
-import { useLocation } from "react-router-dom";
import { CopyButton, ExternalModalButton, Typography } from "@atoms";
import {
@@ -10,17 +9,24 @@ import {
DataMissingHeader,
GovernanceActionsDatesBox,
GovernanceActionDetailsDiffView,
+ GovernanceActionNewCommitteeDetailsTabContent,
} from "@molecules";
import { useScreenDimension, useTranslation } from "@hooks";
import {
getProposalTypeNoEmptySpaces,
- testIdFromLabel,
getProposalTypeLabel,
filterUpdatableProtocolParams,
filterOutNullParams,
getFullGovActionId,
+ mapArrayToObjectByKeys,
+ encodeCIP129Identifier,
+ testIdFromLabel,
} from "@utils";
-import { MetadataValidationStatus, ProposalData } from "@models";
+import {
+ MetadataValidationStatus,
+ NewConstitutionAnchor,
+ ProposalData,
+} from "@models";
import { GovernanceActionType } from "@/types/governanceAction";
import { useAppContext } from "@/context";
@@ -92,20 +98,34 @@ export const GovernanceActionDetailsCardData = ({
const { screenWidth } = useScreenDimension();
const { isMobile } = useScreenDimension();
- const updatableProtocolParams = useMemo(
+ const mappedArraysToObjectsProtocolParams = useMemo(
() =>
- filterUpdatableProtocolParams(epochParams, protocolParams, [
- "id",
- "registered_tx_id",
- "key",
+ mapArrayToObjectByKeys(protocolParams, [
+ "PlutusV1",
+ "PlutusV2",
+ "PlutusV3",
]),
- [epochParams, protocolParams],
+ [protocolParams],
+ );
+
+ const updatableProtocolParams = useMemo(
+ () =>
+ filterUpdatableProtocolParams(
+ epochParams,
+ mappedArraysToObjectsProtocolParams,
+ ["id", "registered_tx_id", "key"],
+ ),
+ [epochParams, mappedArraysToObjectsProtocolParams],
);
const nonNullProtocolParams = useMemo(
() =>
- filterOutNullParams(protocolParams, ["id", "registered_tx_id", "key"]),
- [updatableProtocolParams, protocolParams],
+ filterOutNullParams(mappedArraysToObjectsProtocolParams, [
+ "id",
+ "registered_tx_id",
+ "key",
+ ]),
+ [updatableProtocolParams, mappedArraysToObjectsProtocolParams],
);
const isModifiedPadding =
@@ -113,20 +133,17 @@ export const GovernanceActionDetailsCardData = ({
const [selectedTab, setSelectedTab] = useState(0);
- const { pathname, hash } = useLocation();
-
- const govActionLinkToShare = `${window.location.protocol}//${
- window.location.hostname
- }${window.location.port ? `:${window.location.port}` : ""}${pathname}${
- hash ?? ""
- }`;
-
const handleChange = (_event: React.SyntheticEvent, newValue: number) => {
setSelectedTab(newValue);
};
const label = getProposalTypeLabel(type);
const govActionId = getFullGovActionId(txHash, index);
+ const cip129GovernanceActionId = encodeCIP129Identifier({
+ txID: txHash,
+ index: index.toString(16).padStart(2, "0"),
+ bech32Prefix: "gov_action",
+ });
const prevGovActionId =
prevGovActionIndex && prevGovActionTxHash
? getFullGovActionId(prevGovActionTxHash, prevGovActionIndex)
@@ -158,7 +175,8 @@ export const GovernanceActionDetailsCardData = ({
/>
),
visible:
- type === GovernanceActionType.ParameterChange &&
+ (type === GovernanceActionType.ParameterChange ||
+ type === GovernanceActionType.NewConstitution) &&
!!protocolParams &&
!!epochParams,
},
@@ -174,6 +192,14 @@ export const GovernanceActionDetailsCardData = ({
visible:
type === GovernanceActionType.HardForkInitiation && !!details,
},
+ {
+ label: "Parameters",
+ dataTestId: "parameters-tab",
+ content: (
+
+ ),
+ visible: type === GovernanceActionType.NewCommittee && !!details,
+ },
].filter((tab) => tab.visible),
[
abstract,
@@ -195,11 +221,7 @@ export const GovernanceActionDetailsCardData = ({
overflow: "hidden",
}}
>
-
+
1600 ? "longText" : "oneLine"}
+ />
+ 1600 ? "longText" : "oneLine"}
/>
{tabs.length === 1 ? (
@@ -269,16 +299,36 @@ export const GovernanceActionDetailsCardData = ({
)}
{details &&
- type !== GovernanceActionType.HardForkInitiation &&
+ type === GovernanceActionType.TreasuryWithdrawals &&
Object.keys(details).length !== 0 &&
Object.entries(details).map(([detailLabel, content]) => (
))}
+ {details?.anchor && type === GovernanceActionType.NewConstitution && (
+ <>
+ 1600 ? "longText" : "oneLine"}
+ />
+ 1600 ? "longText" : "oneLine"}
+ />
+ >
+ )}
);
diff --git a/govtool/frontend/src/components/organisms/GovernanceActionsToVote.tsx b/govtool/frontend/src/components/organisms/GovernanceActionsToVote.tsx
index 2d49e77eb..28777ba85 100644
--- a/govtool/frontend/src/components/organisms/GovernanceActionsToVote.tsx
+++ b/govtool/frontend/src/components/organisms/GovernanceActionsToVote.tsx
@@ -27,7 +27,7 @@ export const GovernanceActionsToVote = ({
}: GovernanceActionsToVoteProps) => {
const { pendingTransaction } = useCardano();
const navigate = useNavigate();
- const { isMobile } = useScreenDimension();
+ const { isMobile, pagePadding } = useScreenDimension();
const { t } = useTranslation();
return (
@@ -39,7 +39,15 @@ export const GovernanceActionsToVote = ({
) : (
<>
{proposals?.map((item, index) => (
-
+
(
{
const { isProposalDiscussionForumEnabled } = useFeatureFlag();
const navigate = useNavigate();
const { openModal } = useModal();
- const { screenWidth } = useScreenDimension();
const { t } = useTranslation();
const openWalletModal = useCallback(
@@ -66,23 +65,8 @@ export const HomeCards = () => {
{/* DELEGATE CARD */}
diff --git a/govtool/frontend/src/components/organisms/Modal/SubmittedVotesModal.tsx b/govtool/frontend/src/components/organisms/Modal/SubmittedVotesModal.tsx
new file mode 100644
index 000000000..1f3f7b6f5
--- /dev/null
+++ b/govtool/frontend/src/components/organisms/Modal/SubmittedVotesModal.tsx
@@ -0,0 +1,31 @@
+import { forwardRef } from "react";
+import { Box } from "@mui/material";
+
+import { ModalContents, ModalWrapper } from "@atoms";
+import { useModal } from "@context";
+import { SubmittedVotesData } from "@/models";
+import { VotesSubmitted } from "@/components/molecules";
+
+export interface SubmittedVotesModalState extends SubmittedVotesData {
+ vote?: string;
+}
+
+export const SubmittedVotesModal = forwardRef((_, ref) => {
+ const { state } = useModal();
+
+ if (!state) return null;
+
+ return (
+
+
+
+
+
+
+
+ );
+});
diff --git a/govtool/frontend/src/components/organisms/Modal/VotingPowerModal.tsx b/govtool/frontend/src/components/organisms/Modal/VotingPowerModal.tsx
deleted file mode 100644
index 524f9bda4..000000000
--- a/govtool/frontend/src/components/organisms/Modal/VotingPowerModal.tsx
+++ /dev/null
@@ -1,99 +0,0 @@
-import { forwardRef } from "react";
-import { Box } from "@mui/material";
-
-import { ModalContents, ModalWrapper, Typography, VotePill } from "@atoms";
-import { useModal } from "@context";
-import { correctAdaFormat } from "@utils";
-import { useScreenDimension, useTranslation } from "@hooks";
-import { Vote } from "@/models";
-
-export interface VotingPowerModalState {
- yesVotes: number;
- noVotes: number;
- abstainVotes: number;
- vote?: string;
-}
-
-export const VotingPowerModal = forwardRef((_, ref) => {
- const { state } = useModal();
- const { isMobile } = useScreenDimension();
- const { t } = useTranslation();
-
- const VOTES = [
- { title: "yes", vote: state?.yesVotes },
- { title: "abstain", vote: state?.abstainVotes },
- { title: "no", vote: state?.noVotes },
- ];
-
- return (
-
-
-
-
- {t("modals.votingPower.govActionsVotes")}
-
-
- {t("modals.votingPower.votesSubmittedByDReps")}
-
- {VOTES.map((vote, index) => (
-
- {state?.vote?.toLocaleLowerCase() === vote.title ? (
-
- {t("modals.votingPower.yourVote")}
-
- ) : null}
-
-
- ₳ {correctAdaFormat(vote.vote)}
-
-
- ))}
-
-
-
- );
-});
diff --git a/govtool/frontend/src/components/organisms/Modal/index.ts b/govtool/frontend/src/components/organisms/Modal/index.ts
index 8f342f95d..4eb9eb8ce 100644
--- a/govtool/frontend/src/components/organisms/Modal/index.ts
+++ b/govtool/frontend/src/components/organisms/Modal/index.ts
@@ -2,4 +2,4 @@ export * from "./ChooseWalletModal";
export * from "./ExternalLinkModal";
export * from "./LoadingModal";
export * from "./StatusModal";
-export * from "./VotingPowerModal";
+export * from "./SubmittedVotesModal";
diff --git a/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/DRepStorageInformation.tsx b/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/DRepStorageInformation.tsx
index 0e7557513..c36e73667 100644
--- a/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/DRepStorageInformation.tsx
+++ b/govtool/frontend/src/components/organisms/RegisterAsDRepSteps/DRepStorageInformation.tsx
@@ -33,7 +33,7 @@ export const DRepStorageInformation = ({
} = useRegisterAsdRepForm(setStep);
const { screenWidth } = useScreenDimension();
- const fileName = getValues("givenName").replace(/\s/g, "");
+ const fileName = getValues("givenName");
const openGuideAboutStoringInformation = () =>
openInNewTab(
diff --git a/govtool/frontend/src/components/organisms/TopBanners.tsx b/govtool/frontend/src/components/organisms/TopBanners.tsx
index c63f68bf5..332a2c440 100644
--- a/govtool/frontend/src/components/organisms/TopBanners.tsx
+++ b/govtool/frontend/src/components/organisms/TopBanners.tsx
@@ -1,9 +1,15 @@
import { Box, Link, Typography } from "@mui/material";
-import { Trans } from "react-i18next";
+import { Trans, useTranslation } from "react-i18next";
import { useAppContext } from "@/context";
export const TopBanners = () => {
- const { isMainnet, networkName, isInBootstrapPhase } = useAppContext();
+ const { isMainnet, networkName, isInBootstrapPhase, isAppInitializing } =
+ useAppContext();
+ const { t } = useTranslation();
+
+ if (isAppInitializing) {
+ return null;
+ }
return (
@@ -14,13 +20,26 @@ export const TopBanners = () => {
backgroundColor: "#BBE3F0",
px: 2,
py: 0.5,
- textAlign: "center",
+ display: "flex",
+ justifyContent: "center",
+ gap: 1,
}}
data-testid="system-network-name"
>
- {networkName}
+ {`${t("network")}: ${networkName}`}
+
+
+ |
+
+ {t("goToMainnet")}
+
)}
diff --git a/govtool/frontend/src/components/organisms/UsefulLinks.tsx b/govtool/frontend/src/components/organisms/UsefulLinks.tsx
new file mode 100644
index 000000000..90bc1a740
--- /dev/null
+++ b/govtool/frontend/src/components/organisms/UsefulLinks.tsx
@@ -0,0 +1,91 @@
+import { Box, Link } from "@mui/material";
+
+import { useTranslation } from "@hooks";
+import { Typography } from "../atoms";
+import { ICONS } from "@/consts";
+import { Card } from "../molecules";
+
+const LINKS = {
+ ccPortal: {
+ url: "https://constitution.gov.tools",
+ },
+ intersectWebsite: {
+ url: "https://www.intersectmbo.org/",
+ },
+} as const;
+
+type Props = {
+ align?: "left" | "center";
+};
+
+export const UsefulLinks = ({ align = "left" }: Props) => {
+ const { t } = useTranslation();
+
+ return (
+
+
+ {t("usefulLinks.title")}
+
+
+ {Object.entries(LINKS).map(([key, { url }]) => (
+
+
+ {t(`usefulLinks.${key as keyof typeof LINKS}.title`)}
+
+
+ {t(`usefulLinks.${key as keyof typeof LINKS}.description`)}
+
+
+
+ {t(`usefulLinks.${key as keyof typeof LINKS}.link`)}
+
+
+
+
+ ))}
+
+
+ );
+};
diff --git a/govtool/frontend/src/components/organisms/VoteContext/VoteContextModal.tsx b/govtool/frontend/src/components/organisms/VoteContext/VoteContextModal.tsx
index 9694d7d3d..4ceca049a 100644
--- a/govtool/frontend/src/components/organisms/VoteContext/VoteContextModal.tsx
+++ b/govtool/frontend/src/components/organisms/VoteContext/VoteContextModal.tsx
@@ -11,7 +11,7 @@ import {
} from "@organisms";
import { VoteContextFormValues } from "@hooks";
-type VoteContextModalState = {
+export type VoteContextModalState = {
onSubmit: (url: string, hash: string | null, voteContextText: string) => void;
};
diff --git a/govtool/frontend/src/consts/dRepActions/fields.ts b/govtool/frontend/src/consts/dRepActions/fields.ts
index 430cf2668..7054ce326 100644
--- a/govtool/frontend/src/consts/dRepActions/fields.ts
+++ b/govtool/frontend/src/consts/dRepActions/fields.ts
@@ -13,10 +13,6 @@ export const Rules = {
maxLength: 80,
}),
},
- pattern: {
- value: /^[^\s]+$/,
- message: i18n.t("registration.fields.validations.noSpaces"),
- },
},
LINK_DESCRIPTION: {
maxLength: {
diff --git a/govtool/frontend/src/consts/dRepActions/jsonContext.ts b/govtool/frontend/src/consts/dRepActions/jsonContext.ts
index 5b7886211..a077f153e 100644
--- a/govtool/frontend/src/consts/dRepActions/jsonContext.ts
+++ b/govtool/frontend/src/consts/dRepActions/jsonContext.ts
@@ -2,6 +2,7 @@ export const CIP_119 =
"https://github.com/cardano-foundation/CIPs/blob/master/CIP-0119/README.md#";
export const DREP_CONTEXT = {
+ "@language": "en-us",
CIP100:
"https://github.com/cardano-foundation/CIPs/blob/master/CIP-0100/README.md#",
CIP119: CIP_119,
diff --git a/govtool/frontend/src/consts/dRepDirectory/sorting.ts b/govtool/frontend/src/consts/dRepDirectory/sorting.ts
index 9604e9c61..0e6c4d016 100644
--- a/govtool/frontend/src/consts/dRepDirectory/sorting.ts
+++ b/govtool/frontend/src/consts/dRepDirectory/sorting.ts
@@ -1,4 +1,8 @@
export const DREP_DIRECTORY_SORTING = [
+ {
+ key: "Random",
+ label: "Random",
+ },
{
key: "RegistrationDate",
label: "Registration date",
diff --git a/govtool/frontend/src/consts/index.ts b/govtool/frontend/src/consts/index.ts
index 7d48cede4..738ccc2ac 100644
--- a/govtool/frontend/src/consts/index.ts
+++ b/govtool/frontend/src/consts/index.ts
@@ -25,5 +25,74 @@ export const CEXPLORER_BASE_URLS = {
mainnet: "https://cexplorer.io",
};
-export const GUARDRAIL_SCRIPT =
- "59082f59082c0101003232323232323232323232323232323232323232323232323232323232323232323232323232323232323225932325333573466e1d2000001180098121bab357426ae88d55cf001054ccd5cd19b874801000460042c6aae74004dd51aba1357446ae88d55cf1baa325333573466e1d200a35573a00226ae84d5d11aab9e0011637546ae84d5d11aba235573c6ea800642b26006003149a2c8a4c3021801c0052000c00e0070018016006901e40608058c00e00290016007003800c00b0034830268320306007001800600690406d6204e00060001801c0052004c00e007001801600690404001e0006007001800600690404007e00060001801c0052006c00e006023801c006001801a4101000980018000600700148023003801808e0070018006006904827600060001801c005200ac00e0070018016006904044bd4060c00e003000c00d2080ade204c000c0003003800a4019801c00e003002c00d2080cab5ee0180c100d1801c005200ec00e0060238000c00e00290086007003800c00b003483d00e0306007001800600690500fe00040243003800a4025803c00c01a0103003800a4029803c00e003002c00cc07520d00f8079801c006001801980ea4120078001800060070014805b00780180360070018006006603e900a4038c0003003800a4041801c00c04601a3003800a4045801c00e003002c00d20f02e80c1801c006001801a4190cb80010090c00e00290126000c00e0029013600b003803c00e003002c00cc0752032c000c00e003000c00cc075200ac000c0006007007801c006005801980ea418170058001801c006001801980ea41209d80018000c0003003800a4051802c00e007003011c00e003000c00d2080e89226c000c0006007003801808e007001800600690406c4770b7e000600030000c00e0029015600b003801c00c047003800c00300348202e2e1cb00030001801c00e006023801c006001801a410181f905540580018000c0003003800a4059801c00c047003800c00300348203000700030000c00e00290176007003800c00b003483200603060070018006006904801e00040243003800a4061801c00c0430001801c0052032c016006003801801e00600780180140100c00e002901a600b003001c00c00f003003c00c00f003002c00c007003001c00c007003803c00e003002c00c0560184014802000c00e002901b6007003800c00b003480030034801b0001801c006001801a4029800180006007001480e3003801c006005801a4001801a40498000c00e003000c00d20ca04c00080486007001480eb00380180860070018006006900f600060001801c005203cc00e006015801c006001801a4101012bcf138c09800180006007001480fb003801805600700180060069040505bc3f482e00060001801c0052040c00e0070018016006900d4060c00e003000c00d204ac000c0003003800a4085801c00c04601630000000000200f003006c00e003000c00c05a0166000200f003005c00e003000c00c057003010c0006000200f003800c00b003012c00cc05d2028c0004008801c01e007001801600602380010043000400e003000c00c04b003011c0006000800c00b00300d8049001801600601d801980924190038000801c0060010066000801c00600900f6000800c00b003480030034820225eb0001003800c003003483403f0003000400c023000400e003000c00d208094ebdc03c000c001003009c001003300f4800b0004006005801a40058001001801401c6014900518052402860169004180424008600a900a180324005003480030001806240cc6016900d18052402460129004180424004600e900018032400c6014446666aae7c004a0005003328009aab9d0019aab9e0011aba100298019aba200224c6012444a6520071300149a4432005225900689802a4d2219002912c998099bad0020068ac99807002800c4cc03001c00e300244cc03001c02a3002012c801460012218010c00888004c004880094cc8c0040048848c8cc0088c00888c00800c8c00888c00400c8d4cc01001000cd400c0044888cc00c896400a300090999804c00488ccd5cd19b87002001800400a01522333573466e2000800600100291199ab9a33712004003000801488ccd5cd19b89002001801400244666ae68cdc4001000c00a001225333573466e240080044004400a44a666ae68cdc4801000880108008004dd6801484cc010004dd6001484c8ccc02a002452005229003912999ab9a3370e0080042666ae68cdc3801800c00200430022452005229003911980899b820040013370400400648a400a45200722333573466e20cdc100200099b82002003800400880648a400a45200722333573466e24cdc100200099b82002003801400091480148a400e44666ae68cdc419b8200400133704004007002800122593300e0020018800c400922593300e00200188014400400233323357346ae8cd5d10009198051bad357420066eb4d5d08011aba2001268001bac00214800c8ccd5cd1aba3001800400a444b26600c0066ae8400626600a0046ae8800630020c0148894ccd5cd19b87480000045854ccd5cd19b88001480004cc00ccdc0a400000466e05200000113280099b8400300199b840020011980200100098021112999ab9a3370e9000000880109980180099b860020012223300622590018c002443200522323300d225900189804803488564cc0140080322600800318010004b20051900991111111001a3201322222222005448964ce402e444444440100020018c00a30000002225333573466e1c00800460002a666ae68cdc48010008c010600445200522900391199ab9a3371266e08010004cdc1001001c0020041191800800918011198010010009";
+export const COMPILED_GUARDRAIL_SCRIPTS = {
+ sanchonet:
+ "59082f59082c0101003232323232323232323232323232323232323232323232323232323232323232323232323232323232323225932325333573466e1d2000001180098121bab357426ae88d55cf001054ccd5cd19b874801000460042c6aae74004dd51aba1357446ae88d55cf1baa325333573466e1d200a35573a00226ae84d5d11aab9e0011637546ae84d5d11aba235573c6ea800642b26006003149a2c8a4c3021801c0052000c00e0070018016006901e40608058c00e00290016007003800c00b0034830268320306007001800600690406d6204e00060001801c0052004c00e007001801600690404001e0006007001800600690404007e00060001801c0052006c00e006023801c006001801a4101000980018000600700148023003801808e0070018006006904827600060001801c005200ac00e0070018016006904044bd4060c00e003000c00d2080ade204c000c0003003800a4019801c00e003002c00d2080cab5ee0180c100d1801c005200ec00e0060238000c00e00290086007003800c00b003483d00e0306007001800600690500fe00040243003800a4025803c00c01a0103003800a4029803c00e003002c00cc07520d00f8079801c006001801980ea4120078001800060070014805b00780180360070018006006603e900a4038c0003003800a4041801c00c04601a3003800a4045801c00e003002c00d20f02e80c1801c006001801a4190cb80010090c00e00290126000c00e0029013600b003803c00e003002c00cc0752032c000c00e003000c00cc075200ac000c0006007007801c006005801980ea418170058001801c006001801980ea41209d80018000c0003003800a4051802c00e007003011c00e003000c00d2080e89226c000c0006007003801808e007001800600690406c4770b7e000600030000c00e0029015600b003801c00c047003800c00300348202e2e1cb00030001801c00e006023801c006001801a410181f905540580018000c0003003800a4059801c00c047003800c00300348203000700030000c00e00290176007003800c00b003483200603060070018006006904801e00040243003800a4061801c00c0430001801c0052032c016006003801801e00600780180140100c00e002901a600b003001c00c00f003003c00c00f003002c00c007003001c00c007003803c00e003002c00c0560184014802000c00e002901b6007003800c00b003480030034801b0001801c006001801a4029800180006007001480e3003801c006005801a4001801a40498000c00e003000c00d20ca04c00080486007001480eb00380180860070018006006900f600060001801c005203cc00e006015801c006001801a4101012bcf138c09800180006007001480fb003801805600700180060069040505bc3f482e00060001801c0052040c00e0070018016006900d4060c00e003000c00d204ac000c0003003800a4085801c00c04601630000000000200f003006c00e003000c00c05a0166000200f003005c00e003000c00c057003010c0006000200f003800c00b003012c00cc05d2028c0004008801c01e007001801600602380010043000400e003000c00c04b003011c0006000800c00b00300d8049001801600601d801980924190038000801c0060010066000801c00600900f6000800c00b003480030034820225eb0001003800c003003483403f0003000400c023000400e003000c00d208094ebdc03c000c001003009c001003300f4800b0004006005801a40058001001801401c6014900518052402860169004180424008600a900a180324005003480030001806240cc6016900d18052402460129004180424004600e900018032400c6014446666aae7c004a0005003328009aab9d0019aab9e0011aba100298019aba200224c6012444a6520071300149a4432005225900689802a4d2219002912c998099bad0020068ac99807002800c4cc03001c00e300244cc03001c02a3002012c801460012218010c00888004c004880094cc8c0040048848c8cc0088c00888c00800c8c00888c00400c8d4cc01001000cd400c0044888cc00c896400a300090999804c00488ccd5cd19b87002001800400a01522333573466e2000800600100291199ab9a33712004003000801488ccd5cd19b89002001801400244666ae68cdc4001000c00a001225333573466e240080044004400a44a666ae68cdc4801000880108008004dd6801484cc010004dd6001484c8ccc02a002452005229003912999ab9a3370e0080042666ae68cdc3801800c00200430022452005229003911980899b820040013370400400648a400a45200722333573466e20cdc100200099b82002003800400880648a400a45200722333573466e24cdc100200099b82002003801400091480148a400e44666ae68cdc419b8200400133704004007002800122593300e0020018800c400922593300e00200188014400400233323357346ae8cd5d10009198051bad357420066eb4d5d08011aba2001268001bac00214800c8ccd5cd1aba3001800400a444b26600c0066ae8400626600a0046ae8800630020c0148894ccd5cd19b87480000045854ccd5cd19b88001480004cc00ccdc0a400000466e05200000113280099b8400300199b840020011980200100098021112999ab9a3370e9000000880109980180099b860020012223300622590018c002443200522323300d225900189804803488564cc0140080322600800318010004b20051900991111111001a3201322222222005448964ce402e444444440100020018c00a30000002225333573466e1c00800460002a666ae68cdc48010008c010600445200522900391199ab9a3371266e08010004cdc1001001c0020041191800800918011198010010009",
+ preview:
+ "5908545908510101003232323232323232323232323232323232323232323232323232323232323232323232323232323232259323255333573466e1d20000011180098111bab357426ae88d55cf00104554ccd5cd19b87480100044600422c6aae74004dd51aba1357446ae88d55cf1baa3255333573466e1d200a35573a002226ae84d5d11aab9e00111637546ae84d5d11aba235573c6ea800642b26006003149a2c8a4c301f801c0052000c00e0070018016006901e4070c00e003000c00d20d00fc000c0003003800a4005801c00e003002c00d20c09a0c80e1801c006001801a4101b5881380018000600700148013003801c006005801a410100078001801c006001801a4101001f8001800060070014801b0038018096007001800600690404002600060001801c0052008c00e006025801c006001801a41209d8001800060070014802b003801c006005801a410112f501c3003800c00300348202b7881300030000c00e00290066007003800c00b003482032ad7b806038403060070014803b00380180960003003800a4021801c00e003002c00d20f40380e1801c006001801a41403f800100a0c00e0029009600f0030078040c00e002900a600f003800c00b003301a483403e01a600700180060066034904801e00060001801c0052016c01e00600f801c006001801980c2402900e30000c00e002901060070030128060c00e00290116007003800c00b003483c0ba03860070018006006906432e00040283003800a40498003003800a404d802c00e00f003800c00b003301a480cb0003003800c003003301a4802b00030001801c01e0070018016006603490605c0160006007001800600660349048276000600030000c00e0029014600b003801c00c04b003800c00300348203a2489b00030001801c00e006025801c006001801a4101b11dc2df80018000c0003003800a4055802c00e007003012c00e003000c00d2080b8b872c000c0006007003801809600700180060069040607e4155016000600030000c00e00290166007003012c00e003000c00d2080c001c000c0003003800a405d801c00e003002c00d20c80180e1801c006001801a412007800100a0c00e00290186007003013c0006007001480cb005801801e006003801800e00600500403003800a4069802c00c00f003001c00c007003803c00e003002c00c05300333023480692028c0004014c00c00b003003c00c00f003003c00e00f003800c00b00301480590052008003003800a406d801c00e003002c00d2000c00d2006c00060070018006006900a600060001801c0052038c00e007001801600690006006901260003003800c003003483281300020141801c005203ac00e006027801c006001801a403d800180006007001480f3003801804e00700180060069040404af3c4e302600060001801c005203ec00e006013801c006001801a4101416f0fd20b80018000600700148103003801c006005801a403501c3003800c0030034812b00030000c00e0029021600f003800c00a01ac00e003000c00ccc08d20d00f4800b00030000c0000000000803c00c016008401e006009801c006001801807e0060298000c000401e006007801c0060018018074020c000400e00f003800c00b003010c000802180020070018006006019801805e0003000400600580180760060138000800c00b00330134805200c400e00300080330004006005801a4001801a410112f58000801c00600901260008019806a40118002007001800600690404a75ee01e00060008018046000801801e000300c4832004c025201430094800a0030028052003002c00d2002c000300648010c0092002300748028c0312000300b48018c0292012300948008c0212066801a40018000c0192008300a2233335573e00250002801994004d55ce800cd55cf0008d5d08014c00cd5d10011263009222532900389800a4d2219002912c80344c01526910c80148964cc04cdd68010034564cc03801400626601800e0071801226601800e01518010096400a3000910c008600444002600244004a664600200244246466004460044460040064600444600200646a660080080066a00600224446600644b20051800484ccc02600244666ae68cdc3801000c00200500a91199ab9a33710004003000801488ccd5cd19b89002001800400a44666ae68cdc4801000c00a00122333573466e20008006005000912a999ab9a3371200400222002220052255333573466e2400800444008440040026eb400a42660080026eb000a4264666015001229002914801c8954ccd5cd19b8700400211333573466e1c00c006001002118011229002914801c88cc044cdc100200099b82002003245200522900391199ab9a3371066e08010004cdc1001001c002004403245200522900391199ab9a3371266e08010004cdc1001001c00a00048a400a45200722333573466e20cdc100200099b820020038014000912c99807001000c40062004912c99807001000c400a2002001199919ab9a357466ae880048cc028dd69aba1003375a6ae84008d5d1000934000dd60010a40064666ae68d5d1800c0020052225933006003357420031330050023574400318010600a444aa666ae68cdc3a400000222c22aa666ae68cdc4000a4000226600666e05200000233702900000088994004cdc2001800ccdc20010008cc010008004c01088954ccd5cd19b87480000044400844cc00c004cdc300100091119803112c800c60012219002911919806912c800c4c02401a442b26600a004019130040018c008002590028c804c8888888800d1900991111111002a244b267201722222222008001000c600518000001112a999ab9a3370e004002230001155333573466e240080044600823002229002914801c88ccd5cd19b893370400800266e0800800e00100208c8c0040048c0088cc008008005",
+ mainnet:
+ "5908545908510101003232323232323232323232323232323232323232323232323232323232323232323232323232323232259323255333573466e1d20000011180098111bab357426ae88d55cf00104554ccd5cd19b87480100044600422c6aae74004dd51aba1357446ae88d55cf1baa3255333573466e1d200a35573a002226ae84d5d11aab9e00111637546ae84d5d11aba235573c6ea800642b26006003149a2c8a4c301f801c0052000c00e0070018016006901e4070c00e003000c00d20d00fc000c0003003800a4005801c00e003002c00d20c09a0c80e1801c006001801a4101b5881380018000600700148013003801c006005801a410100078001801c006001801a4101001f8001800060070014801b0038018096007001800600690404002600060001801c0052008c00e006025801c006001801a41209d8001800060070014802b003801c006005801a410112f501c3003800c00300348202b7881300030000c00e00290066007003800c00b003482032ad7b806038403060070014803b00380180960003003800a4021801c00e003002c00d20f40380e1801c006001801a41403f800100a0c00e0029009600f0030078040c00e002900a600f003800c00b003301a483403e01a600700180060066034904801e00060001801c0052016c01e00600f801c006001801980c2402900e30000c00e002901060070030128060c00e00290116007003800c00b003483c0ba03860070018006006906432e00040283003800a40498003003800a404d802c00e00f003800c00b003301a480cb0003003800c003003301a4802b00030001801c01e0070018016006603490605c0160006007001800600660349048276000600030000c00e0029014600b003801c00c04b003800c00300348203a2489b00030001801c00e006025801c006001801a4101b11dc2df80018000c0003003800a4055802c00e007003012c00e003000c00d2080b8b872c000c0006007003801809600700180060069040607e4155016000600030000c00e00290166007003012c00e003000c00d2080c001c000c0003003800a405d801c00e003002c00d20c80180e1801c006001801a412007800100a0c00e00290186007003013c0006007001480cb005801801e006003801800e00600500403003800a4069802c00c00f003001c00c007003803c00e003002c00c05300333023480692028c0004014c00c00b003003c00c00f003003c00e00f003800c00b00301480590052008003003800a406d801c00e003002c00d2000c00d2006c00060070018006006900a600060001801c0052038c00e007001801600690006006901260003003800c003003483281300020141801c005203ac00e006027801c006001801a403d800180006007001480f3003801804e00700180060069040404af3c4e302600060001801c005203ec00e006013801c006001801a4101416f0fd20b80018000600700148103003801c006005801a403501c3003800c0030034812b00030000c00e0029021600f003800c00a01ac00e003000c00ccc08d20d00f4800b00030000c0000000000803c00c016008401e006009801c006001801807e0060298000c000401e006007801c0060018018074020c000400e00f003800c00b003010c000802180020070018006006019801805e0003000400600580180760060138000800c00b00330134805200c400e00300080330004006005801a4001801a410112f58000801c00600901260008019806a40118002007001800600690404a75ee01e00060008018046000801801e000300c4832004c025201430094800a0030028052003002c00d2002c000300648010c0092002300748028c0312000300b48018c0292012300948008c0212066801a40018000c0192008300a2233335573e00250002801994004d55ce800cd55cf0008d5d08014c00cd5d10011263009222532900389800a4d2219002912c80344c01526910c80148964cc04cdd68010034564cc03801400626601800e0071801226601800e01518010096400a3000910c008600444002600244004a664600200244246466004460044460040064600444600200646a660080080066a00600224446600644b20051800484ccc02600244666ae68cdc3801000c00200500a91199ab9a33710004003000801488ccd5cd19b89002001800400a44666ae68cdc4801000c00a00122333573466e20008006005000912a999ab9a3371200400222002220052255333573466e2400800444008440040026eb400a42660080026eb000a4264666015001229002914801c8954ccd5cd19b8700400211333573466e1c00c006001002118011229002914801c88cc044cdc100200099b82002003245200522900391199ab9a3371066e08010004cdc1001001c002004403245200522900391199ab9a3371266e08010004cdc1001001c00a00048a400a45200722333573466e20cdc100200099b820020038014000912c99807001000c40062004912c99807001000c400a2002001199919ab9a357466ae880048cc028dd69aba1003375a6ae84008d5d1000934000dd60010a40064666ae68d5d1800c0020052225933006003357420031330050023574400318010600a444aa666ae68cdc3a400000222c22aa666ae68cdc4000a4000226600666e05200000233702900000088994004cdc2001800ccdc20010008cc010008004c01088954ccd5cd19b87480000044400844cc00c004cdc300100091119803112c800c60012219002911919806912c800c4c02401a442b26600a004019130040018c008002590028c804c8888888800d1900991111111002a244b267201722222222008001000c600518000001112a999ab9a3370e004002230001155333573466e240080044600823002229002914801c88ccd5cd19b893370400800266e0800800e00100208c8c0040048c0088cc008008005",
+};
+
+export const SECURITY_RELEVANT_PARAMS_MAP: Record = {
+ maxBlockBodySize: "max_block_size",
+ maxTxSize: "max_tx_size",
+ maxBlockHeaderSize: "max_bh_size",
+ maxValueSize: "max_val_size",
+ maxBlockExecutionUnits: "max_block_ex_mem",
+ txFeePerByte: "min_fee_a",
+ txFeeFixed: "min_fee_b",
+ utxoCostPerByte: "coins_per_utxo_size",
+ govActionDeposit: "gov_action_deposit",
+ minFeeRefScriptCostPerByte: "min_fee_ref_script_cost_per_byte",
+};
+
+export const PPU_NETWORK_GROUP_PARAMS_KEYS = [
+ "max_block_size",
+ "max_tx_size",
+ "max_bh_size",
+ "max_val_size",
+ "max_tx_ex_mem",
+ "max_tx_ex_steps",
+ "max_block_ex_mem",
+ "max_block_ex_steps",
+ "max_collateral_inputs",
+];
+
+export const PPU_ECONOMIC_GROUP_PARAMS_KEYS = [
+ "min_fee_a",
+ "min_fee_b",
+ "min_fee_ref_script_cost_per_byte",
+ "pool_deposit",
+ "drep_deposit",
+ "key_deposit",
+ "monetary_expand_rate",
+ "min_pool_cost",
+ "treasury_growth_rate",
+];
+
+export const PPU_TECHNICAL_GROUP_PARAMS_KEYS = [
+ "influence",
+ "max_epoch",
+ "optimal_pool_count",
+ "cost_model_id",
+];
+
+export const PPU_GOVERNANCE_GROUP_PARAMS_KEYS = [
+ "dvt_committee_no_confidence",
+ "dvt_committee_normal",
+ "dvt_hard_fork_initiation",
+ "dvt_motion_no_confidence",
+ "dvt_p_p_economic_group",
+ "dvt_p_p_gov_group",
+ "dvt_p_p_network_group",
+ "dvt_p_p_technical_group",
+ "dvt_treasury_withdrawal",
+ "dvt_update_to_constitution",
+ "dvt_motion_no_confidence",
+ "gov_action_lifetime",
+ "gov_action_deposit",
+ "drep_activity",
+ "committeeMinSize",
+ "committeeMaxTermLength",
+];
diff --git a/govtool/frontend/src/context/appContext.tsx b/govtool/frontend/src/context/appContext.tsx
index 5463ed609..745750b34 100644
--- a/govtool/frontend/src/context/appContext.tsx
+++ b/govtool/frontend/src/context/appContext.tsx
@@ -23,6 +23,7 @@ type AppContextType = {
isAppInitializing: boolean;
isMainnet: boolean;
isInBootstrapPhase: boolean;
+ isFullGovernance: boolean;
networkName: string;
network: string;
cExplorerBaseUrl: string;
@@ -74,6 +75,7 @@ const AppContextProvider = ({ children }: PropsWithChildren) => {
isMainnet: networkMetrics?.networkName === "mainnet",
isInBootstrapPhase:
epochParams?.protocol_major === BOOTSTRAPPING_PHASE_MAJOR,
+ isFullGovernance: Number(epochParams?.protocol_major) >= 10,
networkName:
NETWORK_NAMES[
(networkMetrics?.networkName as keyof typeof NETWORK_NAMES) ||
diff --git a/govtool/frontend/src/context/dataActionsBar.tsx b/govtool/frontend/src/context/dataActionsBar.tsx
index eab02a6f6..e71cbd450 100644
--- a/govtool/frontend/src/context/dataActionsBar.tsx
+++ b/govtool/frontend/src/context/dataActionsBar.tsx
@@ -27,7 +27,6 @@ interface DataActionsBarContextType {
setFiltersOpen: Dispatch>;
setSearchText: Dispatch>;
setSortOpen: Dispatch>;
- sortingActive: boolean;
sortOpen: boolean;
}
@@ -76,7 +75,9 @@ const DataActionsBarProvider: FC = ({ children }) => {
useEffect(() => {
if (
- (userMovedToDifferentAppArea && !userOpenedGADetailsFromCategoryPage) ||
+ (!pathname.includes("drep_directory") &&
+ userMovedToDifferentAppArea &&
+ !userOpenedGADetailsFromCategoryPage) ||
userMovedFromGAListToCategoryPage
) {
resetState();
@@ -102,7 +103,6 @@ const DataActionsBarProvider: FC = ({ children }) => {
setFiltersOpen,
setSearchText,
setSortOpen,
- sortingActive: Boolean(chosenSorting),
sortOpen,
}),
[
diff --git a/govtool/frontend/src/context/featureFlag.test.tsx b/govtool/frontend/src/context/featureFlag.test.tsx
new file mode 100644
index 000000000..50af864be
--- /dev/null
+++ b/govtool/frontend/src/context/featureFlag.test.tsx
@@ -0,0 +1,250 @@
+import { describe, it, expect, vi, beforeEach } from "vitest";
+import { renderHook } from "@testing-library/react";
+import { FeatureFlagProvider, useFeatureFlag } from "./featureFlag";
+import { GovernanceActionType } from "@/types/governanceAction";
+import { useAppContext } from "./appContext";
+
+vi.mock("./appContext");
+
+const mockUseAppContext = useAppContext as jest.MockedFunction<
+ typeof useAppContext
+>;
+
+const mockUseAppContextReturnValue = {
+ cExplorerBaseUrl: "http://mock.cexplorer",
+ isAppInitializing: false,
+ isInBootstrapPhase: false,
+ isFullGovernance: true,
+ network: "preview",
+ networkName: "preview",
+ isMainnet: false,
+};
+
+describe("FeatureFlagProvider", () => {
+ beforeEach(() => {
+ vi.resetAllMocks();
+ mockUseAppContext.mockReturnValue(mockUseAppContextReturnValue);
+ });
+
+ it("should enable proposal discussion forum based on environment variable", () => {
+ import.meta.env.VITE_IS_PROPOSAL_DISCUSSION_FORUM_ENABLED = "true";
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(result.current.isProposalDiscussionForumEnabled).toBe(true);
+ });
+
+ it("should disable proposal discussion forum if environment variable is false", () => {
+ import.meta.env.VITE_IS_PROPOSAL_DISCUSSION_FORUM_ENABLED = "false";
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(result.current.isProposalDiscussionForumEnabled).toBe(false);
+ });
+
+ describe("isVotingOnGovernanceActionEnabled", () => {
+ it("should return true for InfoAction regardless of bootstrap phase", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: true,
+ isFullGovernance: false,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.isVotingOnGovernanceActionEnabled(
+ GovernanceActionType.InfoAction,
+ ),
+ ).toBe(true);
+ });
+
+ it("should return false for other actions in bootstrap phase", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: true,
+ isFullGovernance: false,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.isVotingOnGovernanceActionEnabled(
+ GovernanceActionType.ParameterChange,
+ ),
+ ).toBe(false);
+ });
+ });
+
+ describe("areDRepVoteTotalsDisplayed", () => {
+ it("should hide DRep vote totals for HardForkInitiation in bootstrap phase", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: true,
+ isFullGovernance: false,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areDRepVoteTotalsDisplayed(
+ GovernanceActionType.HardForkInitiation,
+ ),
+ ).toBe(false);
+ });
+
+ it("should display DRep vote totals for ParameterChange when isSecurityGroup is true in bootstrap phase", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: true,
+ isFullGovernance: false,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areDRepVoteTotalsDisplayed(
+ GovernanceActionType.ParameterChange,
+ true, // isSecurityGroup
+ ),
+ ).toBe(true);
+ });
+
+ it("should hide DRep vote totals for MotionNoConfidence in full governance", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: false,
+ isFullGovernance: true,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areDRepVoteTotalsDisplayed(
+ GovernanceActionType.NoConfidence,
+ ),
+ ).toBe(false);
+ });
+ });
+
+ describe("areSPOVoteTotalsDisplayed", () => {
+ it("should hide SPO vote totals for ParameterChange in bootstrap phase", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: true,
+ isFullGovernance: false,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areSPOVoteTotalsDisplayed(
+ GovernanceActionType.ParameterChange,
+ false,
+ ),
+ ).toBe(false);
+ });
+
+ it("should display SPO vote totals for ParameterChange when isSecurityGroup is true in bootstrap phase", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: true,
+ isFullGovernance: false,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areSPOVoteTotalsDisplayed(
+ GovernanceActionType.ParameterChange,
+ true,
+ ),
+ ).toBe(false);
+ });
+
+ it("should hide SPO vote totals for TreasuryWithdrawals in full governance", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: false,
+ isFullGovernance: true,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areSPOVoteTotalsDisplayed(
+ GovernanceActionType.TreasuryWithdrawals,
+ true,
+ ),
+ ).toBe(false);
+ });
+ });
+
+ describe("areCCVoteTotalsDisplayed", () => {
+ it("should hide CC vote totals for MotionNoConfidence in full governance", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: false,
+ isFullGovernance: true,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areCCVoteTotalsDisplayed(
+ GovernanceActionType.NoConfidence,
+ ),
+ ).toBe(false);
+ });
+
+ it("should show CC vote totals for other actions in bootstrap phase", () => {
+ mockUseAppContext.mockReturnValue({
+ ...mockUseAppContextReturnValue,
+ isAppInitializing: false,
+ isInBootstrapPhase: true,
+ isFullGovernance: false,
+ });
+
+ const { result } = renderHook(() => useFeatureFlag(), {
+ wrapper: FeatureFlagProvider,
+ });
+
+ expect(
+ result.current.areCCVoteTotalsDisplayed(
+ GovernanceActionType.HardForkInitiation,
+ ),
+ ).toBe(true);
+ });
+ });
+});
diff --git a/govtool/frontend/src/context/featureFlag.tsx b/govtool/frontend/src/context/featureFlag.tsx
index 8e972a356..d008f67f7 100644
--- a/govtool/frontend/src/context/featureFlag.tsx
+++ b/govtool/frontend/src/context/featureFlag.tsx
@@ -10,16 +10,6 @@ import { GovernanceActionType } from "@/types/governanceAction";
import { useAppContext } from "./appContext";
-const govActionVotingEnabledSinceProtocolVersion = {
- [GovernanceActionType.InfoAction]: 9,
- // TODO: Add minimum protocol versions for the following actions
- [GovernanceActionType.HardForkInitiation]: Number.MAX_SAFE_INTEGER,
- [GovernanceActionType.NewCommittee]: Number.MAX_SAFE_INTEGER,
- [GovernanceActionType.NewConstitution]: Number.MAX_SAFE_INTEGER,
- [GovernanceActionType.NoConfidence]: Number.MAX_SAFE_INTEGER,
- [GovernanceActionType.ParameterChange]: Number.MAX_SAFE_INTEGER,
- [GovernanceActionType.TreasuryWithdrawals]: Number.MAX_SAFE_INTEGER,
-};
/**
* The feature flag context type.
*/
@@ -28,11 +18,25 @@ type FeatureFlagContextType = {
isVotingOnGovernanceActionEnabled: (
governanceActionType: GovernanceActionType,
) => boolean;
+ areDRepVoteTotalsDisplayed: (
+ governanceActionType: GovernanceActionType,
+ isSecurityGroup?: boolean,
+ ) => boolean;
+ areSPOVoteTotalsDisplayed: (
+ governanceActionType: GovernanceActionType,
+ isSecurityGroup: boolean,
+ ) => boolean;
+ areCCVoteTotalsDisplayed: (
+ governanceActionType: GovernanceActionType,
+ ) => boolean;
};
const FeatureFlagContext = createContext({
isProposalDiscussionForumEnabled: false,
isVotingOnGovernanceActionEnabled: () => false,
+ areDRepVoteTotalsDisplayed: () => false,
+ areSPOVoteTotalsDisplayed: () => false,
+ areCCVoteTotalsDisplayed: () => false,
});
/**
@@ -41,7 +45,8 @@ const FeatureFlagContext = createContext({
* @param children - The child components to render.
*/
const FeatureFlagProvider = ({ children }: PropsWithChildren) => {
- const { epochParams, isAppInitializing } = useAppContext();
+ const { isAppInitializing, isInBootstrapPhase, isFullGovernance } =
+ useAppContext();
/**
* Determines if voting on a governance action is enabled based on the protocol version.
@@ -50,17 +55,89 @@ const FeatureFlagProvider = ({ children }: PropsWithChildren) => {
*/
const isVotingOnGovernanceActionEnabled = useCallback(
(governanceActionType: GovernanceActionType) =>
- (epochParams?.protocol_major || 0) >=
- govActionVotingEnabledSinceProtocolVersion[governanceActionType],
- [isAppInitializing],
+ governanceActionType === GovernanceActionType.InfoAction ||
+ !isInBootstrapPhase,
+ [isAppInitializing, isInBootstrapPhase],
);
+ /**
+ * Determines if DRep vote totals should be displayed based on governance action type and phase.
+ * @param governanceActionType - The type of governance action.
+ * @returns {boolean} Whether DRep vote totals are displayed.
+ */
+ const areDRepVoteTotalsDisplayed = useCallback(
+ (
+ governanceActionType: GovernanceActionType,
+ isSecurityGroup: boolean = false,
+ ) => {
+ if (isInBootstrapPhase) {
+ return !(
+ governanceActionType === GovernanceActionType.HardForkInitiation ||
+ (governanceActionType === GovernanceActionType.ParameterChange &&
+ !isSecurityGroup)
+ );
+ }
+ if (isFullGovernance) {
+ return ![
+ GovernanceActionType.NoConfidence,
+ GovernanceActionType.NewCommittee,
+ GovernanceActionType.NewConstitution,
+ ].includes(governanceActionType);
+ }
+ return true;
+ },
+ [isAppInitializing, isInBootstrapPhase, isFullGovernance],
+ );
+
+ /**
+ * Determines if SPO vote totals should be displayed based on governance action type and phase.
+ * @param governanceActionType - The type of governance action.
+ * @returns {boolean} Whether SPO vote totals are displayed.
+ */
+ const areSPOVoteTotalsDisplayed = useCallback(
+ (governanceActionType: GovernanceActionType, isSecurityGroup: boolean) => {
+ if (isInBootstrapPhase) {
+ return governanceActionType !== GovernanceActionType.ParameterChange;
+ }
+ if (isFullGovernance) {
+ return !(
+ governanceActionType === GovernanceActionType.NewConstitution ||
+ governanceActionType === GovernanceActionType.TreasuryWithdrawals ||
+ (governanceActionType === GovernanceActionType.ParameterChange &&
+ !isSecurityGroup)
+ );
+ }
+ return true;
+ },
+ [isAppInitializing, isInBootstrapPhase, isFullGovernance],
+ );
+
+ /**
+ * Determines if CC vote totals should be displayed based on governance action type and phase.
+ * @param governanceActionType - The type of governance action.
+ * @returns {boolean} Whether CC vote totals are displayed.
+ */
+ const areCCVoteTotalsDisplayed = useCallback(
+ (governanceActionType: GovernanceActionType) => {
+ if (isFullGovernance) {
+ return ![
+ GovernanceActionType.NoConfidence,
+ GovernanceActionType.NewCommittee,
+ ].includes(governanceActionType);
+ }
+ return true;
+ },
+ [isAppInitializing, isFullGovernance],
+ );
const value = useMemo(
() => ({
isProposalDiscussionForumEnabled:
import.meta.env.VITE_IS_PROPOSAL_DISCUSSION_FORUM_ENABLED === "true" ||
false,
isVotingOnGovernanceActionEnabled,
+ areDRepVoteTotalsDisplayed,
+ areSPOVoteTotalsDisplayed,
+ areCCVoteTotalsDisplayed,
}),
[isVotingOnGovernanceActionEnabled],
);
diff --git a/govtool/frontend/src/context/modal.tsx b/govtool/frontend/src/context/modal.tsx
index bedfb2515..df08ea98d 100644
--- a/govtool/frontend/src/context/modal.tsx
+++ b/govtool/frontend/src/context/modal.tsx
@@ -6,7 +6,7 @@ import {
ExternalLinkModal,
StatusModal,
VoteContextModal,
- VotingPowerModal,
+ SubmittedVotesModal,
LoadingModal,
} from "@organisms";
import { basicReducer, callAll, BasicReducer } from "@utils";
@@ -28,7 +28,7 @@ export type ModalType =
| "chooseWallet"
| "statusModal"
| "externalLink"
- | "votingPower"
+ | "submittedVotes"
| "voteContext";
const modals: Record = {
@@ -47,8 +47,8 @@ const modals: Record = {
externalLink: {
component: ,
},
- votingPower: {
- component: ,
+ submittedVotes: {
+ component: ,
},
voteContext: {
component: ,
diff --git a/govtool/frontend/src/context/wallet.tsx b/govtool/frontend/src/context/wallet.tsx
index 61349b695..045b85fd1 100644
--- a/govtool/frontend/src/context/wallet.tsx
+++ b/govtool/frontend/src/context/wallet.tsx
@@ -3,6 +3,7 @@ import {
useCallback,
useContext,
useMemo,
+ useRef,
useState,
} from "react";
import {
@@ -12,9 +13,9 @@ import {
CertificatesBuilder,
Credential,
DRep,
- DrepDeregistration,
- DrepRegistration,
- DrepUpdate,
+ DRepDeregistration,
+ DRepRegistration,
+ DRepUpdate,
Ed25519KeyHash,
GovernanceActionId,
LinearFee,
@@ -24,11 +25,9 @@ import {
TransactionBuilder,
TransactionBuilderConfigBuilder,
TransactionHash,
- TransactionOutput,
TransactionUnspentOutput,
TransactionUnspentOutputs,
TransactionWitnessSet,
- Value,
VoteDelegation,
Voter,
VotingBuilder,
@@ -45,13 +44,26 @@ import {
ProtocolParamUpdate,
ParameterChangeAction,
Costmdls,
- DrepVotingThresholds,
+ DRepVotingThresholds,
ExUnitPrices,
UnitInterval,
ExUnits,
PoolVotingThresholds,
ProtocolVersion,
HardForkInitiationAction,
+ ScriptHash,
+ PlutusScripts,
+ Redeemers,
+ Redeemer,
+ RedeemerTag,
+ PlutusData,
+ PlutusMap,
+ PlutusWitness,
+ PlutusScriptSource,
+ Int,
+ CostModel,
+ Language,
+ TxInputsBuilder,
} from "@emurgo/cardano-serialization-lib-asmjs";
import { Buffer } from "buffer";
import { useNavigate } from "react-router-dom";
@@ -59,8 +71,8 @@ import { Link } from "@mui/material";
import * as Sentry from "@sentry/react";
import { Trans } from "react-i18next";
-import { PATHS, GUARDRAIL_SCRIPT } from "@consts";
-import { CardanoApiWallet, Protocol, VoterInfo } from "@models";
+import { PATHS, COMPILED_GUARDRAIL_SCRIPTS } from "@consts";
+import { CardanoApiWallet, VoterInfo } from "@models";
import type { StatusModalState } from "@organisms";
import {
checkIsMaintenanceOn,
@@ -116,7 +128,7 @@ type ProtocolParamsUpdate = {
costModels: Costmdls;
drepDeposit: string;
drepInactivityPeriod: number;
- drepVotingThresholds: DrepVotingThresholds;
+ drepVotingThresholds: DRepVotingThresholds;
executionCosts: ExUnitPrices;
expansionRate: UnitInterval;
governanceActionDeposit: string;
@@ -180,12 +192,12 @@ interface CardanoContextType {
isEnabled: boolean;
pubDRepKey: string;
dRepID: string;
- dRepIDBech32: string;
isMainnet: boolean;
stakeKey?: string;
setStakeKey: (key: string) => void;
stakeKeys: string[];
walletApi?: CardanoApiWallet;
+ registeredStakeKeysListState: string[];
buildSignSubmitConwayCertTx: ({
certBuilder,
govActionBuilder,
@@ -194,8 +206,9 @@ interface CardanoContextType {
votingBuilder,
voter,
}: BuildSignSubmitConwayCertTxArgs) => Promise;
+ buildStakeKeyRegCert: () => Promise;
buildDRepRegCert: (url?: string, hash?: string) => Promise;
- buildVoteDelegationCert: (vote: string) => Promise;
+ buildVoteDelegationCert: (vote: string) => Promise;
buildDRepUpdateCert: (url?: string, hash?: string) => Promise;
buildDRepRetirementCert: (voterDeposit: string) => Promise;
buildVote: (
@@ -238,7 +251,15 @@ const CardanoContext = createContext(
CardanoContext.displayName = "CardanoContext";
const CardanoProvider = (props: Props) => {
+ const { network: networkKey } = useAppContext();
+ const guardrailScript =
+ COMPILED_GUARDRAIL_SCRIPTS[
+ networkKey as keyof typeof COMPILED_GUARDRAIL_SCRIPTS
+ ];
+
const [isEnabled, setIsEnabled] = useState(false);
+ const isGuardrailScriptUsed = useRef(false);
+ const redeemers = useRef([]);
const [isEnableLoading, setIsEnableLoading] = useState(null);
const [walletApi, setWalletApi] = useState(
undefined,
@@ -246,7 +267,6 @@ const CardanoProvider = (props: Props) => {
const [address, setAddress] = useState(undefined);
const [pubDRepKey, setPubDRepKey] = useState("");
const [dRepID, setDRepID] = useState("");
- const [dRepIDBech32, setDRepIDBech32] = useState("");
const [stakeKey, setStakeKey] = useState(undefined);
const [stakeKeys, setStakeKeys] = useState([]);
const [isMainnet, setIsMainnet] = useState(false);
@@ -266,7 +286,7 @@ const CardanoProvider = (props: Props) => {
const { isPendingTransaction, updateTransaction, pendingTransaction } =
usePendingTransaction({ isEnabled, stakeKey });
- const getChangeAddress = async (enabledApi: CardanoApiWallet) => {
+ const getChangeAddress = useCallback(async (enabledApi: CardanoApiWallet) => {
try {
const raw = await enabledApi.getChangeAddress();
const changeAddress = Address.from_bytes(
@@ -279,7 +299,7 @@ const CardanoProvider = (props: Props) => {
} catch (err) {
console.error(err);
}
- };
+ }, []);
const getUsedAddresses = async (enabledApi: CardanoApiWallet) => {
try {
@@ -420,7 +440,6 @@ const CardanoProvider = (props: Props) => {
const dRepIDs = await getPubDRepID(enabledApi);
setPubDRepKey(dRepIDs?.dRepKey || "");
setDRepID(dRepIDs?.dRepID || "");
- setDRepIDBech32(dRepIDs?.dRepIDBech32 || "");
setItemToLocalStorage(`${WALLET_LS_KEY}_name`, walletName);
return { status: t("ok"), stakeKey: stakeKeySet };
@@ -444,7 +463,7 @@ const CardanoProvider = (props: Props) => {
// eslint-disable-next-line no-throw-literal
throw { status: "ERROR", error: t("errors.somethingWentWrong") };
},
- [isEnabled, stakeKeys],
+ [getChangeAddress, isEnabled, t],
);
const disconnectWallet = useCallback(async () => {
@@ -464,32 +483,40 @@ const CardanoProvider = (props: Props) => {
// Create transaction builder
const initTransactionBuilder = useCallback(async () => {
- const protocolParams = getItemFromLocalStorage(
- PROTOCOL_PARAMS_KEY,
- ) as Protocol;
-
- if (protocolParams) {
+ if (epochParams) {
const txBuilder = TransactionBuilder.new(
TransactionBuilderConfigBuilder.new()
.fee_algo(
LinearFee.new(
- BigNum.from_str(String(protocolParams.min_fee_a)),
- BigNum.from_str(String(protocolParams.min_fee_b)),
+ BigNum.from_str(String(epochParams.min_fee_a)),
+ BigNum.from_str(String(epochParams.min_fee_b)),
),
)
- .pool_deposit(BigNum.from_str(String(protocolParams.pool_deposit)))
- .key_deposit(BigNum.from_str(String(protocolParams.key_deposit)))
+ .pool_deposit(BigNum.from_str(String(epochParams.pool_deposit)))
+ .key_deposit(BigNum.from_str(String(epochParams.key_deposit)))
.coins_per_utxo_byte(
- BigNum.from_str(String(protocolParams.coins_per_utxo_size)),
+ BigNum.from_str(String(epochParams.coins_per_utxo_size)),
)
- .max_value_size(protocolParams.max_val_size)
- .max_tx_size(protocolParams.max_tx_size)
+ .max_value_size(epochParams.max_val_size)
+ .max_tx_size(epochParams.max_tx_size)
.prefer_pure_change(true)
+ .ex_unit_prices(
+ ExUnitPrices.new(
+ UnitInterval.new(
+ BigNum.from_str("577"),
+ BigNum.from_str("10000"),
+ ),
+ UnitInterval.new(
+ BigNum.from_str("721"),
+ BigNum.from_str("10000000"),
+ ),
+ ),
+ )
.build(),
);
return txBuilder;
}
- }, []);
+ }, [epochParams]);
const getTxUnspentOutputs = async (utxos: Utxos) => {
const txOutputs = TransactionUnspentOutputs.new();
@@ -508,7 +535,6 @@ const CardanoProvider = (props: Props) => {
resourceId,
type,
votingBuilder,
- voter,
}: BuildSignSubmitConwayCertTxArgs) => {
await checkIsMaintenanceOn();
const isPendingTx = isPendingTransaction();
@@ -516,6 +542,7 @@ const CardanoProvider = (props: Props) => {
try {
const txBuilder = await initTransactionBuilder();
+ const transactionWitnessSet = TransactionWitnessSet.new();
if (!txBuilder) {
throw new Error(t("errors.appCannotCreateTransaction"));
@@ -539,37 +566,58 @@ const CardanoProvider = (props: Props) => {
txBuilder.set_voting_proposal_builder(govActionBuilder);
}
+ if (isGuardrailScriptUsed.current) {
+ try {
+ const scripts = PlutusScripts.new();
+ scripts.add(
+ PlutusScript.from_bytes_v3(Buffer.from(guardrailScript, "hex")),
+ );
+ transactionWitnessSet.set_plutus_scripts(scripts);
+
+ const newRedeemers = Redeemers.new();
+ redeemers.current.forEach((redeemer) => {
+ newRedeemers.add(redeemer);
+ });
+ transactionWitnessSet.set_redeemers(newRedeemers);
+
+ const costModels = Costmdls.new();
+
+ const addCostModels = (
+ language: "v1" | "v2" | "v3",
+ model: "PlutusV1" | "PlutusV2" | "PlutusV3",
+ ) => {
+ const costModel = CostModel.new();
+ (
+ epochParams?.cost_model?.costs?.[model] as number[] | undefined
+ )?.forEach((val, index) =>
+ costModel.set(index, Int.new_i32(val)),
+ );
+ costModels.insert(
+ Language[`new_plutus_${language}`](),
+ costModel,
+ );
+ };
+
+ addCostModels("v1", "PlutusV1");
+ addCostModels("v2", "PlutusV2");
+ addCostModels("v3", "PlutusV3");
+
+ txBuilder.calc_script_data_hash(costModels);
+ } catch (e) {
+ console.error(e);
+ }
+ }
+
if (
!walletState.changeAddress ||
!walletState.usedAddress ||
!walletApi
)
throw new Error(t("errors.checkIsWalletConnected"));
- const shelleyOutputAddress = Address.from_bech32(
- walletState.usedAddress,
- );
const shelleyChangeAddress = Address.from_bech32(
walletState.changeAddress,
);
- // Add output of 1 ada to the address of our wallet
- let outputValue = BigNum.from_str("1000000");
-
- if (
- (type === "retireAsDrep" ||
- type === "retireAsDirectVoter" ||
- (type === "delegate" && voter?.isRegisteredAsSoleVoter)) &&
- voter?.deposit
- ) {
- outputValue = outputValue.checked_add(
- BigNum.from_str(voter?.deposit?.toString()),
- );
- }
-
- txBuilder.add_output(
- TransactionOutput.new(shelleyOutputAddress, Value.new(outputValue)),
- );
-
const utxos = await getUtxos(walletApi);
if (!utxos) {
@@ -578,8 +626,33 @@ const CardanoProvider = (props: Props) => {
// Find the available UTXOs in the wallet and use them as Inputs for the transaction
const txUnspentOutputs = await getTxUnspentOutputs(utxos);
- // Use UTxO selection strategy 3
+ if (isGuardrailScriptUsed.current) {
+ const txInputsBuilder = TxInputsBuilder.new();
+ const probableCollaterals = utxos
+ .filter((utxo) => !utxo.multiAssetStr)
+ .map((utxo) => ({
+ ...utxo,
+ amount: BigInt(utxo.amount),
+ }))
+ .sort((a, b) => (a.amount > b.amount ? -1 : 1));
+
+ if (probableCollaterals.length) {
+ const unspentOutput =
+ probableCollaterals[0].TransactionUnspentOutput;
+ const output = unspentOutput.output();
+ txInputsBuilder.add_regular_input(
+ output.address(),
+ unspentOutput.input(),
+ output.amount(),
+ );
+ txBuilder.set_collateral(txInputsBuilder);
+ } else {
+ throw new Error(t("errors.setCollateral"));
+ }
+ }
+
const changeConfig = ChangeConfig.new(shelleyChangeAddress);
+ // Use UTxO selection strategy 3
try {
txBuilder.add_inputs_from_and_change(
txUnspentOutputs,
@@ -600,11 +673,7 @@ const CardanoProvider = (props: Props) => {
const txBody = txBuilder.build();
// Make a full transaction, passing in empty witness set
- const transactionWitnessSet = TransactionWitnessSet.new();
- const tx = Transaction.new(
- txBody,
- TransactionWitnessSet.from_bytes(transactionWitnessSet.to_bytes()),
- );
+ const tx = Transaction.new(txBody, transactionWitnessSet);
// Ask wallet to to provide signature (witnesses) for the transaction
let txVkeyWitnesses;
@@ -612,7 +681,7 @@ const CardanoProvider = (props: Props) => {
// Create witness set object using the witnesses provided by the wallet
txVkeyWitnesses = TransactionWitnessSet.from_bytes(
- Buffer.from(txVkeyWitnesses, "hex"),
+ Buffer.from(await walletApi.signTx(tx.to_hex(), true), "hex"),
);
const vkeys = txVkeyWitnesses.vkeys();
@@ -633,6 +702,8 @@ const CardanoProvider = (props: Props) => {
resourceId,
});
+ isGuardrailScriptUsed.current = false;
+
// eslint-disable-next-line no-console
console.log(signedTx.to_hex(), "signed tx cbor");
return resultHash;
@@ -650,31 +721,48 @@ const CardanoProvider = (props: Props) => {
throw error?.info ?? error;
}
},
- [isPendingTransaction, stakeKey, updateTransaction, walletApi, walletState],
+ [
+ isPendingTransaction,
+ initTransactionBuilder,
+ walletState.changeAddress,
+ walletState.usedAddress,
+ walletApi,
+ t,
+ updateTransaction,
+ guardrailScript,
+ epochParams?.cost_model?.costs,
+ disconnectWallet,
+ ],
);
+ const buildStakeKeyRegCert = useCallback(async (): Promise => {
+ try {
+ if (!stakeKey) {
+ throw new Error(t("errors.noStakeKeySelected"));
+ }
+ const stakeKeyHash = Ed25519KeyHash.from_hex(stakeKey.substring(2));
+ const stakeCred = Credential.from_keyhash(stakeKeyHash);
+ const stakeKeyRegCert = StakeRegistration.new_with_explicit_deposit(
+ stakeCred,
+ BigNum.from_str(`${epochParams.key_deposit}`),
+ );
+ return Certificate.new_stake_registration(stakeKeyRegCert);
+ } catch (e) {
+ console.error(e);
+ throw e;
+ }
+ }, [epochParams?.key_deposit, stakeKey, t]);
+
const buildVoteDelegationCert = useCallback(
- async (target: string): Promise => {
+ async (target: string): Promise => {
try {
// Build Vote Delegation Certificate
- const certBuilder = CertificatesBuilder.new();
- let stakeCred;
if (!stakeKey) {
throw new Error(t("errors.noStakeKeySelected"));
}
// Remove network tag from stake key hash
const stakeKeyHash = Ed25519KeyHash.from_hex(stakeKey.substring(2));
- // if chosen stake key is registered use it, else register it
- if (registeredStakeKeysListState.length > 0) {
- stakeCred = Credential.from_keyhash(stakeKeyHash);
- } else {
- stakeCred = Credential.from_keyhash(stakeKeyHash);
- const stakeKeyRegCert = StakeRegistration.new_with_coin(
- stakeCred,
- BigNum.from_str(`${epochParams.key_deposit}`),
- );
- certBuilder.add(Certificate.new_stake_registration(stakeKeyRegCert));
- }
+ const stakeCred = Credential.from_keyhash(stakeKeyHash);
// Create correct DRep
let targetDRep;
@@ -682,23 +770,23 @@ const CardanoProvider = (props: Props) => {
targetDRep = DRep.new_always_abstain();
} else if (target === AutomatedVotingOptionDelegationId.no_confidence) {
targetDRep = DRep.new_always_no_confidence();
- } else if (target.includes("drep")) {
+ } else if (target.includes("drep1")) {
targetDRep = DRep.new_key_hash(Ed25519KeyHash.from_bech32(target));
+ } else if (target.includes("drep_script1")) {
+ targetDRep = DRep.new_script_hash(ScriptHash.from_hex(target));
} else {
targetDRep = DRep.new_key_hash(Ed25519KeyHash.from_hex(target));
}
// Create cert object
const voteDelegationCert = VoteDelegation.new(stakeCred, targetDRep);
// add cert to tbuilder
- certBuilder.add(Certificate.new_vote_delegation(voteDelegationCert));
-
- return certBuilder;
+ return Certificate.new_vote_delegation(voteDelegationCert);
} catch (e) {
console.error(e);
throw e;
}
},
- [stakeKey, registeredStakeKeysListState],
+ [stakeKey, t],
);
// conway alpha
@@ -717,14 +805,14 @@ const CardanoProvider = (props: Props) => {
if (cip95MetadataURL && cip95MetadataHash) {
const anchor = generateAnchor(cip95MetadataURL, cip95MetadataHash);
// Create cert object using one Ada as the deposit
- dRepRegCert = DrepRegistration.new_with_anchor(
+ dRepRegCert = DRepRegistration.new_with_anchor(
dRepCred,
BigNum.from_str(`${epochParams?.drep_deposit}`),
anchor,
);
} else {
console.error(t("errors.notUsingAnchor"));
- dRepRegCert = DrepRegistration.new(
+ dRepRegCert = DRepRegistration.new(
dRepCred,
BigNum.from_str(`${epochParams?.drep_deposit}`),
);
@@ -735,7 +823,7 @@ const CardanoProvider = (props: Props) => {
throw e;
}
},
- [epochParams, dRepID],
+ [dRepID, epochParams?.drep_deposit, t],
);
const buildDRepUpdateCert = useCallback(
@@ -753,9 +841,9 @@ const CardanoProvider = (props: Props) => {
if (cip95MetadataURL && cip95MetadataHash) {
const anchor = generateAnchor(cip95MetadataURL, cip95MetadataHash);
// Create cert object using one Ada as the deposit
- dRepUpdateCert = DrepUpdate.new_with_anchor(dRepCred, anchor);
+ dRepUpdateCert = DRepUpdate.new_with_anchor(dRepCred, anchor);
} else {
- dRepUpdateCert = DrepUpdate.new(dRepCred);
+ dRepUpdateCert = DRepUpdate.new(dRepCred);
}
return Certificate.new_drep_update(dRepUpdateCert);
} catch (e) {
@@ -773,7 +861,7 @@ const CardanoProvider = (props: Props) => {
const dRepKeyHash = Ed25519KeyHash.from_hex(dRepID);
const dRepCred = Credential.from_keyhash(dRepKeyHash);
- const dRepRetirementCert = DrepDeregistration.new(
+ const dRepRetirementCert = DRepDeregistration.new(
dRepCred,
BigNum.from_str(voterDeposit),
);
@@ -799,7 +887,9 @@ const CardanoProvider = (props: Props) => {
// Get wallet's DRep key
const dRepKeyHash = Ed25519KeyHash.from_hex(dRepID);
// Vote things
- const voter = Voter.new_drep(Credential.from_keyhash(dRepKeyHash));
+ const voter = Voter.new_drep_credential(
+ Credential.from_keyhash(dRepKeyHash),
+ );
const govActionId = GovernanceActionId.new(
// placeholder
TransactionHash.from_hex(txHash),
@@ -852,6 +942,42 @@ const CardanoProvider = (props: Props) => {
return RewardAddress.from_address(Address.from_bech32(bech32Address));
}, [walletApi]);
+ const addVotingProposalToBuilder = useCallback(
+ (
+ govActionBuilder: VotingProposalBuilder,
+ votingProposal: VotingProposal,
+ plutusScript: PlutusScript,
+ ) => {
+ let redeemer: Redeemer;
+ if (isGuardrailScriptUsed.current) {
+ const redeemerTag = RedeemerTag.new_voting_proposal();
+ const plutusData = PlutusData.new_map(PlutusMap.new());
+ const exUnits = ExUnits.new(
+ BigNum.from_str("402468"),
+ BigNum.from_str("89488792"),
+ );
+ redeemer = Redeemer.new(
+ redeemerTag,
+ BigNum.from_str("0"),
+ plutusData,
+ exUnits,
+ );
+
+ const witness = PlutusWitness.new_with_ref_without_datum(
+ PlutusScriptSource.new(plutusScript),
+ redeemer,
+ );
+ redeemers.current.push(redeemer);
+ govActionBuilder.add_with_plutus_witness(votingProposal, witness);
+ } else {
+ govActionBuilder.add(votingProposal);
+ }
+
+ return govActionBuilder;
+ },
+ [],
+ );
+
// info action
const buildNewInfoGovernanceAction = useCallback(
async ({ hash, url }: InfoProps) => {
@@ -897,13 +1023,15 @@ const CardanoProvider = (props: Props) => {
const myWithdrawal = BigNum.from_str(amount);
const withdrawals = TreasuryWithdrawals.new();
withdrawals.insert(treasuryTarget, myWithdrawal);
- const guardrailScript = PlutusScript.from_bytes_v3(
- Buffer.from(GUARDRAIL_SCRIPT, "hex"),
+ const guardrailPlutusScript = PlutusScript.from_bytes_v3(
+ Buffer.from(guardrailScript, "hex"),
);
const treasuryAction = TreasuryWithdrawalsAction.new_with_policy_hash(
withdrawals,
- guardrailScript.hash(),
+ guardrailPlutusScript.hash(),
);
+ isGuardrailScriptUsed.current = true;
+
const treasuryGovAct =
GovernanceAction.new_treasury_withdrawals_action(treasuryAction);
// Create an anchor
@@ -919,14 +1047,24 @@ const CardanoProvider = (props: Props) => {
rewardAddr,
BigNum.from_str(epochParams?.gov_action_deposit.toString()),
);
- govActionBuilder.add(votingProposal);
+
+ addVotingProposalToBuilder(
+ govActionBuilder,
+ votingProposal,
+ guardrailPlutusScript,
+ );
return govActionBuilder;
} catch (err) {
console.error(err);
}
},
- [epochParams, getRewardAddress],
+ [
+ addVotingProposalToBuilder,
+ epochParams?.gov_action_deposit,
+ getRewardAddress,
+ guardrailScript,
+ ],
);
const buildProtocolParameterChangeGovernanceAction = useCallback(
@@ -947,8 +1085,8 @@ const CardanoProvider = (props: Props) => {
setProtocolParameterUpdate(protocolParameterUpdate, key, value);
}
- const guardrailScript = PlutusScript.from_bytes_v3(
- Buffer.from(GUARDRAIL_SCRIPT, "hex"),
+ const guardrailPlutusScript = PlutusScript.from_bytes_v3(
+ Buffer.from(guardrailScript, "hex"),
);
let protocolParamChangeAction;
if (prevGovernanceActionHash && prevGovernanceActionIndex) {
@@ -960,13 +1098,13 @@ const CardanoProvider = (props: Props) => {
ParameterChangeAction.new_with_policy_hash_and_action_id(
prevGovernanceActionId,
protocolParameterUpdate,
- guardrailScript.hash(),
+ guardrailPlutusScript.hash(),
);
} else {
protocolParamChangeAction =
ParameterChangeAction.new_with_policy_hash(
protocolParameterUpdate,
- guardrailScript.hash(),
+ guardrailPlutusScript.hash(),
);
}
@@ -988,14 +1126,23 @@ const CardanoProvider = (props: Props) => {
rewardAddr,
BigNum.from_str(epochParams?.gov_action_deposit.toString()),
);
- govActionBuilder.add(votingProposal);
+ addVotingProposalToBuilder(
+ govActionBuilder,
+ votingProposal,
+ guardrailPlutusScript,
+ );
return govActionBuilder;
} catch (err) {
console.error(err);
}
},
- [],
+ [
+ addVotingProposalToBuilder,
+ epochParams?.gov_action_deposit,
+ getRewardAddress,
+ guardrailScript,
+ ],
);
const buildHardForkGovernanceAction = useCallback(
@@ -1053,7 +1200,7 @@ const CardanoProvider = (props: Props) => {
console.error(err);
}
},
- [],
+ [epochParams?.gov_action_deposit, getRewardAddress],
);
const value = useMemo(
@@ -1062,25 +1209,26 @@ const CardanoProvider = (props: Props) => {
buildDRepRegCert,
buildDRepRetirementCert,
buildDRepUpdateCert,
+ buildHardForkGovernanceAction,
buildNewInfoGovernanceAction,
+ buildProtocolParameterChangeGovernanceAction,
buildSignSubmitConwayCertTx,
+ buildStakeKeyRegCert,
buildTreasuryGovernanceAction,
- buildProtocolParameterChangeGovernanceAction,
- buildHardForkGovernanceAction,
buildVote,
buildVoteDelegationCert,
- disconnectWallet,
- getChangeAddress,
dRepID,
- dRepIDBech32,
+ disconnectWallet,
enable,
error,
- isEnabled,
+ getChangeAddress,
isEnableLoading,
+ isEnabled,
isMainnet,
isPendingTransaction,
pendingTransaction,
pubDRepKey,
+ registeredStakeKeysListState,
setStakeKey,
stakeKey,
stakeKeys,
@@ -1091,25 +1239,26 @@ const CardanoProvider = (props: Props) => {
buildDRepRegCert,
buildDRepRetirementCert,
buildDRepUpdateCert,
+ buildHardForkGovernanceAction,
buildNewInfoGovernanceAction,
+ buildProtocolParameterChangeGovernanceAction,
buildSignSubmitConwayCertTx,
+ buildStakeKeyRegCert,
buildTreasuryGovernanceAction,
- buildProtocolParameterChangeGovernanceAction,
- buildHardForkGovernanceAction,
buildVote,
buildVoteDelegationCert,
- disconnectWallet,
- getChangeAddress,
dRepID,
- dRepIDBech32,
+ disconnectWallet,
enable,
error,
- isEnabled,
+ getChangeAddress,
isEnableLoading,
+ isEnabled,
isMainnet,
isPendingTransaction,
pendingTransaction,
pubDRepKey,
+ registeredStakeKeysListState,
setStakeKey,
stakeKey,
stakeKeys,
@@ -1196,7 +1345,7 @@ function useCardano() {
throw e;
}
},
- [context, openModal, context.isEnabled],
+ [context, closeModal, addSuccessAlert, t, openModal, networkName, navigate],
);
const disconnectWallet = useCallback(async () => {
diff --git a/govtool/frontend/src/hooks/forms/index.ts b/govtool/frontend/src/hooks/forms/index.ts
index 414ec7b4d..ef3d18e47 100644
--- a/govtool/frontend/src/hooks/forms/index.ts
+++ b/govtool/frontend/src/hooks/forms/index.ts
@@ -1,5 +1,4 @@
export * from "./useCreateGovernanceActionForm";
-export * from "./useDelegateTodRepForm";
export * from "./useEditDRepInfoForm";
export * from "./useRegisterAsdRepForm";
export * from "./useVoteActionForm";
diff --git a/govtool/frontend/src/hooks/forms/useDelegateTodRepForm.tsx b/govtool/frontend/src/hooks/forms/useDelegateTodRepForm.tsx
deleted file mode 100644
index 720aac3b7..000000000
--- a/govtool/frontend/src/hooks/forms/useDelegateTodRepForm.tsx
+++ /dev/null
@@ -1,105 +0,0 @@
-import { useCallback, useState } from "react";
-import { useNavigate } from "react-router-dom";
-import { useForm, useWatch } from "react-hook-form";
-import * as Sentry from "@sentry/react";
-
-import { PATHS } from "@consts";
-import { useCardano, useModal } from "@context";
-import { useGetDRepListInfiniteQuery, useTranslation } from "@hooks";
-import { formHexToBech32 } from "@utils";
-
-export interface DelegateTodrepFormValues {
- dRepID: string;
-}
-
-export const useDelegateTodRepForm = () => {
- const { buildSignSubmitConwayCertTx, buildVoteDelegationCert } = useCardano();
- const { dRepData: drepList } = useGetDRepListInfiniteQuery({
- page: 0,
- });
- const { openModal, closeModal, modal } = useModal();
- const [isLoading, setIsLoading] = useState(false);
- const navigate = useNavigate();
- const { t } = useTranslation();
-
- const {
- control,
- formState: { errors },
- handleSubmit,
- } = useForm();
-
- const watch = useWatch({
- control,
- name: "dRepID",
- });
-
- const isDelegateButtonDisabled = !watch;
-
- const delegate = useCallback(
- async ({ dRepID }: DelegateTodrepFormValues) => {
- setIsLoading(true);
- try {
- let isValidDrep = false;
- if (drepList?.length) {
- isValidDrep = drepList.some(
- (dRep) =>
- dRep.drepId === dRepID || formHexToBech32(dRep.drepId) === dRepID,
- );
- }
- if (!drepList?.length || !isValidDrep) {
- throw new Error(t("errors.dRepIdNotFound"));
- }
- const certBuilder = await buildVoteDelegationCert(dRepID);
- const result = await buildSignSubmitConwayCertTx({
- certBuilder,
- type: "delegate",
- resourceId: dRepID,
- });
- if (result) {
- 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",
- },
- });
- }
- } catch (error) {
- Sentry.setTag("hook", "useDelegateTodRepForm");
- Sentry.captureException(error);
- openModal({
- type: "statusModal",
- state: {
- status: "warning",
- message: `${error}`.replace("Error: ", ""),
- onSubmit: () => {
- closeModal();
- },
- title: t("modals.common.oops"),
- dataTestId: "delegation-transaction-error-modal",
- },
- });
- } finally {
- setIsLoading(false);
- }
- },
- [buildVoteDelegationCert, buildSignSubmitConwayCertTx, drepList],
- );
-
- return {
- control,
- delegate: handleSubmit(delegate),
- errors,
- isDelegateButtonDisabled,
- isDelegationLoading: isLoading,
- modal,
- };
-};
diff --git a/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx b/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx
index 581169316..4d092afbe 100644
--- a/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx
+++ b/govtool/frontend/src/hooks/forms/useRegisterAsdRepForm.tsx
@@ -5,6 +5,7 @@ import { useFormContext } from "react-hook-form";
import { blake2bHex } from "blakejs";
import * as Sentry from "@sentry/react";
import { NodeObject } from "jsonld";
+import { CertificatesBuilder } from "@emurgo/cardano-serialization-lib-asmjs";
import {
CIP_119,
@@ -53,6 +54,8 @@ export const useRegisterAsdRepForm = (
buildSignSubmitConwayCertTx,
buildVoteDelegationCert,
dRepID,
+ registeredStakeKeysListState,
+ buildStakeKeyRegCert,
} = useCardano();
// App Management
@@ -131,7 +134,7 @@ export const useRegisterAsdRepForm = (
if (!hash) return;
const uri = data.storingURL;
try {
- const certBuilder = await buildVoteDelegationCert(dRepID);
+ const certBuilder = CertificatesBuilder.new();
const registerCert = voter?.isRegisteredAsSoleVoter
? await buildDRepUpdateCert(uri, hash)
@@ -139,6 +142,14 @@ export const useRegisterAsdRepForm = (
certBuilder.add(registerCert);
+ if (!registeredStakeKeysListState.length) {
+ const stakeKeyRegCert = await buildStakeKeyRegCert();
+ certBuilder.add(stakeKeyRegCert);
+ }
+
+ const voteDelegationCert = await buildVoteDelegationCert(dRepID);
+ certBuilder.add(voteDelegationCert);
+
return certBuilder;
} catch (error) {
Sentry.setTag("hook", "useRegisterAsdRepForm");
diff --git a/govtool/frontend/src/hooks/queries/index.ts b/govtool/frontend/src/hooks/queries/index.ts
index c29a970f9..aa02b7321 100644
--- a/govtool/frontend/src/hooks/queries/index.ts
+++ b/govtool/frontend/src/hooks/queries/index.ts
@@ -1,5 +1,6 @@
export * from "./useGetAdaHolderCurrentDelegationQuery";
export * from "./useGetAdaHolderVotingPowerQuery";
+export * from "./useGetDrepDetailsQuery";
export * from "./useGetDRepListQuery";
export * from "./useGetDRepVotesQuery";
export * from "./useGetDRepVotingPowerQuery";
diff --git a/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts b/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts
index 3eb2a956f..c6f0f968b 100644
--- a/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts
+++ b/govtool/frontend/src/hooks/queries/useGetDRepListQuery.ts
@@ -33,11 +33,11 @@ export const useGetDRepListInfiniteQuery = (
pendingTransaction.registerAsDrep ||
pendingTransaction.retireAsDirectVoter ||
pendingTransaction.retireAsDrep
- )?.transactionHash,
- filters,
- searchPhrase,
- sorting,
- status,
+ )?.transactionHash ?? "noPendingTransaction",
+ filters.length ? filters : "",
+ searchPhrase ?? "",
+ sorting ?? "",
+ status?.length ? status : "",
],
async ({ pageParam = 0 }) =>
getDRepList({
diff --git a/govtool/frontend/src/hooks/queries/useGetDrepDetailsQuery.ts b/govtool/frontend/src/hooks/queries/useGetDrepDetailsQuery.ts
new file mode 100644
index 000000000..9bb53a206
--- /dev/null
+++ b/govtool/frontend/src/hooks/queries/useGetDrepDetailsQuery.ts
@@ -0,0 +1,13 @@
+import { useGetDRepListInfiniteQuery } from "./useGetDRepListQuery";
+
+export const useGetDRepDetailsQuery = (
+ dRepId: string | null | undefined,
+ options?: { enabled: boolean },
+) => {
+ const { dRepData, isDRepListLoading } = useGetDRepListInfiniteQuery(
+ { searchPhrase: dRepId ?? undefined },
+ { enabled: options?.enabled || !!dRepId },
+ );
+
+ return { dRep: dRepData?.[0], isLoading: isDRepListLoading };
+};
diff --git a/govtool/frontend/src/hooks/useDelegateToDrep.ts b/govtool/frontend/src/hooks/useDelegateToDrep.ts
index 963c782ec..31509d14d 100644
--- a/govtool/frontend/src/hooks/useDelegateToDrep.ts
+++ b/govtool/frontend/src/hooks/useDelegateToDrep.ts
@@ -3,12 +3,15 @@ import * as Sentry from "@sentry/react";
import { useCardano, useSnackbar } from "@context";
import { useGetVoterInfo, useTranslation, useWalletErrorModal } from "@hooks";
+import { CertificatesBuilder } from "@emurgo/cardano-serialization-lib-asmjs";
export const useDelegateTodRep = () => {
const {
buildSignSubmitConwayCertTx,
buildVoteDelegationCert,
buildDRepRetirementCert,
+ buildStakeKeyRegCert,
+ registeredStakeKeysListState,
} = useCardano();
const { t } = useTranslation();
const { addSuccessAlert, addErrorAlert } = useSnackbar();
@@ -25,14 +28,23 @@ export const useDelegateTodRep = () => {
if (voter?.isRegisteredAsSoleVoter && !voter?.deposit) {
throw new Error(t("errors.appCannotGetDeposit"));
}
+ const certBuilder = CertificatesBuilder.new();
- const certBuilder = await buildVoteDelegationCert(dRepId);
if (voter?.isRegisteredAsSoleVoter) {
const retirementCert = await buildDRepRetirementCert(
voter?.deposit?.toString(),
);
certBuilder.add(retirementCert);
}
+
+ if (!registeredStakeKeysListState.length) {
+ const stakeKeyRegCert = await buildStakeKeyRegCert();
+ certBuilder.add(stakeKeyRegCert);
+ }
+
+ const voteDelegationCert = await buildVoteDelegationCert(dRepId);
+ certBuilder.add(voteDelegationCert);
+
await buildSignSubmitConwayCertTx({
certBuilder,
type: "delegate",
diff --git a/govtool/frontend/src/i18n/index.ts b/govtool/frontend/src/i18n/index.ts
index 035c38ccc..2139d81d4 100644
--- a/govtool/frontend/src/i18n/index.ts
+++ b/govtool/frontend/src/i18n/index.ts
@@ -1,11 +1,13 @@
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
-import { en } from "./locales/en";
+import en from "./locales/en.json";
i18n.use(initReactI18next).init({
resources: {
- en,
+ en: {
+ translation: en,
+ },
},
fallbackLng: "en",
interpolation: {
diff --git a/govtool/frontend/src/i18n/locales/en.json b/govtool/frontend/src/i18n/locales/en.json
new file mode 100644
index 000000000..3577f3c18
--- /dev/null
+++ b/govtool/frontend/src/i18n/locales/en.json
@@ -0,0 +1,781 @@
+{
+ "alerts": {
+ "delegate": {
+ "failed": "Delegation transaction failed",
+ "warning": "Your voting power has been successfully delegated! Please refresh the page.",
+ "success": "Your voting power has been successfully delegated!"
+ },
+ "createGovAction": {
+ "failed": "Creating Governance Action transaction failed",
+ "success": "Your Governance Action has been submitted"
+ },
+ "registerAsDrep": {
+ "failed": "Registration transaction failed",
+ "warning": "You have successfully registered as a DRep! Please refresh the page.",
+ "success": "You have successfully registered as a DRep!"
+ },
+ "registerAsDirectVoter": {
+ "failed": "Registration transaction failed",
+ "warning": "You have successfully registered as a Direct Voter! Please refresh the page.",
+ "success": "You have successfully registered as a Direct Voter!"
+ },
+ "retireAsDrep": {
+ "failed": "Retirement transaction failed",
+ "warning": "You have successfully retired from being a DRep! Please refresh the page.",
+ "success": "You have successfully retired from being a DRep!"
+ },
+ "retireAsDirectVoter": {
+ "failed": "Retirement transaction failed",
+ "warning": "You have successfully retired from being a Direct Voter! Please refresh the page.",
+ "success": "You have successfully retired from being a DirectVoter!"
+ },
+ "updateMetaData": {
+ "failed": "Update DRep metadata transaction failed",
+ "success": "You have successfully updated DRep metadata!"
+ },
+ "vote": {
+ "failed": "Vote transaction failed",
+ "success": "You have successfully voted!"
+ },
+ "changesSaved": "Your changes have been saved",
+ "copiedToClipboard": "Copied to clipboard",
+ "transactionInProgress": "Transaction in progress. Please wait.",
+ "walletConnected": "Wallet connected"
+ },
+ "dashboard": {
+ "headingOne": "Your Participation",
+ "headingTwo": "See Active Governance Actions",
+ "title": "Dashboard",
+ "cards": {
+ "drepName": "Drep_name",
+ "showTransaction": "Show Transaction",
+ "drep": {
+ "changeMetadata": "Change metadata",
+ "dRepRegistration": "DRep Registration",
+ "dRepRetirement": "DRep Retirement",
+ "dRepUpdate": "DRep Update",
+ "holdersCanDelegate": "Ada holders can delegate their voting power to you.",
+ "ifYouWant": "If you want to directly participate in voting and have other ada holders delegate their voting power to you.",
+ "metadataUpdateInProgress": "The update DRep metadata is ongoing. This may take several minutes.",
+ "notRegisteredDescription": "Accept delegated voting power from other Ada holders, and combine it with your own voting power. Vote with the accumulated Power on Governance Actions.",
+ "notRegisteredTitle": "Become a DRep",
+ "notRegisteredWasRegisteredDescriptionWithGivenName": "You are now retired and your listing in the DRep directory as {{givenName}} has been marked as retired . You cannot vote on Governance Actions as {{givenName}} .\n\nYou can always re-register as a DRep, in which case you will have the same DRep ID as you had initially.",
+ "notRegisteredWasRegisteredDescription": "You are now retired and your listing in the DRep directory has been marked as retired . You cannot vote on Governance Actions.\n\nYou can always re-register as a DRep, in which case you will have the same DRep ID as you had initially.",
+ "notRegisteredWasRegisteredTitle": "You Have Retired as a DRep.",
+ "register": "Register",
+ "registerAgain": "Register Again as a dRep",
+ "registerAsDRep": "Register as a DRep",
+ "registeredDescription": "You can Vote using your own Voting Power combined with any Voting Power delegated to you.",
+ "registeredTitle": "You are Registered as a DRep",
+ "registrationInProgress": "The registration process is ongoing. This may take several minutes.",
+ "reRegister": "Re-register as a DRep",
+ "retire": "Retire as a DRep",
+ "retirementInProgress": "You are being retired. You will receive a refund of {{deposit}} ada when the transaction completes.",
+ "retirementInProgressWithGivenName": "You are being retired as {{givenName}} . You will receive a refund of {{deposit}} ada when the transaction completes.",
+ "viewDetails": "View your DRep details",
+ "youAreRegistered": "You are Registered as a DRep",
+ "yourDRepId": "Your DRep ID"
+ },
+ "govActions": {
+ "description": "Review governance actions submitted on-chain.",
+ "reviewAndVote": "Review and vote",
+ "title": "View Governance Actions"
+ },
+ "proposeGovernanceAction": {
+ "title": "Propose a Governance Action",
+ "description": "Submit your proposal for a Governance Action.",
+ "propose": "Propose",
+ "view": "View Governance Actions"
+ },
+ "directVoter": {
+ "isRegisteredDescription": "Your Voting Power of ₳{{votingPower}} can be used to vote.",
+ "register": "Register",
+ "registerDescription": "Register to Vote on Governance Actions using your own Voting Power of ₳{{votingPower}} .",
+ "registerTitle": "Become a Direct Voter",
+ "reRegister": "Re-register",
+ "registration": "Direct Voter Registration",
+ "registrationInProgress": "The registration process is ongoing. This may take several minutes.",
+ "retire": "Retire",
+ "wasDirectVoterTitle": "You Have Retired as a Direct Voter",
+ "retirement": "Direct Voter Retirement",
+ "retirementInProgress": "The retirement process is ongoing. This may take several minutes.",
+ "wasRegisteredDescription": "You cannot vote on Governance Actions using your own Voting Power of ₳{{votingPower}} until you re-register.",
+ "youAreDirectVoterTitle": "You are a Direct Voter"
+ },
+ "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 your Voting Power ₳{{ada}} \nto “No Confidence”",
+ "abstainDelegationTitle": "You have delegated your Voting Power ₳{{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."
+ }
+ }
+ }
+ },
+ "createGovernanceAction": {
+ "chooseGATypeTitle": "Choose a Governance Action type",
+ "creatingAGovernanceAction": "Creating a Governance Action: What you need to know",
+ "creatingAGovernanceActionDescription": "To create a Governance Action, you will need to:\n\n• Fill out a form with the relevant data\n• Pay a refundable deposit of ₳{{deposit}} \n• Store the metadata of your Governance Action at your own expense.\n\nYour deposit will be refunded to your wallet when the Governance Action is either enacted or expired.\n\nThe deposit will not affect your Voting Power.",
+ "editSubmission": "Edit submission",
+ "fields": {
+ "declarations": {
+ "abstract": {
+ "label": "Abstract",
+ "placeholder": "Summary",
+ "tip": "General summary of the Action"
+ },
+ "amount": {
+ "label": "Amount",
+ "placeholder": "e.g. 20000"
+ },
+ "motivation": {
+ "label": "Motivation",
+ "placeholder": "Problem this GA will solve",
+ "tip": "How will this solve a problem"
+ },
+ "rationale": {
+ "label": "Rationale",
+ "placeholder": "Content of Governance Action",
+ "tip": "Put all the content of the GA here"
+ },
+ "receivingAddress": {
+ "label": "Receiving Address",
+ "placeholder": "The address to receive funds"
+ },
+ "title": {
+ "label": "Title",
+ "placeholder": "A name for this Action"
+ }
+ },
+ "validations": {
+ "bech32": "Invalid bech32 address",
+ "maxLength": "Max {{maxLength}} characters",
+ "number": "Only number is allowed",
+ "required": "This field is required",
+ "url": "Invalid URL",
+ "positive": "Only positive number is allowed"
+ }
+ },
+ "formTitle": "Governance Action details",
+ "references": "References and Supporting Information",
+ "reviewSubmission": "Review your submission",
+ "storeDataCheckboxLabel": "I agree to store correctly this information and to maintain them over the years",
+ "storeDataLink": "Learn more about storing information",
+ "storeDataTitle": "Store and Maintain the Data Yourself",
+ "storingInformationDescription": "Download your file, save it to your chosen location, and enter the URL of that location in step 3",
+ "storingInformationStep1Label": "Download this file",
+ "storingInformationStep2Label": "Save this file in a location that provides a public URL (e.g. github)",
+ "storingInformationStep2Link": "Read full guide",
+ "storingInformationStep3Label": "Paste the URL here",
+ "storingInformationTitle": "Information Storage Steps",
+ "storingInformationURLPlaceholder": "URL",
+ "supportingLinks": "Supporting links",
+ "title": "Create a Governance Action",
+ "modals": {
+ "submitTransactionSuccess": {
+ "message": "Your Governance Action may take a little time to submit to the chain.",
+ "title": "Governance Action submitted!"
+ }
+ }
+ },
+ "delegation": {
+ "description": "You can delegate your voting power to a DRep or to a pre-defined voting option.",
+ "dRepIdDescription": "The DRep ID is the identifier of a DRep.",
+ "heading": "Use your Voting Power",
+ "otherOptions": "Other options",
+ "pasteDRepId": "Paste DRep ID",
+ "votingPowerToDelegate": "Voting power to delegate:",
+ "whereFindDRepId": "The DRep ID is the identifier of a DRep.",
+ "abstain": {
+ "subtitle": "Select this to vote ABSTAIN to every vote.",
+ "title": "Vote ABSTAIN as default"
+ },
+ "noConfidence": {
+ "subtitle": "Select this to signal no confidence in the current constitutional committee by voting NO on every proposal and voting YES to no-confidence proposals.",
+ "title": "Signal no confidence"
+ },
+ "toDRep": {
+ "subtitle": "Select this to delegate to a DRep using their related DRep ID.",
+ "title": "Delegate to DRep"
+ },
+ "toMyself": {
+ "subtitle": "Select this to delegate your own voting power to yourself.",
+ "title": "Delegate to myself"
+ }
+ },
+ "dRepDirectory": {
+ "abstainCardDefaultDescription": "Select this to vote ABSTAIN to every vote.",
+ "abstainCardDefaultTitle": "Abstain from Every Vote",
+ "automatedVotingOptions": "Automated Voting Options",
+ "editBtn": "Edit DRep data",
+ "delegatedToAbstainTitle": "You have delegated ₳{{ada}} to “Abstain”",
+ "delegatedToNoConfidenceTitle": "You have delegated ₳{{ada}} to “No Confidence”",
+ "delegatedToAbstainDescription": "You have selected to apply your Voting Power to Abstain on every vote.",
+ "delegatedToNoConfidenceDescription": "You have selected to apply your Voting Power to No Confidence on every vote.",
+ "delegationOptions": "Delegation Options",
+ "directVoter": "Direct Voter",
+ "filterTitle": "DRep Status",
+ "goToDRepDirectory": "Go to DRep Directory",
+ "meAsDRep": "This DRep ID is connected to your wallet",
+ "myDelegation": "You have delegated ₳ {{ada}} to:",
+ "myDelegationToYourself": "You have delegated ₳ {{ada}} to yourself",
+ "myDRep": "You have delegated ₳ {{ada}} to this DRep",
+ "listTitle": "Find a DRep",
+ "noConfidenceDefaultDescription": "Select this to signal no confidence in the current constitutional committee by voting NO on every proposal and voting YES to no confidence proposals",
+ "noConfidenceDefaultTitle": "Signal No Confidence on Every Vote",
+ "noResultsForTheSearchTitle": "No DReps found",
+ "noResultsForTheSearchDescription": "If you can't find the DRep you're looking for, either they are not registered, requested not to be listed in the DRep Directory, or did not submit correct metadata during registration.",
+ "title": "DRep Directory",
+ "votingPower": "Voting Power"
+ },
+ "errorPage": {
+ "backToDashboard": "Back to dashboard",
+ "backToHomepage": "Back to homepage",
+ "error": "Error ",
+ "serverError": "We have an internal server error.",
+ "whoops": "Whoops!"
+ },
+ "errors": {
+ "appCannotCreateTransaction": "Application can not create transaction.",
+ "appCannotGetDeposit": "Can not fetch deposit",
+ "appCannotGetUtxos": "Application can not get utxos",
+ "appCannotGetVkeys": "Application can not get vkey",
+ "checkIsWalletConnected": "Check if the wallet is connected.",
+ "dRepIdNotFound": "DrepId not found",
+ "insufficientBalanceDescription": "To submit a Governance Action, you will be required to post a refundable balance of ₳{{ada}}. You do not currently have enough ada in your wallet to continue.",
+ "insufficientBalanceTitle": "Insufficient Balance",
+ "invalidGovernanceActionType": "Invalid Governance Action Type",
+ "invalidTreasuryGovernanceActionType": "Invalid Treasury Governance Action",
+ "noAddressesFound": "No addresses found",
+ "noStakeKeySelected": "No stake key selected",
+ "notUsingAnchor": "DRep Registration - not using anchor",
+ "registeringStakeKey": "Registering stake key",
+ "somethingWentWrong": "Something went wrong",
+ "tryingConnectTo": "You are trying to connect with a wallet connected to {{networkFrom}}. Please adjust your wallet settings to connect to {{networkTo}} or select a different wallet.",
+ "useCardano": "useCardano must be used within a CardanoProvider",
+ "walletNoCIP30Nor90Support": "Your wallet does not support the required CIP-30 extension, CIP-95.",
+ "walletNoCIP30Support": "Your wallet does not support CIP-30 extensions.",
+ "walletNoCIP90FunctionsEnabled": "Your wallet did not enable the needed CIP-95 functions during connection.",
+ "dRep": {
+ "description": {
+ "notVerifiable": "GovTool uses external sources for DRep data, and these sources are maintained by the DReps themselves. This error means that the data stored by the DRep does not match the data supplied by the DRep when they originally registered",
+ "dataMissing": "GovTool uses external sources for DRep data, and these sources are maintained by the DReps themselves. This error means that GovTool cannot locate the data on the URL specified when the DRep was originally registered.",
+ "incorrectFormat": "GovTool uses external sources for DRep data, and these sources are maintained by the DReps themselves. This error means that the data stored by the DRep does not match the format defined by the DRep spec."
+ },
+ "message": {
+ "notVerifiable": "The data that was originally used when this DRep was created has changed.",
+ "dataMissing": "The data that was originally used when this DRep was created has not been found.",
+ "incorrectFormat": "The data that was originally used when this DRep was created has been formatted incorrectly."
+ }
+ },
+ "gAMetadata": {
+ "description": {
+ "notVerifiable": "GovTool uses external sources for Governance Action data, and these sources are maintained by the proposers of the Actions. This error means that the data stored by the Proposer does not match the data when the Governance Action was originally posted.",
+ "dataMissing": "GovTool uses external sources for Governance Action data, and these sources are maintained by the proposers of the Actions. This error means that GovTool cannot locate the data on the URL specified when the Governance Action was originally posted.",
+ "incorrectFormat": "GovTool uses external sources for Governance Action data, and these sources are maintained by the proposers of the Actions. This error means that the data stored by the Proposer does not match the data format as defined by the Cardano community."
+ },
+ "message": {
+ "notVerifiable": "The data that was originally used when this Governance Action was created has changed.",
+ "dataMissing": "The data that was originally used when this Governance Action was created has not been found.",
+ "incorrectFormat": "The data that was originally used when this Governance Action was created has been formatted incorrectly."
+ },
+ "title": {}
+ }
+ },
+ "footer": {
+ "copyright": "© 2024 Intersect MBO",
+ "privacyPolicy": "Privacy policy",
+ "termOfService": "Terms of Use"
+ },
+ "forms": {
+ "link": "Link",
+ "createGovernanceAction": {
+ "typeLabel": "Governance Action Type",
+ "typeTip": "To change the Governance Action Type go back to the previous page."
+ },
+ "dRepData": {
+ "givenName": "DRep Name",
+ "givenNameHelpfulText": "This is the name that will be shown on your DRep profile",
+ "objectives": "Objectives",
+ "objectivesHelpfulText": "What you believe and what you want to achieve as a DRep.",
+ "motivations": "Motivations",
+ "motivationsHelpfulText": "Why do you want to be a DRep, what personal and professional experiences do you want to share.",
+ "qualifications": "Qualifications",
+ "qualificationsHelpfulText": "List any qualifications that are relevant to your role as a DRep",
+ "paymentAddress": "Payment Address",
+ "paymentAddressHelpfulText": "An address for DReps to receive payments. Only one address can be entered.",
+ "doNotList": "Do Not List",
+ "doNotListHelpfulText": "Check this box if you do not want to be listed in DRep directories/compilations. If you tick this, you will not have a listing in the DRep listing on GovTool.",
+ "referenceTypes": {
+ "link": {
+ "title": "Links",
+ "description": "Links to social media or any other web URL that gives a fuller picture of who you are, what you stand for, and why."
+ },
+ "identity": {
+ "title": "Identity",
+ "description": "Identity links are a way to prove you are who you say you are. Ideally, you will provide a link to a place that shows your DRep ID clearly. The limit is 8 links in total."
+ }
+ },
+ "references": "References",
+ "referenceDescription": "Description",
+ "referenceDescriptionHelpfulText": "Limit: 80 characters",
+ "referenceURL": "URL"
+ },
+ "errors": {
+ "tooLongUrl": "Url must be less than 128 bytes",
+ "mustBeStakeAddress": "It must be reward address in bech32 format",
+ "mustBeReceivingAddress": "Invalid payment address"
+ }
+ },
+ "proposalDiscussion": {
+ "title": "Proposals",
+ "proposeAGovernanceAction": "Propose a Governance Action"
+ },
+ "govActions": {
+ "about": "About",
+ "abstract": "Abstract",
+ "backToGovActions": "Back to Governance Actions",
+ "castVote": "<0>You voted {{vote}} on this proposal0>\non {{date}} (Epoch {{epoch}})",
+ "castVoteDeadline": "You can change your vote up to {{date}} (Epoch {{epoch}})",
+ "changeVote": "Change vote",
+ "changeYourVote": "Change your vote",
+ "chooseHowToVote": "Choose how you want to vote:",
+ "contextAboutYourVote": "Context about your vote",
+ "dataMissing": "Data Missing",
+ "dataMissingTooltipExplanation": "Please click “View Details” for more information.",
+ "details": "Governance Details:",
+ "expiresDateWithEpoch": "Expires: <0>{{date}}0> <1>(Epoch {{epoch}})1>",
+ "expiryDate": "Expiry date:",
+ "filterTitle": "Governance Action Type",
+ "forGovAction": "for this Governance Action",
+ "dReps": "DReps",
+ "sPos": "SPOs",
+ "ccCommittee": "Constitutional Committee",
+ "governanceActionId": "Governance Action ID:",
+ "cip129GovernanceActionId": "(CIP-129) Governance Action ID:",
+ "governanceActionType": "Governance Action Type:",
+ "goToVote": "Go to Vote",
+ "membersToBeRemovedFromTheCommittee": "Members to be removed from the Committee",
+ "membersToBeAddedToTheCommittee": "Members to be added to the Committee",
+ "changeToTermsOfExistingMembers": "Change to terms of existing members",
+ "changeToTermsEpochs": "To {{epochTo}} epoch {{epochFrom}} epoch",
+ "newThresholdValue": "New threshold value",
+ "protocolParamsDetails": {
+ "existing": "Existing",
+ "proposed": "Proposed"
+ },
+ "hardforkDetails": {
+ "currentVersion": "Current version",
+ "proposedVersion": "Proposed version",
+ "previousGAId": "Previous Governance Action ID"
+ },
+ "motivation": "Motivation",
+ "myVote": "My Vote:",
+ "noResultsForTheSearch": "No results for the search.",
+ "onChainTransactionDetails": "On-chain Transaction Details",
+ "optional": "(optional)",
+ "provideContext": "Provide context",
+ "provideContextAboutYourVote": "Provide context about your vote",
+ "provideNewContextAboutYourVote": "Provide new context about your vote",
+ "rationale": "Rationale",
+ "seeExternalData": "See external data",
+ "selectDifferentOption": "Select a different option to change your vote",
+ "showVotes": "Show votes",
+ "submissionDate": "Submission date:",
+ "submittedDateWithEpoch": "Submitted: <0>{{date}}0> <1>(Epoch {{epoch}})1>",
+ "supportingLinks": "Supporting links",
+ "threshold": "THRESHOLD",
+ "title": "Governance Actions",
+ "toVote": "To vote",
+ "viewDetails": "View Details",
+ "viewDetailsAndVote": "View Details and Vote",
+ "viewOtherDetails": "View other details",
+ "viewProposalDetails": "View proposal details",
+ "vote": "Vote",
+ "voteContextFileName": "Vote_Context.jsonld",
+ "votedOnByMe": "Voted on by me",
+ "voteOnGovActions": "Vote on Governance Action",
+ "voteSubmitted": "Votes submitted",
+ "voteTransaction": "Vote transaction",
+ "votes": "Votes:",
+ "votesSubmitted": "DRep votes submitted",
+ "votesSubmittedOnChain": "Votes submitted on-chain by DReps and predefined voting options.",
+ "youCanProvideContext": "You can provide context about your vote. This information will be viewable by other users.",
+ "youHaventVotedYet": "You haven't voted on any Governance Actions yet. Check the 'To vote on' section to vote on Governance Actions.",
+ "withCategoryNotExist": {
+ "partOne": "Governance actions with category",
+ "optional": "and search phrase",
+ "partTwo": "don't exist."
+ },
+ "withIdNotExist": {
+ "partOne": "Governance action with id",
+ "partTwo": "does not exist."
+ },
+ "tooltips": {
+ "info": "An action that doesn't have any on-chain impact except for being recorded on-chain.",
+ "treasury": "Treasury withdrawals are sub-categorized into small, medium, or large and are determined by the amount of lovelace to be withdrawn."
+ },
+ "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 to start",
+ "description": "Cardano Governance lets Ada holders have a say in the network's future.\n\nYou can vote directly, find someone to represent you, or become a representative for others.\n\nYou can also propose changes in the network yourself, put these up for discussion and eventually, a vote.\n\n<0>Learn more about governance0> in the guide, or have a look around the app and see Cardano Governance in action.",
+ "headline": "Cardano \n Governance Tool"
+ },
+ "home": {
+ "cards": {
+ "delegate": {
+ "description": "Find a DRep to vote on your behalf.",
+ "firstButtonLabel": "View DRep Directory",
+ "title": "Delegate your Voting Power"
+ },
+ "governanceActions": {
+ "description": "See all the Governance Actions submitted on chain. ",
+ "firstButtonLabel": "View Governance Actions",
+ "title": "View Governance Actions"
+ },
+ "proposeAGovernanceAction": {
+ "description": "Submit your proposal for a Governance Action.",
+ "secondButtonLabel": "View Proposals",
+ "firstButtonLabel": "Connect to Propose",
+ "title": "Propose a Governance Action"
+ },
+ "registerAsDRep": {
+ "description": "Accept delegated voting power from other Ada holders, and combine it with your own voting power. Vote with the accumulated Power on Governance Actions.",
+ "firstButtonLabel": "Connect to Register",
+ "title": "Become a DRep"
+ },
+ "registerAsDirectVoter": {
+ "description": "Vote on Governance Actions using your own voting power",
+ "firstButtonLabel": "Connect to Register",
+ "title": "Become a Direct Voter"
+ }
+ }
+ },
+ "menu": {
+ "faqs": "FAQs",
+ "guides": "Guides",
+ "help": "Help"
+ },
+ "metadataUpdate": {
+ "description": "You can include extra information about yourself by adding a URL and its hash.",
+ "info": "Update Information",
+ "title": "Update DRep Metadata"
+ },
+ "modals": {
+ "common": {
+ "goToDashboard": "Go to Dashboard",
+ "oops": "Oops!"
+ },
+ "createGovernanceAction": {
+ "cancelModalDescription": "Returning to the Dashboard will cancel your submission and your proposed Governance Action will not be submitted.",
+ "cancelModalTitle": "Do you want to Cancel your Governance Action submission?"
+ },
+ "delegation": {
+ "message": "The confirmation of your actual delegation might take a bit of time but you can track it using",
+ "title": "Delegation Transaction Submitted!"
+ },
+ "externalDataDoesntMatch": {
+ "buttonText": "Go to Data Edit Screen",
+ "cancelRegistrationText": "Cancel Registration",
+ "feedbackText": "Feedback",
+ "message": "GovTool checks the URL you entered to see if the JSON file that you self-host matches the one that was generated in GovTool. To complete registration, this match must be exact.\n\nIn this case, there is a mismatch. You can go back to the data edit screen and try the process again.",
+ "title": "Your External Data Does Not Match the Original File."
+ },
+ "externalLink": {
+ "beCareful": "Be Careful!",
+ "continueTo": "Continue to external link",
+ "description": "Exercise caution and verify the website's authenticity before sharing personal information. To proceed, click 'Continue'. To stay on Cardano, click 'Cancel'.",
+ "safety": "External Link Safety",
+ "thisIs": "This is an external link:",
+ "youAreAboutToOpen": "You are about to open an external link to:"
+ },
+ "registration": {
+ "cancelTitle": "Do You Want to Abandon Registration ?",
+ "cancelDescription": "If you return to the Dashboard, your information will not be saved.",
+ "message": "The confirmation of your registration might take a bit of time but you can track it using",
+ "title": "Registration Transaction Submitted!"
+ },
+ "retirement": {
+ "message": "The confirmation of your retirement might take a bit of time but you can track it using",
+ "title": "Retirement Transaction Submitted!"
+ },
+ "urlCannotBeFound": {
+ "buttonText": "Go to Data Edit Screen",
+ "cancelRegistrationText": "Cancel Registration",
+ "feedbackText": "Feedback",
+ "linkText": "Learn More about self-hosting",
+ "message": "GovTool cannot find the URL that you entered. Please check it and re-enter.",
+ "title": "The URL You Entered Cannot Be Found"
+ },
+ "votingPower": {
+ "govActionsVotes": "Governance Action votes",
+ "votesSubmittedByDReps": "Votes submitted by DReps",
+ "yourVote": "Your vote"
+ },
+ "waitForTransaction": {
+ "title": "Please wait for your previous transaction to be completed.",
+ "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."
+ }
+ },
+ "dRepData": {
+ "aboutYou": "About You",
+ "dRepName": "Name",
+ "dRepNameDescription": "This is the name that will be displayed in the DRep Directory and it will be used also by delegators to find your profile.",
+ "optional": "optional",
+ "required": "required"
+ },
+ "editMetadata": {
+ "pageTitle": "Edit DRep Info",
+ "storeDataCheckboxLabel": "I agree to store correctly this information and to maintain them over the years",
+ "storeDataLink": "Learn more about storing information",
+ "storeDataTitle": "Store and maintain the data yourself",
+ "storingInformationDescription": "Download your file, save it to your chosen location, and enter the URL of that location in step 3",
+ "storingInformationStep1Label": "Download this file",
+ "storingInformationStep2Label": "Save this file in a location that provides a public URL (e.g. github)",
+ "storingInformationStep2Link": "Read full guide",
+ "storingInformationStep3Label": "Paste the URL here",
+ "storingInformationTitle": "Information Storage Steps",
+ "storingInformationURLPlaceholder": "URL",
+ "fields": {
+ "validations": {
+ "maxLength": "Max {{maxLength}} characters",
+ "required": "This field is required",
+ "url": "Invalid URL"
+ }
+ }
+ },
+ "registration": {
+ "addInformationDescription": "You can include extra information about yourself by adding a URL and its hash.",
+ "addInformationTitle": "Add Information",
+ "alreadyRegistered": {
+ "title": "You already are a DRep",
+ "description": "Looks like you have already successfully completed your registration and you currently are a DRep.\n\nYou can view your details in the DRep Directory.",
+ "viewDetails": "View your DRep details"
+ },
+ "becomeADRep": "Become a DRep",
+ "descriptionStepTwo": "By clicking register you create your DRep ID within your wallet and become a DRep.\n\nOnce the registration has completed your DRep ID will be shown on your dashboard. You will be able to share your DRep ID so that other ada holders can delegate their voting power to you.",
+ "headingStepTwo": "Confirm DRep registration",
+ "register": "Register",
+ "rolesAndResponsibilitiesDescription": "DReps are fundamental users that govern the Cardano network. This is an important role which requires work and dedication to fulfil.\n\nA DRep is expected to actively participate in governance and act as a representative of other Cardano members in governance matters. Therefore, DReps will be expected to keep abreast of Governance Actions so they can make informed and wise decisions.\n<0>Learn More0> about DRep.\n\nPlease register as a DRep if you have time to dedicate to making Cardano a better and more well-governed place.\n\nBecoming a DRep will require a refundable deposit of ₳{{deposit}} .\n\nYou will be refunded your deposit when you retire.",
+ "rolesAndResponsibilitiesTitle": "Roles & Responsibilities",
+ "storeDataCheckboxLabel": "I agree to store correctly this information and to maintain them over the years",
+ "storeDataLink": "Learn more about storing information",
+ "storeDataTitle": "Store and maintain the data yourself",
+ "storingInformationDescription": "Download your file, save it to your chosen location, and enter the URL of that location in step 3",
+ "storingInformationStep1Label": "Download this file",
+ "storingInformationStep2Label": "Save this file in a location that provides a public URL (e.g. github)",
+ "storingInformationStep2Link": "Read full guide",
+ "storingInformationStep3Label": "Paste the URL here",
+ "storingInformationTitle": "Information Storage Steps",
+ "storingInformationURLPlaceholder": "URL",
+ "fields": {
+ "validations": {
+ "maxLength": "Max {{maxLength}} characters",
+ "required": "This field is required",
+ "url": "Invalid URL",
+ "noSpaces": "No spaces allowed"
+ }
+ }
+ },
+ "retirement": {
+ "notADRep": {
+ "title": "You are not a DRep",
+ "description": "Looks like you cannot retire, because currently you are not a DRep."
+ },
+ "continue": "Continue to Retirement",
+ "retireAsDrep": "Retire as a Drep",
+ "whatRetirementMeansTitle": "What Retirement Means",
+ "whatRetirementMeansDescription": "By retiring you are giving up your voting rights. Voting Power that is delegated to you will remain in place.\n\nADA Holders that have delegated to be able to see that you are retired in the DRep directory. They will be able to re-delegate their Voting Power to another DRep.\n\nYou can still participate in Governance by proposing Governance Actions, by delegating your personal Voting Power to another DRep, or by coming out of retirement, and assuming your previous role as a DRep.\n\nIf you come out of retirement, your DRep ID will be the same as it was before retirement, and your Voting Power will consist of your own Ada balance and what delegated power that remains associated\nto your DRep ID."
+ },
+ "slider": {
+ "showAll": "Show All",
+ "viewAll": "View all"
+ },
+ "directVoter": {
+ "alreadyRegistered": {
+ "title": "You already are a Direct Voter",
+ "description": "Looks like you have already successfully completed your registration and you currently are a Direct Voter."
+ },
+ "becomeDirectVoter": "Become a Direct Voter",
+ "notDirectVoter": {
+ "title": "You are not a Direct Voter",
+ "description": "Looks like you cannot retire, because currently you are not a Direct Voter."
+ },
+ "registerDescription": "A Direct Voter is someone that can vote on any Governance Action with their own Voting Power. They do not wish to campaign for delegations from others or be shown via the DRep Directory. <0>Learn More0> about Direct Voter.\n\nDirect Voters are not explicitly supported by the protocol but are instead an abstraction over the on-chain DReps. Direct Voters are not expected to link and host metadata.\n\nBecoming a Direct Voter will require a refundable deposit of ₳{{deposit}} . Your deposit will be refunded if you retire. You can decide to become a DRep at anytime if you are a Direct Voter you will not need to pay another deposit.",
+ "registerHeading": "What this Means",
+ "retirementDescription": "By Retiring you are giving up your Voting Power. You will not be able to vote on any Governance Actions. Your deposit of {{deposit}} ada will be refunded.\n\nYou can at any time in the future re-register to become a Direct Voter, or you can delegate your Voting Power to someone else, or become a DRep.\n\nThese options are listed in our Guides here: <0>Voting options and Roles0>",
+ "retirementHeading": "What Retirement Means",
+ "retireDirectVoter": "Retire as a Direct Voter"
+ },
+ "system": {
+ "description": "The Cardano GovTool is a tool that allows you to participate in the governance of the Cardano network. You can propose, vote on, and delegate your voting power to other users.",
+ "title": "This tool is connected to {{networkName}}",
+ "bootstrappingWarning": "Govtool is in the Bootstrapping phase. Some features are not available. Learn more "
+ },
+ "tooltips": {
+ "delegateTodRep": {
+ "abstain": {
+ "heading": "Abstaining",
+ "paragraphOne": "Select this to signal no confidence in the current constitutional committee by voting NO on every proposal and voting YES to no-confidence proposals."
+ },
+ "noConfidence": {
+ "heading": "No confidence",
+ "paragraphOne": "If you don’t have trust in the current constitutional committee you signal ‘No-confidence’. By voting ‘No’ means you don’t want governance actions to be ratified."
+ },
+ "todRep": {
+ "heading": "Delegation to DRep",
+ "paragraphOne": "DReps are representatives of the ada holders that can vote on governance actions."
+ },
+ "toMyself": {
+ "heading": "Delegate to myself",
+ "paragraphOne": "If you are registered as DRep you can delegate your voting power on yourself."
+ }
+ },
+ "expiryDate": {
+ "heading": "Expiry Date",
+ "paragraphOne": "The date when the governance action will expiry if it doesn’t reach ratification thresholds.",
+ "paragraphTwo": "IMPORTANT: If the governance action is ratified before the expiry date it will be considered ratified and it will not be available to vote on afterwards."
+ },
+ "submissionDate": {
+ "heading": "Submission Date",
+ "paragraphOne": "The date when the governance action was submitted on-chain."
+ },
+ "votingPower": {
+ "heading": "DRep Voting Power",
+ "paragraphOne": "This is the voting power delegated to you as a DRep and it is calculated at the end of every epoch for the epoch that just ended.",
+ "paragraphTwo": "IMPORTANT: When voting, the voting power provides an indication and not the exact number."
+ }
+ },
+ "wallet": {
+ "cantSeeWalletQuestion": "Can’t see your wallet? Check what wallets are currently compatible with GovTool ",
+ "chooseWallet": "Choose the wallet you want to connect with:",
+ "connect": "Connect",
+ "connectWallet": "Connect Wallet",
+ "connectYourWallet": "Connect your Wallet",
+ "connectYourWalletButton": "Connect your wallet",
+ "connectedWallet": "Connected Wallet:",
+ "disconnect": "Disconnect",
+ "noWalletsToConnect": "You don't have wallets to connect, install a wallet and refresh the page and try again",
+ "pickStakeKey": "Pick Stake Key",
+ "selectStakeKey": "Select the stake key you want to use:"
+ },
+ "warnings": {
+ "usingUnregisteredStakeKeys": "Warning, no registered stake keys, using unregistered stake keys"
+ },
+ "dataMissingErrors": {
+ "dataMissing": "Data Missing",
+ "notVerifiable": "Data Not Verifiable",
+ "incorrectFormat": "Data Formatted Incorrectly"
+ },
+ "votes": {
+ "abstain": "Abstain",
+ "constitutional": "Constitutional",
+ "no": "No",
+ "unconstitutional": "Unconstitutional",
+ "yes": "Yes"
+ },
+ "usefulLinks": {
+ "title": "Useful links",
+ "ccPortal": {
+ "title": "Check the Constitutional Committee Portal",
+ "description": "See Interim Cardano Constitution and Constitutional committee votes rationales",
+ "link": "CC Portal"
+ },
+ "intersectWebsite": {
+ "title": "Intersect website",
+ "description": "Intersect is a member-based organization for the Cardano ecosystem — putting the community at the center of Cardano’s development",
+ "link": "Intersect website"
+ }
+ },
+ "about": "About",
+ "addLink": "+ Add link",
+ "back": "Back",
+ "backToDashboard": "Back to dashboard",
+ "backToList": "Back to the list",
+ "cancel": "Cancel",
+ "clear": "Clear",
+ "clickToCopyLink": "Click to copy link",
+ "close": "Close",
+ "confirm": "Confirm",
+ "connectToDelegate": "Connect to delegate",
+ "continue": "Continue",
+ "copiedLink": "Copied link",
+ "delegate": "Delegate",
+ "drepId": "DRep ID",
+ "email": "Email",
+ "feedback": "Feedback",
+ "filter": "Filter",
+ "goBack": "Go back",
+ "goToMainnet": "Go to Mainnet",
+ "here": "here",
+ "info": "Info",
+ "inProgress": "In Progress",
+ "learnMore": "Learn more",
+ "linkCopied": "Link copied",
+ "loading": "Loading...",
+ "moreInformation": "More information",
+ "myDRepId": "My DRep ID:",
+ "nextStep": "Next step",
+ "network": "Network",
+ "ok": "Ok",
+ "optional": "Optional",
+ "register": "Register",
+ "required": "required",
+ "seeTransaction": "See transaction",
+ "select": "Select",
+ "share": "Share",
+ "showLess": "Show less",
+ "showMore": "Show more",
+ "skip": "Skip",
+ "sort": "Sort",
+ "sortBy": "Sort by",
+ "status": "Status",
+ "submit": "Submit",
+ "thisLink": "this link",
+ "viewDetails": "View details",
+ "votingPower": "Voting power",
+ "yourself": "Yourself"
+}
diff --git a/govtool/frontend/src/i18n/locales/en.ts b/govtool/frontend/src/i18n/locales/en.ts
deleted file mode 100644
index 1ec149052..000000000
--- a/govtool/frontend/src/i18n/locales/en.ts
+++ /dev/null
@@ -1,874 +0,0 @@
-export const en = {
- translation: {
- alerts: {
- delegate: {
- failed: "Delegation transaction failed",
- warning:
- "Your voting power has been successfully delegated! Please refresh the page.",
- success: "Your voting power has been successfully delegated!",
- },
- createGovAction: {
- failed: "Creating Governance Action transaction failed",
- success: "Your Governance Action has been submitted",
- },
- registerAsDrep: {
- failed: "Registration transaction failed",
- warning:
- "You have successfully registered as a DRep! Please refresh the page.",
- success: "You have successfully registered as a DRep!",
- },
- registerAsDirectVoter: {
- failed: "Registration transaction failed",
- warning:
- "You have successfully registered as a Direct Voter! Please refresh the page.",
- success: "You have successfully registered as a Direct Voter!",
- },
- retireAsDrep: {
- failed: "Retirement transaction failed",
- warning:
- "You have successfully retired from being a DRep! Please refresh the page.",
- success: "You have successfully retired from being a DRep!",
- },
- retireAsDirectVoter: {
- failed: "Retirement transaction failed",
- warning:
- "You have successfully retired from being a Direct Voter! Please refresh the page.",
- success: "You have successfully retired from being a DirectVoter!",
- },
- updateMetaData: {
- failed: "Update DRep metadata transaction failed",
- success: "You have successfully updated DRep metadata!",
- },
- vote: {
- failed: "Vote transaction failed",
- success: "You have successfully voted!",
- },
- changesSaved: "Your changes have been saved",
- copiedToClipboard: "Copied to clipboard",
- transactionInProgress: "Transaction in progress. Please wait.",
- walletConnected: "Wallet connected",
- },
- dashboard: {
- headingOne: "Your Participation",
- headingTwo: "See Active Governance Actions",
- title: "Dashboard",
- cards: {
- drepName: "Drep_name",
- showTransaction: "Show Transaction",
- drep: {
- changeMetadata: "Change metadata",
- dRepRegistration: "DRep Registration",
- dRepRetirement: "DRep Retirement",
- dRepUpdate: "DRep Update",
- holdersCanDelegate:
- "Ada holders can delegate their voting power to you.",
- ifYouWant:
- "If you want to directly participate in voting and have other ada holders delegate their voting power to you.",
- metadataUpdateInProgress:
- "The update DRep metadata is ongoing. This may take several minutes.",
- notRegisteredDescription:
- "Accept delegated voting power from other Ada holders, and combine it with your own voting power. Vote with the accumulated Power on Governance Actions.",
- notRegisteredTitle: "Become a DRep",
- notRegisteredWasRegisteredDescriptionWithGivenName:
- "You are now retired and your listing in the DRep directory as {{givenName}} has been marked as retired . You cannot vote on Governance Actions as {{givenName}} .\n\nYou can always re-register as a DRep, in which case you will have the same DRep ID as you had initially.",
- notRegisteredWasRegisteredDescription:
- "You are now retired and your listing in the DRep directory has been marked as retired . You cannot vote on Governance Actions.\n\nYou can always re-register as a DRep, in which case you will have the same DRep ID as you had initially.",
- notRegisteredWasRegisteredTitle: "You Have Retired as a DRep.",
- register: "Register",
- registerAgain: "Register Again as a dRep",
- registerAsDRep: "Register as a DRep",
- registeredDescription:
- "You can Vote using your own Voting Power combined with any Voting Power delegated to you.",
- registeredTitle: "You are Registered as a DRep",
- registrationInProgress:
- "The registration process is ongoing. This may take several minutes.",
- reRegister: "Re-register as a DRep",
- retire: "Retire as a DRep",
- retirementInProgress:
- "You are being retired. You will receive a refund of {{deposit}} ada when the transaction completes.",
- retirementInProgressWithGivenName:
- "You are being retired as {{givenName}} . You will receive a refund of {{deposit}} ada when the transaction completes.",
- viewDetails: "View your DRep details",
- youAreRegistered: "You are Registered as a DRep",
- yourDRepId: "Your DRep ID",
- },
- govActions: {
- description: "Review governance actions submitted on-chain.",
- reviewAndVote: "Review and vote",
- title: "View Governance Actions",
- },
- proposeGovernanceAction: {
- title: "Propose a Governance Action",
- description: "Submit your proposal for a Governance Action.",
- propose: "Propose",
- view: "View Governance Actions",
- },
- directVoter: {
- isRegisteredDescription:
- "Your Voting Power can be used to vote.",
- register: "Register",
- registerDescription:
- "Register to Vote on Governance Actions using your own voting power of ₳{{votingPower}} .",
- registerTitle: "Become a Direct Voter",
- reRegister: "Re-register",
- registration: "Direct Voter Registration",
- registrationInProgress:
- "The registration process is ongoing. This may take several minutes.",
- retire: "Retire",
- wasDirectVoterTitle: "You Have Retired as a Direct Voter",
- retirement: "Direct Voter Retirement",
- retirementInProgress:
- "The retirement process is ongoing. This may take several minutes.",
- wasRegisteredDescription:
- "You cannot vote on Governance Actions using your own voting power until you re-register.",
- youAreDirectVoterTitle: "You are a Direct Voter",
- },
- 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 is delegated to:",
- noConfidenceDelegationTitle:
- "You have delegated your voting power to “No Confidence”",
- abstainDelegationTitle:
- "You have delegated your voting power to “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 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.",
- },
- },
- },
- },
- createGovernanceAction: {
- chooseGATypeTitle: "Choose a Governance Action type",
- creatingAGovernanceAction:
- "Creating a Governance Action: What you need to know",
- creatingAGovernanceActionDescription:
- "To create a Governance Action, you will need to:\n\n• Fill out a form with the relevant data\n• Pay a refundable deposit of ₳{{deposit}} \n• Store the metadata of your Governance Action at your own expense.\n\nYour deposit will be refunded to your wallet when the Governance Action is either enacted or expired.\n\nThe deposit will not affect your Voting Power.",
- editSubmission: "Edit submission",
- fields: {
- declarations: {
- abstract: {
- label: "Abstract",
- placeholder: "Summary",
- tip: "General summary of the Action",
- },
- amount: {
- label: "Amount",
- placeholder: "e.g. 20000",
- },
- motivation: {
- label: "Motivation",
- placeholder: "Problem this GA will solve",
- tip: "How will this solve a problem",
- },
- rationale: {
- label: "Rationale",
- placeholder: "Content of Governance Action",
- tip: "Put all the content of the GA here",
- },
- receivingAddress: {
- label: "Receiving Address",
- placeholder: "The address to receive funds",
- },
- title: {
- label: "Title",
- placeholder: "A name for this Action",
- },
- },
- validations: {
- bech32: "Invalid bech32 address",
- maxLength: "Max {{maxLength}} characters",
- number: "Only number is allowed",
- required: "This field is required",
- url: "Invalid URL",
- positive: "Only positive number is allowed",
- },
- },
- formTitle: "Governance Action details",
- references: "References and Supporting Information",
- reviewSubmission: "Review your submission",
- storeDataCheckboxLabel:
- "I agree to store correctly this information and to maintain them over the years",
- storeDataLink: "Learn more about storing information",
- storeDataTitle: "Store and Maintain the Data Yourself",
- storingInformationDescription:
- "Download your file, save it to your chosen location, and enter the URL of that location in step 3",
- storingInformationStep1Label: "Download this file",
- storingInformationStep2Label:
- "Save this file in a location that provides a public URL (ex. github)",
- storingInformationStep2Link: "Read full guide",
- storingInformationStep3Label: "Paste the URL here",
- storingInformationTitle: "Information Storage Steps",
- storingInformationURLPlaceholder: "URL",
- supportingLinks: "Supporting links",
- title: "Create a Governance Action",
- modals: {
- submitTransactionSuccess: {
- message:
- "Your Governance Action may take a little time to submit to the chain.",
- title: "Governance Action submitted!",
- },
- },
- },
- delegation: {
- description:
- "You can delegate your voting power to a DRep or to a pre-defined voting option.",
- dRepIdDescription: "The DRep ID is the identifier of a DRep.",
- heading: "Use your Voting Power",
- otherOptions: "Other options",
- pasteDRepId: "Paste DRep ID",
- votingPowerToDelegate: "Voting power to delegate:",
- whereFindDRepId: "The DRep ID is the identifier of a DRep.",
- abstain: {
- subtitle: "Select this to vote ABSTAIN to every vote.",
- title: "Vote ABSTAIN as default",
- },
- noConfidence: {
- subtitle:
- "Select this to signal no confidence in the current constitutional committee by voting NO on every proposal and voting YES to no-confidence proposals.",
- title: "Signal no confidence",
- },
- toDRep: {
- subtitle:
- "Select this to delegate to a DRep using their related DRep ID.",
- title: "Delegate to DRep",
- },
- toMyself: {
- subtitle: "Select this to delegate your own voting power to yourself.",
- title: "Delegate to myself",
- },
- },
- dRepDirectory: {
- abstainCardDefaultDescription:
- "Select this to vote ABSTAIN to every vote.",
- abstainCardDefaultTitle: "Abstain from Every Vote",
- automatedVotingOptions: "Automated Voting Options",
- editBtn: "Edit DRep data",
- delegatedToAbstainTitle: "You have delegated your voting power to “Abstain”",
- delegatedToNoConfidenceTitle:
- "You have delegated your voting power to “No Confidence”",
- delegatedToAbstainDescription:
- "You have selected to apply your Voting Power to Abstain on every vote.",
- delegatedToNoConfidenceDescription:
- "You have selected to apply your Voting Power to No Confidence on every vote.",
- delegationOptions: "Delegation Options",
- directVoter: "Direct Voter",
- filterTitle: "DRep Status",
- goToDRepDirectory: "Go to DRep Directory",
- meAsDRep: "This DRep ID is connected to your wallet",
- myDelegation: "You have delegated your voting power to:",
- myDRep: "You have delegated your voting power to this DRep.",
- listTitle: "Find a DRep",
- noConfidenceDefaultDescription:
- "Select this to signal no confidence in the current constitutional committee by voting NO on every proposal and voting YES to no confidence proposals",
- noConfidenceDefaultTitle: "Signal No Confidence on Every Vote",
- noResultsForTheSearchTitle: "No DReps found",
- noResultsForTheSearchDescription: "Please try a different search",
- title: "DRep Directory",
- votingPower: "Voting Power",
- },
- errorPage: {
- backToDashboard: "Back to dashboard",
- backToHomepage: "Back to homepage",
- error: "Error ",
- serverError: "We have an internal server error.",
- whoops: "Whoops!",
- },
- errors: {
- appCannotCreateTransaction: "Application can not create transaction.",
- appCannotGetDeposit: "Can not fetch deposit",
- appCannotGetUtxos: "Application can not get utxos",
- appCannotGetVkeys: "Application can not get vkey",
- checkIsWalletConnected: "Check if the wallet is connected.",
- dRepIdNotFound: "DrepId not found",
- insufficientBalanceDescription:
- "To submit a Governance Action, you will be required to post a refundable balance of ₳{{ada}}. You do not currently have enough ada in your wallet to continue.",
- insufficientBalanceTitle: "Insufficient Balance",
- invalidGovernanceActionType: "Invalid Governance Action Type",
- invalidTreasuryGovernanceActionType: "Invalid Treasury Governance Action",
- noAddressesFound: "No addresses found",
- noStakeKeySelected: "No stake key selected",
- notUsingAnchor: "DRep Registration - not using anchor",
- registeringStakeKey: "Registering stake key",
- somethingWentWrong: "Something went wrong",
- tryingConnectTo:
- "You are trying to connect with a wallet connected to {{networkFrom}}. Please adjust your wallet settings to connect to {{networkTo}} or select a different wallet.",
- useCardano: "useCardano must be used within a CardanoProvider",
- walletNoCIP30Nor90Support:
- "Your wallet does not support the required CIP-30 extension, CIP-95.",
- walletNoCIP30Support: "Your wallet does not support CIP-30 extensions.",
- walletNoCIP90FunctionsEnabled:
- "Your wallet did not enable the needed CIP-95 functions during connection.",
- dRep: {
- description: {
- notVerifiable:
- "GovTool uses external sources for DRep data, and these sources are maintained by the DReps themselves. This error means that the data stored by the DRep does not match the data supplied by the DRep when they originally registered",
- dataMissing:
- "GovTool uses external sources for DRep data, and these sources are maintained by the DReps themselves. This error means that GovTool cannot locate the data on the URL specified when the DRep was originally registered.",
- incorrectFormat:
- "GovTool uses external sources for DRep data, and these sources are maintained by the DReps themselves. This error means that the data stored by the DRep does not match the format defined by the DRep spec.",
- },
- message: {
- notVerifiable:
- "The data that was originally used when this DRep was created has changed.",
- dataMissing:
- "The data that was originally used when this DRep was created has not been found.",
- incorrectFormat:
- "The data that was originally used when this DRep was created has been formatted incorrectly.",
- },
- },
- gAMetadata: {
- description: {
- notVerifiable:
- "GovTool uses external sources for Governance Action data, and these sources are maintained by the proposers of the Actions. This error means that the data stored by the Proposer does not match the data when the Governance Action was originally posted.",
- dataMissing:
- "GovTool uses external sources for Governance Action data, and these sources are maintained by the proposers of the Actions. This error means that GovTool cannot locate the data on the URL specified when the Governance Action was originally posted.",
- incorrectFormat:
- "GovTool uses external sources for Governance Action data, and these sources are maintained by the proposers of the Actions. This error means that the data stored by the Proposer does not match the data format as defined by the Cardano community.",
- },
- message: {
- notVerifiable:
- "The data that was originally used when this Governance Action was created has changed.",
- dataMissing:
- "The data that was originally used when this Governance Action was created has not been found.",
- incorrectFormat:
- "The data that was originally used when this Governance Action was created has been formatted incorrectly.",
- },
- title: {},
- },
- },
- footer: {
- copyright: "© 2024 Intersect MBO",
- privacyPolicy: "Privacy policy",
- termOfService: "Terms and Conditions",
- },
- forms: {
- link: "Link",
- createGovernanceAction: {
- typeLabel: "Governance Action Type",
- typeTip:
- "To change the Governance Action Type go back to the previous page.",
- },
- dRepData: {
- givenName: "DRep Name",
- givenNameHelpfulText:
- "This is the name that will be shown on your DRep profile",
- objectives: "Objectives",
- objectivesHelpfulText:
- "What you believe and what you want to achieve as a DRep.",
- motivations: "Motivations",
- motivationsHelpfulText:
- "Why do you want to be a DRep, what personal and professional experiences do you want to share.",
- qualifications: "Qualifications",
- qualificationsHelpfulText:
- "List any qualifications that are relevant to your role as a DRep",
- paymentAddress: "Payment Address",
- paymentAddressHelpfulText:
- "An address for DReps to receive payments. Only one address can be entered.",
- doNotList: "Do Not List",
- doNotListHelpfulText:
- "Check this box if you do not want to be listed in DRep directories/compilations. If you tick this, you will not have a listing in the DRep listing on GovTool.",
- referenceTypes: {
- link: {
- title: "Links",
- description:
- "Links to social media or any other web URL that gives a fuller picture of who you are, what you stand for, and why.",
- },
- identity: {
- title: "Identity",
- description:
- "Identity links are a way to prove you are who you say you are. Ideally, you will provide a link to a place that shows your DRep ID clearly. The limit is 8 links in total.",
- },
- },
- references: "References",
- referenceDescription: "Description",
- referenceDescriptionHelpfulText: "Limit: 80 characters",
- referenceURL: "URL",
- },
- errors: {
- tooLongUrl: "Url must be less than 128 bytes",
- mustBeStakeAddress: "It must be reward address in bech32 format",
- mustBeReceivingAddress: "Invalid payment address",
- },
- },
- proposalDiscussion: {
- title: "Proposals",
- proposeAGovernanceAction: "Propose a Governance Action",
- },
- govActions: {
- about: "About",
- abstract: "Abstract",
- backToGovActions: "Back to Governance Actions",
- castVote:
- "<0>You voted {{vote}} on this proposal0>\non {{date}} (Epoch {{epoch}})",
- castVoteDeadline:
- "You can change your vote up to {{date}} (Epoch {{epoch}})",
- changeVote: "Change vote",
- changeYourVote: "Change your vote",
- chooseHowToVote: "Choose how you want to vote:",
- contextAboutYourVote: "Context about your vote",
- dataMissing: "Data Missing",
- dataMissingTooltipExplanation:
- "Please click “View Details” for more information.",
- details: "Governance Details:",
- expiresDateWithEpoch: "Expires: <0>{{date}}0> <1>(Epoch {{epoch}})1>",
- expiryDate: "Expiry date:",
- filterTitle: "Governance Action Type",
- forGovAction: "for this Governance Action",
- dReps: "DReps",
- sPos: "SPOs",
- ccCommittee: "Constitutional Committee",
- governanceActionId: "Governance Action ID:",
- governanceActionType: "Governance Action Type:",
- goToVote: "Go to Vote",
- protocolParamsDetails: {
- existing: "Existing",
- proposed: "Proposed",
- },
- hardforkDetails: {
- currentVersion: "Current version",
- proposedVersion: "Proposed version",
- previousGAId: "Previous Governance Action ID",
- },
- motivation: "Motivation",
- myVote: "My Vote:",
- noResultsForTheSearch: "No results for the search.",
- onChainTransactionDetails: "On-chain Transaction Details",
- optional: "(optional)",
- provideContext: "Provide context",
- provideContextAboutYourVote: "Provide context about your vote",
- provideNewContextAboutYourVote: "Provide new context about your vote",
- rationale: "Rationale",
- seeExternalData: "See external data",
- selectDifferentOption: "Select a different option to change your vote",
- showVotes: "Show votes",
- submissionDate: "Submission date:",
- submittedDateWithEpoch:
- "Submitted: <0>{{date}}0> <1>(Epoch {{epoch}})1>",
- supportingLinks: "Supporting links",
- title: "Governance Actions",
- toVote: "To vote",
- viewDetails: "View Details",
- viewDetailsAndVote: "View Details and Vote",
- viewOtherDetails: "View other details",
- viewProposalDetails: "View proposal details",
- vote: "Vote",
- voteContextFileName: "Vote_Context.jsonld",
- votedOnByMe: "Voted on by me",
- voteOnGovActions: "Vote on Governance Action",
- voteSubmitted: "Votes submitted",
- voteTransaction: "Vote transaction",
- votes: "Votes:",
- votesSubmitted: "DRep votes submitted",
- votesSubmittedOnChain:
- "Votes submitted on-chain by DReps and predefined voting options.",
- youCanProvideContext:
- "You can provide context about your vote. This information will be viewable by other users.",
- youHaventVotedYet:
- "You haven't voted on any Governance Actions yet. Check the 'To vote on' section to vote on Governance Actions.",
- withCategoryNotExist: {
- partOne: "Governance actions with category",
- optional: "and search phrase",
- partTwo: "don't exist.",
- },
- withIdNotExist: {
- partOne: "Governance action with id",
- partTwo: "does not exist.",
- },
- tooltips: {
- info: "An action that doesn't have any on-chain impact except for being recorded on-chain.",
- treasury:
- "Treasury withdrawals are sub-categorized into small, medium, or large and are determined by the amount of lovelace to be withdrawn.",
- },
- 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 to start",
- description:
- "Cardano Governance lets Ada holders have a say in the network's future.\n\nYou can vote directly, find someone to represent you, or become a representative for others.\n\nYou can also propose changes in the network yourself, put these up for discussion and eventually, a vote.\n\n<0>Learn more about governance0> in the guide, or have a look around the app and see Cardano Governance in action.",
- headline: "Cardano \n Governance Tool",
- },
- home: {
- cards: {
- delegate: {
- description: "Find a DRep to vote on your behalf.",
- firstButtonLabel: "View DRep Directory",
- title: "Delegate your Voting Power",
- },
- governanceActions: {
- description: "See all the Governance Actions submitted on chain. ",
- firstButtonLabel: "View Governance Actions",
- title: "View Governance Actions",
- },
- proposeAGovernanceAction: {
- description: "Submit your proposal for a Governance Action.",
- secondButtonLabel: "View Proposals",
- firstButtonLabel: "Connect to Propose",
- title: "Propose a Governance Action",
- },
- registerAsDRep: {
- description:
- "Accept delegated voting power from other Ada holders, and combine it with your own voting power. Vote with the accumulated Power on Governance Actions.",
- firstButtonLabel: "Connect to Register",
- title: "Become a DRep",
- },
- registerAsDirectVoter: {
- description: "Vote on Governance Actions using your own voting power",
- firstButtonLabel: "Connect to Register",
- title: "Become a Direct Voter",
- },
- },
- },
- menu: {
- faqs: "FAQs",
- guides: "Guides",
- help: "Help",
- },
- metadataUpdate: {
- description:
- "You can include extra information about yourself by adding a URL and its hash.",
- info: "Update Information",
- title: "Update DRep Metadata",
- },
- modals: {
- common: {
- goToDashboard: "Go to Dashboard",
- oops: "Oops!",
- },
- createGovernanceAction: {
- cancelModalDescription:
- "Returning to the Dashboard will cancel your submission and your proposed Governance Action will not be submitted.",
- cancelModalTitle:
- "Do you want to Cancel your Governance Action submission?",
- },
- delegation: {
- message:
- "The confirmation of your actual delegation might take a bit of time but you can track it using",
- title: "Delegation Transaction Submitted!",
- },
- externalDataDoesntMatch: {
- buttonText: "Go to Data Edit Screen",
- cancelRegistrationText: "Cancel Registration",
- feedbackText: "Feedback",
- message:
- "GovTool checks the URL you entered to see if the JSON file that you self-host matches the one that was generated in GovTool. To complete registration, this match must be exact.\n\nIn this case, there is a mismatch. You can go back to the data edit screen and try the process again.",
- title: "Your External Data Does Not Match the Original File.",
- },
- externalLink: {
- beCareful: "Be Careful!",
- continueTo: "Continue to external link",
- description:
- "Exercise caution and verify the website's authenticity before sharing personal information. To proceed, click 'Continue'. To stay on Cardano, click 'Cancel'.",
- safety: "External Link Safety",
- thisIs: "This is an external link:",
- youAreAboutToOpen: "You are about to open an external link to:",
- },
- registration: {
- cancelTitle: "Do You Want to Abandon Registration ?",
- cancelDescription:
- "If you return to the Dashboard, your information will not be saved.",
- message:
- "The confirmation of your registration might take a bit of time but you can track it using",
- title: "Registration Transaction Submitted!",
- },
- retirement: {
- message:
- "The confirmation of your retirement might take a bit of time but you can track it using",
- title: "Retirement Transaction Submitted!",
- },
- urlCannotBeFound: {
- buttonText: "Go to Data Edit Screen",
- cancelRegistrationText: "Cancel Registration",
- feedbackText: "Feedback",
- linkText: "Learn More about self-hosting",
- message:
- "GovTool cannot find the URL that you entered. Please check it and re-enter.",
- title: "The URL You Entered Cannot Be Found",
- },
- votingPower: {
- govActionsVotes: "Governance Action votes",
- votesSubmittedByDReps: "Votes submitted by DReps",
- yourVote: "Your vote",
- },
- waitForTransaction: {
- title: "Please wait for your previous transaction to be completed.",
- 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.",
- },
- },
- dRepData: {
- aboutYou: "About You",
- dRepName: "Name",
- dRepNameDescription:
- "This is the name that will be displayed in the DRep Directory and it will be used also by delegators to find your profile.",
- optional: "optional",
- required: "required",
- },
- editMetadata: {
- pageTitle: "Edit DRep Info",
- storeDataCheckboxLabel:
- "I agree to store correctly this information and to maintain them over the years",
- storeDataLink: "Learn more about storing information",
- storeDataTitle: "Store and maintain the data yourself",
- storingInformationDescription:
- "Download your file, save it to your chosen location, and enter the URL of that location in step 3",
- storingInformationStep1Label: "Download this file",
- storingInformationStep2Label:
- "Save this file in a location that provides a public URL (ex. github)",
- storingInformationStep2Link: "Read full guide",
- storingInformationStep3Label: "Paste the URL here",
- storingInformationTitle: "Information Storage Steps",
- storingInformationURLPlaceholder: "URL",
- fields: {
- validations: {
- maxLength: "Max {{maxLength}} characters",
- required: "This field is required",
- url: "Invalid URL",
- },
- },
- },
- registration: {
- addInformationDescription:
- "You can include extra information about yourself by adding a URL and its hash.",
- addInformationTitle: "Add Information",
- alreadyRegistered: {
- title: "You already are a DRep",
- description:
- "Looks like you have already successfully completed your registration and you currently are a DRep.\n\nYou can view your details in the DRep Directory.",
- viewDetails: "View your DRep details",
- },
- becomeADRep: "Become a DRep",
- descriptionStepTwo:
- "By clicking register you create your DRep ID within your wallet and become a DRep.\n\nOnce the registration has completed your DRep ID will be shown on your dashboard. You will be able to share your DRep ID so that other ada holders can delegate their voting power to you.",
- headingStepTwo: "Confirm DRep registration",
- register: "Register",
- rolesAndResponsibilitiesDescription:
- "DReps are fundamental users that govern the Cardano network. This is an important role which requires work and dedication to fulfil.\n\nA DRep is expected to actively participate in governance and act as a representative of other Cardano members in governance matters. Therefore, DReps will be expected to keep abreast of Governance Actions so they can make informed and wise decisions.\n<0>Learn More0> about DRep.\n\nPlease register as a DRep if you have time to dedicate to making Cardano a better and more well-governed place.\n\nBecoming a DRep will require a refundable deposit of ₳{{deposit}} .\n\nYou will be refunded your deposit when you retire.",
- rolesAndResponsibilitiesTitle: "Roles & Responsibilities",
- storeDataCheckboxLabel:
- "I agree to store correctly this information and to maintain them over the years",
- storeDataLink: "Learn more about storing information",
- storeDataTitle: "Store and maintain the data yourself",
- storingInformationDescription:
- "Download your file, save it to your chosen location, and enter the URL of that location in step 3",
- storingInformationStep1Label: "Download this file",
- storingInformationStep2Label:
- "Save this file in a location that provides a public URL (ex. github)",
- storingInformationStep2Link: "Read full guide",
- storingInformationStep3Label: "Paste the URL here",
- storingInformationTitle: "Information Storage Steps",
- storingInformationURLPlaceholder: "URL",
- fields: {
- validations: {
- maxLength: "Max {{maxLength}} characters",
- required: "This field is required",
- url: "Invalid URL",
- noSpaces: "No spaces allowed",
- },
- },
- },
- retirement: {
- notADRep: {
- title: "You are not a DRep",
- description:
- "Looks like you cannot retire, because currently you are not a DRep.",
- },
- continue: "Continue to Retirement",
- retireAsDrep: "Retire as a Drep",
- whatRetirementMeansTitle: "What Retirement Means",
- whatRetirementMeansDescription:
- "By retiring you are giving up your voting rights. Voting Power that is delegated to you will remain in place.\n\nADA Holders that have delegated to be able to see that you are retired in the DRep directory. They will be able to re-delegate their Voting Power to another DRep.\n\nYou can still participate in Governance by proposing Governance Actions, by delegating your personal Voting Power to another DRep, or by coming out of retirement, and assuming your previous role as a DRep.\n\nIf you come out of retirement, your DRep ID will be the same as it was before retirement, and your Voting Power will consist of your own Ada balance and what delegated power that remains associated\nto your DRep ID.",
- },
- slider: {
- showAll: "Show All",
- viewAll: "View all",
- },
- directVoter: {
- alreadyRegistered: {
- title: "You already are a Direct Voter",
- description:
- "Looks like you have already successfully completed your registration and you currently are a Direct Voter.",
- },
- becomeDirectVoter: "Become a Direct Voter",
- notDirectVoter: {
- title: "You are not a Direct Voter",
- description:
- "Looks like you cannot retire, because currently you are not a Direct Voter.",
- },
- registerDescription:
- "A Direct Voter is someone that can vote on any Governance Action with their own Voting Power, which is equal to the balance of Ada in their connected wallet. <0>Learn More0> about Direct Voter.\n\nBecoming a Direct Voter will require a refundable deposit equal to your voting power.\n\nYour deposit will be refunded if you either retire or delegate your voting power to someone else (a DRep)",
- registerHeading: "What this Means",
- retirementDescription:
- "By Retiring you are giving up your Voting Power. You will not be able to vote on any Governance Actions. Your deposit of {{deposit}} ada will be refunded.\n\nYou can at any time in the future re-register to become a Direct Voter, or you can delegate your Voting Power to someone else, or become a DRep.\n\nThese options are listed in our Guides here: <0>Voting options and Roles0>",
- retirementHeading: "What Retirement Means",
- retireDirectVoter: "Retire as a Direct Voter",
- },
- system: {
- description:
- "The Cardano GovTool is a tool that allows you to participate in the governance of the Cardano network. You can propose, vote on, and delegate your voting power to other users.",
- title: "This tool is connected to {{networkName}}",
- bootstrappingWarning:
- "Govtool is in the Bootstrapping phase. Some features are not available. Learn more ",
- },
- tooltips: {
- delegateTodRep: {
- abstain: {
- heading: "Abstaining",
- paragraphOne:
- "Select this to signal no confidence in the current constitutional committee by voting NO on every proposal and voting YES to no-confidence proposals.",
- },
- noConfidence: {
- heading: "No confidence",
- paragraphOne:
- "If you don’t have trust in the current constitutional committee you signal ‘No-confidence’. By voting ‘No’ means you don’t want governance actions to be ratified.",
- },
- todRep: {
- heading: "Delegation to DRep",
- paragraphOne:
- "DReps are representatives of the ada holders that can vote on governance actions.",
- },
- toMyself: {
- heading: "Delegate to myself",
- paragraphOne:
- "If you are registered as DRep you can delegate your voting power on yourself.",
- },
- },
- expiryDate: {
- heading: "Expiry Date",
- paragraphOne:
- "The date when the governance action will expiry if it doesn’t reach ratification thresholds.",
- paragraphTwo:
- "IMPORTANT: If the governance action is ratified before the expiry date it will be considered ratified and it will not be available to vote on afterwards.",
- },
- submissionDate: {
- heading: "Submission Date",
- paragraphOne:
- "The date when the governance action was submitted on-chain.",
- },
- votingPower: {
- heading: "DRep Voting Power",
- paragraphOne:
- "This is the voting power delegated to you as a DRep and it is calculated at the end of every epoch for the epoch that just ended.",
- paragraphTwo:
- "IMPORTANT: When voting, the voting power provides an indication and not the exact number.",
- },
- },
- wallet: {
- cantSeeWalletQuestion:
- "Can’t see your wallet? Check what wallets are currently compatible with GovTool ",
- chooseWallet: "Choose the wallet you want to connect with:",
- connect: "Connect",
- connectWallet: "Connect Wallet",
- connectYourWallet: "Connect your Wallet",
- connectYourWalletButton: "Connect your wallet",
- connectedWallet: "Connected Wallet:",
- disconnect: "Disconnect",
- noWalletsToConnect:
- "You don't have wallets to connect, install a wallet and refresh the page and try again",
- pickStakeKey: "Pick Stake Key",
- selectStakeKey: "Select the stake key you want to use:",
- },
- warnings: {
- usingUnregisteredStakeKeys:
- "Warning, no registered stake keys, using unregistered stake keys",
- },
- dataMissingErrors: {
- dataMissing: "Data Missing",
- notVerifiable: "Data Not Verifiable",
- incorrectFormat: "Data Formatted Incorrectly",
- },
- about: "About",
- abstain: "Abstain",
- addLink: "+ Add link",
- back: "Back",
- backToDashboard: "Back to dashboard",
- backToList: "Back to the list",
- cancel: "Cancel",
- clear: "Clear",
- clickToCopyLink: "Click to copy link",
- close: "Close",
- confirm: "Confirm",
- connectToDelegate: "Connect to delegate",
- continue: "Continue",
- copiedLink: "Copied link",
- delegate: "Delegate",
- drepId: "DRep ID",
- email: "Email",
- feedback: "Feedback",
- filter: "Filter",
- goBack: "Go back",
- here: "here",
- info: "Info",
- inProgress: "In Progress",
- learnMore: "Learn more",
- linkCopied: "Link copied",
- loading: "Loading...",
- moreInformation: "More information",
- myDRepId: "My DRep ID:",
- nextStep: "Next step",
- no: "No",
- ok: "Ok",
- optional: "Optional",
- register: "Register",
- required: "required",
- seeTransaction: "See transaction",
- select: "Select",
- share: "Share",
- showLess: "Show less",
- showMore: "Show more",
- skip: "Skip",
- sort: "Sort",
- sortBy: "Sort by",
- status: "Status",
- submit: "Submit",
- thisLink: "this link",
- viewDetails: "View details",
- votingPower: "Voting power",
- yes: "Yes",
- yourself: "Yourself",
- },
-};
diff --git a/govtool/frontend/src/models/api.ts b/govtool/frontend/src/models/api.ts
index dd4e80073..bdedd4526 100644
--- a/govtool/frontend/src/models/api.ts
+++ b/govtool/frontend/src/models/api.ts
@@ -2,61 +2,61 @@ import { MetadataValidationStatus } from "@models";
import { GovernanceActionType } from "@/types/governanceAction";
export type EpochParams = {
- block_id: number;
- coins_per_utxo_size: number;
- collateral_percent: number;
- committee_max_term_length: number;
- committee_min_size: number;
- cost_model_id: number;
- decentralisation: number;
- drep_activity: number;
- drep_deposit: number;
- dvt_committee_no_confidence: number;
- dvt_committee_normal: number;
- dvt_hard_fork_initiation: number;
- dvt_motion_no_confidence: number;
- dvt_pp_economic_group: number;
- dvt_pp_gov_group: number;
- dvt_pp_network_group: number;
- dvt_pp_technical_group: number;
- dvt_treasury_withdrawal: number;
- dvt_update_to_constitution: number;
- epoch_no: number;
+ block_id: number | null;
+ coins_per_utxo_size: number | null;
+ collateral_percent: number | null;
+ committee_max_term_length: number | null;
+ committee_min_size: number | null;
+ cost_model_id: number | null;
+ decentralisation: number | null;
+ drep_activity: number | null;
+ drep_deposit: number | null;
+ dvt_committee_no_confidence: number | null;
+ dvt_committee_normal: number | null;
+ dvt_hard_fork_initiation: number | null;
+ dvt_motion_no_confidence: number | null;
+ dvt_p_p_economic_group: number | null;
+ dvt_p_p_gov_group: number | null;
+ dvt_p_p_network_group: number | null;
+ dvt_p_p_technical_group: number | null;
+ dvt_treasury_withdrawal: number | null;
+ dvt_update_to_constitution: number | null;
+ epoch_no: number | null;
extra_entropy: null;
- gov_action_deposit: number;
- gov_action_lifetime: number;
+ gov_action_deposit: number | null;
+ gov_action_lifetime: number | null;
id: number;
- influence: number;
- key_deposit: number;
- max_bh_size: number;
- max_block_ex_mem: number;
- max_block_ex_steps: number;
- max_block_size: number;
- max_collateral_inputs: number;
- max_epoch: number;
- max_tx_ex_mem: number;
- max_tx_ex_steps: number;
- max_tx_size: number;
- max_val_size: number;
- min_fee_a: number;
- min_fee_b: number;
- min_fee_ref_script_cost_per_byte: number;
- min_pool_cost: number;
- min_utxo_value: number;
- monetary_expand_rate: number;
- nonce: string;
- optimal_pool_count: number;
- pool_deposit: number;
- price_mem: number;
- price_step: number;
- protocol_major: number;
- protocol_minor: number;
- pvt_committee_no_confidence: number;
- pvt_committee_normal: number;
- pvt_hard_fork_initiation: number;
- pvt_motion_no_confidence: number;
- pvtpp_security_group: number;
- treasury_growth_rate: number;
+ influence: number | null;
+ key_deposit: number | null;
+ max_bh_size: number | null;
+ max_block_ex_mem: number | null;
+ max_block_ex_steps: number | null;
+ max_block_size: number | null;
+ max_collateral_inputs: number | null;
+ max_epoch: number | null;
+ max_tx_ex_mem: number | null;
+ max_tx_ex_steps: number | null;
+ max_tx_size: number | null;
+ max_val_size: number | null;
+ min_fee_a: number | null;
+ min_fee_b: number | null;
+ min_fee_ref_script_cost_per_byte: number | null;
+ min_pool_cost: number | null;
+ min_utxo_value: number | null;
+ monetary_expand_rate: number | null;
+ nonce: string | null;
+ optimal_pool_count: number | null;
+ pool_deposit: number | null;
+ price_mem: number | null;
+ price_step: number | null;
+ protocol_major: number | null;
+ protocol_minor: number | null;
+ pvt_committee_no_confidence: number | null;
+ pvt_committee_normal: number | null;
+ pvt_hard_fork_initiation: number | null;
+ pvt_motion_no_confidence: number | null;
+ pvtpp_security_group: number | null;
+ treasury_growth_rate: number | null;
};
export type NetworkMetrics = {
@@ -102,6 +102,7 @@ export enum DRepStatus {
}
export enum DRepListSort {
+ Random = "Random",
VotingPower = "VotingPower",
RegistrationDate = "RegistrationDate",
Status = "Status",
@@ -110,6 +111,7 @@ export enum DRepListSort {
export type DrepDataDTO = {
deposit: number;
drepId: string;
+ isScriptBased: boolean;
latestRegistrationDate: string;
latestTxHash?: string;
metadataHash?: string;
@@ -145,6 +147,20 @@ export type ProposalVote = {
vote: Vote;
};
+export type SubmittedVotesData = {
+ dRepYesVotes: number;
+ dRepNoVotes: number;
+ dRepAbstainVotes: number;
+ ccYesVotes: number;
+ ccNoVotes: number;
+ ccAbstainVotes: number;
+ poolYesVotes: number;
+ poolNoVotes: number;
+ poolAbstainVotes: number;
+ type: GovernanceActionType;
+ protocolParams: EpochParams | null;
+};
+
export type ProposalDataDTO = {
createdDate: string;
createdEpochNo: number;
@@ -157,30 +173,26 @@ export type ProposalDataDTO = {
txHash: string;
type: GovernanceActionType;
url: string;
- dRepYesVotes: number;
- dRepNoVotes: number;
- dRepAbstainVotes: number;
- ccYesVotes: number;
- ccNoVotes: number;
- ccAbstainVotes: number;
- poolYesVotes: number;
- poolNoVotes: number;
- poolAbstainVotes: number;
prevGovActionIndex: number | null;
prevGovActionTxHash: string | null;
abstract?: string;
motivation?: string;
rationale?: string;
- references?: string[];
+ references?: Reference[];
title?: string;
protocolParams: EpochParams | null;
-};
+} & SubmittedVotesData;
export type ProposalData = ProposalDataDTO & {
metadataStatus: MetadataValidationStatus | null;
metadataValid: boolean;
};
+export type NewConstitutionAnchor = {
+ dataHash: string;
+ url: string;
+};
+
export type VotedProposalDTO = {
vote: ProposalVote;
proposal: ProposalDataDTO;
@@ -194,6 +206,7 @@ export type VotedProposal = {
export type CurrentDelegation = {
dRepHash: string | null;
dRepView: string | null;
+ isDRepScriptBased: boolean;
txHash: string | null;
} | null;
diff --git a/govtool/frontend/src/models/metadataValidation.ts b/govtool/frontend/src/models/metadataValidation.ts
index e93ab44da..cbd6356ee 100644
--- a/govtool/frontend/src/models/metadataValidation.ts
+++ b/govtool/frontend/src/models/metadataValidation.ts
@@ -6,6 +6,11 @@ export enum MetadataValidationStatus {
INCORRECT_FORMAT = "INCORRECT_FORMAT",
}
+export enum MetadataStandard {
+ CIP108 = "CIP108",
+ CIP119 = "CIP119",
+}
+
export type ValidateMetadataResult = {
status?: MetadataValidationStatus;
valid: boolean;
@@ -15,6 +20,7 @@ export type ValidateMetadataResult = {
export type MetadataValidationDTO = {
url: string;
hash: string;
+ standard?: MetadataStandard;
};
export type DRepMetadata = {
diff --git a/govtool/frontend/src/pages/DRepDetails.tsx b/govtool/frontend/src/pages/DRepDetails.tsx
index 78609f06b..bd2dc2aa8 100644
--- a/govtool/frontend/src/pages/DRepDetails.tsx
+++ b/govtool/frontend/src/pages/DRepDetails.tsx
@@ -1,4 +1,3 @@
-import { useMemo } from "react";
import { useLocation, useNavigate, useParams } from "react-router-dom";
import { Box, CircularProgress } from "@mui/material";
@@ -6,7 +5,7 @@ import { PATHS } from "@consts";
import { useCardano } from "@context";
import {
useGetAdaHolderCurrentDelegationQuery,
- useGetDRepListInfiniteQuery,
+ useGetDRepDetailsQuery,
useTranslation,
} from "@hooks";
import { EmptyStateDrepDirectory, LinkWithIcon } from "@molecules";
@@ -27,26 +26,9 @@ export const DRepDetails = ({ isConnected = false }: DRepDetailsProps) => {
const displayBackButton = location.state?.enteredFromWithinApp || false;
- const { dRepData, isDRepListLoading } = useGetDRepListInfiniteQuery({
- searchPhrase: dRepParam,
- });
- const dRep = dRepData?.[0];
+ const { dRep, isLoading } = useGetDRepDetailsQuery(dRepParam);
- const dRepCardVariant = useMemo(() => {
- if (!dRep) return "default";
- if (isSameDRep(dRep, myDRepId)) return "meAsDRep";
- if (isSameDRep(dRep, currentDelegation?.dRepView)) return "myDRep";
- if (isSameDRep(dRep, pendingTransaction.delegate?.resourceId))
- return "myDRepInProgress";
- return "default";
- }, [
- currentDelegation,
- dRep,
- myDRepId,
- pendingTransaction.delegate?.resourceId,
- ]);
-
- if (isDRepListLoading)
+ if (isLoading)
return (
{
>
);
diff --git a/govtool/frontend/src/pages/DRepDirectoryContent.tsx b/govtool/frontend/src/pages/DRepDirectoryContent.tsx
index 98b5aa417..ece2b33e3 100644
--- a/govtool/frontend/src/pages/DRepDirectoryContent.tsx
+++ b/govtool/frontend/src/pages/DRepDirectoryContent.tsx
@@ -1,4 +1,4 @@
-import { FC } from "react";
+import { FC, useEffect } from "react";
import { Trans, useTranslation } from "react-i18next";
import { Box, CircularProgress } from "@mui/material";
@@ -9,11 +9,12 @@ import {
useDelegateTodRep,
useGetAdaHolderCurrentDelegationQuery,
useGetAdaHolderVotingPowerQuery,
+ useGetDRepDetailsQuery,
useGetDRepListInfiniteQuery,
} from "@hooks";
import { DataActionsBar, EmptyStateDrepDirectory } from "@molecules";
import { AutomatedVotingOptions, DRepCard } from "@organisms";
-import { correctAdaFormat, formHexToBech32, isSameDRep } from "@utils";
+import { correctAdaFormat, isSameDRep } from "@utils";
import { DRepListSort, DRepStatus } from "@models";
import {
AutomatedVotingOptionCurrentDelegation,
@@ -44,7 +45,12 @@ export const DRepDirectoryContent: FC = ({
const { dRepID: myDRepId, pendingTransaction, stakeKey } = useCardano();
const { t } = useTranslation();
const { debouncedSearchText, ...dataActionsBarProps } = useDataActionsBar();
- const { chosenFilters, chosenSorting } = dataActionsBarProps;
+ const { chosenFilters, chosenSorting, setChosenSorting } =
+ dataActionsBarProps;
+
+ useEffect(() => {
+ if (!chosenSorting) setChosenSorting(DRepListSort.Random);
+ }, [chosenSorting, setChosenSorting]);
const { delegate, isDelegating } = useDelegateTodRep();
@@ -52,25 +58,15 @@ export const DRepDirectoryContent: FC = ({
const { currentDelegation } = useGetAdaHolderCurrentDelegationQuery(stakeKey);
const inProgressDelegation = pendingTransaction.delegate?.resourceId;
- const { dRepData: myDRepList } = useGetDRepListInfiniteQuery(
- {
- searchPhrase: currentDelegation?.dRepView?.startsWith("drep")
- ? currentDelegation.dRepView
- : formHexToBech32(currentDelegation?.dRepHash ?? ""),
- },
- { enabled: !!inProgressDelegation || !!currentDelegation },
- );
- const myDrep = myDRepList?.[0];
-
- const { dRepData: yourselfDRepList } = useGetDRepListInfiniteQuery({
- searchPhrase: myDRepId,
+ const { dRep: myDrep } = useGetDRepDetailsQuery(currentDelegation?.dRepView, {
+ enabled: !!inProgressDelegation || !!currentDelegation,
});
- const yourselfDRep =
- !!isConnected &&
- (debouncedSearchText === myDRepId || debouncedSearchText === "")
- ? yourselfDRepList?.[0]
- : undefined;
+ const { dRep: yourselfDRep } = useGetDRepDetailsQuery(myDRepId, {
+ enabled: !!inProgressDelegation || !!currentDelegation,
+ });
+ const showYourselfDRep =
+ debouncedSearchText === myDRepId || debouncedSearchText === "";
const {
dRepData: dRepList,
@@ -84,6 +80,7 @@ export const DRepDirectoryContent: FC = ({
status: chosenFilters as DRepStatus[],
},
{
+ enabled: !!chosenSorting,
keepPreviousData: true,
},
);
@@ -101,9 +98,10 @@ export const DRepDirectoryContent: FC = ({
const listedDRepsWithoutYourself = dRepList?.filter(
(dRep) => !dRep.doNotList && !isSameDRep(dRep, myDRepId),
);
- const dRepListToDisplay = yourselfDRep
- ? [yourselfDRep, ...listedDRepsWithoutYourself]
- : listedDRepsWithoutYourself;
+ const dRepListToDisplay =
+ yourselfDRep && showYourselfDRep
+ ? [yourselfDRep, ...listedDRepsWithoutYourself]
+ : listedDRepsWithoutYourself;
const inProgressDelegationDRepData = dRepListToDisplay.find(
(dRep) =>
@@ -217,6 +215,7 @@ export const DRepDirectoryContent: FC = ({
isDelegating === dRep.view || isDelegating === dRep.drepId
}
isMe={isSameDRep(dRep, myDRepId)}
+ isMyDrep={isSameDRep(dRep, currentDelegation?.dRepView)}
onDelegate={() => delegate(dRep.drepId)}
/>
diff --git a/govtool/frontend/src/pages/DashboardHome.tsx b/govtool/frontend/src/pages/DashboardHome.tsx
new file mode 100644
index 000000000..c2ef40f71
--- /dev/null
+++ b/govtool/frontend/src/pages/DashboardHome.tsx
@@ -0,0 +1,25 @@
+import { Box } from "@mui/material";
+
+import { DashboardCards } from "@organisms";
+import { UsefulLinks } from "@/components/organisms/UsefulLinks";
+import { useScreenDimension } from "@/hooks";
+
+export const DashboardHome = () => {
+ const { screenWidth } = useScreenDimension();
+
+ return (
+
+
+
+
+ );
+};
diff --git a/govtool/frontend/src/pages/Home.tsx b/govtool/frontend/src/pages/Home.tsx
index b78921194..8af4eefdf 100644
--- a/govtool/frontend/src/pages/Home.tsx
+++ b/govtool/frontend/src/pages/Home.tsx
@@ -7,10 +7,13 @@ import { PATHS } from "@consts";
import { useCardano } from "@context";
import { TopNav, Hero, Footer, HomeCards } from "@organisms";
import { WALLET_LS_KEY, getItemFromLocalStorage } from "@utils";
+import { UsefulLinks } from "@/components/organisms/UsefulLinks";
+import { useScreenDimension } from "@/hooks";
export const Home = () => {
const { isEnabled } = useCardano();
const navigate = useNavigate();
+ const { screenWidth } = useScreenDimension();
useEffect(() => {
if (isEnabled && getItemFromLocalStorage(`${WALLET_LS_KEY}_stake_key`)) {
@@ -23,7 +26,19 @@ export const Home = () => {
-
+
+
+
+
{/* FIXME: Footer should be on top of the layout.
Should not be rerendered across the pages */}
diff --git a/govtool/frontend/src/pages/RegisterAsDirectVoter.tsx b/govtool/frontend/src/pages/RegisterAsDirectVoter.tsx
index 53e50233c..70df1f78f 100644
--- a/govtool/frontend/src/pages/RegisterAsDirectVoter.tsx
+++ b/govtool/frontend/src/pages/RegisterAsDirectVoter.tsx
@@ -21,6 +21,7 @@ import {
openInNewTab,
} from "@utils";
import { WrongRouteInfo } from "@organisms";
+import { CertificatesBuilder } from "@emurgo/cardano-serialization-lib-asmjs";
export const RegisterAsDirectVoter = () => {
const { cExplorerBaseUrl } = useAppContext();
@@ -32,11 +33,13 @@ export const RegisterAsDirectVoter = () => {
const { voter } = useGetVoterInfo();
const openWalletErrorModal = useWalletErrorModal();
const {
+ buildStakeKeyRegCert,
buildSignSubmitConwayCertTx,
buildDRepRegCert,
buildDRepUpdateCert,
buildVoteDelegationCert,
dRepID,
+ registeredStakeKeysListState,
} = useCardano();
const { openModal, closeModal } = useModal();
@@ -44,11 +47,21 @@ export const RegisterAsDirectVoter = () => {
setIsLoading(true);
try {
- const certBuilder = await buildVoteDelegationCert(dRepID);
+ const certBuilder = CertificatesBuilder.new();
+
const registerCert = voter?.isRegisteredAsDRep
? await buildDRepUpdateCert()
: await buildDRepRegCert();
certBuilder.add(registerCert);
+
+ if (!registeredStakeKeysListState.length) {
+ const stakeKeyRegCert = await buildStakeKeyRegCert();
+ certBuilder.add(stakeKeyRegCert);
+ }
+
+ const voteDelegationCert = await buildVoteDelegationCert(dRepID);
+ certBuilder.add(voteDelegationCert);
+
const result = await buildSignSubmitConwayCertTx({
certBuilder,
type: "registerAsDirectVoter",
diff --git a/govtool/frontend/src/pages/RegisterAsdRep.tsx b/govtool/frontend/src/pages/RegisterAsdRep.tsx
index 430b3fb6a..8d50f42ed 100644
--- a/govtool/frontend/src/pages/RegisterAsdRep.tsx
+++ b/govtool/frontend/src/pages/RegisterAsdRep.tsx
@@ -9,6 +9,7 @@ import {
useTranslation,
defaultRegisterAsDRepValues,
useGetVoterInfo,
+ useGetDRepDetailsQuery,
} from "@hooks";
import { CenteredBoxPageWrapper } from "@molecules";
import {
@@ -21,12 +22,13 @@ import {
import { checkIsWalletConnected } from "@utils";
export const RegisterAsdRep = () => {
+ const { dRepID } = useCardano();
const [step, setStep] = useState(1);
const navigate = useNavigate();
const { t } = useTranslation();
const { closeModal, openModal } = useModal();
const { voter } = useGetVoterInfo();
- const { dRepIDBech32 } = useCardano();
+ const { dRep } = useGetDRepDetailsQuery(dRepID);
const methods = useForm({
mode: "onChange",
@@ -77,12 +79,14 @@ export const RegisterAsdRep = () => {
title={t(`registration.alreadyRegistered.title`)}
description={t(`registration.alreadyRegistered.description`)}
primaryButtonText={t("registration.alreadyRegistered.viewDetails")}
- onPrimaryButton={() =>
- navigate(
- PATHS.dashboardDRepDirectoryDRep.replace(":dRepId", dRepIDBech32),
- { state: { enteredFromWithinApp: true } },
- )
- }
+ onPrimaryButton={() => {
+ if (dRep) {
+ navigate(
+ PATHS.dashboardDRepDirectoryDRep.replace(":dRepId", dRep.view),
+ { state: { enteredFromWithinApp: true } },
+ );
+ }
+ }}
/>
);
diff --git a/govtool/frontend/src/services/requests/getAdaHolderCurrentDelegation.ts b/govtool/frontend/src/services/requests/getAdaHolderCurrentDelegation.ts
index 0113f77f6..34b19229b 100644
--- a/govtool/frontend/src/services/requests/getAdaHolderCurrentDelegation.ts
+++ b/govtool/frontend/src/services/requests/getAdaHolderCurrentDelegation.ts
@@ -1,6 +1,7 @@
import { CurrentDelegation } from "@models";
import { API } from "../API";
+import { fixViewForScriptBasedDRep } from "@/utils";
export const getAdaHolderCurrentDelegation = async ({
stakeKey,
@@ -11,5 +12,16 @@ export const getAdaHolderCurrentDelegation = async ({
`/ada-holder/get-current-delegation/${stakeKey}`,
);
- return response.data;
+ if (!response.data) return response.data;
+
+ // DBSync contains wrong representation of DRep view for script based DReps
+ const view = response.data.dRepView && fixViewForScriptBasedDRep(
+ response.data.dRepView,
+ response.data.isDRepScriptBased,
+ );
+
+ return {
+ ...response.data,
+ dRepView: view,
+ };
};
diff --git a/govtool/frontend/src/services/requests/getDRepList.ts b/govtool/frontend/src/services/requests/getDRepList.ts
index facf68049..532f7ee60 100644
--- a/govtool/frontend/src/services/requests/getDRepList.ts
+++ b/govtool/frontend/src/services/requests/getDRepList.ts
@@ -1,3 +1,5 @@
+import { bech32 } from "bech32";
+
import {
type Infinite,
type DRepStatus,
@@ -22,9 +24,19 @@ export const getDRepList = async ({
filters = [],
page = 0,
pageSize = 10,
- searchPhrase = "",
+ searchPhrase: rawSearchPhrase = "",
status = [],
}: GetDRepListArguments): Promise> => {
+ // DBSync contains wrong representation of DRep view for script based DReps,
+ // but it's still used by BE
+ const searchPhrase = (() => {
+ if (rawSearchPhrase.startsWith("drep_script")) {
+ const { words } = bech32.decode(rawSearchPhrase);
+ return bech32.encode("drep", words);
+ }
+ return rawSearchPhrase;
+ })();
+
const response = await API.get>("/drep/list", {
params: {
page,
diff --git a/govtool/frontend/src/services/requests/getProposal.ts b/govtool/frontend/src/services/requests/getProposal.ts
index 04e94b0c2..c82aa6199 100644
--- a/govtool/frontend/src/services/requests/getProposal.ts
+++ b/govtool/frontend/src/services/requests/getProposal.ts
@@ -1,11 +1,18 @@
import { VotedProposal, VotedProposalDTO } from "@/models";
+import { decodeCIP129Identifier, mapDtoToProposal } from "@/utils";
+
import { API } from "../API";
-import { mapDtoToProposal } from "@/utils";
export const getProposal = async (
proposalId: string,
drepId?: string,
): Promise => {
+ const isCIP129Identifier = proposalId.includes("gov_action");
+ if (isCIP129Identifier) {
+ const { txID } = decodeCIP129Identifier(proposalId);
+ proposalId = txID;
+ }
+
const encodedHash = encodeURIComponent(proposalId);
const { data } = await API.get(
diff --git a/govtool/frontend/src/services/requests/getProposals.ts b/govtool/frontend/src/services/requests/getProposals.ts
index 3014a55b7..333cad371 100644
--- a/govtool/frontend/src/services/requests/getProposals.ts
+++ b/govtool/frontend/src/services/requests/getProposals.ts
@@ -25,7 +25,9 @@ export const getProposals = async ({
params: {
page,
pageSize,
- ...(searchPhrase && { search: searchPhrase }),
+ ...(searchPhrase && {
+ search: searchPhrase,
+ }),
...(filters.length && { type: filters }),
...(sorting && { sort: sorting }),
...(dRepID && { drepId: dRepID }),
diff --git a/govtool/frontend/src/stories/ActionsBar.stories.ts b/govtool/frontend/src/stories/ActionsBar.stories.ts
index 218d9d585..3235be0eb 100644
--- a/govtool/frontend/src/stories/ActionsBar.stories.ts
+++ b/govtool/frontend/src/stories/ActionsBar.stories.ts
@@ -27,7 +27,6 @@ export const ActionsBarComponent: Story = {
args: {
chosenSorting: "",
searchText: "",
- sortingActive: false,
sortOpen: false,
filterOptions: GOVERNANCE_ACTIONS_FILTERS,
isFiltering: true,
@@ -65,7 +64,6 @@ export const ActionsBarFiltersOpen: Story = {
args: {
chosenSorting: "",
searchText: "",
- sortingActive: false,
sortOpen: false,
chosenFilters: [],
closeFilters: () => {},
@@ -89,7 +87,6 @@ export const ActionsBarSortsOpen: Story = {
args: {
chosenSorting: "",
searchText: "",
- sortingActive: false,
sortOpen: true,
setChosenSorting: jest.fn(),
},
@@ -106,7 +103,6 @@ export const ActionsBarWithoutFilters: Story = {
args: {
chosenSorting: "",
searchText: "",
- sortingActive: false,
sortOpen: false,
isFiltering: false,
},
diff --git a/govtool/frontend/src/stories/DRepDetailsCard.stories.ts b/govtool/frontend/src/stories/DRepDetailsCard.stories.ts
index 89cc5ffe5..c91b396d3 100644
--- a/govtool/frontend/src/stories/DRepDetailsCard.stories.ts
+++ b/govtool/frontend/src/stories/DRepDetailsCard.stories.ts
@@ -60,38 +60,42 @@ type Story = StoryObj;
export const MeAsDRep: Story = {
args: {
- variant: "meAsDRep",
+ isMe: true,
+ isMyDrep: false,
+ },
+};
+
+export const MeAsDRepDelegatedToMyself: Story = {
+ args: {
+ isMe: true,
+ isMyDrep: true,
},
};
export const MyDRep: Story = {
args: {
- variant: "myDRep",
+ isMyDrep: true,
},
};
export const MyDRepInProgress: Story = {
args: {
- variant: "myDRepInProgress",
+ isMyDrepInProgress: true,
},
};
export const OtherDRep: Story = {
- args: {
- variant: "default",
- },
+ args: {},
};
export const UserNotConnected: Story = {
args: {
isConnected: false,
- variant: "default",
},
};
export const InvalidData: Story = {
args: {
- variant: "default",
dRepData: {
...meta.args.dRepData,
metadataStatus: MetadataValidationStatus.INCORRECT_FORMAT,
diff --git a/govtool/frontend/src/stories/Footer.stories.ts b/govtool/frontend/src/stories/Footer.stories.ts
index 9d93a2489..5b2d604cf 100644
--- a/govtool/frontend/src/stories/Footer.stories.ts
+++ b/govtool/frontend/src/stories/Footer.stories.ts
@@ -27,7 +27,7 @@ export const FooterComponent: Story = {
await expect(window.open).toHaveBeenCalledTimes(1);
await userEvent.click(
- canvas.getByTestId("terms-and-conditions-footer-link"),
+ canvas.getByTestId("terms-of-use-footer-link"),
);
await expect(window.open).toHaveBeenCalledTimes(2);
diff --git a/govtool/frontend/src/stories/GovernanceAction.stories.ts b/govtool/frontend/src/stories/GovernanceAction.stories.ts
index b2768c729..0b15925a1 100644
--- a/govtool/frontend/src/stories/GovernanceAction.stories.ts
+++ b/govtool/frontend/src/stories/GovernanceAction.stories.ts
@@ -2,7 +2,11 @@ import { MetadataValidationStatus } from "@models";
import { expect, jest } from "@storybook/jest";
import type { Meta, StoryObj } from "@storybook/react";
import { screen, userEvent, waitFor, within } from "@storybook/testing-library";
-import { formatDisplayDate, getProposalTypeNoEmptySpaces } from "@utils";
+import {
+ encodeCIP129Identifier,
+ formatDisplayDate,
+ getProposalTypeNoEmptySpaces,
+} from "@utils";
import { GovernanceActionCard } from "@/components/molecules";
import { GovernanceActionType } from "@/types/governanceAction";
@@ -47,6 +51,12 @@ const commonArgs = {
prevGovActionTxHash: null,
};
+const cip129GovActionId = encodeCIP129Identifier({
+ txID: commonArgs.txHash,
+ index: commonArgs.index.toString(16).padStart(2, "0"),
+ bech32Prefix: "gov_action",
+});
+
export const GovernanceActionCardComponent: Story = {
args: commonArgs,
@@ -58,6 +68,7 @@ export const GovernanceActionCardComponent: Story = {
),
).toBeInTheDocument();
expect(canvas.getByTestId("sad78afdsf7jasd98d#2-id")).toBeInTheDocument();
+ expect(canvas.getByTestId(`${cip129GovActionId}-id`)).toBeInTheDocument();
expect(
canvas.getByText(formatDisplayDate("1970-01-01T00:00:00Z")),
).toBeInTheDocument();
@@ -79,7 +90,7 @@ export const GovernanceActionCardComponent: Story = {
await userEvent.click(
canvas.getByTestId("govaction-sad78afdsf7jasd98d#2-view-detail"),
);
- await expect(args.onClick).toHaveBeenCalled();
+ await await expect(args.onClick).toHaveBeenCalled();
},
};
diff --git a/govtool/frontend/src/stories/GovernanceActionDetailsCard.stories.ts b/govtool/frontend/src/stories/GovernanceActionDetailsCard.stories.ts
index ae7eebf34..fad0d453c 100644
--- a/govtool/frontend/src/stories/GovernanceActionDetailsCard.stories.ts
+++ b/govtool/frontend/src/stories/GovernanceActionDetailsCard.stories.ts
@@ -4,6 +4,7 @@ import { expect, jest } from "@storybook/jest";
import type { Meta, StoryObj } from "@storybook/react";
import { screen, userEvent, waitFor, within } from "@storybook/testing-library";
import {
+ encodeCIP129Identifier,
formatDisplayDate,
getFullGovActionId,
getProposalTypeNoEmptySpaces,
@@ -51,6 +52,13 @@ const commonArgs = {
metadataHash: "exampleMetadataHash",
metadataStatus: null,
metadataValid: true,
+ references: [
+ {
+ "@type": "Reference",
+ uri: "https://exampleurl.com",
+ label: "Example label",
+ },
+ ],
} satisfies ProposalData,
};
@@ -59,6 +67,12 @@ const govActionId = getFullGovActionId(
commonArgs.proposal.index,
);
+const cip129GovActionId = encodeCIP129Identifier({
+ txID: commonArgs.proposal.txHash,
+ index: commonArgs.proposal.index.toString(16).padStart(2, "0"),
+ bech32Prefix: "gov_action",
+});
+
async function assertTooltip(tooltip: HTMLElement, expectedText: RegExp) {
await userEvent.hover(tooltip);
await waitFor(async () => {
@@ -82,6 +96,9 @@ async function assertGovActionDetails(
await expect(canvas.getByTestId(`${govActionId}-id`)).toHaveTextContent(
govActionId,
);
+ await expect(canvas.getByTestId(`${cip129GovActionId}-id`)).toHaveTextContent(
+ cip129GovActionId,
+ );
}
export const GovernanceActionDetailsCardComponent: Story = {
@@ -100,15 +117,24 @@ export const GovernanceActionDetailsCardComponent: Story = {
await expect(canvas.getByText(args.proposal.title!)).toBeInTheDocument();
+ if (args.proposal.references?.[0]) {
+ await expect(
+ canvas.getByText(args.proposal.references[0].label),
+ ).toBeInTheDocument();
+ await expect(
+ canvas.getByText(args.proposal.references[0].uri),
+ ).toBeInTheDocument();
+ }
+
await assertGovActionDetails(canvas, args);
const [tooltip1, tooltip2] = canvas.getAllByTestId("InfoOutlinedIcon");
await assertTooltip(tooltip1, /Submission Date/i);
await assertTooltip(tooltip2, /Expiry Date/i);
- await expect(canvas.getAllByText(/Yes/i)).toHaveLength(3);
- await expect(canvas.getAllByText(/Abstain/i)).toHaveLength(3);
- await expect(canvas.getAllByText(/No/i)).toHaveLength(3);
+ await expect(canvas.getAllByText(/yes/i)).toHaveLength(2);
+ await expect(canvas.getAllByText(/abstain/i)).toHaveLength(3);
+ await expect(canvas.getAllByText(/no/i)).toHaveLength(4);
},
};
diff --git a/govtool/frontend/src/stories/Step.stories.tsx b/govtool/frontend/src/stories/Step.stories.tsx
index 014ef6716..eb69d5779 100644
--- a/govtool/frontend/src/stories/Step.stories.tsx
+++ b/govtool/frontend/src/stories/Step.stories.tsx
@@ -46,7 +46,7 @@ const readFullGuideMock = jest.fn();
export const WithIconButton: StoryObj = {
args: {
label:
- "Save this file in a location that provides a public URL (ex. github)",
+ "Save this file in a location that provides a public URL (e.g. github)",
stepNumber: 2,
component: (
= {
export const WithInput: StoryObj = {
args: {
label:
- "Save this file in a location that provides a public URL (ex. github)",
+ "Save this file in a location that provides a public URL (e.g. github)",
stepNumber: 2,
component: (
diff --git a/govtool/frontend/src/stories/VotePill.stories.ts b/govtool/frontend/src/stories/VotePill.stories.ts
index 33269d036..8c9f1de68 100644
--- a/govtool/frontend/src/stories/VotePill.stories.ts
+++ b/govtool/frontend/src/stories/VotePill.stories.ts
@@ -25,7 +25,7 @@ export const VotePillYes: Story = {
},
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
- await expect(canvas.getByText(/yes/i)).toBeInTheDocument();
+ await expect(canvas.getByText(/Yes/i)).toBeInTheDocument();
},
};
@@ -35,7 +35,7 @@ export const VotePillNo: Story = {
},
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
- await expect(canvas.getByText(/no/i)).toBeInTheDocument();
+ await expect(canvas.getByText(/No/i)).toBeInTheDocument();
},
};
@@ -45,6 +45,6 @@ export const VotePillAbstain: Story = {
},
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
- await expect(canvas.getByText(/abstain/i)).toBeInTheDocument();
+ await expect(canvas.getByText(/Abstain/i)).toBeInTheDocument();
},
};
diff --git a/govtool/frontend/src/stories/modals/VotingPowerModal.stories.tsx b/govtool/frontend/src/stories/modals/SubmittedVotesModal.stories.tsx
similarity index 65%
rename from govtool/frontend/src/stories/modals/VotingPowerModal.stories.tsx
rename to govtool/frontend/src/stories/modals/SubmittedVotesModal.stories.tsx
index 4fdf4ae84..cd9af6c87 100644
--- a/govtool/frontend/src/stories/modals/VotingPowerModal.stories.tsx
+++ b/govtool/frontend/src/stories/modals/SubmittedVotesModal.stories.tsx
@@ -3,24 +3,24 @@ import { Meta, StoryFn } from "@storybook/react";
import { Modal } from "@atoms";
import { useModal } from "@context";
-import { StatusModal, VotingPowerModalState } from "@organisms";
+import { StatusModal, SubmittedVotesModalState } from "@organisms";
import { screen, waitFor, within } from "@storybook/testing-library";
import { callAll, correctAdaFormat } from "@utils";
import { useEffect } from "react";
const meta = {
- title: "Example/Modals/VotingPowerModal",
+ title: "Example/Modals/SubmittedVotesModal",
component: StatusModal,
} satisfies Meta;
export default meta;
-const Template: StoryFn = (args) => {
+const Template: StoryFn = (args) => {
const { openModal, modal, modals } = useModal();
const open = () => {
openModal({
- type: "votingPower",
+ type: "submittedVotes",
state: {
...args,
},
@@ -52,22 +52,22 @@ const Template: StoryFn = (args) => {
async function assertVotes(
canvas: ReturnType,
- args: VotingPowerModalState,
+ args: SubmittedVotesModalState,
) {
- const yesVotesText = `₳ ${correctAdaFormat(args.yesVotes)}`;
- const noVotesText = `₳ ${correctAdaFormat(args.noVotes)}`;
- const abstainVotesText = `₳ ${correctAdaFormat(args.abstainVotes)}`;
+ const dRepYesVotesText = `₳ ${correctAdaFormat(args.dRepYesVotes)}`;
+ const dRepNoVotesText = `₳ ${correctAdaFormat(args.dRepNoVotes)}`;
+ const dRepAbstainVotesText = `₳ ${correctAdaFormat(args.dRepAbstainVotes)}`;
- await expect(canvas.getByText(yesVotesText)).toBeVisible();
- await expect(canvas.getByText(noVotesText)).toBeVisible();
- await expect(canvas.getByText(abstainVotesText)).toBeVisible();
+ await expect(canvas.getByText(dRepYesVotesText)).toBeVisible();
+ await expect(canvas.getByText(dRepNoVotesText)).toBeVisible();
+ await expect(canvas.getByText(dRepAbstainVotesText)).toBeVisible();
}
export const YesVoted = Template.bind({});
YesVoted.args = {
- yesVotes: 1000000000000,
- noVotes: 10000000000,
- abstainVotes: 324000000,
+ dRepYesVotes: 1000000000000,
+ dRepNoVotes: 10000000000,
+ dRepAbstainVotes: 324000000,
vote: "yes",
};
YesVoted.play = async ({ args }) => {
@@ -81,14 +81,14 @@ YesVoted.play = async ({ args }) => {
export const AbstainVoted = Template.bind({});
AbstainVoted.args = {
- yesVotes: 1000000000000,
- noVotes: 10000000000,
- abstainVotes: 324000000,
+ dRepYesVotes: 1000000000000,
+ dRepNoVotes: 10000000000,
+ dRepAbstainVotes: 324000000,
vote: "abstain",
};
AbstainVoted.play = async ({ args }) => {
waitFor(async () => {
- const modalScreen = screen.getAllByTestId("external-link-modal")[0];
+ const modalScreen = screen.getAllByTestId("submitted-votes-modal")[0];
const loadingModalCanvas = within(modalScreen);
await assertVotes(loadingModalCanvas, args);
@@ -97,14 +97,14 @@ AbstainVoted.play = async ({ args }) => {
export const NoVoted = Template.bind({});
NoVoted.args = {
- yesVotes: 1000000000000,
- noVotes: 10000000000,
- abstainVotes: 324000000,
+ dRepYesVotes: 1000000000000,
+ dRepNoVotes: 10000000000,
+ dRepAbstainVotes: 324000000,
vote: "no",
};
NoVoted.play = async ({ args }) => {
waitFor(async () => {
- const modalScreen = screen.getAllByTestId("external-link-modal")[0];
+ const modalScreen = screen.getAllByTestId("submitted-votes-modal")[0];
const loadingModalCanvas = within(modalScreen);
await assertVotes(loadingModalCanvas, args);
diff --git a/govtool/frontend/src/theme.ts b/govtool/frontend/src/theme.ts
index 910447fab..2d0831b23 100644
--- a/govtool/frontend/src/theme.ts
+++ b/govtool/frontend/src/theme.ts
@@ -1,6 +1,11 @@
import { createTheme } from "@mui/material/styles";
import {
- cyan, errorRed, orange, primaryBlue, progressYellow, successGreen,
+ cyan,
+ errorRed,
+ orange,
+ primaryBlue,
+ progressYellow,
+ successGreen,
} from "./consts";
export type Theme = typeof theme;
@@ -17,12 +22,19 @@ export const theme = createTheme({
},
},
components: {
+ MuiCssBaseline: {
+ styleOverrides: {
+ ":root": {
+ fonfFamily: "Poppins, Arial",
+ },
+ },
+ },
MuiAccordion: {
styleOverrides: {
root: {
borderRadius: `12px !important`,
- }
- }
+ },
+ },
},
MuiInputBase: {
styleOverrides: {
@@ -52,7 +64,7 @@ export const theme = createTheme({
{
props: { color: "default", variant: "filled" },
style: {
- backgroundColor: primaryBlue.c50
+ backgroundColor: primaryBlue.c50,
},
},
{
@@ -110,7 +122,7 @@ export const theme = createTheme({
MuiPopover: {
defaultProps: {
elevation: 2,
- }
+ },
},
},
typography: {
diff --git a/govtool/frontend/src/types/global.d.ts b/govtool/frontend/src/types/global.d.ts
index 8a6ccf8f6..bc7222156 100644
--- a/govtool/frontend/src/types/global.d.ts
+++ b/govtool/frontend/src/types/global.d.ts
@@ -22,7 +22,7 @@ declare global {
};
type ActionDetailsType = {
- [key: string]: string | number;
+ [key: string]: JSONValue;
};
interface ActionVotedOnType extends ActionTypeToDsiplay {
diff --git a/govtool/frontend/src/types/governanceAction.ts b/govtool/frontend/src/types/governanceAction.ts
index 06f51fe58..c150444dd 100644
--- a/govtool/frontend/src/types/governanceAction.ts
+++ b/govtool/frontend/src/types/governanceAction.ts
@@ -1,5 +1,5 @@
import { RegisterOptions } from "react-hook-form";
-import { en } from "@/i18n/locales/en";
+import en from "@/i18n/locales/en.json";
export enum GovernanceActionType {
ParameterChange = "ParameterChange",
@@ -18,9 +18,9 @@ export enum GovernanceActionField {
export type FieldSchema = {
component: GovernanceActionField | [GovernanceActionField];
- labelI18nKey: NestedKeys<(typeof en)["translation"]>;
- placeholderI18nKey: NestedKeys<(typeof en)["translation"]>;
- tipI18nKey?: NestedKeys<(typeof en)["translation"]>;
+ labelI18nKey: NestedKeys;
+ placeholderI18nKey: NestedKeys;
+ tipI18nKey?: NestedKeys;
rules: Omit;
};
diff --git a/govtool/frontend/src/utils/adaFormat.ts b/govtool/frontend/src/utils/adaFormat.ts
index d76cdd7d7..ec4f9a3e7 100644
--- a/govtool/frontend/src/utils/adaFormat.ts
+++ b/govtool/frontend/src/utils/adaFormat.ts
@@ -8,6 +8,20 @@ export const correctAdaFormat = (lovelace: number | undefined) => {
return 0;
};
+export const correctVoteAdaFormat = (
+ lovelace: number | undefined,
+ locale: string | undefined = undefined,
+) => {
+ if (lovelace) {
+ const ada = lovelace / LOVELACE;
+ return ada.toLocaleString(locale, {
+ minimumFractionDigits: 3,
+ maximumFractionDigits: 3,
+ });
+ }
+ return "0,000";
+};
+
export const correctDRepDirectoryFormat = (lovelace: number | undefined) => {
if (lovelace) {
return Number((lovelace / LOVELACE).toFixed(0))?.toLocaleString("en-US");
diff --git a/govtool/frontend/src/utils/cip129identifier.ts b/govtool/frontend/src/utils/cip129identifier.ts
new file mode 100644
index 000000000..0ac02835e
--- /dev/null
+++ b/govtool/frontend/src/utils/cip129identifier.ts
@@ -0,0 +1,36 @@
+import { bech32 } from "bech32";
+import { Buffer } from "buffer";
+
+/**
+ * Encodes a CIP129 identifier based on the provided transaction ID, index, and bech32 prefix.
+ * @param txID - The transaction ID.
+ * @param index - The index.
+ * @param bech32Prefix - The bech32 prefix.
+ * @returns The generated CIP129 identifier.
+ */
+export const encodeCIP129Identifier = ({
+ txID,
+ index,
+ bech32Prefix,
+}: {
+ txID: string;
+ index?: string;
+ bech32Prefix: string;
+}) => {
+ const govActionBytes = Buffer.from(index ? txID + index : txID, "hex");
+ const words = bech32.toWords(govActionBytes);
+ return bech32.encode(bech32Prefix, words);
+};
+
+/**
+ * Decodes a CIP129 identifier.
+ * @param cip129Identifier - The CIP129 identifier to decode.
+ * @returns An object containing the decoded transaction ID, index, and prefix.
+ */
+export const decodeCIP129Identifier = (cip129Identifier: string) => {
+ const { prefix, words } = bech32.decode(cip129Identifier);
+ const buffer = Buffer.from(bech32.fromWords(words));
+ const txID = buffer.subarray(0, 32).toString("hex");
+ const index = buffer.subarray(32).toString("hex");
+ return { txID, index, prefix };
+};
diff --git a/govtool/frontend/src/utils/dRep.ts b/govtool/frontend/src/utils/dRep.ts
index 1521fda5d..afa316c28 100644
--- a/govtool/frontend/src/utils/dRep.ts
+++ b/govtool/frontend/src/utils/dRep.ts
@@ -1,3 +1,4 @@
+import { bech32 } from "bech32";
import { DRepData } from "@/models";
export const isSameDRep = (
@@ -9,3 +10,12 @@ export const isSameDRep = (
}
return drepId === dRepIdOrView || view === dRepIdOrView;
};
+
+// DBSync contains wrong representation of DRep view for script based DReps
+export const fixViewForScriptBasedDRep = (view: string, isScriptBased: boolean) => {
+ if (isScriptBased && !view.startsWith("drep_script")) {
+ const { words } = bech32.decode(view);
+ return bech32.encode("drep_script", words);
+ }
+ return view;
+};
diff --git a/govtool/frontend/src/utils/filterOutNullParams.ts b/govtool/frontend/src/utils/filterOutNullParams.ts
index dd7b14af8..6e15ee239 100644
--- a/govtool/frontend/src/utils/filterOutNullParams.ts
+++ b/govtool/frontend/src/utils/filterOutNullParams.ts
@@ -8,7 +8,7 @@
export const filterOutNullParams = (
originalObject?: Record | undefined | null,
filterOutKeys?: string[],
-) => {
+): Record | null => {
if (!originalObject) {
return null;
}
@@ -20,12 +20,27 @@ export const filterOutNullParams = (
value !== undefined &&
!filterOutKeys?.includes(key)
) {
- acc[key] = value;
+ if (
+ typeof value === "object" &&
+ !Array.isArray(value) &&
+ value !== null
+ ) {
+ // Recursively filter the nested object
+ const nestedFiltered = filterOutNullParams(
+ value as Record,
+ filterOutKeys,
+ );
+ if (nestedFiltered && Object.keys(nestedFiltered).length > 0) {
+ acc[key] = nestedFiltered;
+ }
+ } else {
+ acc[key] = value;
+ }
}
return acc;
},
{},
);
- return finalObject;
+ return Object.keys(finalObject).length > 0 ? finalObject : null;
};
diff --git a/govtool/frontend/src/utils/filterUpdatableProtocolParams.ts b/govtool/frontend/src/utils/filterUpdatableProtocolParams.ts
index 92377db29..ab5f7c5fd 100644
--- a/govtool/frontend/src/utils/filterUpdatableProtocolParams.ts
+++ b/govtool/frontend/src/utils/filterUpdatableProtocolParams.ts
@@ -19,16 +19,36 @@ export const filterUpdatableProtocolParams = (
const finalObject = Object.entries(referenceObject).reduce<
Record
>((acc, [key, referenceValue]) => {
+ const originalValue = originalObject[key];
+
const isValid =
!filterOutKeys?.includes(key) &&
originalObject.hasOwnProperty(key) &&
referenceValue !== undefined &&
referenceValue !== null;
- if (isValid) acc[key] = originalObject[key];
+ if (isValid) {
+ if (
+ typeof originalValue === "object" &&
+ originalValue !== null &&
+ typeof referenceValue === "object" &&
+ referenceValue !== null
+ ) {
+ const nestedFiltered = filterUpdatableProtocolParams(
+ originalValue as Record,
+ referenceValue as Record,
+ filterOutKeys,
+ );
+ if (nestedFiltered && Object.keys(nestedFiltered).length > 0) {
+ acc[key] = nestedFiltered;
+ }
+ } else {
+ acc[key] = originalValue;
+ }
+ }
return acc;
}, {});
- return finalObject;
+ return Object.keys(finalObject).length > 0 ? finalObject : null;
};
diff --git a/govtool/frontend/src/utils/getDRepID.ts b/govtool/frontend/src/utils/getDRepID.ts
index 05561eaf5..e80ea3549 100644
--- a/govtool/frontend/src/utils/getDRepID.ts
+++ b/govtool/frontend/src/utils/getDRepID.ts
@@ -1,16 +1,8 @@
import { Buffer } from "buffer";
import blake from "blakejs";
-import { bech32 } from "bech32";
import { CardanoApiWallet } from "@models";
-export const formHexToBech32 = (dRepID?: string) => {
- if (!dRepID) return;
- const words = bech32.toWords(Buffer.from(dRepID, "hex"));
- const dRepIDBech32 = bech32.encode("drep", words);
- return dRepIDBech32;
-};
-
export const getPubDRepID = async (walletApi: CardanoApiWallet) => {
try {
// From wallet get pub DRep key
@@ -20,19 +12,16 @@ export const getPubDRepID = async (walletApi: CardanoApiWallet) => {
const dRepKeyBytes = Buffer.from(dRepKey, "hex");
const dRepID = blake.blake2bHex(dRepKeyBytes, undefined, 28);
// into bech32
- const dRepIDBech32 = formHexToBech32(dRepID);
return {
dRepKey,
dRepID,
- dRepIDBech32,
};
} catch (err) {
console.error(err);
return {
dRepKey: undefined,
dRepID: undefined,
- dRepIDBech32: undefined,
};
}
};
diff --git a/govtool/frontend/src/utils/getGovActionId.ts b/govtool/frontend/src/utils/getGovActionId.ts
index 8a1dcef5b..4b38e447a 100644
--- a/govtool/frontend/src/utils/getGovActionId.ts
+++ b/govtool/frontend/src/utils/getGovActionId.ts
@@ -1,4 +1,7 @@
-export const getShortenedGovActionId = (txHash: string, index: number | string) => {
+export const getShortenedGovActionId = (
+ txHash: string,
+ index: number | string,
+) => {
if (txHash.length <= 6) {
return `${txHash}#${index}`;
}
diff --git a/govtool/frontend/src/utils/getGovActionVotingThresholdKey.ts b/govtool/frontend/src/utils/getGovActionVotingThresholdKey.ts
new file mode 100644
index 000000000..27c29b358
--- /dev/null
+++ b/govtool/frontend/src/utils/getGovActionVotingThresholdKey.ts
@@ -0,0 +1,101 @@
+import { VoterType } from "@/components/molecules";
+import {
+ PPU_ECONOMIC_GROUP_PARAMS_KEYS,
+ PPU_GOVERNANCE_GROUP_PARAMS_KEYS,
+ PPU_NETWORK_GROUP_PARAMS_KEYS,
+ PPU_TECHNICAL_GROUP_PARAMS_KEYS,
+} from "@/consts";
+import { EpochParams } from "@/models";
+import { GovernanceActionType } from "@/types/governanceAction";
+
+/**
+ * Retrieves the voting threshold key for a given governance action type,
+ * protocol parameters, and voter type.
+ * @param options - The options object containing the governance action type,
+ * protocol parameters, and voter type.
+ * @returns The voting threshold key corresponding to
+ * the provided options, or undefined if no matching key is found.
+ */
+export const getGovActionVotingThresholdKey = ({
+ govActionType,
+ protocolParams,
+ voterType,
+}: {
+ govActionType: GovernanceActionType;
+ protocolParams?: Partial | null;
+ voterType?: VoterType;
+}) => {
+ switch (govActionType) {
+ case GovernanceActionType.NewCommittee: {
+ // TODO: handle dvt_committee_normal and pvt_committee_normal
+ return voterType === "dReps"
+ ? "dvt_committee_normal"
+ : voterType === "sPos"
+ ? "pvt_committee_normal"
+ : undefined;
+ }
+ case GovernanceActionType.HardForkInitiation: {
+ return voterType === "dReps"
+ ? "dvt_hard_fork_initiation"
+ : voterType === "sPos"
+ ? "pvt_hard_fork_initiation"
+ : undefined;
+ }
+ case GovernanceActionType.ParameterChange: {
+ if (protocolParams) {
+ const filteredProtocolParameterKeys = Object.entries(
+ protocolParams,
+ ).map(([key, value]) => {
+ if (typeof value === "number" || typeof value === "string") {
+ return key;
+ }
+ });
+
+ if (
+ PPU_ECONOMIC_GROUP_PARAMS_KEYS.some((key) =>
+ filteredProtocolParameterKeys.includes(key),
+ )
+ ) {
+ return voterType === "dReps" ? "dvt_p_p_economic_group" : undefined;
+ }
+ if (
+ PPU_GOVERNANCE_GROUP_PARAMS_KEYS.some((key) =>
+ filteredProtocolParameterKeys.includes(key),
+ )
+ ) {
+ return voterType === "dReps" ? "dvt_p_p_gov_group" : undefined;
+ }
+ if (
+ PPU_NETWORK_GROUP_PARAMS_KEYS.some((key) =>
+ filteredProtocolParameterKeys.includes(key),
+ )
+ ) {
+ return voterType === "dReps"
+ ? "dvt_p_p_network_group"
+ : voterType === "sPos"
+ ? "pvtpp_security_group"
+ : undefined;
+ }
+ if (
+ PPU_TECHNICAL_GROUP_PARAMS_KEYS.some((key) =>
+ filteredProtocolParameterKeys.includes(key),
+ )
+ ) {
+ return voterType === "dReps" ? "dvt_p_p_technical_group" : undefined;
+ }
+ return undefined;
+ }
+ break;
+ }
+ case GovernanceActionType.TreasuryWithdrawals:
+ return voterType === "dReps" ? "dvt_treasury_withdrawal" : undefined;
+ case GovernanceActionType.NewConstitution:
+ return voterType === "dReps" ? "dvt_update_to_constitution" : undefined;
+ case GovernanceActionType.NoConfidence:
+ return voterType === "dReps"
+ ? "dvt_motion_no_confidence"
+ : "pvt_motion_no_confidence";
+ default:
+ return undefined;
+ }
+};
diff --git a/govtool/frontend/src/utils/index.ts b/govtool/frontend/src/utils/index.ts
index 3ee9719fc..0a15398bf 100644
--- a/govtool/frontend/src/utils/index.ts
+++ b/govtool/frontend/src/utils/index.ts
@@ -22,6 +22,7 @@ export * from "./getProposalTypeLabel";
export * from "./isValidFormat";
export * from "./jsonUtils";
export * from "./localStorage";
+export * from "./mapArrayToObjectByKeys";
export * from "./mapDtoToDrep";
export * from "./mapDtoToProposal";
export * from "./numberValidation";
@@ -30,3 +31,5 @@ export * from "./removeDuplicatedProposals";
export * from "./setProtocolParameterUpdate";
export * from "./testIdFromLabel";
export * from "./wait";
+export * from "./cip129identifier";
+export * from "./getGovActionVotingThresholdKey";
diff --git a/govtool/frontend/src/utils/jsonUtils.ts b/govtool/frontend/src/utils/jsonUtils.ts
index 6b22a9c7c..04f499ed9 100644
--- a/govtool/frontend/src/utils/jsonUtils.ts
+++ b/govtool/frontend/src/utils/jsonUtils.ts
@@ -7,14 +7,26 @@ import { NodeObject } from "jsonld";
* If not provided, the default name will be "data.jsonld".
*/
export const downloadJson = (json: NodeObject, fileName?: string) => {
- const jsonString = `data:text/jsonld;charset=utf-8,${encodeURIComponent(
- JSON.stringify(json, null, 2),
- )}`;
+ const blob = new Blob([JSON.stringify(json, null, 2)], {
+ type: "application/json",
+ });
+ const url = URL.createObjectURL(blob);
const link = document.createElement("a");
- link.href = jsonString;
+ link.href = url;
link.download = `${fileName || "data"}.jsonld`;
- link.click();
+ // Fallback: If iOS/Safari doesn't support `download`, open the data in a new tab
+ if (
+ navigator.userAgent.includes("Safari") &&
+ !navigator.userAgent.includes("Chrome")
+ ) {
+ window.open(url, "_blank");
+ } else {
+ link.click();
+ }
+
+ document.body.removeChild(link);
+ URL.revokeObjectURL(url);
};
/**
@@ -30,5 +42,16 @@ export const downloadTextFile = (text: string, fileName?: string) => {
link.href = url;
link.download = `${fileName || "data"}.txt`;
- link.click();
+ // Fallback: If iOS/Safari doesn't support `download`, open the data in a new tab
+ if (
+ navigator.userAgent.includes("Safari") &&
+ !navigator.userAgent.includes("Chrome")
+ ) {
+ window.open(url, "_blank");
+ } else {
+ link.click();
+ }
+
+ document.body.removeChild(link);
+ URL.revokeObjectURL(url);
};
diff --git a/govtool/frontend/src/utils/mapArrayToObjectByKeys.ts b/govtool/frontend/src/utils/mapArrayToObjectByKeys.ts
new file mode 100644
index 000000000..10c6099a3
--- /dev/null
+++ b/govtool/frontend/src/utils/mapArrayToObjectByKeys.ts
@@ -0,0 +1,40 @@
+/**
+ * Maps an object to a new object by including only the desired keys
+ * and converting arrays to objects.
+ * @param obj - The object to map.
+ * @param desiredKeys - An array of keys to include in the mapped object.
+ * @returns The mapped object.
+ */
+export const mapArrayToObjectByKeys = (
+ obj?: Record | null,
+ desiredKeys?: string[],
+): Record | null => {
+ if (!obj || !desiredKeys) {
+ return null;
+ }
+
+ return Object.entries(obj).reduce((acc, [key, value]) => {
+ if (desiredKeys.includes(key) && Array.isArray(value)) {
+ const arrayToObject = value.reduce>(
+ (arrayAcc, arrayValue, index) => {
+ arrayAcc[index] = arrayValue;
+ return arrayAcc;
+ },
+ {},
+ );
+ acc[key] = arrayToObject;
+ } else if (
+ typeof value === "object" &&
+ value !== null &&
+ !Array.isArray(value)
+ ) {
+ acc[key] = mapArrayToObjectByKeys(
+ value as Record,
+ desiredKeys,
+ );
+ } else {
+ acc[key] = value;
+ }
+ return acc;
+ }, {} as Record);
+};
diff --git a/govtool/frontend/src/utils/mapDtoToDrep.ts b/govtool/frontend/src/utils/mapDtoToDrep.ts
index f99469246..419973c14 100644
--- a/govtool/frontend/src/utils/mapDtoToDrep.ts
+++ b/govtool/frontend/src/utils/mapDtoToDrep.ts
@@ -1,5 +1,11 @@
-import { DRepData, DRepMetadata, DrepDataDTO } from "@/models";
+import {
+ DRepData,
+ DRepMetadata,
+ DrepDataDTO,
+ MetadataStandard,
+} from "@/models";
import { postValidate } from "@/services";
+import { fixViewForScriptBasedDRep } from "./dRep";
export const mapDtoToDrep = async (dto: DrepDataDTO): Promise => {
const emptyMetadata = {
@@ -15,10 +21,14 @@ export const mapDtoToDrep = async (dto: DrepDataDTO): Promise => {
metadataValid: true,
};
+ // DBSync contains wrong representation of DRep view for script based DReps
+ const view = fixViewForScriptBasedDRep(dto.view, dto.isScriptBased);
+
if (dto.metadataHash && dto.url) {
const validationResponse = await postValidate({
url: dto.url,
hash: dto.metadataHash,
+ standard: MetadataStandard.CIP119,
});
return {
...dto,
@@ -26,11 +36,13 @@ export const mapDtoToDrep = async (dto: DrepDataDTO): Promise => {
...validationResponse.metadata,
metadataStatus: validationResponse.status || null,
metadataValid: validationResponse.valid,
+ view,
};
}
return {
...dto,
...emptyMetadata,
+ view,
};
};
diff --git a/govtool/frontend/src/utils/mapDtoToProposal.ts b/govtool/frontend/src/utils/mapDtoToProposal.ts
index 4c118c294..9f3635350 100644
--- a/govtool/frontend/src/utils/mapDtoToProposal.ts
+++ b/govtool/frontend/src/utils/mapDtoToProposal.ts
@@ -1,4 +1,9 @@
-import { ProposalData, ProposalDataDTO, ProposalMetadata } from "@/models";
+import {
+ MetadataStandard,
+ ProposalData,
+ ProposalDataDTO,
+ ProposalMetadata,
+} from "@/models";
import { postValidate } from "@/services";
export const mapDtoToProposal = async (
@@ -8,15 +13,16 @@ export const mapDtoToProposal = async (
const validationResponse = await postValidate({
url: dto.url,
hash: dto.metadataHash,
+ standard: MetadataStandard.CIP108,
});
return {
...dto,
- title: validationResponse.metadata?.title,
- abstract: validationResponse.metadata?.abstract,
- motivation: validationResponse.metadata?.motivation,
- rationale: validationResponse.metadata?.rationale,
- references: validationResponse.metadata?.references?.map(({ uri }) => uri),
+ title: dto.title || validationResponse.metadata?.title,
+ abstract: dto.abstract || validationResponse.metadata?.abstract,
+ motivation: dto.motivation || validationResponse.metadata?.motivation,
+ rationale: dto.rationale || validationResponse.metadata?.rationale,
+ references: validationResponse.metadata?.references || [],
metadataStatus: validationResponse.status || null,
metadataValid: validationResponse.valid,
};
diff --git a/govtool/frontend/src/utils/tests/adaFormat.test.ts b/govtool/frontend/src/utils/tests/adaFormat.test.ts
index d23b4eadd..6b8aa4625 100644
--- a/govtool/frontend/src/utils/tests/adaFormat.test.ts
+++ b/govtool/frontend/src/utils/tests/adaFormat.test.ts
@@ -1,9 +1,14 @@
-import { correctAdaFormat, correctDRepDirectoryFormat } from "..";
+import { vi, beforeAll, afterAll } from "vitest";
+
+import {
+ correctAdaFormat,
+ correctVoteAdaFormat,
+ correctDRepDirectoryFormat,
+} from "..";
describe("correctAdaFormat", () => {
const LOVELACE = 1000000;
const DECIMALS = 6;
-
it("converts lovelace to ada for a given number", () => {
const lovelace = 15000000;
const expectedAda = 15;
@@ -35,6 +40,49 @@ describe("correctAdaFormat", () => {
});
});
+describe("correctVoteAdaFormat", () => {
+ beforeAll(() => {
+ vi.spyOn(Intl, "NumberFormat").mockImplementation(
+ ((_locales?: string | string[], options?: Intl.NumberFormatOptions) =>
+ new Intl.NumberFormat(
+ "en-US",
+ options,
+ )) as unknown as typeof Intl.NumberFormat,
+ );
+ });
+
+ afterAll(() => {
+ vi.restoreAllMocks();
+ });
+ test("Correctly formats lovelace value to ada format", () => {
+ const lovelace = 123456789012345;
+ const expectedResult = "123,456,789.012";
+
+ const result = correctVoteAdaFormat(lovelace, "en-US");
+
+ // Normalize spaces in both result and expectedResult for comparison
+ expect(result.replace(/\s/g, " ")).toBe(expectedResult);
+ });
+
+ test("Returns 0 for undefined lovelace value", () => {
+ const lovelace = undefined;
+ const expectedResult = "0,000";
+ expect(correctVoteAdaFormat(lovelace, "en-US")).toBe(expectedResult);
+ });
+
+ test("Returns 0 for zero lovelace value", () => {
+ const lovelace = 0;
+ const expectedResult = "0,000";
+ expect(correctVoteAdaFormat(lovelace, "en-US")).toBe(expectedResult);
+ });
+
+ test("Returns 0 for small lovelace value", () => {
+ const lovelace = 123;
+ const expectedResult = "0.000";
+ expect(correctVoteAdaFormat(lovelace, "en-US")).toBe(expectedResult);
+ });
+});
+
describe("correctDRepDirectoryFormat", () => {
test("Correctly formats lovelace value to directory format", () => {
const lovelace = 143500000000;
diff --git a/govtool/frontend/src/utils/tests/cip129identifier.test.ts b/govtool/frontend/src/utils/tests/cip129identifier.test.ts
new file mode 100644
index 000000000..8b61dd349
--- /dev/null
+++ b/govtool/frontend/src/utils/tests/cip129identifier.test.ts
@@ -0,0 +1,32 @@
+import {
+ encodeCIP129Identifier,
+ decodeCIP129Identifier,
+} from "../cip129identifier";
+
+const txID = "0e52f799df70b3b74e57d3c7c89f5d44b6deffb3b8b3a718abf9bb41d33e3a92";
+const index = "00";
+const bech32Prefix = "gov_action";
+
+describe("CIP-129 Governance Identifier", () => {
+ describe("encodeCIP129Identifier", () => {
+ it("should encode a CIP129 identifier correctly", () => {
+ const result = encodeCIP129Identifier({ txID, index, bech32Prefix });
+ expect(result).toBe(
+ "gov_action1pef00xwlwzemwnjh60ru386agjmdalanhze6wx9tlxa5r5e782fqqt7spu6",
+ );
+ });
+ });
+
+ describe("decodeCIP129Identifier", () => {
+ it("should decode a CIP129 identifier correctly", () => {
+ const result = decodeCIP129Identifier(
+ encodeCIP129Identifier({ txID, index, bech32Prefix }),
+ );
+ expect(result).toEqual({
+ txID,
+ index,
+ prefix: bech32Prefix,
+ });
+ });
+ });
+});
diff --git a/govtool/frontend/src/utils/tests/dRep.test.ts b/govtool/frontend/src/utils/tests/dRep.test.ts
index 8984de6b1..104bfe019 100644
--- a/govtool/frontend/src/utils/tests/dRep.test.ts
+++ b/govtool/frontend/src/utils/tests/dRep.test.ts
@@ -23,6 +23,7 @@ const EXAMPLE_DREP: DRepData = {
motivations: null,
qualifications: null,
doNotList: false,
+ isScriptBased: false,
};
describe("isSameDRep function", () => {
diff --git a/govtool/frontend/src/utils/tests/getDRepID.test.ts b/govtool/frontend/src/utils/tests/getDRepID.test.ts
index d533d4a40..cf577e811 100644
--- a/govtool/frontend/src/utils/tests/getDRepID.test.ts
+++ b/govtool/frontend/src/utils/tests/getDRepID.test.ts
@@ -1,22 +1,7 @@
import { vi } from "vitest";
-import { formHexToBech32, getPubDRepID } from "../getDRepID";
+import { getPubDRepID } from "../getDRepID";
import { CardanoApiWallet } from "@/models";
-const dRepIdHex = "99f2c9a961ff53099796643a514a0640379b706ad310bc751c2997c9";
-const dRepIdBech32 = "drep1n8evn2tplafsn9ukvsa9zjsxgqmekur26vgtcagu9xtujzv2yv8";
-
-describe("formHexToBech32 function", () => {
- it("returns correct dRep bech32 format", () => {
- const bech32Format = formHexToBech32(dRepIdHex);
- expect(bech32Format).toBe(dRepIdBech32);
- });
-
- it("expected undefined when no argument", () => {
- const bech32Format = formHexToBech32();
- expect(bech32Format).toBe(undefined);
- });
-});
-
const mockGetPubDRepKey = vi.fn();
const mockWalletApi = {
@@ -30,19 +15,18 @@ describe("getPubDRepID function", () => {
vi.clearAllMocks();
});
- it("returns the dRepKey, dRepID, and dRepIDBech32 when walletApi returns a valid response", async () => {
+ it("returns the dRepKey and dRepID when walletApi returns a valid response", async () => {
const dRepKey = "dRepKey123";
mockGetPubDRepKey.mockResolvedValueOnce(dRepKey);
const result = await getPubDRepID(mockWalletApi);
expect(result).toEqual({
dRepKey,
dRepID: expect.any(String),
- dRepIDBech32: expect.any(String),
});
expect(mockGetPubDRepKey).toHaveBeenCalled();
});
- it("returns undefined values for dRepKey, dRepID, and dRepIDBech32 when walletApi throws an error", async () => {
+ it("returns undefined values for dRepKey and dRepID when walletApi throws an error", async () => {
const failedToGetPubDRepKeyError = new Error("Failed to get PubDRepKey");
mockGetPubDRepKey.mockRejectedValueOnce(failedToGetPubDRepKeyError);
@@ -52,7 +36,6 @@ describe("getPubDRepID function", () => {
expect(result).toEqual({
dRepKey: undefined,
dRepID: undefined,
- dRepIDBech32: undefined,
});
expect(consoleErrorSpy).toHaveBeenCalledWith(failedToGetPubDRepKeyError);
diff --git a/govtool/frontend/src/utils/tests/getGovActionVotingThresholdKey.test.ts b/govtool/frontend/src/utils/tests/getGovActionVotingThresholdKey.test.ts
new file mode 100644
index 000000000..199274020
--- /dev/null
+++ b/govtool/frontend/src/utils/tests/getGovActionVotingThresholdKey.test.ts
@@ -0,0 +1,75 @@
+import { VoterType } from "@/components/molecules";
+import { GovernanceActionType } from "@/types/governanceAction";
+import { getGovActionVotingThresholdKey } from "../getGovActionVotingThresholdKey";
+
+describe("getGovActionVotingThresholdKey", () => {
+ it("should return the correct voting threshold key for NewCommittee and dReps voter type", () => {
+ const govActionType = GovernanceActionType.NewCommittee;
+ const voterType: VoterType = "dReps";
+ const result = getGovActionVotingThresholdKey({
+ govActionType,
+ voterType,
+ });
+ expect(result).toBe("dvt_committee_normal");
+ });
+
+ it("should return the correct voting threshold key for NewCommittee and sPos voter type", () => {
+ const govActionType = GovernanceActionType.NewCommittee;
+ const voterType: VoterType = "sPos";
+ const result = getGovActionVotingThresholdKey({
+ govActionType,
+ voterType,
+ });
+ expect(result).toBe("pvt_committee_normal");
+ });
+
+ it("should return undefined for NewCommittee and ccCommittee voter type", () => {
+ const govActionType = GovernanceActionType.NewCommittee;
+ const voterType: VoterType = "ccCommittee";
+ const result = getGovActionVotingThresholdKey({
+ govActionType,
+ voterType,
+ });
+ expect(result).toBeUndefined();
+ });
+
+ it("should return the correct voting threshold key for HardForkInitiation and dReps voter type", () => {
+ const govActionType = GovernanceActionType.HardForkInitiation;
+ const voterType: VoterType = "dReps";
+ const result = getGovActionVotingThresholdKey({
+ govActionType,
+ voterType,
+ });
+ expect(result).toBe("dvt_hard_fork_initiation");
+ });
+
+ it("should return the correct voting threshold key for HardForkInitiation and sPos voter type", () => {
+ const govActionType = GovernanceActionType.HardForkInitiation;
+ const voterType: VoterType = "sPos";
+ const result = getGovActionVotingThresholdKey({
+ govActionType,
+ voterType,
+ });
+ expect(result).toBe("pvt_hard_fork_initiation");
+ });
+
+ it("should return undefined for unknown governance action type", () => {
+ const govActionType = GovernanceActionType.InfoAction;
+ const voterType: VoterType = "dReps";
+ const result = getGovActionVotingThresholdKey({
+ govActionType,
+ voterType,
+ });
+ expect(result).toBeUndefined();
+ });
+
+ it("should return undefined for ParameterChange and sPos voter type", () => {
+ const govActionType = GovernanceActionType.ParameterChange;
+ const voterType: VoterType = "sPos";
+ const result = getGovActionVotingThresholdKey({
+ govActionType,
+ voterType,
+ });
+ expect(result).toBeUndefined();
+ });
+});
diff --git a/govtool/frontend/src/utils/tests/jsonUtils.test.ts b/govtool/frontend/src/utils/tests/jsonUtils.test.ts
index f609c4f57..792bd37e5 100644
--- a/govtool/frontend/src/utils/tests/jsonUtils.test.ts
+++ b/govtool/frontend/src/utils/tests/jsonUtils.test.ts
@@ -2,6 +2,24 @@ import { vi } from "vitest";
import { downloadJson } from "..";
describe("downloadJson", () => {
+ beforeEach(() => {
+ global.URL.createObjectURL = vi.fn(() => "mocked-url");
+ global.URL.revokeObjectURL = vi.fn();
+
+ // We should pass Node as an argument based on typing.
+ // But we are not testing this against Nodes.
+ /* eslint-disable @typescript-eslint/ban-ts-comment */
+ // @ts-expect-error
+ vi.spyOn(document.body, "appendChild").mockImplementation(() => undefined);
+ // @ts-expect-error
+ vi.spyOn(document.body, "removeChild").mockImplementation(() => undefined);
+ });
+
+ afterEach(() => {
+ // Restore the mocks after each test
+ vi.restoreAllMocks();
+ });
+
it("downloads JSON with default file name", () => {
const json = { name: "John Doe", age: 30 };
const linkMock = document.createElement("a");
@@ -12,13 +30,11 @@ describe("downloadJson", () => {
downloadJson(json);
- expect(linkMock.href).toBe(
- "data:text/jsonld;charset=utf-8,%7B%0A%20%20%22name%22%3A%20%22John%20Doe%22%2C%0A%20%20%22age%22%3A%2030%0A%7D",
- );
+ expect(linkMock.href).toBe("http://localhost:3000/mocked-url");
+
expect(linkMock.download).toBe("data.jsonld");
+ expect(global.URL.createObjectURL).toHaveBeenCalled();
expect(clickMock).toHaveBeenCalled();
-
- vi.restoreAllMocks();
});
it("downloads JSON with custom file name", () => {
@@ -31,12 +47,8 @@ describe("downloadJson", () => {
downloadJson(json, "custom");
- expect(linkMock.href).toBe(
- "data:text/jsonld;charset=utf-8,%7B%0A%20%20%22name%22%3A%20%22John%20Doe%22%2C%0A%20%20%22age%22%3A%2030%0A%7D",
- );
+ expect(linkMock.href).toBe("http://localhost:3000/mocked-url");
expect(linkMock.download).toBe("custom.jsonld");
expect(clickMock).toHaveBeenCalled();
-
- vi.restoreAllMocks();
});
});
diff --git a/govtool/frontend/yarn.lock b/govtool/frontend/yarn.lock
index 0b29b8e72..6bfedca93 100644
--- a/govtool/frontend/yarn.lock
+++ b/govtool/frontend/yarn.lock
@@ -7,6 +7,11 @@
resolved "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz"
integrity sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==
+"@alloc/quick-lru@^5.2.0":
+ version "5.2.0"
+ resolved "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz"
+ integrity sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==
+
"@ampproject/remapping@^2.2.0", "@ampproject/remapping@^2.2.1":
version "2.3.0"
resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz"
@@ -15,6 +20,15 @@
"@jridgewell/gen-mapping" "^0.3.5"
"@jridgewell/trace-mapping" "^0.3.24"
+"@apideck/better-ajv-errors@^0.3.1":
+ version "0.3.6"
+ resolved "https://registry.npmjs.org/@apideck/better-ajv-errors/-/better-ajv-errors-0.3.6.tgz"
+ integrity sha512-P+ZygBLZtkp0qqOAJJVX4oX/sFo5JR3eBWwwuqHHhK0GIgQOKWrAfiAaWX0aArHkRWHMuggFEgAZNxVPwPZYaA==
+ dependencies:
+ json-schema "^0.4.0"
+ jsonpointer "^5.0.0"
+ leven "^3.1.0"
+
"@asamuzakjp/dom-selector@^2.0.1":
version "2.0.2"
resolved "https://registry.npmjs.org/@asamuzakjp/dom-selector/-/dom-selector-2.0.2.tgz"
@@ -31,7 +45,7 @@
dependencies:
default-browser-id "3.0.0"
-"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.24.7":
+"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.16.0", "@babel/code-frame@^7.24.7", "@babel/code-frame@^7.8.3":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz"
integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==
@@ -44,7 +58,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz"
integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.18.9", "@babel/core@^7.20.12", "@babel/core@^7.22.5", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9", "@babel/core@^7.24.5", "@babel/core@^7.7.5":
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.0.0-0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.1.0", "@babel/core@^7.11.0", "@babel/core@^7.11.1", "@babel/core@^7.11.6", "@babel/core@^7.12.0", "@babel/core@^7.12.3", "@babel/core@^7.13.0", "@babel/core@^7.16.0", "@babel/core@^7.18.9", "@babel/core@^7.20.12", "@babel/core@^7.22.5", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9", "@babel/core@^7.24.4", "@babel/core@^7.24.5", "@babel/core@^7.4.0 || ^8.0.0-0 <8.0.0", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.8.0":
version "7.25.2"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz"
integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==
@@ -65,6 +79,15 @@
json5 "^2.2.3"
semver "^6.3.1"
+"@babel/eslint-parser@^7.16.3":
+ version "7.25.1"
+ resolved "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.1.tgz"
+ integrity sha512-Y956ghgTT4j7rKesabkh5WeqgSFZVFwaPR0IWFm7KFHFmmJ4afbG49SmfW4S+GyRPx0Dy5jxEWA5t0rpxfElWg==
+ dependencies:
+ "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1"
+ eslint-visitor-keys "^2.1.0"
+ semver "^6.3.1"
+
"@babel/generator@^7.22.5", "@babel/generator@^7.23.0", "@babel/generator@^7.25.0", "@babel/generator@^7.25.6", "@babel/generator@^7.7.2":
version "7.25.6"
resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz"
@@ -101,7 +124,7 @@
lru-cache "^5.1.1"
semver "^6.3.1"
-"@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0", "@babel/helper-create-class-features-plugin@^7.25.4":
+"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.24.7", "@babel/helper-create-class-features-plugin@^7.25.0", "@babel/helper-create-class-features-plugin@^7.25.4":
version "7.25.4"
resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz"
integrity sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==
@@ -142,7 +165,7 @@
"@babel/traverse" "^7.24.8"
"@babel/types" "^7.24.8"
-"@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.24.7":
+"@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.16.7", "@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.24.7":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz"
integrity sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==
@@ -167,7 +190,7 @@
dependencies:
"@babel/types" "^7.24.7"
-"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
+"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.24.7", "@babel/helper-plugin-utils@^7.24.8", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
version "7.24.8"
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz"
integrity sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==
@@ -198,7 +221,7 @@
"@babel/traverse" "^7.24.7"
"@babel/types" "^7.24.7"
-"@babel/helper-skip-transparent-expression-wrappers@^7.24.7":
+"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.24.7":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz"
integrity sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==
@@ -294,6 +317,56 @@
"@babel/helper-plugin-utils" "^7.24.8"
"@babel/traverse" "^7.25.0"
+"@babel/plugin-proposal-class-properties@^7.16.0":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz"
+ integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
+"@babel/plugin-proposal-decorators@^7.16.4":
+ version "7.24.7"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.7.tgz"
+ integrity sha512-RL9GR0pUG5Kc8BUWLNDm2T5OpYwSX15r98I0IkgmRQTXuELq/OynH8xtMTMvTJFjXbMWFVTKtYkTaYQsuAwQlQ==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.7"
+ "@babel/plugin-syntax-decorators" "^7.24.7"
+
+"@babel/plugin-proposal-nullish-coalescing-operator@^7.16.0":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz"
+ integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
+
+"@babel/plugin-proposal-numeric-separator@^7.16.0":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz"
+ integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.18.6"
+ "@babel/plugin-syntax-numeric-separator" "^7.10.4"
+
+"@babel/plugin-proposal-optional-chaining@^7.16.0":
+ version "7.21.0"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz"
+ integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.20.2"
+ "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0"
+ "@babel/plugin-syntax-optional-chaining" "^7.8.3"
+
+"@babel/plugin-proposal-private-methods@^7.16.0":
+ version "7.18.6"
+ resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz"
+ integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==
+ dependencies:
+ "@babel/helper-create-class-features-plugin" "^7.18.6"
+ "@babel/helper-plugin-utils" "^7.18.6"
+
"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
version "7.21.0-placeholder-for-preset-env.2"
resolved "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz"
@@ -327,6 +400,13 @@
dependencies:
"@babel/helper-plugin-utils" "^7.14.5"
+"@babel/plugin-syntax-decorators@^7.24.7":
+ version "7.24.7"
+ resolved "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.7.tgz"
+ integrity sha512-Ui4uLJJrRV1lb38zg1yYTmRKmiZLiftDEvZN2iq3kd9kUFU+PttmzTbAFC2ucRk/XJmtek6G23gPsuZbhrT8fQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.24.7"
+
"@babel/plugin-syntax-dynamic-import@^7.8.3":
version "7.8.3"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz"
@@ -341,7 +421,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.8.3"
-"@babel/plugin-syntax-flow@^7.24.7":
+"@babel/plugin-syntax-flow@^7.14.5", "@babel/plugin-syntax-flow@^7.24.7":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz"
integrity sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==
@@ -585,7 +665,7 @@
"@babel/helper-plugin-utils" "^7.24.7"
"@babel/plugin-syntax-export-namespace-from" "^7.8.3"
-"@babel/plugin-transform-flow-strip-types@^7.24.7":
+"@babel/plugin-transform-flow-strip-types@^7.16.0", "@babel/plugin-transform-flow-strip-types@^7.24.7":
version "7.25.2"
resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz"
integrity sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==
@@ -773,7 +853,14 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-react-display-name@^7.24.7":
+"@babel/plugin-transform-react-constant-elements@^7.12.1":
+ version "7.25.1"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.1.tgz"
+ integrity sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==
+ dependencies:
+ "@babel/helper-plugin-utils" "^7.24.8"
+
+"@babel/plugin-transform-react-display-name@^7.16.0", "@babel/plugin-transform-react-display-name@^7.24.7":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz"
integrity sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==
@@ -801,7 +888,7 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
-"@babel/plugin-transform-react-jsx@^7.24.7":
+"@babel/plugin-transform-react-jsx@^7.14.9", "@babel/plugin-transform-react-jsx@^7.24.7":
version "7.25.2"
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz"
integrity sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==
@@ -835,6 +922,18 @@
dependencies:
"@babel/helper-plugin-utils" "^7.24.7"
+"@babel/plugin-transform-runtime@^7.16.4":
+ version "7.25.4"
+ resolved "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.4.tgz"
+ integrity sha512-8hsyG+KUYGY0coX6KUCDancA0Vw225KJ2HJO0yCNr1vq5r+lJTleDaJf0K7iOhjw4SWhu03TMBzYTJ9krmzULQ==
+ dependencies:
+ "@babel/helper-module-imports" "^7.24.7"
+ "@babel/helper-plugin-utils" "^7.24.8"
+ babel-plugin-polyfill-corejs2 "^0.4.10"
+ babel-plugin-polyfill-corejs3 "^0.10.6"
+ babel-plugin-polyfill-regenerator "^0.6.1"
+ semver "^6.3.1"
+
"@babel/plugin-transform-shorthand-properties@^7.24.7":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz"
@@ -913,7 +1012,7 @@
"@babel/helper-create-regexp-features-plugin" "^7.25.2"
"@babel/helper-plugin-utils" "^7.24.8"
-"@babel/preset-env@^7.23.2":
+"@babel/preset-env@^7.1.6", "@babel/preset-env@^7.11.0", "@babel/preset-env@^7.12.1", "@babel/preset-env@^7.16.4", "@babel/preset-env@^7.23.2", "@babel/preset-env@^7.24.4":
version "7.25.4"
resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz"
integrity sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==
@@ -1020,7 +1119,7 @@
"@babel/types" "^7.4.4"
esutils "^2.0.2"
-"@babel/preset-react@^7.24.7":
+"@babel/preset-react@^7.12.5", "@babel/preset-react@^7.16.0", "@babel/preset-react@^7.24.7":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.7.tgz"
integrity sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==
@@ -1032,7 +1131,7 @@
"@babel/plugin-transform-react-jsx-development" "^7.24.7"
"@babel/plugin-transform-react-pure-annotations" "^7.24.7"
-"@babel/preset-typescript@^7.23.0":
+"@babel/preset-typescript@^7.16.0", "@babel/preset-typescript@^7.23.0":
version "7.24.7"
resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.7.tgz"
integrity sha512-SyXRe3OdWwIwalxDg5UtJnJQO+YPcTfwiIY2B0Xlddh9o7jpWLvv8X1RthIeDOxQ+O1ML5BLPCONToObyVQVuQ==
@@ -1059,7 +1158,7 @@
resolved "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz"
integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==
-"@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
+"@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.16.3", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.21.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.23.9", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2":
version "7.25.6"
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz"
integrity sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==
@@ -1075,7 +1174,7 @@
"@babel/parser" "^7.25.0"
"@babel/types" "^7.25.0"
-"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.4":
+"@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.24.7", "@babel/traverse@^7.24.8", "@babel/traverse@^7.25.0", "@babel/traverse@^7.25.1", "@babel/traverse@^7.25.2", "@babel/traverse@^7.25.3", "@babel/traverse@^7.25.4", "@babel/traverse@^7.7.2":
version "7.25.6"
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz"
integrity sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==
@@ -1088,7 +1187,7 @@
debug "^4.3.1"
globals "^11.1.0"
-"@babel/types@^7.0.0", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.4", "@babel/types@^7.25.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
+"@babel/types@^7.0.0", "@babel/types@^7.12.6", "@babel/types@^7.18.9", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.7", "@babel/types@^7.24.8", "@babel/types@^7.25.0", "@babel/types@^7.25.2", "@babel/types@^7.25.4", "@babel/types@^7.25.6", "@babel/types@^7.3.3", "@babel/types@^7.4.4":
version "7.25.6"
resolved "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz"
integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==
@@ -1112,6 +1211,117 @@
resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz"
integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
+"@csstools/normalize.css@*":
+ version "12.1.1"
+ resolved "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz"
+ integrity sha512-YAYeJ+Xqh7fUou1d1j9XHl44BmsuThiTr4iNrgCQ3J27IbhXsxXDGZ1cXv8Qvs99d4rBbLiSKy3+WZiet32PcQ==
+
+"@csstools/postcss-cascade-layers@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz"
+ integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.2"
+ postcss-selector-parser "^6.0.10"
+
+"@csstools/postcss-color-function@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz"
+ integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==
+ dependencies:
+ "@csstools/postcss-progressive-custom-properties" "^1.1.0"
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-font-format-keywords@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz"
+ integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-hwb-function@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz"
+ integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-ic-unit@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz"
+ integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==
+ dependencies:
+ "@csstools/postcss-progressive-custom-properties" "^1.1.0"
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-is-pseudo-class@^2.0.7":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz"
+ integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.0"
+ postcss-selector-parser "^6.0.10"
+
+"@csstools/postcss-nested-calc@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz"
+ integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-normalize-display-values@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz"
+ integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-oklab-function@^1.1.1":
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz"
+ integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==
+ dependencies:
+ "@csstools/postcss-progressive-custom-properties" "^1.1.0"
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0":
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz"
+ integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-stepped-value-functions@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz"
+ integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-text-decoration-shorthand@^1.0.0":
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz"
+ integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-trigonometric-functions@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz"
+ integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+"@csstools/postcss-unset-value@^1.0.2":
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz"
+ integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==
+
+"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2":
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz"
+ integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==
+
"@digitalbazaar/http-client@^3.4.1":
version "3.4.1"
resolved "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz"
@@ -1171,7 +1381,7 @@
resolved "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz"
integrity sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==
-"@emotion/react@^11.11.1":
+"@emotion/react@^11.0.0-rc.0", "@emotion/react@^11.11.1", "@emotion/react@^11.11.4", "@emotion/react@^11.4.1", "@emotion/react@^11.5.0":
version "11.13.3"
resolved "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz"
integrity sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==
@@ -1201,7 +1411,7 @@
resolved "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz"
integrity sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==
-"@emotion/styled@^11.11.0":
+"@emotion/styled@^11.11.0", "@emotion/styled@^11.11.5", "@emotion/styled@^11.3.0":
version "11.13.0"
resolved "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz"
integrity sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==
@@ -1233,351 +1443,26 @@
resolved "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz"
integrity sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==
-"@emurgo/cardano-serialization-lib-asmjs@12.0.0-beta.2", "@emurgo/cardano-serialization-lib-asmjs@^12.0.0-beta.2":
- version "12.0.0-beta.2"
- resolved "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-asmjs/-/cardano-serialization-lib-asmjs-12.0.0-beta.2.tgz"
- integrity sha512-WVM/TDBb2/Pvq/PxKkoMFz/iuxXfFDuBbD1dem+olg4kqut7x2Fu5SM/iNmKvZF3DbiuA7fQVTabj14i7C9g+w==
-
-"@esbuild/aix-ppc64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f"
- integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==
-
-"@esbuild/aix-ppc64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f"
- integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==
-
-"@esbuild/android-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz#984b4f9c8d0377443cc2dfcef266d02244593622"
- integrity sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==
-
-"@esbuild/android-arm64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4"
- integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==
-
-"@esbuild/android-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052"
- integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==
-
-"@esbuild/android-arm@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.18.20.tgz#fedb265bc3a589c84cc11f810804f234947c3682"
- integrity sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==
-
-"@esbuild/android-arm@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824"
- integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==
-
-"@esbuild/android-arm@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28"
- integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==
-
-"@esbuild/android-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.18.20.tgz#35cf419c4cfc8babe8893d296cd990e9e9f756f2"
- integrity sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==
-
-"@esbuild/android-x64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d"
- integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==
-
-"@esbuild/android-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e"
- integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==
-
-"@esbuild/darwin-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz"
- integrity sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==
-
-"@esbuild/darwin-arm64@0.19.12":
- version "0.19.12"
- resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz"
- integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==
-
-"@esbuild/darwin-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz"
- integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==
-
-"@esbuild/darwin-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz#d70d5790d8bf475556b67d0f8b7c5bdff053d85d"
- integrity sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==
-
-"@esbuild/darwin-x64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd"
- integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==
-
-"@esbuild/darwin-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22"
- integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==
-
-"@esbuild/freebsd-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz#98755cd12707f93f210e2494d6a4b51b96977f54"
- integrity sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==
-
-"@esbuild/freebsd-arm64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487"
- integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==
-
-"@esbuild/freebsd-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e"
- integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==
-
-"@esbuild/freebsd-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz#c1eb2bff03915f87c29cece4c1a7fa1f423b066e"
- integrity sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==
-
-"@esbuild/freebsd-x64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c"
- integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==
-
-"@esbuild/freebsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261"
- integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==
-
-"@esbuild/linux-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz#bad4238bd8f4fc25b5a021280c770ab5fc3a02a0"
- integrity sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==
-
-"@esbuild/linux-arm64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b"
- integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==
-
-"@esbuild/linux-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b"
- integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==
-
-"@esbuild/linux-arm@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz#3e617c61f33508a27150ee417543c8ab5acc73b0"
- integrity sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==
-
-"@esbuild/linux-arm@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef"
- integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==
-
-"@esbuild/linux-arm@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9"
- integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==
-
-"@esbuild/linux-ia32@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz#699391cccba9aee6019b7f9892eb99219f1570a7"
- integrity sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==
-
-"@esbuild/linux-ia32@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601"
- integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==
-
-"@esbuild/linux-ia32@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2"
- integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==
-
-"@esbuild/linux-loong64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz#e6fccb7aac178dd2ffb9860465ac89d7f23b977d"
- integrity sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==
-
-"@esbuild/linux-loong64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299"
- integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==
-
-"@esbuild/linux-loong64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df"
- integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==
-
-"@esbuild/linux-mips64el@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz#eeff3a937de9c2310de30622a957ad1bd9183231"
- integrity sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==
-
-"@esbuild/linux-mips64el@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec"
- integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==
-
-"@esbuild/linux-mips64el@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe"
- integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==
-
-"@esbuild/linux-ppc64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz#2f7156bde20b01527993e6881435ad79ba9599fb"
- integrity sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==
-
-"@esbuild/linux-ppc64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8"
- integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==
-
-"@esbuild/linux-ppc64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4"
- integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==
-
-"@esbuild/linux-riscv64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz#6628389f210123d8b4743045af8caa7d4ddfc7a6"
- integrity sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==
-
-"@esbuild/linux-riscv64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf"
- integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==
-
-"@esbuild/linux-riscv64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc"
- integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==
-
-"@esbuild/linux-s390x@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz#255e81fb289b101026131858ab99fba63dcf0071"
- integrity sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==
-
-"@esbuild/linux-s390x@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8"
- integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==
-
-"@esbuild/linux-s390x@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de"
- integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==
+"@emurgo/cardano-serialization-lib-asmjs@^12.0.0-beta.2", "@emurgo/cardano-serialization-lib-asmjs@^12.1.0":
+ version "12.1.0"
+ resolved "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-asmjs/-/cardano-serialization-lib-asmjs-12.1.0.tgz"
+ integrity sha512-LVClEWmZmTvaXTBUpSOdyAYr10PlnfEycG1Z5m96aHWN08mdQH/x2LyZxuCjWVSusrG3ZwFnsOYZCHLel7tu4g==
"@esbuild/linux-x64@0.18.20":
version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz#c7690b3417af318a9b6f96df3031a8865176d338"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz"
integrity sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==
"@esbuild/linux-x64@0.19.12":
version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz"
integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==
"@esbuild/linux-x64@0.21.5":
version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0"
+ resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz"
integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==
-"@esbuild/netbsd-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz#30e8cd8a3dded63975e2df2438ca109601ebe0d1"
- integrity sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==
-
-"@esbuild/netbsd-x64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b"
- integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==
-
-"@esbuild/netbsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047"
- integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==
-
-"@esbuild/openbsd-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz#7812af31b205055874c8082ea9cf9ab0da6217ae"
- integrity sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==
-
-"@esbuild/openbsd-x64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0"
- integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==
-
-"@esbuild/openbsd-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70"
- integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==
-
-"@esbuild/sunos-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz#d5c275c3b4e73c9b0ecd38d1ca62c020f887ab9d"
- integrity sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==
-
-"@esbuild/sunos-x64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30"
- integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==
-
-"@esbuild/sunos-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b"
- integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==
-
-"@esbuild/win32-arm64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz#73bc7f5a9f8a77805f357fab97f290d0e4820ac9"
- integrity sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==
-
-"@esbuild/win32-arm64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae"
- integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==
-
-"@esbuild/win32-arm64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d"
- integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==
-
-"@esbuild/win32-ia32@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz#ec93cbf0ef1085cc12e71e0d661d20569ff42102"
- integrity sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==
-
-"@esbuild/win32-ia32@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67"
- integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==
-
-"@esbuild/win32-ia32@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b"
- integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==
-
-"@esbuild/win32-x64@0.18.20":
- version "0.18.20"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz#786c5f41f043b07afb1af37683d7c33668858f6d"
- integrity sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==
-
-"@esbuild/win32-x64@0.19.12":
- version "0.19.12"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae"
- integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==
-
-"@esbuild/win32-x64@0.21.5":
- version "0.21.5"
- resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c"
- integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==
-
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
version "4.4.0"
resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
@@ -1585,7 +1470,7 @@
dependencies:
eslint-visitor-keys "^3.3.0"
-"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.6.1":
+"@eslint-community/regexpp@^4.10.0", "@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.6.1":
version "4.11.0"
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz"
integrity sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==
@@ -1693,10 +1578,10 @@
resolved "https://registry.npmjs.org/@intersect.mbo/intersectmbo.org-icons-set/-/intersectmbo.org-icons-set-1.1.0.tgz"
integrity sha512-sjKEtnK9eLYH/8kCD0YRQCms3byFA/tnSsei9NHTZbBYX9sBpeX6ErfR0sKYjOSxQOxl4FumX9D0X+vHIqxo8g==
-"@intersect.mbo/pdf-ui@^0.3.8":
- version "0.3.8"
- resolved "https://registry.npmjs.org/@intersect.mbo/pdf-ui/-/pdf-ui-0.3.8.tgz"
- integrity sha512-eI8Uo2b6Byi7kQKOYA7TGCj3h96P4WP+kv0ZHKCPs/yVR6w1IGQHrXmBM9B0SlXh/gAQvW/kzTeZyL+nnL5ZOg==
+"@intersect.mbo/pdf-ui@^0.4.0":
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/@intersect.mbo/pdf-ui/-/pdf-ui-0.4.0.tgz"
+ integrity sha512-0Wc0fze9zFy7wCGVaDMdWf5eI9flwLHnUDlGQYKEFi7y5DM2uH2rT1OSFw7h2uAnfjZJ0w3pivI1TjPi3HkAIg==
dependencies:
"@emurgo/cardano-serialization-lib-asmjs" "^12.0.0-beta.2"
"@fontsource/poppins" "^5.0.14"
@@ -1736,6 +1621,30 @@
resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz"
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
+"@jest/console@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz"
+ integrity sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^27.5.1"
+ jest-util "^27.5.1"
+ slash "^3.0.0"
+
+"@jest/console@^28.1.3":
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz"
+ integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==
+ dependencies:
+ "@jest/types" "^28.1.3"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ jest-message-util "^28.1.3"
+ jest-util "^28.1.3"
+ slash "^3.0.0"
+
"@jest/console@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz"
@@ -1748,6 +1657,40 @@
jest-util "^29.7.0"
slash "^3.0.0"
+"@jest/core@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/core/-/core-27.5.1.tgz"
+ integrity sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==
+ dependencies:
+ "@jest/console" "^27.5.1"
+ "@jest/reporters" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ emittery "^0.8.1"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ jest-changed-files "^27.5.1"
+ jest-config "^27.5.1"
+ jest-haste-map "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-resolve-dependencies "^27.5.1"
+ jest-runner "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
+ jest-watcher "^27.5.1"
+ micromatch "^4.0.4"
+ rimraf "^3.0.0"
+ slash "^3.0.0"
+ strip-ansi "^6.0.0"
+
"@jest/core@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz"
@@ -1789,8 +1732,18 @@
dependencies:
"@jest/types" "^29.6.3"
-"@jest/environment@^29.7.0":
- version "29.7.0"
+"@jest/environment@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/environment/-/environment-27.5.1.tgz"
+ integrity sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==
+ dependencies:
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ jest-mock "^27.5.1"
+
+"@jest/environment@^29.7.0":
+ version "29.7.0"
resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz"
integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==
dependencies:
@@ -1814,6 +1767,18 @@
expect "^29.7.0"
jest-snapshot "^29.7.0"
+"@jest/fake-timers@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.5.1.tgz"
+ integrity sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ "@sinonjs/fake-timers" "^8.0.1"
+ "@types/node" "*"
+ jest-message-util "^27.5.1"
+ jest-mock "^27.5.1"
+ jest-util "^27.5.1"
+
"@jest/fake-timers@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz"
@@ -1826,7 +1791,16 @@
jest-mock "^29.7.0"
jest-util "^29.7.0"
-"@jest/globals@^29.7.0":
+"@jest/globals@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/globals/-/globals-27.5.1.tgz"
+ integrity sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ expect "^27.5.1"
+
+"@jest/globals@^29.7.0", "@jest/globals@>= 28":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz"
integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==
@@ -1836,6 +1810,37 @@
"@jest/types" "^29.6.3"
jest-mock "^29.7.0"
+"@jest/reporters@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-27.5.1.tgz"
+ integrity sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==
+ dependencies:
+ "@bcoe/v8-coverage" "^0.2.3"
+ "@jest/console" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ collect-v8-coverage "^1.0.0"
+ exit "^0.1.2"
+ glob "^7.1.2"
+ graceful-fs "^4.2.9"
+ istanbul-lib-coverage "^3.0.0"
+ istanbul-lib-instrument "^5.1.0"
+ istanbul-lib-report "^3.0.0"
+ istanbul-lib-source-maps "^4.0.0"
+ istanbul-reports "^3.1.3"
+ jest-haste-map "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-util "^27.5.1"
+ jest-worker "^27.5.1"
+ slash "^3.0.0"
+ source-map "^0.6.0"
+ string-length "^4.0.1"
+ terminal-link "^2.0.0"
+ v8-to-istanbul "^8.1.0"
+
"@jest/reporters@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz"
@@ -1880,6 +1885,15 @@
dependencies:
"@sinclair/typebox" "^0.27.8"
+"@jest/source-map@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-27.5.1.tgz"
+ integrity sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==
+ dependencies:
+ callsites "^3.0.0"
+ graceful-fs "^4.2.9"
+ source-map "^0.6.0"
+
"@jest/source-map@^29.6.3":
version "29.6.3"
resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz"
@@ -1889,6 +1903,26 @@
callsites "^3.0.0"
graceful-fs "^4.2.9"
+"@jest/test-result@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-27.5.1.tgz"
+ integrity sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==
+ dependencies:
+ "@jest/console" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
+"@jest/test-result@^28.1.3":
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz"
+ integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==
+ dependencies:
+ "@jest/console" "^28.1.3"
+ "@jest/types" "^28.1.3"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ collect-v8-coverage "^1.0.0"
+
"@jest/test-result@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz"
@@ -1899,6 +1933,16 @@
"@types/istanbul-lib-coverage" "^2.0.0"
collect-v8-coverage "^1.0.0"
+"@jest/test-sequencer@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.5.1.tgz"
+ integrity sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==
+ dependencies:
+ "@jest/test-result" "^27.5.1"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.1"
+ jest-runtime "^27.5.1"
+
"@jest/test-sequencer@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz"
@@ -1909,6 +1953,27 @@
jest-haste-map "^29.7.0"
slash "^3.0.0"
+"@jest/transform@^27.5.1":
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/@jest/transform/-/transform-27.5.1.tgz"
+ integrity sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==
+ dependencies:
+ "@babel/core" "^7.1.0"
+ "@jest/types" "^27.5.1"
+ babel-plugin-istanbul "^6.1.1"
+ chalk "^4.0.0"
+ convert-source-map "^1.4.0"
+ fast-json-stable-stringify "^2.0.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-util "^27.5.1"
+ micromatch "^4.0.4"
+ pirates "^4.0.4"
+ slash "^3.0.0"
+ source-map "^0.6.1"
+ write-file-atomic "^3.0.0"
+
"@jest/transform@^29.3.1", "@jest/transform@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz"
@@ -1941,6 +2006,18 @@
"@types/yargs" "^16.0.0"
chalk "^4.0.0"
+"@jest/types@^28.1.3":
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz"
+ integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==
+ dependencies:
+ "@jest/schemas" "^28.1.3"
+ "@types/istanbul-lib-coverage" "^2.0.0"
+ "@types/istanbul-reports" "^3.0.0"
+ "@types/node" "*"
+ "@types/yargs" "^17.0.8"
+ chalk "^4.0.0"
+
"@jest/types@^29.6.3":
version "29.6.3"
resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz"
@@ -1963,7 +2040,7 @@
magic-string "^0.27.0"
react-docgen-typescript "^2.2.2"
-"@jridgewell/gen-mapping@^0.3.5":
+"@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5":
version "0.3.5"
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"
integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
@@ -1982,12 +2059,20 @@
resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz"
integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
+"@jridgewell/source-map@^0.3.3":
+ version "0.3.6"
+ resolved "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz"
+ integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.5"
+ "@jridgewell/trace-mapping" "^0.3.25"
+
"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.13", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0":
version "1.5.0"
resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
-"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
+"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.23", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
version "0.3.25"
resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
@@ -2011,6 +2096,11 @@
resolved "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz"
integrity sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==
+"@leichtgewicht/ip-codec@^2.0.1":
+ version "2.0.5"
+ resolved "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz"
+ integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==
+
"@mdx-js/react@^2.1.5":
version "2.3.0"
resolved "https://registry.npmjs.org/@mdx-js/react/-/react-2.3.0.tgz"
@@ -2031,7 +2121,7 @@
dependencies:
"@babel/runtime" "^7.23.9"
-"@mui/material@^5.14.4":
+"@mui/material@^5.0.0", "@mui/material@^5.14.4", "@mui/material@^5.15.18":
version "5.16.7"
resolved "https://registry.npmjs.org/@mui/material/-/material-5.16.7.tgz"
integrity sha512-cwwVQxBhK60OIOqZOVLFt55t01zmarKJiJUWbk0+8s/Ix5IaUzAShqlJchxsIQ4mSrWqgcKCCXKtIlG5H+/Jmg==
@@ -2108,6 +2198,13 @@
pump "^3.0.0"
tar-fs "^2.1.1"
+"@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1":
+ version "5.1.1-v1"
+ resolved "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz"
+ integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==
+ dependencies:
+ eslint-scope "5.1.1"
+
"@nodelib/fs.scandir@2.1.5":
version "2.1.5"
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
@@ -2116,7 +2213,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -2134,6 +2231,19 @@
resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
+"@pmmmwh/react-refresh-webpack-plugin@^0.5.3":
+ version "0.5.15"
+ resolved "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz"
+ integrity sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==
+ dependencies:
+ ansi-html "^0.0.9"
+ core-js-pure "^3.23.3"
+ error-stack-parser "^2.0.6"
+ html-entities "^2.1.0"
+ loader-utils "^2.0.4"
+ schema-utils "^4.2.0"
+ source-map "^0.7.3"
+
"@polka/url@^1.0.0-next.24":
version "1.0.0-next.25"
resolved "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz"
@@ -2502,6 +2612,14 @@
resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.19.1.tgz"
integrity sha512-S45oynt/WH19bHbIXjtli6QmwNYvaz+vtnubvNpNDvUOoA/OWh6j1OikIP3G+v5GHdxyC6EXoChG3HgYGEUfcg==
+"@rollup/plugin-babel@^5.2.0":
+ version "5.3.1"
+ resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-5.3.1.tgz"
+ integrity sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==
+ dependencies:
+ "@babel/helper-module-imports" "^7.10.4"
+ "@rollup/pluginutils" "^3.1.0"
+
"@rollup/plugin-babel@^6.0.4":
version "6.0.4"
resolved "https://registry.npmjs.org/@rollup/plugin-babel/-/plugin-babel-6.0.4.tgz"
@@ -2510,6 +2628,35 @@
"@babel/helper-module-imports" "^7.18.6"
"@rollup/pluginutils" "^5.0.1"
+"@rollup/plugin-node-resolve@^11.2.1":
+ version "11.2.1"
+ resolved "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz"
+ integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==
+ dependencies:
+ "@rollup/pluginutils" "^3.1.0"
+ "@types/resolve" "1.17.1"
+ builtin-modules "^3.1.0"
+ deepmerge "^4.2.2"
+ is-module "^1.0.0"
+ resolve "^1.19.0"
+
+"@rollup/plugin-replace@^2.4.1":
+ version "2.4.2"
+ resolved "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz"
+ integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg==
+ dependencies:
+ "@rollup/pluginutils" "^3.1.0"
+ magic-string "^0.25.7"
+
+"@rollup/pluginutils@^3.1.0":
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz"
+ integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==
+ dependencies:
+ "@types/estree" "0.0.39"
+ estree-walker "^1.0.1"
+ picomatch "^2.2.2"
+
"@rollup/pluginutils@^5.0.1", "@rollup/pluginutils@^5.0.2", "@rollup/pluginutils@^5.1.0":
version "5.1.0"
resolved "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz"
@@ -2519,90 +2666,20 @@
estree-walker "^2.0.2"
picomatch "^2.3.1"
-"@rollup/rollup-android-arm-eabi@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.2.tgz#0412834dc423d1ff7be4cb1fc13a86a0cd262c11"
- integrity sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==
-
-"@rollup/rollup-android-arm64@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.2.tgz#baf1a014b13654f3b9e835388df9caf8c35389cb"
- integrity sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==
-
-"@rollup/rollup-darwin-arm64@4.21.2":
- version "4.21.2"
- resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.2.tgz"
- integrity sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==
-
-"@rollup/rollup-darwin-x64@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.2.tgz#a972db75890dfab8df0da228c28993220a468c42"
- integrity sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.2.tgz#1609d0630ef61109dd19a278353e5176d92e30a1"
- integrity sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==
-
-"@rollup/rollup-linux-arm-musleabihf@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.2.tgz#3c1dca5f160aa2e79e4b20ff6395eab21804f266"
- integrity sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==
-
-"@rollup/rollup-linux-arm64-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.2.tgz#c2fe376e8b04eafb52a286668a8df7c761470ac7"
- integrity sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==
-
-"@rollup/rollup-linux-arm64-musl@4.12.0":
- version "4.12.0"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz#3882a4e3a564af9e55804beeb67076857b035ab7"
- integrity sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==
-
-"@rollup/rollup-linux-arm64-musl@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.2.tgz#e62a4235f01e0f66dbba587c087ca6db8008ec80"
- integrity sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==
-
-"@rollup/rollup-linux-powerpc64le-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.2.tgz#24b3457e75ee9ae5b1c198bd39eea53222a74e54"
- integrity sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==
-
-"@rollup/rollup-linux-riscv64-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.2.tgz#38edfba9620fe2ca8116c97e02bd9f2d606bde09"
- integrity sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==
-
-"@rollup/rollup-linux-s390x-gnu@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.2.tgz#a3bfb8bc5f1e802f8c76cff4a4be2e9f9ac36a18"
- integrity sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==
-
"@rollup/rollup-linux-x64-gnu@4.21.2":
version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz#0dadf34be9199fcdda44b5985a086326344f30ad"
+ resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.2.tgz"
integrity sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==
"@rollup/rollup-linux-x64-musl@4.21.2":
version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz#7b7deddce240400eb87f2406a445061b4fed99a8"
+ resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.2.tgz"
integrity sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==
-"@rollup/rollup-win32-arm64-msvc@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.2.tgz#a0ca0c5149c2cfb26fab32e6ba3f16996fbdb504"
- integrity sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==
-
-"@rollup/rollup-win32-ia32-msvc@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.2.tgz#aae2886beec3024203dbb5569db3a137bc385f8e"
- integrity sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==
-
-"@rollup/rollup-win32-x64-msvc@4.21.2":
- version "4.21.2"
- resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.2.tgz#e4291e3c1bc637083f87936c333cdbcad22af63b"
- integrity sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==
+"@rushstack/eslint-patch@^1.1.0":
+ version "1.10.4"
+ resolved "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz"
+ integrity sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==
"@sentry-internal/feedback@7.119.0":
version "7.119.0"
@@ -2724,6 +2801,18 @@
resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz"
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
+"@sindresorhus/merge-streams@^2.1.0":
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz"
+ integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==
+
+"@sinonjs/commons@^1.7.0":
+ version "1.8.6"
+ resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz"
+ integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==
+ dependencies:
+ type-detect "4.0.8"
+
"@sinonjs/commons@^3.0.0":
version "3.0.1"
resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz"
@@ -2738,6 +2827,13 @@
dependencies:
"@sinonjs/commons" "^3.0.0"
+"@sinonjs/fake-timers@^8.0.1":
+ version "8.1.0"
+ resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz"
+ integrity sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==
+ dependencies:
+ "@sinonjs/commons" "^1.7.0"
+
"@storybook/addon-actions@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.20.tgz"
@@ -2890,7 +2986,7 @@
dependencies:
memoizerific "^1.11.3"
-"@storybook/blocks@7.6.20", "@storybook/blocks@^7.4.5":
+"@storybook/blocks@^7.4.5", "@storybook/blocks@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.20.tgz"
integrity sha512-xADKGEOJWkG0UD5jbY4mBXRlmj2C+CIupDL0/hpzvLvwobxBMFPKZIkcZIMvGvVnI/Ui+tJxQxLSuJ5QsPthUw==
@@ -3048,6 +3144,25 @@
prettier "^2.8.0"
recast "^0.23.1"
+"@storybook/codemod@8.2.9":
+ version "8.2.9"
+ resolved "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.2.9.tgz"
+ integrity sha512-3yRx1lFMm1FXWVv+CKDiYM4gOQPEfpcZAQrjfcumxSDUrB091pnU1PeI92Prj3vCdi4+0oPNuN4yDGNUYTMP/A==
+ dependencies:
+ "@babel/core" "^7.24.4"
+ "@babel/preset-env" "^7.24.4"
+ "@babel/types" "^7.24.0"
+ "@storybook/core" "8.2.9"
+ "@storybook/csf" "0.1.11"
+ "@types/cross-spawn" "^6.0.2"
+ cross-spawn "^7.0.3"
+ globby "^14.0.1"
+ jscodeshift "^0.15.1"
+ lodash "^4.17.21"
+ prettier "^3.1.1"
+ recast "^0.23.5"
+ tiny-invariant "^1.3.1"
+
"@storybook/components@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/components/-/components-7.6.20.tgz"
@@ -3072,7 +3187,7 @@
"@storybook/client-logger" "7.6.20"
"@storybook/preview-api" "7.6.20"
-"@storybook/core-common@7.6.20", "@storybook/core-common@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0":
+"@storybook/core-common@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0", "@storybook/core-common@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.20.tgz"
integrity sha512-8H1zPWPjcmeD4HbDm4FDD0WLsfAKGVr566IZ4hG+h3iWVW57II9JW9MLBtiR2LPSd8u7o0kw64lwRGmtCO1qAw==
@@ -3154,6 +3269,23 @@
watchpack "^2.2.0"
ws "^8.2.3"
+"@storybook/core@8.2.9":
+ version "8.2.9"
+ resolved "https://registry.npmjs.org/@storybook/core/-/core-8.2.9.tgz"
+ integrity sha512-wSER8FpA6Il/jPyDfKm3yohxDtuhisNPTonMVzd3ulNWR4zERLddyO3HrHJJwdqYHLNk4SBFzwMGpQZVws1y0w==
+ dependencies:
+ "@storybook/csf" "0.1.11"
+ "@types/express" "^4.17.21"
+ "@types/node" "^18.0.0"
+ browser-assert "^1.2.1"
+ esbuild "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0"
+ esbuild-register "^3.5.0"
+ express "^4.19.2"
+ process "^0.11.10"
+ recast "^0.23.5"
+ util "^0.12.4"
+ ws "^8.2.3"
+
"@storybook/csf-plugin@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.20.tgz"
@@ -3162,7 +3294,7 @@
"@storybook/csf-tools" "7.6.20"
unplugin "^1.3.1"
-"@storybook/csf-tools@7.6.20", "@storybook/csf-tools@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0":
+"@storybook/csf-tools@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0", "@storybook/csf-tools@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.20.tgz"
integrity sha512-rwcwzCsAYh/m/WYcxBiEtLpIW5OH1ingxNdF/rK9mtGWhJxXRDV8acPkFrF8rtFWIVKoOCXu5USJYmc3f2gdYQ==
@@ -3177,13 +3309,6 @@
recast "^0.23.1"
ts-dedent "^2.0.0"
-"@storybook/csf@0.1.11", "@storybook/csf@^0.1.1", "@storybook/csf@^0.1.2":
- version "0.1.11"
- resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz"
- integrity sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==
- dependencies:
- type-fest "^2.19.0"
-
"@storybook/csf@^0.0.1":
version "0.0.1"
resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.0.1.tgz"
@@ -3191,6 +3316,13 @@
dependencies:
lodash "^4.17.15"
+"@storybook/csf@^0.1.1", "@storybook/csf@^0.1.2", "@storybook/csf@0.1.11":
+ version "0.1.11"
+ resolved "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz"
+ integrity sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==
+ dependencies:
+ type-fest "^2.19.0"
+
"@storybook/docs-mdx@^0.1.0":
version "0.1.0"
resolved "https://registry.npmjs.org/@storybook/docs-mdx/-/docs-mdx-0.1.0.tgz"
@@ -3280,7 +3412,7 @@
resolved "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.20.tgz"
integrity sha512-AN4WPeNma2xC2/K/wP3I/GMbBUyeSGD3+86ZFFJFO1QmE/Zea6E+1aVlTd1iKHQUcNkZ9bZTrqkhPGVYx10pIw==
-"@storybook/preview-api@7.6.20", "@storybook/preview-api@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0":
+"@storybook/preview-api@^7.0.0-beta.0 || ^7.0.0-rc.0 || ^7.0.0", "@storybook/preview-api@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.20.tgz"
integrity sha512-3ic2m9LDZEPwZk02wIhNc3n3rNvbi7VDKn52hDXfAxnL5EYm7yDICAkaWcVaTfblru2zn0EDJt7ROpthscTW5w==
@@ -3323,7 +3455,7 @@
magic-string "^0.30.0"
react-docgen "^7.0.0"
-"@storybook/react@7.6.20", "@storybook/react@^7.4.5":
+"@storybook/react@^7.4.5", "@storybook/react@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/react/-/react-7.6.20.tgz"
integrity sha512-i5tKNgUbTNwlqBWGwPveDhh9ktlS0wGtd97A1ZgKZc3vckLizunlAFc7PRC1O/CMq5PTyxbuUb4RvRD2jWKwDA==
@@ -3359,7 +3491,7 @@
memoizerific "^1.11.3"
qs "^6.10.0"
-"@storybook/telemetry@7.6.20", "@storybook/telemetry@^7.1.0":
+"@storybook/telemetry@^7.1.0", "@storybook/telemetry@7.6.20":
version "7.6.20"
resolved "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.20.tgz"
integrity sha512-dmAOCWmOscYN6aMbhCMmszQjoycg7tUPRVy2kTaWg6qX10wtMrvEtBV29W4eMvqdsoRj5kcvoNbzRdYcWBUOHQ==
@@ -3450,57 +3582,130 @@
"@types/express" "^4.7.0"
file-system-cache "2.3.0"
-"@swc/core-darwin-arm64@1.7.22":
- version "1.7.22"
- resolved "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.22.tgz"
- integrity sha512-B2Bh2W+C7ALdGwDxRWAJ+UtNExfozvwyayGiNkbR3wmDKXXeQfhGM5MK+QYUWKu7UQ6ATq69OyZrxofDobKUug==
+"@surma/rollup-plugin-off-main-thread@^2.2.3":
+ version "2.2.3"
+ resolved "https://registry.npmjs.org/@surma/rollup-plugin-off-main-thread/-/rollup-plugin-off-main-thread-2.2.3.tgz"
+ integrity sha512-lR8q/9W7hZpMWweNiAKU7NQerBnzQQLvi8qnTDU/fxItPhtZVMbPV3lbCwjhIlNBe9Bbr5V+KHshvWmVSG9cxQ==
+ dependencies:
+ ejs "^3.1.6"
+ json5 "^2.2.0"
+ magic-string "^0.25.0"
+ string.prototype.matchall "^4.0.6"
-"@swc/core-darwin-x64@1.7.22":
- version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-darwin-x64/-/core-darwin-x64-1.7.22.tgz#78d028d72756193a1bedf3cc0766aede1b290878"
- integrity sha512-s34UQntnQ6tL9hS9aX3xG7OfGhpmy05FEEndbHaooGO8O+L5k8uWxhE5KhYCOC0N803sGdZg6YZmKtYrWN/YxA==
+"@svgr/babel-plugin-add-jsx-attribute@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-5.4.0.tgz"
+ integrity sha512-ZFf2gs/8/6B8PnSofI0inYXr2SDNTDScPXhN7k5EqD4aZ3gi6u+rbmZHVB8IM3wDyx8ntKACZbtXSm7oZGRqVg==
-"@swc/core-linux-arm-gnueabihf@1.7.22":
- version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.22.tgz#f95e45179e362dd5cfc3c9b8083af33e430195d9"
- integrity sha512-SE69+oos1jLOXx5YdMH//Qc5zQc2xYukajB+0BWmkcFd/S/cCanGWYtdSzYausm8af2Fw1hPJMNIfndJLnBDFw==
+"@svgr/babel-plugin-remove-jsx-attribute@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-5.4.0.tgz"
+ integrity sha512-yaS4o2PgUtwLFGTKbsiAy6D0o3ugcUhWK0Z45umJ66EPWunAz9fuFw2gJuje6wqQvQWOTJvIahUwndOXb7QCPg==
-"@swc/core-linux-arm64-gnu@1.7.22":
- version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.22.tgz#8058a7c18385cadf56ca7d2db4d6fa41e52f4bd3"
- integrity sha512-59FzDW/ojgiTj4dlnv3Z3ESuVlzhSAq9X12CNYh4/WTCNA8BoJqOnWMRQKspWtoNlnVviFLMvpek0pGXHndEBA==
+"@svgr/babel-plugin-remove-jsx-empty-expression@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-5.0.1.tgz"
+ integrity sha512-LA72+88A11ND/yFIMzyuLRSMJ+tRKeYKeQ+mR3DcAZ5I4h5CPWN9AHyUzJbWSYp/u2u0xhmgOe0+E41+GjEueA==
-"@swc/core-linux-arm64-musl@1.7.22":
- version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.22.tgz#8d29b9574ad3ff615fcba85b6e661d510f48186e"
- integrity sha512-cMQMI8YRO/XR3OrYuiUlWksNsJOZSkA6gSLNyH6eHTw+FOAzv05oJ4SFYe6s1WesrOqRwhpez6y5H6OIP/EKzg==
+"@svgr/babel-plugin-replace-jsx-attribute-value@^5.0.1":
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-5.0.1.tgz"
+ integrity sha512-PoiE6ZD2Eiy5mK+fjHqwGOS+IXX0wq/YDtNyIgOrc6ejFnxN4b13pRpiIPbtPwHEc+NT2KCjteAcq33/F1Y9KQ==
+
+"@svgr/babel-plugin-svg-dynamic-title@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-5.4.0.tgz"
+ integrity sha512-zSOZH8PdZOpuG1ZVx/cLVePB2ibo3WPpqo7gFIjLV9a0QsuQAzJiwwqmuEdTaW2pegyBE17Uu15mOgOcgabQZg==
+
+"@svgr/babel-plugin-svg-em-dimensions@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-5.4.0.tgz"
+ integrity sha512-cPzDbDA5oT/sPXDCUYoVXEmm3VIoAWAPT6mSPTJNbQaBNUuEKVKyGH93oDY4e42PYHRW67N5alJx/eEol20abw==
+
+"@svgr/babel-plugin-transform-react-native-svg@^5.4.0":
+ version "5.4.0"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-5.4.0.tgz"
+ integrity sha512-3eYP/SaopZ41GHwXma7Rmxcv9uRslRDTY1estspeB1w1ueZWd/tPlMfEOoccYpEMZU3jD4OU7YitnXcF5hLW2Q==
+
+"@svgr/babel-plugin-transform-svg-component@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-5.5.0.tgz"
+ integrity sha512-q4jSH1UUvbrsOtlo/tKcgSeiCHRSBdXoIoqX1pgcKK/aU3JD27wmMKwGtpB8qRYUYoyXvfGxUVKchLuR5pB3rQ==
+
+"@svgr/babel-preset@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-5.5.0.tgz"
+ integrity sha512-4FiXBjvQ+z2j7yASeGPEi8VD/5rrGQk4Xrq3EdJmoZgz/tpqChpo5hgXDvmEauwtvOc52q8ghhZK4Oy7qph4ig==
+ dependencies:
+ "@svgr/babel-plugin-add-jsx-attribute" "^5.4.0"
+ "@svgr/babel-plugin-remove-jsx-attribute" "^5.4.0"
+ "@svgr/babel-plugin-remove-jsx-empty-expression" "^5.0.1"
+ "@svgr/babel-plugin-replace-jsx-attribute-value" "^5.0.1"
+ "@svgr/babel-plugin-svg-dynamic-title" "^5.4.0"
+ "@svgr/babel-plugin-svg-em-dimensions" "^5.4.0"
+ "@svgr/babel-plugin-transform-react-native-svg" "^5.4.0"
+ "@svgr/babel-plugin-transform-svg-component" "^5.5.0"
+
+"@svgr/core@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/@svgr/core/-/core-5.5.0.tgz"
+ integrity sha512-q52VOcsJPvV3jO1wkPtzTuKlvX7Y3xIcWRpCMtBF3MrteZJtBfQw/+u0B1BHy5ColpQc1/YVTrPEtSYIMNZlrQ==
+ dependencies:
+ "@svgr/plugin-jsx" "^5.5.0"
+ camelcase "^6.2.0"
+ cosmiconfig "^7.0.0"
+
+"@svgr/hast-util-to-babel-ast@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-5.5.0.tgz"
+ integrity sha512-cAaR/CAiZRB8GP32N+1jocovUtvlj0+e65TB50/6Lcime+EA49m/8l+P2ko+XPJ4dw3xaPS3jOL4F2X4KWxoeQ==
+ dependencies:
+ "@babel/types" "^7.12.6"
+
+"@svgr/plugin-jsx@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-5.5.0.tgz"
+ integrity sha512-V/wVh33j12hGh05IDg8GpIUXbjAPnTdPTKuP4VNLggnwaHMPNQNae2pRnyTAILWCQdz5GyMqtO488g7CKM8CBA==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@svgr/babel-preset" "^5.5.0"
+ "@svgr/hast-util-to-babel-ast" "^5.5.0"
+ svg-parser "^2.0.2"
+
+"@svgr/plugin-svgo@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-5.5.0.tgz"
+ integrity sha512-r5swKk46GuQl4RrVejVwpeeJaydoxkdwkM1mBKOgJLBUJPGaLci6ylg/IjhrRsREKDkr4kbMWdgOtbXEh0fyLQ==
+ dependencies:
+ cosmiconfig "^7.0.0"
+ deepmerge "^4.2.2"
+ svgo "^1.2.2"
+
+"@svgr/webpack@^5.5.0":
+ version "5.5.0"
+ resolved "https://registry.npmjs.org/@svgr/webpack/-/webpack-5.5.0.tgz"
+ integrity sha512-DOBOK255wfQxguUta2INKkzPj6AIS6iafZYiYmHn6W3pHlycSRRlvWKCfLDG10fXfLWqE3DJHgRUOyJYmARa7g==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/plugin-transform-react-constant-elements" "^7.12.1"
+ "@babel/preset-env" "^7.12.1"
+ "@babel/preset-react" "^7.12.5"
+ "@svgr/core" "^5.5.0"
+ "@svgr/plugin-jsx" "^5.5.0"
+ "@svgr/plugin-svgo" "^5.5.0"
+ loader-utils "^2.0.0"
"@swc/core-linux-x64-gnu@1.7.22":
version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.22.tgz#ad863612d32c00ec28b3dc3fc1a8418ca9c94f2b"
+ resolved "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.22.tgz"
integrity sha512-639kA7MXrWqWYfwuSJ+XTg21VYb/5o99R1zJrndoEjEX6m7Wza/sXssQKU5jbbkPoSEKVKNP3n/gazLWiUKgiQ==
"@swc/core-linux-x64-musl@1.7.22":
version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.22.tgz#421740384a738631b1bbc6202eeb5489ed5e356b"
+ resolved "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.22.tgz"
integrity sha512-f3zfGgY8EJQUOk3ve25ZTkNkhB/kHo9QlN2r+0exaE1g9W7X8IS6J8pWzF3hJrV2P9dBi6ofMOt+opVA89JKHA==
-"@swc/core-win32-arm64-msvc@1.7.22":
- version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.22.tgz#ba62979f394faabe8a4c964e5590169269d8170c"
- integrity sha512-p/Fav5U+LtTJD/tbbS0dKK8SVVAhXo5Jdm1TDeBPJ4BEIVguYBZEXgD3CW9wY4K34g1hscpiz2Q2rktfhFj1+A==
-
-"@swc/core-win32-ia32-msvc@1.7.22":
- version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.22.tgz#7fe30501e853298a552c2bd89306cc41d15f95c8"
- integrity sha512-HbmfasaCNTqeCTvDjleYj+jJZQ6MlraiVOdhW55KtbA9mAVQdPBq6DDAvR7VOero3wUNYUM/e36otFKgEJI5Rg==
-
-"@swc/core-win32-x64-msvc@1.7.22":
- version "1.7.22"
- resolved "https://registry.yarnpkg.com/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.22.tgz#8be5c1f89c61c0d6412093398274b3cbc1b4b52f"
- integrity sha512-lppIveE+hpe7WXny/9cUT+T6sBM/ND0E+dviKWJ5jFBISj2KWomlSJGUjYEsRGJVPnTEc8uOlKK7etmXBhQx9A==
-
-"@swc/core@^1.3.18":
+"@swc/core@*", "@swc/core@^1.3.18":
version "1.7.22"
resolved "https://registry.npmjs.org/@swc/core/-/core-1.7.22.tgz"
integrity sha512-Asn79WKqyjEuO2VEeSnVjn2YiRMToRhFJwOsQeqftBvwWMn1FGUuzVcXtkQFBk37si8Gh2Vkk/+p0u4K5NxDig==
@@ -3540,47 +3745,47 @@
dependencies:
"@swc/counter" "^0.1.3"
-"@testing-library/dom@10.1.0":
- version "10.1.0"
- resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz"
- integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==
+"@testing-library/dom@^9.0.0":
+ version "9.3.4"
+ resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz"
+ integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
"@types/aria-query" "^5.0.1"
- aria-query "5.3.0"
+ aria-query "5.1.3"
chalk "^4.1.0"
dom-accessibility-api "^0.5.9"
lz-string "^1.5.0"
pretty-format "^27.0.2"
-"@testing-library/dom@^9.0.0":
- version "9.3.4"
- resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz"
- integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==
+"@testing-library/dom@>=7.21.4":
+ version "10.4.0"
+ resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz"
+ integrity sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==
dependencies:
"@babel/code-frame" "^7.10.4"
"@babel/runtime" "^7.12.5"
"@types/aria-query" "^5.0.1"
- aria-query "5.1.3"
+ aria-query "5.3.0"
chalk "^4.1.0"
dom-accessibility-api "^0.5.9"
lz-string "^1.5.0"
pretty-format "^27.0.2"
-"@testing-library/jest-dom@6.4.5":
- version "6.4.5"
- resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz"
- integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==
+"@testing-library/dom@10.1.0":
+ version "10.1.0"
+ resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz"
+ integrity sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==
dependencies:
- "@adobe/css-tools" "^4.3.2"
- "@babel/runtime" "^7.9.2"
- aria-query "^5.0.0"
- chalk "^3.0.0"
- css.escape "^1.5.1"
- dom-accessibility-api "^0.6.3"
- lodash "^4.17.21"
- redent "^3.0.0"
+ "@babel/code-frame" "^7.10.4"
+ "@babel/runtime" "^7.12.5"
+ "@types/aria-query" "^5.0.1"
+ aria-query "5.3.0"
+ chalk "^4.1.0"
+ dom-accessibility-api "^0.5.9"
+ lz-string "^1.5.0"
+ pretty-format "^27.0.2"
"@testing-library/jest-dom@^6.1.2", "@testing-library/jest-dom@^6.1.6":
version "6.5.0"
@@ -3595,26 +3800,50 @@
lodash "^4.17.21"
redent "^3.0.0"
-"@testing-library/react@^14.1.2":
- version "14.3.1"
- resolved "https://registry.npmjs.org/@testing-library/react/-/react-14.3.1.tgz"
- integrity sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==
- dependencies:
- "@babel/runtime" "^7.12.5"
+"@testing-library/jest-dom@6.4.5":
+ version "6.4.5"
+ resolved "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz"
+ integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==
+ dependencies:
+ "@adobe/css-tools" "^4.3.2"
+ "@babel/runtime" "^7.9.2"
+ aria-query "^5.0.0"
+ chalk "^3.0.0"
+ css.escape "^1.5.1"
+ dom-accessibility-api "^0.6.3"
+ lodash "^4.17.21"
+ redent "^3.0.0"
+
+"@testing-library/react@^14.1.2":
+ version "14.3.1"
+ resolved "https://registry.npmjs.org/@testing-library/react/-/react-14.3.1.tgz"
+ integrity sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==
+ dependencies:
+ "@babel/runtime" "^7.12.5"
"@testing-library/dom" "^9.0.0"
"@types/react-dom" "^18.0.0"
-"@testing-library/user-event@14.5.2", "@testing-library/user-event@^14.4.0", "@testing-library/user-event@^14.5.2":
+"@testing-library/user-event@^14.4.0", "@testing-library/user-event@^14.5.2", "@testing-library/user-event@14.5.2":
version "14.5.2"
resolved "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz"
integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==
+"@tootallnate/once@1":
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz"
+ integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==
+
+"@trysound/sax@0.2.0":
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz"
+ integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
+
"@types/aria-query@^5.0.1":
version "5.0.4"
resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz"
integrity sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==
-"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.18.0", "@types/babel__core@^7.20.5":
+"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.14", "@types/babel__core@^7.1.9", "@types/babel__core@^7.18.0", "@types/babel__core@^7.20.5":
version "7.20.5"
resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz"
integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==
@@ -3640,7 +3869,7 @@
"@babel/parser" "^7.1.0"
"@babel/types" "^7.0.0"
-"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6", "@types/babel__traverse@^7.18.0":
+"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6", "@types/babel__traverse@^7.18.0":
version "7.20.6"
resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz"
integrity sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==
@@ -3655,6 +3884,21 @@
"@types/connect" "*"
"@types/node" "*"
+"@types/bonjour@^3.5.9":
+ version "3.5.13"
+ resolved "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz"
+ integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/connect-history-api-fallback@^1.3.5":
+ version "1.5.4"
+ resolved "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz"
+ integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==
+ dependencies:
+ "@types/express-serve-static-core" "*"
+ "@types/node" "*"
+
"@types/connect@*":
version "3.4.38"
resolved "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz"
@@ -3706,6 +3950,14 @@
resolved "https://registry.npmjs.org/@types/escodegen/-/escodegen-0.0.6.tgz"
integrity sha512-AjwI4MvWx3HAOaZqYsjKWyEObT9lcVV0Y0V8nXo6cXzN8ZiMxVhf6F3d/UNvXVGKrEzL/Dluc5p+y9GkzlTWig==
+"@types/eslint@^7.29.0 || ^8.4.1":
+ version "8.56.12"
+ resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz"
+ integrity sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==
+ dependencies:
+ "@types/estree" "*"
+ "@types/json-schema" "*"
+
"@types/estree-jsx@^1.0.0":
version "1.0.5"
resolved "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz"
@@ -3713,7 +3965,7 @@
dependencies:
"@types/estree" "*"
-"@types/estree@*", "@types/estree@1.0.5", "@types/estree@^1.0.0":
+"@types/estree@*", "@types/estree@^1.0.0", "@types/estree@^1.0.5", "@types/estree@1.0.5":
version "1.0.5"
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz"
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
@@ -3723,7 +3975,12 @@
resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz"
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
-"@types/express-serve-static-core@^4.17.33":
+"@types/estree@0.0.39":
+ version "0.0.39"
+ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz"
+ integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==
+
+"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.33":
version "4.19.5"
resolved "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz"
integrity sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==
@@ -3733,7 +3990,7 @@
"@types/range-parser" "*"
"@types/send" "*"
-"@types/express@^4.7.0":
+"@types/express@*", "@types/express@^4.17.13", "@types/express@^4.17.21", "@types/express@^4.7.0":
version "4.17.21"
resolved "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz"
integrity sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==
@@ -3756,7 +4013,7 @@
"@types/minimatch" "*"
"@types/node" "*"
-"@types/graceful-fs@^4.1.3":
+"@types/graceful-fs@^4.1.2", "@types/graceful-fs@^4.1.3":
version "4.1.9"
resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz"
integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==
@@ -3777,11 +4034,23 @@
dependencies:
"@types/unist" "*"
+"@types/html-minifier-terser@^6.0.0":
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz"
+ integrity sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==
+
"@types/http-errors@*":
version "2.0.4"
resolved "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz"
integrity sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==
+"@types/http-proxy@^1.17.8":
+ version "1.17.15"
+ resolved "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz"
+ integrity sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==
+ dependencies:
+ "@types/node" "*"
+
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1", "@types/istanbul-lib-coverage@^2.0.4":
version "2.0.6"
resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz"
@@ -3801,7 +4070,7 @@
dependencies:
"@types/istanbul-lib-report" "*"
-"@types/jest@28.1.3":
+"@types/jest@>= 28", "@types/jest@28.1.3":
version "28.1.3"
resolved "https://registry.npmjs.org/@types/jest/-/jest-28.1.3.tgz"
integrity sha512-Tsbjk8Y2hkBaY/gJsataeb4q9Mubw9EOz7+4RjPkzD5KjTvHHs7cpws22InaoXxAVAhF5HfFbzJjo6oKWqSZLw==
@@ -3809,7 +4078,7 @@
jest-matcher-utils "^28.0.0"
pretty-format "^28.0.0"
-"@types/json-schema@^7.0.5", "@types/json-schema@^7.0.9":
+"@types/json-schema@*", "@types/json-schema@^7.0.4", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.15"
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
@@ -3876,7 +4145,14 @@
"@types/node" "*"
form-data "^4.0.0"
-"@types/node@*", "@types/node@^20.4.8":
+"@types/node-forge@^1.3.0":
+ version "1.3.11"
+ resolved "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz"
+ integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==
+ dependencies:
+ "@types/node" "*"
+
+"@types/node@*", "@types/node@^18.0.0 || >=20.0.0", "@types/node@^20.4.8", "@types/node@>= 14":
version "20.16.2"
resolved "https://registry.npmjs.org/@types/node/-/node-20.16.2.tgz"
integrity sha512-91s/n4qUPV/wg8eE9KHYW1kouTfDk2FPGjXbBMfRWP/2vg1rCXNQL1OCabwGs0XSdukuK+MwCDXE30QpSeMUhQ==
@@ -3900,6 +4176,11 @@
resolved "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz"
integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==
+"@types/prettier@^2.1.5":
+ version "2.7.3"
+ resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz"
+ integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==
+
"@types/pretty-hrtime@^1.0.0":
version "1.0.3"
resolved "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz"
@@ -3910,6 +4191,11 @@
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz"
integrity sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==
+"@types/q@^1.5.1":
+ version "1.5.8"
+ resolved "https://registry.npmjs.org/@types/q/-/q-1.5.8.tgz"
+ integrity sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==
+
"@types/qs@*", "@types/qs@^6.9.5":
version "6.9.15"
resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz"
@@ -3920,7 +4206,7 @@
resolved "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz"
integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==
-"@types/react-dom@^18.0.0", "@types/react-dom@^18.0.11":
+"@types/react-dom@*", "@types/react-dom@^18.0.0", "@types/react-dom@^18.0.11":
version "18.3.0"
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz"
integrity sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==
@@ -3939,7 +4225,7 @@
dependencies:
"@types/react" "*"
-"@types/react@*", "@types/react@>=16", "@types/react@^18.2.12":
+"@types/react@*", "@types/react@^16.8.0 || ^17.0.0 || ^18.0.0", "@types/react@^16.9.0 || ^17.0.0 || ^18.0.0", "@types/react@^17.0.0 || ^18.0.0", "@types/react@^17.0.0 || ^18.0.0 || ^19.0.0", "@types/react@^18.2.12", "@types/react@>=16", "@types/react@>=18":
version "18.3.5"
resolved "https://registry.npmjs.org/@types/react/-/react-18.3.5.tgz"
integrity sha512-WeqMfGJLGuLCqHGYRGHxnKrXcTitc6L/nBUWfWPcTarG3t9PsquqUMuVeXZeca+mglY4Vo5GZjCi0A3Or2lnxA==
@@ -3952,6 +4238,18 @@
resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz"
integrity sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==
+"@types/resolve@1.17.1":
+ version "1.17.1"
+ resolved "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz"
+ integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==
+ dependencies:
+ "@types/node" "*"
+
+"@types/retry@0.12.0":
+ version "0.12.0"
+ resolved "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz"
+ integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==
+
"@types/semver@^7.3.12", "@types/semver@^7.3.4":
version "7.5.8"
resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz"
@@ -3965,7 +4263,14 @@
"@types/mime" "^1"
"@types/node" "*"
-"@types/serve-static@*":
+"@types/serve-index@^1.9.1":
+ version "1.9.4"
+ resolved "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz"
+ integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==
+ dependencies:
+ "@types/express" "*"
+
+"@types/serve-static@*", "@types/serve-static@^1.13.10":
version "1.15.7"
resolved "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz"
integrity sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==
@@ -3974,11 +4279,23 @@
"@types/node" "*"
"@types/send" "*"
+"@types/sockjs@^0.3.33":
+ version "0.3.36"
+ resolved "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz"
+ integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==
+ dependencies:
+ "@types/node" "*"
+
"@types/stack-utils@^2.0.0":
version "2.0.3"
resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz"
integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
+"@types/trusted-types@^2.0.2":
+ version "2.0.7"
+ resolved "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz"
+ integrity sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==
+
"@types/unist@*", "@types/unist@^3.0.0":
version "3.0.3"
resolved "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz"
@@ -4001,6 +4318,13 @@
dependencies:
"@types/node" "*"
+"@types/ws@^8.5.5":
+ version "8.5.12"
+ resolved "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz"
+ integrity sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==
+ dependencies:
+ "@types/node" "*"
+
"@types/yargs-parser@*":
version "21.0.3"
resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz"
@@ -4020,7 +4344,23 @@
dependencies:
"@types/yargs-parser" "*"
-"@typescript-eslint/eslint-plugin@^7.3.1":
+"@typescript-eslint/eslint-plugin@^4.0.0 || ^5.0.0", "@typescript-eslint/eslint-plugin@^5.5.0":
+ version "5.62.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz"
+ integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==
+ dependencies:
+ "@eslint-community/regexpp" "^4.4.0"
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/type-utils" "5.62.0"
+ "@typescript-eslint/utils" "5.62.0"
+ debug "^4.3.4"
+ graphemer "^1.4.0"
+ ignore "^5.2.0"
+ natural-compare-lite "^1.4.0"
+ semver "^7.3.7"
+ tsutils "^3.21.0"
+
+"@typescript-eslint/eslint-plugin@^5.0.0 || ^6.0.0 || ^7.0.0", "@typescript-eslint/eslint-plugin@^7.3.1":
version "7.18.0"
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz"
integrity sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==
@@ -4035,7 +4375,24 @@
natural-compare "^1.4.0"
ts-api-utils "^1.3.0"
-"@typescript-eslint/parser@^7.3.1":
+"@typescript-eslint/experimental-utils@^5.0.0":
+ version "5.62.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz"
+ integrity sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==
+ dependencies:
+ "@typescript-eslint/utils" "5.62.0"
+
+"@typescript-eslint/parser@^5.0.0", "@typescript-eslint/parser@^5.5.0":
+ version "5.62.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz"
+ integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==
+ dependencies:
+ "@typescript-eslint/scope-manager" "5.62.0"
+ "@typescript-eslint/types" "5.62.0"
+ "@typescript-eslint/typescript-estree" "5.62.0"
+ debug "^4.3.4"
+
+"@typescript-eslint/parser@^7.0.0", "@typescript-eslint/parser@^7.3.1":
version "7.18.0"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz"
integrity sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==
@@ -4062,6 +4419,16 @@
"@typescript-eslint/types" "7.18.0"
"@typescript-eslint/visitor-keys" "7.18.0"
+"@typescript-eslint/type-utils@5.62.0":
+ version "5.62.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz"
+ integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==
+ dependencies:
+ "@typescript-eslint/typescript-estree" "5.62.0"
+ "@typescript-eslint/utils" "5.62.0"
+ debug "^4.3.4"
+ tsutils "^3.21.0"
+
"@typescript-eslint/type-utils@7.18.0":
version "7.18.0"
resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz"
@@ -4109,17 +4476,49 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"
-"@typescript-eslint/utils@7.18.0":
- version "7.18.0"
- resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz"
- integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==
+"@typescript-eslint/utils@^5.10.0":
+ version "5.62.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz"
+ integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
dependencies:
- "@eslint-community/eslint-utils" "^4.4.0"
- "@typescript-eslint/scope-manager" "7.18.0"
- "@typescript-eslint/types" "7.18.0"
- "@typescript-eslint/typescript-estree" "7.18.0"
+ "@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"
+
+"@typescript-eslint/utils@^5.45.0":
+ version "5.62.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz"
+ integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
+ 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"
+
+"@typescript-eslint/utils@^5.58.0":
+ version "5.62.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz"
+ integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
+ 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"
-"@typescript-eslint/utils@^5.10.0", "@typescript-eslint/utils@^5.45.0":
+"@typescript-eslint/utils@5.62.0":
version "5.62.0"
resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz"
integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==
@@ -4133,6 +4532,16 @@
eslint-scope "^5.1.1"
semver "^7.3.7"
+"@typescript-eslint/utils@7.18.0":
+ version "7.18.0"
+ resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz"
+ integrity sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==
+ dependencies:
+ "@eslint-community/eslint-utils" "^4.4.0"
+ "@typescript-eslint/scope-manager" "7.18.0"
+ "@typescript-eslint/types" "7.18.0"
+ "@typescript-eslint/typescript-estree" "7.18.0"
+
"@typescript-eslint/visitor-keys@5.62.0":
version "5.62.0"
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz"
@@ -4234,7 +4643,7 @@
dependencies:
tinyspy "^2.2.0"
-"@vitest/ui@^1.1.0":
+"@vitest/ui@^1.1.0", "@vitest/ui@1.6.0":
version "1.6.0"
resolved "https://registry.npmjs.org/@vitest/ui/-/ui-1.6.0.tgz"
integrity sha512-k3Lyo+ONLOgylctiGovRKy7V4+dIN2yxstX3eY5cWFXH6WP+ooVX79YSyi0GagdTQzLmT43BF27T0s6dOIPBXA==
@@ -4247,7 +4656,7 @@
picocolors "^1.0.0"
sirv "^2.0.4"
-"@vitest/utils@1.6.0", "@vitest/utils@^1.3.1":
+"@vitest/utils@^1.3.1", "@vitest/utils@1.6.0":
version "1.6.0"
resolved "https://registry.npmjs.org/@vitest/utils/-/utils-1.6.0.tgz"
integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==
@@ -4257,6 +4666,137 @@
loupe "^2.3.7"
pretty-format "^29.7.0"
+"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz"
+ integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==
+ dependencies:
+ "@webassemblyjs/helper-numbers" "1.11.6"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+
+"@webassemblyjs/floating-point-hex-parser@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz"
+ integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==
+
+"@webassemblyjs/helper-api-error@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz"
+ integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==
+
+"@webassemblyjs/helper-buffer@1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz"
+ integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==
+
+"@webassemblyjs/helper-numbers@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz"
+ integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==
+ dependencies:
+ "@webassemblyjs/floating-point-hex-parser" "1.11.6"
+ "@webassemblyjs/helper-api-error" "1.11.6"
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/helper-wasm-bytecode@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz"
+ integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==
+
+"@webassemblyjs/helper-wasm-section@1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz"
+ integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-buffer" "1.12.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/wasm-gen" "1.12.1"
+
+"@webassemblyjs/ieee754@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz"
+ integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==
+ dependencies:
+ "@xtuc/ieee754" "^1.2.0"
+
+"@webassemblyjs/leb128@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz"
+ integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==
+ dependencies:
+ "@xtuc/long" "4.2.2"
+
+"@webassemblyjs/utf8@1.11.6":
+ version "1.11.6"
+ resolved "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz"
+ integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==
+
+"@webassemblyjs/wasm-edit@^1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz"
+ integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-buffer" "1.12.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/helper-wasm-section" "1.12.1"
+ "@webassemblyjs/wasm-gen" "1.12.1"
+ "@webassemblyjs/wasm-opt" "1.12.1"
+ "@webassemblyjs/wasm-parser" "1.12.1"
+ "@webassemblyjs/wast-printer" "1.12.1"
+
+"@webassemblyjs/wasm-gen@1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz"
+ integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/ieee754" "1.11.6"
+ "@webassemblyjs/leb128" "1.11.6"
+ "@webassemblyjs/utf8" "1.11.6"
+
+"@webassemblyjs/wasm-opt@1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz"
+ integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-buffer" "1.12.1"
+ "@webassemblyjs/wasm-gen" "1.12.1"
+ "@webassemblyjs/wasm-parser" "1.12.1"
+
+"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz"
+ integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@webassemblyjs/helper-api-error" "1.11.6"
+ "@webassemblyjs/helper-wasm-bytecode" "1.11.6"
+ "@webassemblyjs/ieee754" "1.11.6"
+ "@webassemblyjs/leb128" "1.11.6"
+ "@webassemblyjs/utf8" "1.11.6"
+
+"@webassemblyjs/wast-printer@1.12.1":
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz"
+ integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==
+ dependencies:
+ "@webassemblyjs/ast" "1.12.1"
+ "@xtuc/long" "4.2.2"
+
+"@xtuc/ieee754@^1.2.0":
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz"
+ integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==
+
+"@xtuc/long@4.2.2":
+ version "4.2.2"
+ resolved "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz"
+ integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==
+
"@yarnpkg/esbuild-plugin-pnp@^3.0.0-rc.10":
version "3.0.0-rc.15"
resolved "https://registry.npmjs.org/@yarnpkg/esbuild-plugin-pnp/-/esbuild-plugin-pnp-3.0.0-rc.15.tgz"
@@ -4272,7 +4812,7 @@
"@yarnpkg/libzip" "^2.3.0"
tslib "^1.13.0"
-"@yarnpkg/libzip@2.3.0", "@yarnpkg/libzip@^2.3.0":
+"@yarnpkg/libzip@^2.3.0", "@yarnpkg/libzip@2.3.0":
version "2.3.0"
resolved "https://registry.npmjs.org/@yarnpkg/libzip/-/libzip-2.3.0.tgz"
integrity sha512-6xm38yGVIa6mKm/DUCF2zFFJhERh/QWp1ufm4cNUvxsONBmfPg8uZ9pZBdOmF6qFGr/HlT6ABBkCSx/dlEtvWg==
@@ -4285,6 +4825,11 @@
resolved "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz"
integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==
+abab@^2.0.3, abab@^2.0.5:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz"
+ integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
+
abort-controller@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz"
@@ -4292,7 +4837,7 @@ abort-controller@^3.0.0:
dependencies:
event-target-shim "^5.0.0"
-accepts@~1.3.5, accepts@~1.3.8:
+accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8"
resolved "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz"
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
@@ -4300,12 +4845,25 @@ accepts@~1.3.5, accepts@~1.3.8:
mime-types "~2.1.34"
negotiator "0.6.3"
+acorn-globals@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz"
+ integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
+ dependencies:
+ acorn "^7.1.1"
+ acorn-walk "^7.1.1"
+
+acorn-import-attributes@^1.9.5:
+ version "1.9.5"
+ resolved "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz"
+ integrity sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==
+
acorn-jsx@^5.3.1, acorn-jsx@^5.3.2:
version "5.3.2"
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
-acorn-walk@^7.2.0:
+acorn-walk@^7.1.1, acorn-walk@^7.2.0:
version "7.2.0"
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz"
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
@@ -4317,25 +4875,58 @@ acorn-walk@^8.3.2:
dependencies:
acorn "^8.11.0"
-acorn@^7.4.1:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^7.1.1, acorn@^7.4.1:
version "7.4.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-acorn@^8.11.0, acorn@^8.11.3, acorn@^8.12.1, acorn@^8.9.0:
+acorn@^8, acorn@^8.7.1:
+ version "8.12.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
+ integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
+
+acorn@^8.11.0:
+ version "8.12.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
+ integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
+
+acorn@^8.11.3:
+ version "8.12.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
+ integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
+
+acorn@^8.12.1:
+ version "8.12.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
+ integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
+
+acorn@^8.2.4:
+ version "8.12.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
+ integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
+
+acorn@^8.8.2:
+ version "8.12.1"
+ resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
+ integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
+
+acorn@^8.9.0:
version "8.12.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
-address@^1.0.1:
+address@^1.0.1, address@^1.1.2:
version "1.2.2"
resolved "https://registry.npmjs.org/address/-/address-1.2.2.tgz"
integrity sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==
-agent-base@5:
- version "5.1.1"
- resolved "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz"
- integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
+adjust-sourcemap-loader@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz"
+ integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==
+ dependencies:
+ loader-utils "^2.0.0"
+ regex-parser "^2.2.11"
agent-base@^7.0.2, agent-base@^7.1.0:
version "7.1.1"
@@ -4344,6 +4935,18 @@ agent-base@^7.0.2, agent-base@^7.1.0:
dependencies:
debug "^4.3.4"
+agent-base@5:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz"
+ integrity sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==
+
+agent-base@6:
+ version "6.0.2"
+ resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"
+ integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
+ dependencies:
+ debug "4"
+
aggregate-error@^3.0.0:
version "3.1.0"
resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz"
@@ -4352,12 +4955,26 @@ aggregate-error@^3.0.0:
clean-stack "^2.0.0"
indent-string "^4.0.0"
-ajv-keywords@^3.5.2:
+ajv-formats@^2.1.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz"
+ integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==
+ dependencies:
+ ajv "^8.0.0"
+
+ajv-keywords@^3.4.1, ajv-keywords@^3.5.2:
version "3.5.2"
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-ajv@^6.12.4:
+ajv-keywords@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz"
+ integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+
+ajv@^6.12.2, ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -4367,7 +4984,37 @@ ajv@^6.12.4:
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
-ansi-escapes@^4.2.1:
+ajv@^8.0.0:
+ version "8.17.1"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+
+ajv@^8.6.0, ajv@>=8:
+ version "8.17.1"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+
+ajv@^8.8.2, ajv@^8.9.0:
+ version "8.17.1"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz"
+ integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ fast-uri "^3.0.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+
+ansi-escapes@^4.2.1, ansi-escapes@^4.3.1:
version "4.3.2"
resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
@@ -4379,6 +5026,16 @@ ansi-escapes@^6.0.0:
resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz"
integrity sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==
+ansi-html-community@^0.0.8:
+ version "0.0.8"
+ resolved "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz"
+ integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==
+
+ansi-html@^0.0.9:
+ version "0.0.9"
+ resolved "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.9.tgz"
+ integrity sha512-ozbS3LuenHVxNRh/wdnN16QapUHzauqSomAl1jwwJRRsGwFwtj644lIhxfWu0Fy0acCij2+AEgHvjscq3dlVXg==
+
ansi-regex@^5.0.1:
version "5.0.1"
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
@@ -4413,6 +5070,11 @@ ansi-styles@^6.1.0:
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
+any-promise@^1.0.0:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"
+ integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
+
anymatch@^3.0.3, anymatch@~3.1.2:
version "3.1.3"
resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
@@ -4438,6 +5100,11 @@ archy@^1.0.0:
resolved "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz"
integrity sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==
+arg@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz"
+ integrity sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==
+
argparse@^1.0.7:
version "1.0.10"
resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
@@ -4457,19 +5124,26 @@ aria-hidden@^1.1.1:
dependencies:
tslib "^2.0.0"
-aria-query@5.1.3, aria-query@~5.1.3:
+aria-query@^5.0.0, aria-query@5.3.0:
+ version "5.3.0"
+ resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz"
+ integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
+ dependencies:
+ dequal "^2.0.3"
+
+aria-query@~5.1.3:
version "5.1.3"
resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz"
integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
dependencies:
deep-equal "^2.0.5"
-aria-query@5.3.0, aria-query@^5.0.0:
- version "5.3.0"
- resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz"
- integrity sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==
+aria-query@5.1.3:
+ version "5.1.3"
+ resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz"
+ integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==
dependencies:
- dequal "^2.0.3"
+ deep-equal "^2.0.5"
array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1:
version "1.0.1"
@@ -4545,6 +5219,19 @@ array.prototype.flatmap@^1.3.2:
es-abstract "^1.22.1"
es-shim-unscopables "^1.0.0"
+array.prototype.reduce@^1.0.6:
+ version "1.0.7"
+ resolved "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.7.tgz"
+ integrity sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==
+ dependencies:
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-array-method-boxes-properly "^1.0.0"
+ es-errors "^1.3.0"
+ es-object-atoms "^1.0.0"
+ is-string "^1.0.7"
+
array.prototype.tosorted@^1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz"
@@ -4570,6 +5257,11 @@ arraybuffer.prototype.slice@^1.0.3:
is-array-buffer "^3.0.4"
is-shared-array-buffer "^1.0.2"
+asap@~2.0.6:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz"
+ integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==
+
assert@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz"
@@ -4618,6 +5310,18 @@ at-least-node@^1.0.0:
resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz"
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
+autoprefixer@^10.4.13:
+ version "10.4.20"
+ resolved "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz"
+ integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==
+ dependencies:
+ browserslist "^4.23.3"
+ caniuse-lite "^1.0.30001646"
+ fraction.js "^4.3.7"
+ normalize-range "^0.1.2"
+ picocolors "^1.0.1"
+ postcss-value-parser "^4.2.0"
+
available-typed-arrays@^1.0.7:
version "1.0.7"
resolved "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz"
@@ -4651,6 +5355,20 @@ babel-core@^7.0.0-bridge.0:
resolved "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz"
integrity sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==
+babel-jest@^27.4.2, babel-jest@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-27.5.1.tgz"
+ integrity sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==
+ dependencies:
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/babel__core" "^7.1.14"
+ babel-plugin-istanbul "^6.1.1"
+ babel-preset-jest "^27.5.1"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ slash "^3.0.0"
+
babel-jest@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz"
@@ -4664,7 +5382,17 @@ babel-jest@^29.7.0:
graceful-fs "^4.2.9"
slash "^3.0.0"
-babel-plugin-istanbul@^6.1.1:
+babel-loader@^8.2.3:
+ version "8.3.0"
+ resolved "https://registry.npmjs.org/babel-loader/-/babel-loader-8.3.0.tgz"
+ integrity sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==
+ dependencies:
+ find-cache-dir "^3.3.1"
+ loader-utils "^2.0.0"
+ make-dir "^3.1.0"
+ schema-utils "^2.6.5"
+
+babel-plugin-istanbul@^6.1.1:
version "6.1.1"
resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz"
integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
@@ -4675,6 +5403,16 @@ babel-plugin-istanbul@^6.1.1:
istanbul-lib-instrument "^5.0.4"
test-exclude "^6.0.0"
+babel-plugin-jest-hoist@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.5.1.tgz"
+ integrity sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==
+ dependencies:
+ "@babel/template" "^7.3.3"
+ "@babel/types" "^7.3.3"
+ "@types/babel__core" "^7.0.0"
+ "@types/babel__traverse" "^7.0.6"
+
babel-plugin-jest-hoist@^29.6.3:
version "29.6.3"
resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz"
@@ -4694,6 +5432,11 @@ babel-plugin-macros@^3.1.0:
cosmiconfig "^7.0.0"
resolve "^1.19.0"
+babel-plugin-named-asset-import@^0.3.8:
+ version "0.3.8"
+ resolved "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz"
+ integrity sha512-WXiAc++qo7XcJ1ZnTYGtLxmBCVbddAml3CEXgWaBzNzLNoxtQ8AiGEFDMOhot9XjTCQbvP5E77Fj9Gk924f00Q==
+
babel-plugin-polyfill-corejs2@^0.4.10:
version "0.4.11"
resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz"
@@ -4718,6 +5461,11 @@ babel-plugin-polyfill-regenerator@^0.6.1:
dependencies:
"@babel/helper-define-polyfill-provider" "^0.6.2"
+babel-plugin-transform-react-remove-prop-types@^0.4.24:
+ version "0.4.24"
+ resolved "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz"
+ integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==
+
babel-preset-current-node-syntax@^1.0.0:
version "1.1.0"
resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz"
@@ -4739,6 +5487,14 @@ babel-preset-current-node-syntax@^1.0.0:
"@babel/plugin-syntax-private-property-in-object" "^7.14.5"
"@babel/plugin-syntax-top-level-await" "^7.14.5"
+babel-preset-jest@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.5.1.tgz"
+ integrity sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==
+ dependencies:
+ babel-plugin-jest-hoist "^27.5.1"
+ babel-preset-current-node-syntax "^1.0.0"
+
babel-preset-jest@^29.6.3:
version "29.6.3"
resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz"
@@ -4747,6 +5503,28 @@ babel-preset-jest@^29.6.3:
babel-plugin-jest-hoist "^29.6.3"
babel-preset-current-node-syntax "^1.0.0"
+babel-preset-react-app@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz"
+ integrity sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==
+ dependencies:
+ "@babel/core" "^7.16.0"
+ "@babel/plugin-proposal-class-properties" "^7.16.0"
+ "@babel/plugin-proposal-decorators" "^7.16.4"
+ "@babel/plugin-proposal-nullish-coalescing-operator" "^7.16.0"
+ "@babel/plugin-proposal-numeric-separator" "^7.16.0"
+ "@babel/plugin-proposal-optional-chaining" "^7.16.0"
+ "@babel/plugin-proposal-private-methods" "^7.16.0"
+ "@babel/plugin-transform-flow-strip-types" "^7.16.0"
+ "@babel/plugin-transform-react-display-name" "^7.16.0"
+ "@babel/plugin-transform-runtime" "^7.16.4"
+ "@babel/preset-env" "^7.16.4"
+ "@babel/preset-react" "^7.16.0"
+ "@babel/preset-typescript" "^7.16.0"
+ "@babel/runtime" "^7.16.3"
+ babel-plugin-macros "^3.1.0"
+ babel-plugin-transform-react-remove-prop-types "^0.4.24"
+
bail@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz"
@@ -4762,6 +5540,11 @@ base64-js@^1.3.1:
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
+batch@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz"
+ integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==
+
bech32@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz"
@@ -4774,6 +5557,17 @@ better-opn@^3.0.2:
dependencies:
open "^8.0.4"
+bfj@^7.0.2:
+ version "7.1.0"
+ resolved "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz"
+ integrity sha512-I6MMLkn+anzNdCUp9hMRyui1HaNEUCco50lxbvNS4+EyXg8lN3nJ48PjPWtbH8UVS9CuMoaKE9U2V3l29DaRQw==
+ dependencies:
+ bluebird "^3.7.2"
+ check-types "^11.2.3"
+ hoopy "^0.1.4"
+ jsonpath "^1.1.1"
+ tryer "^1.0.1"
+
bidi-js@^1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/bidi-js/-/bidi-js-1.0.3.tgz"
@@ -4810,6 +5604,11 @@ blakejs@^1.2.1:
resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz"
integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==
+bluebird@^3.7.2:
+ version "3.7.2"
+ resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz"
+ integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
+
body-parser@1.20.2:
version "1.20.2"
resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz"
@@ -4828,6 +5627,19 @@ body-parser@1.20.2:
type-is "~1.6.18"
unpipe "1.0.0"
+bonjour-service@^1.0.11:
+ version "1.2.1"
+ resolved "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz"
+ integrity sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==
+ dependencies:
+ fast-deep-equal "^3.1.3"
+ multicast-dns "^7.2.5"
+
+boolbase@^1.0.0, boolbase@~1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
+ integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
+
bplist-parser@^0.2.0:
version "0.2.0"
resolved "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.2.0.tgz"
@@ -4876,6 +5688,11 @@ browser-assert@^1.2.1:
resolved "https://registry.npmjs.org/browser-assert/-/browser-assert-1.2.1.tgz"
integrity sha512-nfulgvOR6S4gt9UKCeGJOuSGBPGiFT6oQ/2UBnvTY/5aQ1PnksW72fhZkM30DzoRRv2WpwZf1vHHEr3mtuXIWQ==
+browser-process-hrtime@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz"
+ integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
+
browserify-zlib@^0.1.4:
version "0.1.4"
resolved "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz"
@@ -4883,7 +5700,7 @@ browserify-zlib@^0.1.4:
dependencies:
pako "~0.2.0"
-browserslist@^4.23.1, browserslist@^4.23.3:
+browserslist@^4.0.0, browserslist@^4.18.1, browserslist@^4.21.10, browserslist@^4.21.4, browserslist@^4.23.1, browserslist@^4.23.3, "browserslist@>= 4", "browserslist@>= 4.21.0", browserslist@>=4:
version "4.23.3"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz"
integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
@@ -4926,6 +5743,11 @@ buffer@^6.0.3:
base64-js "^1.3.1"
ieee754 "^1.2.1"
+builtin-modules@^3.1.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz"
+ integrity sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==
+
bytes@3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz"
@@ -4967,12 +5789,25 @@ callsites@^3.0.0:
resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
+camel-case@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz"
+ integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
+ dependencies:
+ pascal-case "^3.1.2"
+ tslib "^2.0.3"
+
+camelcase-css@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz"
+ integrity sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==
+
camelcase@^5.0.0, camelcase@^5.3.1:
version "5.3.1"
resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
-camelcase@^6.2.0:
+camelcase@^6.2.0, camelcase@^6.2.1:
version "6.3.0"
resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
@@ -4982,7 +5817,17 @@ can-bind-to-host@^1.1.1:
resolved "https://registry.npmjs.org/can-bind-to-host/-/can-bind-to-host-1.1.2.tgz"
integrity sha512-CqsgmaqiyFRNtP17Ihqa/uHbZxRirntNVNl/kJz31DLKuNRfzvzionkLoUSkElQ6Cz+cpXKA3mhHq4tjbieujA==
-caniuse-lite@^1.0.30001646:
+caniuse-api@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz"
+ integrity sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==
+ dependencies:
+ browserslist "^4.0.0"
+ caniuse-lite "^1.0.0"
+ lodash.memoize "^4.1.2"
+ lodash.uniq "^4.5.0"
+
+caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001646:
version "1.0.30001655"
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz"
integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg==
@@ -4992,6 +5837,11 @@ canonicalize@^1.0.1:
resolved "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz"
integrity sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==
+case-sensitive-paths-webpack-plugin@^2.4.0:
+ version "2.4.0"
+ resolved "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz"
+ integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
+
ccount@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz"
@@ -5010,7 +5860,7 @@ chai@^4.3.10:
pathval "^1.1.1"
type-detect "^4.1.0"
-chalk@^2.4.2:
+chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -5027,7 +5877,31 @@ chalk@^3.0.0:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
-chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
+chalk@^4.0.0:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.0.2:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.1.0:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
+chalk@^4.1.2:
version "4.1.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
@@ -5077,7 +5951,12 @@ check-error@^1.0.3:
dependencies:
get-func-name "^2.0.2"
-chokidar@^3.6.0:
+check-types@^11.2.3:
+ version "11.2.3"
+ resolved "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz"
+ integrity sha512-+67P1GkJRaxQD6PKK0Et9DhwQB+vGg3PM5+aavopCpZT1lj9jeqfvpgTLAWErNj8qApkkmXlu/Ug74kmhagkXg==
+
+chokidar@^3.4.2, chokidar@^3.5.3, chokidar@^3.6.0, "chokidar@>=3.0.0 <4.0.0":
version "3.6.0"
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
@@ -5107,6 +5986,11 @@ chromatic@^11.3.0:
resolved "https://registry.npmjs.org/chromatic/-/chromatic-11.7.1.tgz"
integrity sha512-LvgPimdQdnQB07ZDxLEC2KtxgYeqTw0X71GA7fi3zhgtKLxZcE+BSZ/5I9rrQp1V8ydmfElfw0ZwnUH4fVgUAQ==
+chrome-trace-event@^1.0.2:
+ version "1.0.4"
+ resolved "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz"
+ integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==
+
ci-info@^3.2.0, ci-info@^3.7.0:
version "3.9.0"
resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz"
@@ -5129,6 +6013,13 @@ classnames@^2.2.5, classnames@^2.3.2:
resolved "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz"
integrity sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==
+clean-css@^5.2.2:
+ version "5.3.3"
+ resolved "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz"
+ integrity sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==
+ dependencies:
+ source-map "~0.6.0"
+
clean-stack@^2.0.0:
version "2.2.0"
resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz"
@@ -5164,6 +6055,15 @@ cliui@^6.0.0:
strip-ansi "^6.0.0"
wrap-ansi "^6.2.0"
+cliui@^7.0.2:
+ version "7.0.4"
+ resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"
+ integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
+ dependencies:
+ string-width "^4.2.0"
+ strip-ansi "^6.0.0"
+ wrap-ansi "^7.0.0"
+
cliui@^8.0.1:
version "8.0.1"
resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
@@ -5197,6 +6097,15 @@ co@^4.6.0:
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
+coa@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz"
+ integrity sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==
+ dependencies:
+ "@types/q" "^1.5.1"
+ chalk "^2.4.1"
+ q "^1.1.2"
+
collect-v8-coverage@^1.0.0:
version "1.0.2"
resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz"
@@ -5216,16 +6125,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
color-name@^1.0.0, color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
color-string@^1.9.0:
version "1.9.1"
resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz"
@@ -5242,6 +6151,16 @@ color@^4.2.3:
color-convert "^2.0.1"
color-string "^1.9.0"
+colord@^2.9.1:
+ version "2.9.3"
+ resolved "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz"
+ integrity sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==
+
+colorette@^2.0.10:
+ version "2.0.20"
+ resolved "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz"
+ integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
+
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
@@ -5254,11 +6173,21 @@ comma-separated-tokens@^2.0.0:
resolved "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz"
integrity sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==
+commander@^2.20.0:
+ version "2.20.3"
+ resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
+ integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+
commander@^3.0.2:
version "3.0.2"
resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz"
integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==
+commander@^4.0.0:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
commander@^5.1.0:
version "5.1.0"
resolved "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz"
@@ -5269,11 +6198,26 @@ commander@^6.2.1:
resolved "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz"
integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
+commander@^7.2.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz"
+ integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
+
+commander@^8.3.0:
+ version "8.3.0"
+ resolved "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz"
+ integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==
+
commander@^9.0.0:
version "9.5.0"
resolved "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz"
integrity sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==
+common-tags@^1.8.0:
+ version "1.8.2"
+ resolved "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz"
+ integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
+
commondir@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
@@ -5319,11 +6263,16 @@ confbox@^0.1.7:
resolved "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz"
integrity sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==
-confusing-browser-globals@^1.0.10:
+confusing-browser-globals@^1.0.10, confusing-browser-globals@^1.0.11:
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==
+connect-history-api-fallback@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz"
+ integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==
+
consola@^3.2.3:
version "3.2.3"
resolved "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz"
@@ -5341,7 +6290,17 @@ content-type@~1.0.4, content-type@~1.0.5:
resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz"
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
-convert-source-map@^1.5.0, convert-source-map@^1.7.0:
+convert-source-map@^1.4.0, convert-source-map@^1.6.0:
+ 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==
+
+convert-source-map@^1.5.0:
+ 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==
+
+convert-source-map@^1.7.0:
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==
@@ -5368,11 +6327,32 @@ core-js-compat@^3.37.1, core-js-compat@^3.38.0:
dependencies:
browserslist "^4.23.3"
+core-js-pure@^3.23.3:
+ version "3.38.1"
+ resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz"
+ integrity sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==
+
+core-js@^3.19.2:
+ version "3.38.1"
+ resolved "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz"
+ integrity sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==
+
core-util-is@~1.0.0:
version "1.0.3"
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
+cosmiconfig@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz"
+ integrity sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==
+ dependencies:
+ "@types/parse-json" "^4.0.0"
+ import-fresh "^3.1.0"
+ parse-json "^5.0.0"
+ path-type "^4.0.0"
+ yaml "^1.7.2"
+
cosmiconfig@^7.0.0:
version "7.1.0"
resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz"
@@ -5411,6 +6391,105 @@ crypto-random-string@^2.0.0:
resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz"
integrity sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==
+crypto-random-string@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz"
+ integrity sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==
+ dependencies:
+ type-fest "^1.0.1"
+
+css-blank-pseudo@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz"
+ integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==
+ dependencies:
+ postcss-selector-parser "^6.0.9"
+
+css-declaration-sorter@^6.3.1:
+ version "6.4.1"
+ resolved "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.1.tgz"
+ integrity sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==
+
+css-has-pseudo@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz"
+ integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==
+ dependencies:
+ postcss-selector-parser "^6.0.9"
+
+css-loader@^6.5.1:
+ version "6.11.0"
+ resolved "https://registry.npmjs.org/css-loader/-/css-loader-6.11.0.tgz"
+ integrity sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==
+ dependencies:
+ icss-utils "^5.1.0"
+ postcss "^8.4.33"
+ postcss-modules-extract-imports "^3.1.0"
+ postcss-modules-local-by-default "^4.0.5"
+ postcss-modules-scope "^3.2.0"
+ postcss-modules-values "^4.0.0"
+ postcss-value-parser "^4.2.0"
+ semver "^7.5.4"
+
+css-minimizer-webpack-plugin@^3.2.0:
+ version "3.4.1"
+ resolved "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz"
+ integrity sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==
+ dependencies:
+ cssnano "^5.0.6"
+ jest-worker "^27.0.2"
+ postcss "^8.3.5"
+ schema-utils "^4.0.0"
+ serialize-javascript "^6.0.0"
+ source-map "^0.6.1"
+
+css-prefers-color-scheme@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz"
+ integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==
+
+css-select-base-adapter@^0.1.1:
+ version "0.1.1"
+ resolved "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz"
+ integrity sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==
+
+css-select@^2.0.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz"
+ integrity sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^3.2.1"
+ domutils "^1.7.0"
+ nth-check "^1.0.2"
+
+css-select@^4.1.3:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz"
+ integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
+ dependencies:
+ boolbase "^1.0.0"
+ css-what "^6.0.1"
+ domhandler "^4.3.1"
+ domutils "^2.8.0"
+ nth-check "^2.0.1"
+
+css-tree@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
+css-tree@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz"
+ integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
+ dependencies:
+ mdn-data "2.0.14"
+ source-map "^0.6.1"
+
css-tree@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz"
@@ -5419,11 +6498,112 @@ css-tree@^2.3.1:
mdn-data "2.0.30"
source-map-js "^1.0.1"
+css-tree@1.0.0-alpha.37:
+ version "1.0.0-alpha.37"
+ resolved "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz"
+ integrity sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==
+ dependencies:
+ mdn-data "2.0.4"
+ source-map "^0.6.1"
+
+css-what@^3.2.1:
+ version "3.4.2"
+ resolved "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz"
+ integrity sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==
+
+css-what@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz"
+ integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
+
css.escape@^1.5.1:
version "1.5.1"
resolved "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz"
integrity sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==
+cssdb@^7.1.0:
+ version "7.11.2"
+ resolved "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz"
+ integrity sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==
+
+cssesc@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz"
+ integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==
+
+cssnano-preset-default@^5.2.14:
+ version "5.2.14"
+ resolved "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.14.tgz"
+ integrity sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==
+ dependencies:
+ css-declaration-sorter "^6.3.1"
+ cssnano-utils "^3.1.0"
+ postcss-calc "^8.2.3"
+ postcss-colormin "^5.3.1"
+ postcss-convert-values "^5.1.3"
+ postcss-discard-comments "^5.1.2"
+ postcss-discard-duplicates "^5.1.0"
+ postcss-discard-empty "^5.1.1"
+ postcss-discard-overridden "^5.1.0"
+ postcss-merge-longhand "^5.1.7"
+ postcss-merge-rules "^5.1.4"
+ postcss-minify-font-values "^5.1.0"
+ postcss-minify-gradients "^5.1.1"
+ postcss-minify-params "^5.1.4"
+ postcss-minify-selectors "^5.2.1"
+ postcss-normalize-charset "^5.1.0"
+ postcss-normalize-display-values "^5.1.0"
+ postcss-normalize-positions "^5.1.1"
+ postcss-normalize-repeat-style "^5.1.1"
+ postcss-normalize-string "^5.1.0"
+ postcss-normalize-timing-functions "^5.1.0"
+ postcss-normalize-unicode "^5.1.1"
+ postcss-normalize-url "^5.1.0"
+ postcss-normalize-whitespace "^5.1.1"
+ postcss-ordered-values "^5.1.3"
+ postcss-reduce-initial "^5.1.2"
+ postcss-reduce-transforms "^5.1.0"
+ postcss-svgo "^5.1.0"
+ postcss-unique-selectors "^5.1.1"
+
+cssnano-utils@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz"
+ integrity sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==
+
+cssnano@^5.0.6:
+ version "5.1.15"
+ resolved "https://registry.npmjs.org/cssnano/-/cssnano-5.1.15.tgz"
+ integrity sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==
+ dependencies:
+ cssnano-preset-default "^5.2.14"
+ lilconfig "^2.0.3"
+ yaml "^1.10.2"
+
+csso@^4.0.2, csso@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz"
+ integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
+ dependencies:
+ css-tree "^1.1.2"
+
+cssom@^0.4.4:
+ version "0.4.4"
+ resolved "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz"
+ integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==
+
+cssom@~0.3.6:
+ version "0.3.8"
+ resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz"
+ integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
+
+cssstyle@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz"
+ integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
+ dependencies:
+ cssom "~0.3.6"
+
cssstyle@^4.0.1:
version "4.0.1"
resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-4.0.1.tgz"
@@ -5454,6 +6634,15 @@ data-uri-to-buffer@^4.0.0:
resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz"
integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
+data-urls@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz"
+ integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==
+ dependencies:
+ abab "^2.0.3"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.0.0"
+
data-urls@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz"
@@ -5501,19 +6690,19 @@ date-fns@^3.6.0:
resolved "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz"
integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==
-debug@2.6.9, debug@^2.6.9:
+debug@^2.6.0:
version "2.6.9"
resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
ms "2.0.0"
-debug@4, debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
- version "4.3.6"
- resolved "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz"
- integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
+debug@^2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
dependencies:
- ms "2.1.2"
+ ms "2.0.0"
debug@^3.2.7:
version "3.2.7"
@@ -5522,12 +6711,26 @@ debug@^3.2.7:
dependencies:
ms "^2.1.1"
+debug@^4.0.0, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@4:
+ version "4.3.6"
+ resolved "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz"
+ integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==
+ dependencies:
+ ms "2.1.2"
+
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
decamelize@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
-decimal.js@^10.4.3:
+decimal.js@^10.2.1, decimal.js@^10.4.3:
version "10.4.3"
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz"
integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
@@ -5539,6 +6742,11 @@ decode-named-character-reference@^1.0.0:
dependencies:
character-entities "^2.0.0"
+dedent@^0.7.0:
+ version "0.7.0"
+ resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz"
+ integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
+
dedent@^1.0.0:
version "1.5.3"
resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz"
@@ -5575,7 +6783,7 @@ deep-equal@^2.0.5:
which-collection "^1.0.1"
which-typed-array "^1.1.13"
-deep-is@^0.1.3:
+deep-is@^0.1.3, deep-is@~0.1.3:
version "0.1.4"
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
@@ -5593,6 +6801,13 @@ default-browser-id@3.0.0:
bplist-parser "^0.2.0"
untildify "^4.0.0"
+default-gateway@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz"
+ integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==
+ dependencies:
+ execa "^5.0.0"
+
default-require-extensions@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz"
@@ -5654,6 +6869,11 @@ delayed-stream@~1.0.0:
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
+depd@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz"
+ integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==
+
depd@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
@@ -5696,6 +6916,14 @@ detect-package-manager@^2.0.1:
dependencies:
execa "^5.1.1"
+detect-port-alt@^1.1.6:
+ version "1.1.6"
+ resolved "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz"
+ integrity sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==
+ dependencies:
+ address "^1.0.1"
+ debug "^2.6.0"
+
detect-port@^1.3.0:
version "1.6.1"
resolved "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz"
@@ -5711,11 +6939,21 @@ devlop@^1.0.0, devlop@^1.1.0:
dependencies:
dequal "^2.0.0"
+didyoumean@^1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz"
+ integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
+
diff-match-patch@^1.0.5:
version "1.0.5"
resolved "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz"
integrity sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==
+diff-sequences@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz"
+ integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==
+
diff-sequences@^28.1.1:
version "28.1.1"
resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz"
@@ -5745,6 +6983,18 @@ dir-glob@^3.0.1:
dependencies:
path-type "^4.0.0"
+dlv@^1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz"
+ integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==
+
+dns-packet@^5.2.2:
+ version "5.6.1"
+ resolved "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz"
+ integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==
+ dependencies:
+ "@leichtgewicht/ip-codec" "^2.0.1"
+
doctrine@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz"
@@ -5769,6 +7019,13 @@ dom-accessibility-api@^0.6.3:
resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz"
integrity sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==
+dom-converter@^0.2.0:
+ version "0.2.0"
+ resolved "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz"
+ integrity sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==
+ dependencies:
+ utila "~0.4"
+
dom-helpers@^5.0.1:
version "5.2.1"
resolved "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz"
@@ -5777,6 +7034,15 @@ dom-helpers@^5.0.1:
"@babel/runtime" "^7.8.7"
csstype "^3.0.2"
+dom-serializer@^1.0.1:
+ version "1.4.1"
+ resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz"
+ integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
+ dependencies:
+ domelementtype "^2.0.1"
+ domhandler "^4.2.0"
+ entities "^2.0.0"
+
dom-serializer@0:
version "0.2.2"
resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz"
@@ -5785,16 +7051,23 @@ dom-serializer@0:
domelementtype "^2.0.1"
entities "^2.0.0"
-domelementtype@1, domelementtype@^1.3.1:
+domelementtype@^1.3.1, domelementtype@1:
version "1.3.1"
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz"
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-domelementtype@^2.0.1:
+domelementtype@^2.0.1, domelementtype@^2.2.0:
version "2.3.0"
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz"
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
+domexception@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz"
+ integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==
+ dependencies:
+ webidl-conversions "^5.0.0"
+
domhandler@^2.3.0:
version "2.4.2"
resolved "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz"
@@ -5802,7 +7075,14 @@ domhandler@^2.3.0:
dependencies:
domelementtype "1"
-domutils@^1.5.1:
+domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1:
+ version "4.3.1"
+ resolved "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz"
+ integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
+ dependencies:
+ domelementtype "^2.2.0"
+
+domutils@^1.5.1, domutils@^1.7.0:
version "1.7.0"
resolved "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz"
integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
@@ -5810,16 +7090,57 @@ domutils@^1.5.1:
dom-serializer "0"
domelementtype "1"
+domutils@^2.5.2:
+ version "2.8.0"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+domutils@^2.8.0:
+ version "2.8.0"
+ resolved "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz"
+ integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
+ dependencies:
+ dom-serializer "^1.0.1"
+ domelementtype "^2.2.0"
+ domhandler "^4.2.0"
+
+dot-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz"
+ integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
dotenv-expand@^10.0.0:
version "10.0.0"
resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz"
integrity sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==
+dotenv-expand@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz"
+ integrity sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==
+
+dotenv@^10.0.0:
+ version "10.0.0"
+ resolved "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz"
+ integrity sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==
+
dotenv@^16.0.0:
version "16.4.5"
resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz"
integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==
+duplexer@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz"
+ integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==
+
duplexify@^3.5.0, duplexify@^3.6.0:
version "3.7.1"
resolved "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz"
@@ -5840,7 +7161,7 @@ ee-first@1.1.1:
resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
-ejs@^3.1.8:
+ejs@^3.1.6, ejs@^3.1.8:
version "3.1.10"
resolved "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz"
integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
@@ -5852,11 +7173,21 @@ electron-to-chromium@^1.5.4:
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz"
integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==
+emittery@^0.10.2:
+ version "0.10.2"
+ resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz"
+ integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==
+
emittery@^0.13.1:
version "0.13.1"
resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz"
integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
+emittery@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz"
+ integrity sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==
+
emoji-regex@^8.0.0:
version "8.0.0"
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
@@ -5884,6 +7215,14 @@ end-of-stream@^1.0.0, end-of-stream@^1.1.0, end-of-stream@^1.4.1:
dependencies:
once "^1.4.0"
+enhanced-resolve@^5.17.1:
+ version "5.17.1"
+ resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz"
+ integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==
+ dependencies:
+ graceful-fs "^4.2.4"
+ tapable "^2.2.0"
+
enquire.js@^2.1.6:
version "2.1.6"
resolved "https://registry.npmjs.org/enquire.js/-/enquire.js-2.1.6.tgz"
@@ -5916,7 +7255,14 @@ error-ex@^1.3.1:
dependencies:
is-arrayish "^0.2.1"
-es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3:
+error-stack-parser@^2.0.6:
+ version "2.1.4"
+ resolved "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz"
+ integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
+ dependencies:
+ stackframe "^1.3.4"
+
+es-abstract@^1.17.2, es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23.0, es-abstract@^1.23.1, es-abstract@^1.23.2, es-abstract@^1.23.3:
version "1.23.3"
resolved "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz"
integrity sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==
@@ -5968,7 +7314,12 @@ es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23
unbox-primitive "^1.0.2"
which-typed-array "^1.1.15"
-es-define-property@^1.0.0:
+es-array-method-boxes-properly@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz"
+ integrity sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==
+
+es-define-property@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz"
integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
@@ -6020,6 +7371,11 @@ es-module-lexer@^0.9.3:
resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz"
integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==
+es-module-lexer@^1.2.1:
+ version "1.5.4"
+ resolved "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz"
+ integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==
+
es-object-atoms@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz"
@@ -6069,7 +7425,36 @@ esbuild-register@^3.5.0:
dependencies:
debug "^4.3.4"
-esbuild@^0.18.0, esbuild@^0.18.10:
+"esbuild@^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0", esbuild@^0.19.8, esbuild@>=0.10.0, "esbuild@>=0.12 <1":
+ version "0.19.12"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz"
+ integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==
+ optionalDependencies:
+ "@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"
+
+esbuild@^0.18.0:
version "0.18.20"
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz"
integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
@@ -6097,34 +7482,33 @@ esbuild@^0.18.0, esbuild@^0.18.10:
"@esbuild/win32-ia32" "0.18.20"
"@esbuild/win32-x64" "0.18.20"
-esbuild@^0.19.8:
- version "0.19.12"
- resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz"
- integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==
+esbuild@^0.18.10:
+ version "0.18.20"
+ resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz"
+ integrity sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==
optionalDependencies:
- "@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"
+ "@esbuild/android-arm" "0.18.20"
+ "@esbuild/android-arm64" "0.18.20"
+ "@esbuild/android-x64" "0.18.20"
+ "@esbuild/darwin-arm64" "0.18.20"
+ "@esbuild/darwin-x64" "0.18.20"
+ "@esbuild/freebsd-arm64" "0.18.20"
+ "@esbuild/freebsd-x64" "0.18.20"
+ "@esbuild/linux-arm" "0.18.20"
+ "@esbuild/linux-arm64" "0.18.20"
+ "@esbuild/linux-ia32" "0.18.20"
+ "@esbuild/linux-loong64" "0.18.20"
+ "@esbuild/linux-mips64el" "0.18.20"
+ "@esbuild/linux-ppc64" "0.18.20"
+ "@esbuild/linux-riscv64" "0.18.20"
+ "@esbuild/linux-s390x" "0.18.20"
+ "@esbuild/linux-x64" "0.18.20"
+ "@esbuild/netbsd-x64" "0.18.20"
+ "@esbuild/openbsd-x64" "0.18.20"
+ "@esbuild/sunos-x64" "0.18.20"
+ "@esbuild/win32-arm64" "0.18.20"
+ "@esbuild/win32-ia32" "0.18.20"
+ "@esbuild/win32-x64" "0.18.20"
esbuild@^0.21.3:
version "0.21.5"
@@ -6180,7 +7564,19 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-escodegen@^2.1.0:
+escodegen@^1.8.1:
+ version "1.14.3"
+ resolved "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz"
+ integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==
+ dependencies:
+ esprima "^4.0.1"
+ estraverse "^4.2.0"
+ esutils "^2.0.2"
+ optionator "^0.8.1"
+ optionalDependencies:
+ source-map "~0.6.1"
+
+escodegen@^2.0.0, escodegen@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz"
integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
@@ -6210,6 +7606,26 @@ eslint-config-airbnb@^19.0.4:
object.assign "^4.1.2"
object.entries "^1.1.5"
+eslint-config-react-app@^7.0.1:
+ version "7.0.1"
+ resolved "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz"
+ integrity sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==
+ dependencies:
+ "@babel/core" "^7.16.0"
+ "@babel/eslint-parser" "^7.16.3"
+ "@rushstack/eslint-patch" "^1.1.0"
+ "@typescript-eslint/eslint-plugin" "^5.5.0"
+ "@typescript-eslint/parser" "^5.5.0"
+ babel-preset-react-app "^10.0.1"
+ confusing-browser-globals "^1.0.11"
+ eslint-plugin-flowtype "^8.0.3"
+ eslint-plugin-import "^2.25.3"
+ eslint-plugin-jest "^25.3.0"
+ eslint-plugin-jsx-a11y "^6.5.1"
+ eslint-plugin-react "^7.27.1"
+ eslint-plugin-react-hooks "^4.3.0"
+ eslint-plugin-testing-library "^5.0.1"
+
eslint-import-resolver-node@^0.3.9:
version "0.3.9"
resolved "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz"
@@ -6226,7 +7642,15 @@ eslint-module-utils@^2.8.0:
dependencies:
debug "^3.2.7"
-eslint-plugin-import@^2.29.1:
+eslint-plugin-flowtype@^8.0.3:
+ version "8.0.3"
+ resolved "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz"
+ integrity sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==
+ dependencies:
+ lodash "^4.17.21"
+ string-natural-compare "^3.0.1"
+
+eslint-plugin-import@^2.25.2, eslint-plugin-import@^2.25.3, eslint-plugin-import@^2.29.1:
version "2.29.1"
resolved "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz"
integrity sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==
@@ -6249,6 +7673,13 @@ eslint-plugin-import@^2.29.1:
semver "^6.3.1"
tsconfig-paths "^3.15.0"
+eslint-plugin-jest@^25.3.0:
+ version "25.7.0"
+ resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz"
+ integrity sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==
+ dependencies:
+ "@typescript-eslint/experimental-utils" "^5.0.0"
+
eslint-plugin-jest@^27.9.0:
version "27.9.0"
resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.9.0.tgz"
@@ -6256,7 +7687,7 @@ eslint-plugin-jest@^27.9.0:
dependencies:
"@typescript-eslint/utils" "^5.10.0"
-eslint-plugin-jsx-a11y@^6.8.0:
+eslint-plugin-jsx-a11y@^6.5.1, eslint-plugin-jsx-a11y@^6.8.0:
version "6.9.0"
resolved "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.9.0.tgz"
integrity sha512-nOFOCaJG2pYqORjK19lqPqxMO/JpvdCZdPtNdxY3kvom3jTvkAbOvQvD8wuD0G8BYR0IGAGYDlzqWJOh/ybn2g==
@@ -6278,7 +7709,7 @@ eslint-plugin-jsx-a11y@^6.8.0:
safe-regex-test "^1.0.3"
string.prototype.includes "^2.0.0"
-eslint-plugin-react-hooks@^4.6.0:
+eslint-plugin-react-hooks@^4.3.0, eslint-plugin-react-hooks@^4.6.0:
version "4.6.2"
resolved "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz"
integrity sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==
@@ -6288,7 +7719,7 @@ eslint-plugin-react-refresh@^0.3.4:
resolved "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.3.5.tgz"
integrity sha512-61qNIsc7fo9Pp/mju0J83kzvLm0Bsayu7OQSLEoJxLDCBjIIyb87bkzufoOvdDxLkSlMfkF7UxomC4+eztUBSA==
-eslint-plugin-react@^7.34.1:
+eslint-plugin-react@^7.27.1, eslint-plugin-react@^7.28.0, eslint-plugin-react@^7.34.1:
version "7.35.0"
resolved "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz"
integrity sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==
@@ -6322,6 +7753,13 @@ eslint-plugin-storybook@^0.6.14:
requireindex "^1.1.0"
ts-dedent "^2.2.0"
+eslint-plugin-testing-library@^5.0.1:
+ version "5.11.1"
+ resolved "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz"
+ integrity sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==
+ dependencies:
+ "@typescript-eslint/utils" "^5.58.0"
+
eslint-scope@^5.1.1:
version "5.1.1"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
@@ -6338,12 +7776,36 @@ eslint-scope@^7.2.2:
esrecurse "^4.3.0"
estraverse "^5.2.0"
+eslint-scope@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
+eslint-visitor-keys@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz"
+ integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
+
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-eslint@^8.38.0:
+eslint-webpack-plugin@^3.1.1:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz"
+ integrity sha512-avrKcGncpPbPSUHX6B3stNGzkKFto3eL+DKM4+VyMrVnhPc3vRczVlCq3uhuFOdRvDHTVXuzwk1ZKUrqDQHQ9w==
+ dependencies:
+ "@types/eslint" "^7.29.0 || ^8.4.1"
+ jest-worker "^28.0.2"
+ micromatch "^4.0.5"
+ normalize-path "^3.0.0"
+ schema-utils "^4.0.0"
+
+eslint@*, "eslint@^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8", "eslint@^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7", "eslint@^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0", "eslint@^6.0.0 || ^7.0.0 || ^8.0.0", "eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", "eslint@^7.32.0 || ^8.2.0", "eslint@^7.5.0 || ^8.0.0", "eslint@^7.5.0 || ^8.0.0 || ^9.0.0", eslint@^8.0.0, eslint@^8.1.0, eslint@^8.3.0, eslint@^8.38.0, eslint@^8.56.0, "eslint@>= 6", eslint@>=6, eslint@>=7:
version "8.57.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
@@ -6401,6 +7863,11 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0:
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
+esprima@1.2.2:
+ version "1.2.2"
+ resolved "https://registry.npmjs.org/esprima/-/esprima-1.2.2.tgz"
+ integrity sha512-+JpPZam9w5DuJ3Q67SqsMGtiHKENSMRVoxvArfJZK01/BfLEObtZ6orJa/MtoGNR/rfMgp5837T41PAmTwAv/A==
+
esquery@^1.4.2:
version "1.6.0"
resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz"
@@ -6420,6 +7887,11 @@ estraverse@^4.1.1:
resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+estraverse@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz"
+ integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==
+
estraverse@^5.1.0, estraverse@^5.2.0, estraverse@^5.3.0:
version "5.3.0"
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
@@ -6430,6 +7902,11 @@ estree-util-is-identifier-name@^3.0.0:
resolved "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz"
integrity sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==
+estree-walker@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz"
+ integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==
+
estree-walker@^2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz"
@@ -6457,6 +7934,16 @@ event-target-shim@^5.0.0:
resolved "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz"
integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==
+eventemitter3@^4.0.0:
+ version "4.0.7"
+ resolved "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz"
+ integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==
+
+events@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/events/-/events-3.3.0.tgz"
+ integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
+
execa@^5.0.0, execa@^5.1.1:
version "5.1.1"
resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz"
@@ -6504,6 +7991,16 @@ expect-playwright@^0.8.0:
resolved "https://registry.npmjs.org/expect-playwright/-/expect-playwright-0.8.0.tgz"
integrity sha512-+kn8561vHAY+dt+0gMqqj1oY+g5xWrsuGMk4QGxotT2WS545nVqqjs37z6hrYfIuucwqthzwJfCJUEYqixyljg==
+expect@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/expect/-/expect-27.5.1.tgz"
+ integrity sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ jest-get-type "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
+
expect@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz"
@@ -6515,7 +8012,7 @@ expect@^29.7.0:
jest-message-util "^29.7.0"
jest-util "^29.7.0"
-express@^4.17.3:
+express@^4.17.3, express@^4.19.2:
version "4.19.2"
resolved "https://registry.npmjs.org/express/-/express-4.19.2.tgz"
integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
@@ -6572,7 +8069,7 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-fast-glob@^3.2.9, fast-glob@^3.3.2:
+fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.2:
version "3.3.2"
resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
@@ -6588,11 +8085,16 @@ fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
-fast-levenshtein@^2.0.6:
+fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6:
version "2.0.6"
resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
+fast-uri@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz"
+ integrity sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==
+
fastq@^1.6.0:
version "1.17.1"
resolved "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz"
@@ -6600,6 +8102,13 @@ fastq@^1.6.0:
dependencies:
reusify "^1.0.4"
+faye-websocket@^0.11.3:
+ version "0.11.4"
+ resolved "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz"
+ integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==
+ dependencies:
+ websocket-driver ">=0.5.1"
+
fb-watchman@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz"
@@ -6607,6 +8116,13 @@ fb-watchman@^2.0.0:
dependencies:
bser "2.1.1"
+fd-package-json@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/fd-package-json/-/fd-package-json-1.2.0.tgz"
+ integrity sha512-45LSPmWf+gC5tdCQMNH4s9Sr00bIkiD9aN7dc5hqkrEw1geRYyDQS1v1oMHAW3ysfxfndqGsrDREHHjNNbKUfA==
+ dependencies:
+ walk-up-path "^3.0.1"
+
fd-slicer@~1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz"
@@ -6639,6 +8155,14 @@ file-entry-cache@^6.0.1:
dependencies:
flat-cache "^3.0.4"
+file-loader@^6.2.0:
+ version "6.2.0"
+ resolved "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz"
+ integrity sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==
+ dependencies:
+ loader-utils "^2.0.0"
+ schema-utils "^3.0.0"
+
file-system-cache@2.3.0:
version "2.3.0"
resolved "https://registry.npmjs.org/file-system-cache/-/file-system-cache-2.3.0.tgz"
@@ -6654,6 +8178,11 @@ filelist@^1.0.4:
dependencies:
minimatch "^5.0.1"
+filesize@^8.0.6:
+ version "8.0.7"
+ resolved "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz"
+ integrity sha512-pjmC+bkIF8XI7fWaH8KxHcZL3DPybs1roSKP4rKDvy20tAWwIObE4+JIseG2byfGKhud5ZnM4YSGKBz7Sh0ndQ==
+
fill-range@^7.1.1:
version "7.1.1"
resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
@@ -6683,7 +8212,7 @@ find-cache-dir@^2.0.0:
make-dir "^2.0.0"
pkg-dir "^3.0.0"
-find-cache-dir@^3.0.0, find-cache-dir@^3.2.0:
+find-cache-dir@^3.0.0, find-cache-dir@^3.2.0, find-cache-dir@^3.3.1:
version "3.3.2"
resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz"
integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==
@@ -6770,7 +8299,7 @@ flow-parser@0.*:
resolved "https://registry.npmjs.org/flow-parser/-/flow-parser-0.245.0.tgz"
integrity sha512-xUBkkpIDfDZHAebnDEX65FCVitJUctab82KFmtP5SY4cGly1vbuYNe6Muyp0NLXrgmBChVdoC2T+3/RUHi4Mww==
-follow-redirects@^1.15.6:
+follow-redirects@^1.0.0, follow-redirects@^1.15.6:
version "1.15.6"
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz"
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
@@ -6798,6 +8327,34 @@ foreground-child@^3.1.0:
cross-spawn "^7.0.0"
signal-exit "^4.0.1"
+fork-ts-checker-webpack-plugin@^6.5.0:
+ version "6.5.3"
+ resolved "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz"
+ integrity sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==
+ dependencies:
+ "@babel/code-frame" "^7.8.3"
+ "@types/json-schema" "^7.0.5"
+ chalk "^4.1.0"
+ chokidar "^3.4.2"
+ cosmiconfig "^6.0.0"
+ deepmerge "^4.2.2"
+ fs-extra "^9.0.0"
+ glob "^7.1.6"
+ memfs "^3.1.2"
+ minimatch "^3.0.4"
+ schema-utils "2.7.0"
+ semver "^7.3.2"
+ tapable "^1.0.0"
+
+form-data@^3.0.0:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz"
+ integrity sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==
+ dependencies:
+ asynckit "^0.4.0"
+ combined-stream "^1.0.8"
+ mime-types "^2.1.12"
+
form-data@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
@@ -6819,6 +8376,11 @@ forwarded@0.2.0:
resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
+fraction.js@^4.3.7:
+ version "4.3.7"
+ resolved "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz"
+ integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
+
fresh@0.5.2:
version "0.5.2"
resolved "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz"
@@ -6839,10 +8401,10 @@ fs-exists-sync@^0.1.0:
resolved "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz"
integrity sha512-cR/vflFyPZtrN6b38ZyWxpWdhlXrzZEBawlpBQMq7033xVY7/kg0GDMBK5jg8lDYQckdJ5x/YC88lM3C7VMsLg==
-fs-extra@11.1.1:
- version "11.1.1"
- resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz"
- integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==
+fs-extra@^10.0.0:
+ version "10.1.0"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz"
+ integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
@@ -6867,6 +8429,25 @@ fs-extra@^9.0.0:
jsonfile "^6.0.1"
universalify "^2.0.0"
+fs-extra@^9.0.1:
+ version "9.1.0"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz"
+ integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
+ dependencies:
+ at-least-node "^1.0.0"
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
+fs-extra@11.1.1:
+ version "11.1.1"
+ resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz"
+ integrity sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==
+ dependencies:
+ graceful-fs "^4.2.0"
+ jsonfile "^6.0.1"
+ universalify "^2.0.0"
+
fs-minipass@^2.0.0:
version "2.1.0"
resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
@@ -6874,21 +8455,16 @@ fs-minipass@^2.0.0:
dependencies:
minipass "^3.0.0"
+fs-monkey@^1.0.4:
+ version "1.0.6"
+ resolved "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz"
+ integrity sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==
+
fs.realpath@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@2.3.2:
- version "2.3.2"
- resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
-fsevents@^2.3.2, fsevents@~2.3.2, fsevents@~2.3.3:
- version "2.3.3"
- resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -6945,6 +8521,11 @@ get-npm-tarball-url@^2.0.3:
resolved "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz"
integrity sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==
+get-own-enumerable-property-symbols@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz"
+ integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==
+
get-package-type@^0.1.0:
version "0.1.0"
resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz"
@@ -6998,7 +8579,7 @@ github-slugger@^1.0.0:
resolved "https://registry.npmjs.org/github-slugger/-/github-slugger-1.5.0.tgz"
integrity sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==
-glob-parent@^5.1.2, glob-parent@~5.1.2:
+glob-parent@^5.1.2:
version "5.1.2"
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
@@ -7012,6 +8593,13 @@ glob-parent@^6.0.2:
dependencies:
is-glob "^4.0.3"
+glob-parent@~5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
+ integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
+ dependencies:
+ is-glob "^4.0.1"
+
glob-promise@^4.2.0:
version "4.2.2"
resolved "https://registry.npmjs.org/glob-promise/-/glob-promise-4.2.2.tgz"
@@ -7024,7 +8612,7 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@^10.0.0, glob@^10.2.2:
+glob@^10.0.0, glob@^10.2.2, glob@^10.3.10:
version "10.4.5"
resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz"
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
@@ -7036,7 +8624,31 @@ glob@^10.0.0, glob@^10.2.2:
package-json-from-dist "^1.0.0"
path-scurry "^1.11.1"
-glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.0:
+glob@^7.1.1, glob@^7.1.2, glob@^7.1.3:
+ version "7.2.3"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.4:
+ version "7.2.3"
+ resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
+ integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
+ dependencies:
+ fs.realpath "^1.0.0"
+ inflight "^1.0.4"
+ inherits "2"
+ minimatch "^3.1.1"
+ once "^1.3.0"
+ path-is-absolute "^1.0.0"
+
+glob@^7.1.6, glob@^7.2.0:
version "7.2.3"
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
@@ -7056,6 +8668,13 @@ global-modules@^0.2.3:
global-prefix "^0.1.4"
is-windows "^0.2.0"
+global-modules@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz"
+ integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==
+ dependencies:
+ global-prefix "^3.0.0"
+
global-prefix@^0.1.4:
version "0.1.5"
resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz"
@@ -7066,6 +8685,15 @@ global-prefix@^0.1.4:
is-windows "^0.2.0"
which "^1.2.12"
+global-prefix@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz"
+ integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==
+ dependencies:
+ ini "^1.3.5"
+ kind-of "^6.0.2"
+ which "^1.3.1"
+
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
@@ -7086,7 +8714,7 @@ globalthis@^1.0.3:
define-properties "^1.2.1"
gopd "^1.0.1"
-globby@^11.0.1, globby@^11.0.2, globby@^11.1.0:
+globby@^11.0.1, globby@^11.0.2, globby@^11.0.4, globby@^11.1.0:
version "11.1.0"
resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
@@ -7098,6 +8726,18 @@ globby@^11.0.1, globby@^11.0.2, globby@^11.1.0:
merge2 "^1.4.1"
slash "^3.0.0"
+globby@^14.0.1:
+ version "14.0.2"
+ resolved "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz"
+ integrity sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==
+ dependencies:
+ "@sindresorhus/merge-streams" "^2.1.0"
+ fast-glob "^3.3.2"
+ ignore "^5.2.4"
+ path-type "^5.0.0"
+ slash "^5.1.0"
+ unicorn-magic "^0.1.0"
+
gopd@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz"
@@ -7105,7 +8745,7 @@ gopd@^1.0.1:
dependencies:
get-intrinsic "^1.1.3"
-graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.9:
+graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.11, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.11"
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
@@ -7127,6 +8767,18 @@ gunzip-maybe@^1.4.2:
pumpify "^1.3.3"
through2 "^2.0.3"
+gzip-size@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.npmjs.org/gzip-size/-/gzip-size-6.0.0.tgz"
+ integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==
+ dependencies:
+ duplexer "^0.1.2"
+
+handle-thing@^2.0.0:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz"
+ integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==
+
handlebars@^4.7.7:
version "4.7.8"
resolved "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz"
@@ -7139,6 +8791,11 @@ handlebars@^4.7.7:
optionalDependencies:
uglify-js "^3.1.4"
+harmony-reflect@^1.4.6:
+ version "1.6.2"
+ resolved "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz"
+ integrity sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==
+
has-bigints@^1.0.1, has-bigints@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz"
@@ -7166,7 +8823,7 @@ has-proto@^1.0.1, has-proto@^1.0.3:
resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz"
integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
-has-symbols@^1.0.2, has-symbols@^1.0.3:
+has-symbols@^1.0.1, has-symbols@^1.0.2, has-symbols@^1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
@@ -7226,6 +8883,11 @@ hast-util-whitespace@^3.0.0:
dependencies:
"@types/hast" "^3.0.0"
+he@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
+ integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
+
hoist-non-react-statics@^3.3.1, hoist-non-react-statics@^3.3.2:
version "3.3.2"
resolved "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz"
@@ -7240,11 +8902,33 @@ homedir-polyfill@^1.0.0:
dependencies:
parse-passwd "^1.0.0"
+hoopy@^0.1.4:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/hoopy/-/hoopy-0.1.4.tgz"
+ integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
+
hosted-git-info@^2.1.4:
version "2.8.9"
resolved "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz"
integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==
+hpack.js@^2.1.6:
+ version "2.1.6"
+ resolved "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz"
+ integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==
+ dependencies:
+ inherits "^2.0.1"
+ obuf "^1.0.0"
+ readable-stream "^2.0.1"
+ wbuf "^1.1.0"
+
+html-encoding-sniffer@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz"
+ integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==
+ dependencies:
+ whatwg-encoding "^1.0.5"
+
html-encoding-sniffer@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz"
@@ -7252,11 +8936,29 @@ html-encoding-sniffer@^4.0.0:
dependencies:
whatwg-encoding "^3.1.1"
+html-entities@^2.1.0, html-entities@^2.3.2:
+ version "2.5.2"
+ resolved "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz"
+ integrity sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==
+
html-escaper@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz"
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
+html-minifier-terser@^6.0.2:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz"
+ integrity sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==
+ dependencies:
+ camel-case "^4.1.2"
+ clean-css "^5.2.2"
+ commander "^8.3.0"
+ he "^1.2.0"
+ param-case "^3.0.4"
+ relateurl "^0.2.7"
+ terser "^5.10.0"
+
html-parse-stringify@^3.0.1:
version "3.0.1"
resolved "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz"
@@ -7274,6 +8976,17 @@ html-url-attributes@^3.0.0:
resolved "https://registry.npmjs.org/html-url-attributes/-/html-url-attributes-3.0.0.tgz"
integrity sha512-/sXbVCWayk6GDVg3ctOX6nxaVj7So40FcFAnWlWGNAB1LpYKcV5Cd10APjPjW80O7zYW2MsjBV4zZ7IZO5fVow==
+html-webpack-plugin@^5.5.0:
+ version "5.6.0"
+ resolved "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz"
+ integrity sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==
+ dependencies:
+ "@types/html-minifier-terser" "^6.0.0"
+ html-minifier-terser "^6.0.2"
+ lodash "^4.17.21"
+ pretty-error "^4.0.0"
+ tapable "^2.0.0"
+
htmlparser2@^3.9.2:
version "3.10.1"
resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz"
@@ -7286,17 +8999,56 @@ htmlparser2@^3.9.2:
inherits "^2.0.1"
readable-stream "^3.1.1"
-http-errors@2.0.0:
- version "2.0.0"
- resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
- integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+htmlparser2@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz"
+ integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==
dependencies:
- depd "2.0.0"
- inherits "2.0.4"
- setprototypeof "1.2.0"
+ domelementtype "^2.0.1"
+ domhandler "^4.0.0"
+ domutils "^2.5.2"
+ entities "^2.0.0"
+
+http-deceiver@^1.2.7:
+ version "1.2.7"
+ resolved "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz"
+ integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==
+
+http-errors@~1.6.2:
+ version "1.6.3"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz"
+ integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==
+ dependencies:
+ depd "~1.1.2"
+ inherits "2.0.3"
+ setprototypeof "1.1.0"
+ statuses ">= 1.4.0 < 2"
+
+http-errors@2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
+ integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
+ dependencies:
+ depd "2.0.0"
+ inherits "2.0.4"
+ setprototypeof "1.2.0"
statuses "2.0.1"
toidentifier "1.0.1"
+http-parser-js@>=0.5.1:
+ version "0.5.8"
+ resolved "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz"
+ integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
+
+http-proxy-agent@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz"
+ integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==
+ dependencies:
+ "@tootallnate/once" "1"
+ agent-base "6"
+ debug "4"
+
http-proxy-agent@^7.0.0:
version "7.0.2"
resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz"
@@ -7305,6 +9057,26 @@ http-proxy-agent@^7.0.0:
agent-base "^7.1.0"
debug "^4.3.4"
+http-proxy-middleware@^2.0.3:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz"
+ integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
+ dependencies:
+ "@types/http-proxy" "^1.17.8"
+ http-proxy "^1.18.1"
+ is-glob "^4.0.1"
+ is-plain-obj "^3.0.0"
+ micromatch "^4.0.2"
+
+http-proxy@^1.18.1:
+ version "1.18.1"
+ resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz"
+ integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==
+ dependencies:
+ eventemitter3 "^4.0.0"
+ follow-redirects "^1.0.0"
+ requires-port "^1.0.0"
+
https-proxy-agent@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz"
@@ -7313,6 +9085,14 @@ https-proxy-agent@^4.0.0:
agent-base "5"
debug "4"
+https-proxy-agent@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"
+ integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
+ dependencies:
+ agent-base "6"
+ debug "4"
+
https-proxy-agent@^7.0.2:
version "7.0.5"
resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz"
@@ -7331,13 +9111,20 @@ human-signals@^5.0.0:
resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz"
integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
-i18next@^23.7.19:
+i18next@^23.7.19, "i18next@>= 23.2.3":
version "23.14.0"
resolved "https://registry.npmjs.org/i18next/-/i18next-23.14.0.tgz"
integrity sha512-Y5GL4OdA8IU2geRrt2+Uc1iIhsjICdHZzT9tNwQ3TVqdNzgxHToGCKf/TPRP80vTCAP6svg2WbbJL+Gx5MFQVA==
dependencies:
"@babel/runtime" "^7.23.2"
+iconv-lite@^0.6.3:
+ version "0.6.3"
+ resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz"
+ integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
+ dependencies:
+ safer-buffer ">= 2.1.2 < 3.0.0"
+
iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
@@ -7352,12 +9139,29 @@ iconv-lite@0.6.3:
dependencies:
safer-buffer ">= 2.1.2 < 3.0.0"
+icss-utils@^5.0.0, icss-utils@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz"
+ integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==
+
+idb@^7.0.1:
+ version "7.1.1"
+ resolved "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz"
+ integrity sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==
+
+identity-obj-proxy@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz"
+ integrity sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==
+ dependencies:
+ harmony-reflect "^1.4.6"
+
ieee754@^1.1.13, ieee754@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-ignore@^5.2.0, ignore@^5.3.1:
+ignore@^5.2.0, ignore@^5.2.4, ignore@^5.3.1:
version "5.3.2"
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
@@ -7367,7 +9171,17 @@ immediate@~3.0.5:
resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz"
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
-import-fresh@^3.2.1:
+immer@^9.0.7:
+ version "9.0.21"
+ resolved "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz"
+ integrity sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==
+
+immutable@^4.0.0:
+ version "4.3.7"
+ resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz"
+ integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==
+
+import-fresh@^3.1.0, import-fresh@^3.2.1:
version "3.3.0"
resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
@@ -7401,12 +9215,17 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-ini@^1.3.4:
+inherits@2.0.3:
+ version "2.0.3"
+ resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz"
+ integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
+
+ini@^1.3.4, ini@^1.3.5:
version "1.3.8"
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
@@ -7437,6 +9256,11 @@ invariant@^2.2.4:
dependencies:
loose-envify "^1.0.0"
+ipaddr.js@^2.0.1:
+ version "2.2.0"
+ resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz"
+ integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==
+
ipaddr.js@1.9.1:
version "1.9.1"
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
@@ -7617,6 +9441,11 @@ is-map@^2.0.2, is-map@^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==
+is-module@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz"
+ integrity sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==
+
is-nan@^1.3.2:
version "1.3.2"
resolved "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz"
@@ -7642,6 +9471,11 @@ is-number@^7.0.0:
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
+is-obj@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz"
+ integrity sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==
+
is-path-cwd@^2.2.0:
version "2.2.0"
resolved "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz"
@@ -7652,16 +9486,16 @@ is-path-inside@^3.0.2, is-path-inside@^3.0.3:
resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+is-plain-obj@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz"
+ integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==
+
is-plain-obj@^4.0.0:
version "4.1.0"
resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz"
integrity sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==
-is-plain-object@5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz"
- integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
-
is-plain-object@^2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz"
@@ -7669,6 +9503,11 @@ is-plain-object@^2.0.4:
dependencies:
isobject "^3.0.1"
+is-plain-object@5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz"
+ integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==
+
is-potential-custom-element-name@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz"
@@ -7682,6 +9521,16 @@ is-regex@^1.1.4:
call-bind "^1.0.2"
has-tostringtag "^1.0.0"
+is-regexp@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz"
+ integrity sha512-7zjFAPO4/gwyQAAgRRmqeEeyIICSdmCqa3tsVHMdBzaXXRiqopZL4Cyghg/XulGWrtABTpbnYYzzIRffLkP4oA==
+
+is-root@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz"
+ integrity sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==
+
is-set@^2.0.2, is-set@^2.0.3:
version "2.0.3"
resolved "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz"
@@ -7804,7 +9653,17 @@ istanbul-lib-hook@^3.0.0:
dependencies:
append-transform "^2.0.0"
-istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
+istanbul-lib-instrument@^4.0.0:
+ version "4.0.3"
+ resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz"
+ integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
+ dependencies:
+ "@babel/core" "^7.7.5"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.0.0"
+ semver "^6.3.0"
+
+istanbul-lib-instrument@^4.0.3:
version "4.0.3"
resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz"
integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==
@@ -7814,7 +9673,18 @@ istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3:
istanbul-lib-coverage "^3.0.0"
semver "^6.3.0"
-istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
+istanbul-lib-instrument@^5.0.4:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz"
+ integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
+ dependencies:
+ "@babel/core" "^7.12.3"
+ "@babel/parser" "^7.14.7"
+ "@istanbuljs/schema" "^0.1.2"
+ istanbul-lib-coverage "^3.2.0"
+ semver "^6.3.0"
+
+istanbul-lib-instrument@^5.1.0:
version "5.2.1"
resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz"
integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==
@@ -7913,6 +9783,15 @@ jake@^10.8.5:
filelist "^1.0.4"
minimatch "^3.1.2"
+jest-changed-files@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.5.1.tgz"
+ integrity sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ execa "^5.0.0"
+ throat "^6.0.1"
+
jest-changed-files@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz"
@@ -7922,7 +9801,32 @@ jest-changed-files@^29.7.0:
jest-util "^29.7.0"
p-limit "^3.1.0"
-jest-circus@^29.6.4, jest-circus@^29.7.0:
+jest-circus@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz"
+ integrity sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ dedent "^0.7.0"
+ expect "^27.5.1"
+ is-generator-fn "^2.0.0"
+ jest-each "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
+ pretty-format "^27.5.1"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+ throat "^6.0.1"
+
+jest-circus@^29.3.1, jest-circus@^29.6.4, jest-circus@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz"
integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==
@@ -7948,6 +9852,24 @@ jest-circus@^29.6.4, jest-circus@^29.7.0:
slash "^3.0.0"
stack-utils "^2.0.3"
+jest-cli@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-27.5.1.tgz"
+ integrity sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==
+ dependencies:
+ "@jest/core" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ chalk "^4.0.0"
+ exit "^0.1.2"
+ graceful-fs "^4.2.9"
+ import-local "^3.0.2"
+ jest-config "^27.5.1"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
+ prompts "^2.0.1"
+ yargs "^16.2.0"
+
jest-cli@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz"
@@ -7965,6 +9887,36 @@ jest-cli@^29.7.0:
jest-validate "^29.7.0"
yargs "^17.3.1"
+jest-config@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-config/-/jest-config-27.5.1.tgz"
+ integrity sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==
+ dependencies:
+ "@babel/core" "^7.8.0"
+ "@jest/test-sequencer" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ babel-jest "^27.5.1"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ deepmerge "^4.2.2"
+ glob "^7.1.1"
+ graceful-fs "^4.2.9"
+ jest-circus "^27.5.1"
+ jest-environment-jsdom "^27.5.1"
+ jest-environment-node "^27.5.1"
+ jest-get-type "^27.5.1"
+ jest-jasmine2 "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-runner "^27.5.1"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
+ micromatch "^4.0.4"
+ parse-json "^5.2.0"
+ pretty-format "^27.5.1"
+ slash "^3.0.0"
+ strip-json-comments "^3.1.1"
+
jest-config@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz"
@@ -7993,6 +9945,16 @@ jest-config@^29.7.0:
slash "^3.0.0"
strip-json-comments "^3.1.1"
+jest-diff@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz"
+ integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==
+ dependencies:
+ chalk "^4.0.0"
+ diff-sequences "^27.5.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
+
jest-diff@^28.1.3:
version "28.1.3"
resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz"
@@ -8013,6 +9975,13 @@ jest-diff@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
+jest-docblock@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.5.1.tgz"
+ integrity sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==
+ dependencies:
+ detect-newline "^3.0.0"
+
jest-docblock@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz"
@@ -8020,6 +9989,17 @@ jest-docblock@^29.7.0:
dependencies:
detect-newline "^3.0.0"
+jest-each@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-each/-/jest-each-27.5.1.tgz"
+ integrity sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ chalk "^4.0.0"
+ jest-get-type "^27.5.1"
+ jest-util "^27.5.1"
+ pretty-format "^27.5.1"
+
jest-each@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz"
@@ -8031,7 +10011,32 @@ jest-each@^29.7.0:
jest-util "^29.7.0"
pretty-format "^29.7.0"
-jest-environment-node@^29.6.4, jest-environment-node@^29.7.0:
+jest-environment-jsdom@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.5.1.tgz"
+ integrity sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ jest-mock "^27.5.1"
+ jest-util "^27.5.1"
+ jsdom "^16.6.0"
+
+jest-environment-node@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.5.1.tgz"
+ integrity sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ jest-mock "^27.5.1"
+ jest-util "^27.5.1"
+
+jest-environment-node@^29.3.1, jest-environment-node@^29.6.4, jest-environment-node@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz"
integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==
@@ -8043,6 +10048,11 @@ jest-environment-node@^29.6.4, jest-environment-node@^29.7.0:
jest-mock "^29.7.0"
jest-util "^29.7.0"
+jest-get-type@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz"
+ integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==
+
jest-get-type@^28.0.2:
version "28.0.2"
resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz"
@@ -8053,6 +10063,26 @@ jest-get-type@^29.6.3:
resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz"
integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
+jest-haste-map@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.5.1.tgz"
+ integrity sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ "@types/graceful-fs" "^4.1.2"
+ "@types/node" "*"
+ anymatch "^3.0.3"
+ fb-watchman "^2.0.0"
+ graceful-fs "^4.2.9"
+ jest-regex-util "^27.5.1"
+ jest-serializer "^27.5.1"
+ jest-util "^27.5.1"
+ jest-worker "^27.5.1"
+ micromatch "^4.0.4"
+ walker "^1.0.7"
+ optionalDependencies:
+ fsevents "^2.3.2"
+
jest-haste-map@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz"
@@ -8072,6 +10102,29 @@ jest-haste-map@^29.7.0:
optionalDependencies:
fsevents "^2.3.2"
+jest-jasmine2@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.5.1.tgz"
+ integrity sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/source-map" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ co "^4.6.0"
+ expect "^27.5.1"
+ is-generator-fn "^2.0.0"
+ jest-each "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
+ pretty-format "^27.5.1"
+ throat "^6.0.1"
+
jest-junit@^16.0.0:
version "16.0.0"
resolved "https://registry.npmjs.org/jest-junit/-/jest-junit-16.0.0.tgz"
@@ -8082,6 +10135,14 @@ jest-junit@^16.0.0:
uuid "^8.3.2"
xml "^1.0.1"
+jest-leak-detector@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.5.1.tgz"
+ integrity sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==
+ dependencies:
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
+
jest-leak-detector@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz"
@@ -8090,6 +10151,16 @@ jest-leak-detector@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
+jest-matcher-utils@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz"
+ integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==
+ dependencies:
+ chalk "^4.0.0"
+ jest-diff "^27.5.1"
+ jest-get-type "^27.5.1"
+ pretty-format "^27.5.1"
+
jest-matcher-utils@^28.0.0:
version "28.1.3"
resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz"
@@ -8110,6 +10181,36 @@ jest-matcher-utils@^29.7.0:
jest-get-type "^29.6.3"
pretty-format "^29.7.0"
+jest-message-util@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz"
+ integrity sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^27.5.1"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^27.5.1"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+
+jest-message-util@^28.1.3:
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz"
+ integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==
+ dependencies:
+ "@babel/code-frame" "^7.12.13"
+ "@jest/types" "^28.1.3"
+ "@types/stack-utils" "^2.0.0"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ micromatch "^4.0.4"
+ pretty-format "^28.1.3"
+ slash "^3.0.0"
+ stack-utils "^2.0.3"
+
jest-message-util@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz"
@@ -8125,7 +10226,7 @@ jest-message-util@^29.7.0:
slash "^3.0.0"
stack-utils "^2.0.3"
-jest-mock@^27.0.6, jest-mock@^27.3.0:
+jest-mock@^27.0.6, jest-mock@^27.3.0, jest-mock@^27.5.1:
version "27.5.1"
resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz"
integrity sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==
@@ -8175,11 +10276,30 @@ jest-process-manager@^0.4.0:
tree-kill "^1.2.2"
wait-on "^7.0.0"
+jest-regex-util@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz"
+ integrity sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==
+
+jest-regex-util@^28.0.0:
+ version "28.0.2"
+ resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz"
+ integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==
+
jest-regex-util@^29.0.0, jest-regex-util@^29.6.3:
version "29.6.3"
resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz"
integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
+jest-resolve-dependencies@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.5.1.tgz"
+ integrity sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-snapshot "^27.5.1"
+
jest-resolve-dependencies@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz"
@@ -8188,7 +10308,7 @@ jest-resolve-dependencies@^29.7.0:
jest-regex-util "^29.6.3"
jest-snapshot "^29.7.0"
-jest-resolve@^29.7.0:
+jest-resolve@*, jest-resolve@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz"
integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
@@ -8203,7 +10323,50 @@ jest-resolve@^29.7.0:
resolve.exports "^2.0.0"
slash "^3.0.0"
-jest-runner@^29.6.4, jest-runner@^29.7.0:
+jest-resolve@^27.4.2, jest-resolve@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.5.1.tgz"
+ integrity sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ chalk "^4.0.0"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.1"
+ jest-pnp-resolver "^1.2.2"
+ jest-util "^27.5.1"
+ jest-validate "^27.5.1"
+ resolve "^1.20.0"
+ resolve.exports "^1.1.0"
+ slash "^3.0.0"
+
+jest-runner@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-27.5.1.tgz"
+ integrity sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==
+ dependencies:
+ "@jest/console" "^27.5.1"
+ "@jest/environment" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ emittery "^0.8.1"
+ graceful-fs "^4.2.9"
+ jest-docblock "^27.5.1"
+ jest-environment-jsdom "^27.5.1"
+ jest-environment-node "^27.5.1"
+ jest-haste-map "^27.5.1"
+ jest-leak-detector "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-runtime "^27.5.1"
+ jest-util "^27.5.1"
+ jest-worker "^27.5.1"
+ source-map-support "^0.5.6"
+ throat "^6.0.1"
+
+jest-runner@^29.3.1, jest-runner@^29.6.4, jest-runner@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz"
integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==
@@ -8230,6 +10393,34 @@ jest-runner@^29.6.4, jest-runner@^29.7.0:
p-limit "^3.1.0"
source-map-support "0.5.13"
+jest-runtime@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.5.1.tgz"
+ integrity sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==
+ dependencies:
+ "@jest/environment" "^27.5.1"
+ "@jest/fake-timers" "^27.5.1"
+ "@jest/globals" "^27.5.1"
+ "@jest/source-map" "^27.5.1"
+ "@jest/test-result" "^27.5.1"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ chalk "^4.0.0"
+ cjs-module-lexer "^1.0.0"
+ collect-v8-coverage "^1.0.0"
+ execa "^5.0.0"
+ glob "^7.1.3"
+ graceful-fs "^4.2.9"
+ jest-haste-map "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-mock "^27.5.1"
+ jest-regex-util "^27.5.1"
+ jest-resolve "^27.5.1"
+ jest-snapshot "^27.5.1"
+ jest-util "^27.5.1"
+ slash "^3.0.0"
+ strip-bom "^4.0.0"
+
jest-runtime@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz"
@@ -8265,6 +10456,42 @@ jest-serializer-html@^7.1.0:
dependencies:
diffable-html "^4.1.0"
+jest-serializer@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.5.1.tgz"
+ integrity sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==
+ dependencies:
+ "@types/node" "*"
+ graceful-fs "^4.2.9"
+
+jest-snapshot@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.5.1.tgz"
+ integrity sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==
+ dependencies:
+ "@babel/core" "^7.7.2"
+ "@babel/generator" "^7.7.2"
+ "@babel/plugin-syntax-typescript" "^7.7.2"
+ "@babel/traverse" "^7.7.2"
+ "@babel/types" "^7.0.0"
+ "@jest/transform" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/babel__traverse" "^7.0.4"
+ "@types/prettier" "^2.1.5"
+ babel-preset-current-node-syntax "^1.0.0"
+ chalk "^4.0.0"
+ expect "^27.5.1"
+ graceful-fs "^4.2.9"
+ jest-diff "^27.5.1"
+ jest-get-type "^27.5.1"
+ jest-haste-map "^27.5.1"
+ jest-matcher-utils "^27.5.1"
+ jest-message-util "^27.5.1"
+ jest-util "^27.5.1"
+ natural-compare "^1.4.0"
+ pretty-format "^27.5.1"
+ semver "^7.3.2"
+
jest-snapshot@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz"
@@ -8291,18 +10518,54 @@ jest-snapshot@^29.7.0:
pretty-format "^29.7.0"
semver "^7.5.3"
-jest-util@^29.7.0:
- version "29.7.0"
- resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz"
- integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
+jest-util@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz"
+ integrity sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==
dependencies:
- "@jest/types" "^29.6.3"
+ "@jest/types" "^27.5.1"
"@types/node" "*"
chalk "^4.0.0"
ci-info "^3.2.0"
graceful-fs "^4.2.9"
picomatch "^2.2.3"
+jest-util@^28.1.3:
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz"
+ integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==
+ dependencies:
+ "@jest/types" "^28.1.3"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ graceful-fs "^4.2.9"
+ picomatch "^2.2.3"
+
+jest-util@^29.7.0:
+ version "29.7.0"
+ resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz"
+ integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
+ dependencies:
+ "@jest/types" "^29.6.3"
+ "@types/node" "*"
+ chalk "^4.0.0"
+ ci-info "^3.2.0"
+ graceful-fs "^4.2.9"
+ picomatch "^2.2.3"
+
+jest-validate@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz"
+ integrity sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==
+ dependencies:
+ "@jest/types" "^27.5.1"
+ camelcase "^6.2.0"
+ chalk "^4.0.0"
+ jest-get-type "^27.5.1"
+ leven "^3.1.0"
+ pretty-format "^27.5.1"
+
jest-validate@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz"
@@ -8315,6 +10578,19 @@ jest-validate@^29.7.0:
leven "^3.1.0"
pretty-format "^29.7.0"
+jest-watch-typeahead@^1.0.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-1.1.0.tgz"
+ integrity sha512-Va5nLSJTN7YFtC2jd+7wsoe1pNe5K4ShLux/E5iHEwlB9AxaxmggY7to9KUqKojhaJw3aXqt5WAb4jGPOolpEw==
+ dependencies:
+ ansi-escapes "^4.3.1"
+ chalk "^4.0.0"
+ jest-regex-util "^28.0.0"
+ jest-watcher "^28.0.0"
+ slash "^4.0.0"
+ string-length "^5.0.1"
+ strip-ansi "^7.0.1"
+
jest-watch-typeahead@^2.0.0:
version "2.2.2"
resolved "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.2.tgz"
@@ -8328,6 +10604,33 @@ jest-watch-typeahead@^2.0.0:
string-length "^5.0.1"
strip-ansi "^7.0.1"
+jest-watcher@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.5.1.tgz"
+ integrity sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==
+ dependencies:
+ "@jest/test-result" "^27.5.1"
+ "@jest/types" "^27.5.1"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ jest-util "^27.5.1"
+ string-length "^4.0.1"
+
+jest-watcher@^28.0.0:
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz"
+ integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==
+ dependencies:
+ "@jest/test-result" "^28.1.3"
+ "@jest/types" "^28.1.3"
+ "@types/node" "*"
+ ansi-escapes "^4.2.1"
+ chalk "^4.0.0"
+ emittery "^0.10.2"
+ jest-util "^28.1.3"
+ string-length "^4.0.1"
+
jest-watcher@^29.0.0, jest-watcher@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz"
@@ -8342,6 +10645,51 @@ jest-watcher@^29.0.0, jest-watcher@^29.7.0:
jest-util "^29.7.0"
string-length "^4.0.1"
+jest-worker@^26.2.1:
+ version "26.6.2"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz"
+ integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^7.0.0"
+
+jest-worker@^27.0.2:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz"
+ integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+jest-worker@^27.4.5:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz"
+ integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+jest-worker@^27.5.1:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz"
+ integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
+jest-worker@^28.0.2:
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz"
+ integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==
+ dependencies:
+ "@types/node" "*"
+ merge-stream "^2.0.0"
+ supports-color "^8.0.0"
+
jest-worker@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz"
@@ -8352,7 +10700,7 @@ jest-worker@^29.7.0:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@^29.6.4:
+jest@*, "jest@^27.0.0 || ^28.0.0 || ^29.0.0", jest@^29.3.1, jest@^29.6.4, "jest@>= 28":
version "29.7.0"
resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz"
integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
@@ -8362,6 +10710,20 @@ jest@^29.6.4:
import-local "^3.0.2"
jest-cli "^29.7.0"
+"jest@^27.0.0 || ^28.0.0", jest@^27.4.3:
+ version "27.5.1"
+ resolved "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz"
+ integrity sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==
+ dependencies:
+ "@jest/core" "^27.5.1"
+ import-local "^3.0.2"
+ jest-cli "^27.5.1"
+
+jiti@^1.21.0:
+ version "1.21.6"
+ resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz"
+ integrity sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==
+
joi@^17.11.0:
version "17.13.3"
resolved "https://registry.npmjs.org/joi/-/joi-17.13.3.tgz"
@@ -8373,6 +10735,11 @@ joi@^17.11.0:
"@sideway/formula" "^3.0.1"
"@sideway/pinpoint" "^2.0.0"
+jquery@>=1.8.0:
+ version "3.7.1"
+ resolved "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz"
+ integrity sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==
+
js-sha3@0.8.0:
version "0.8.0"
resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz"
@@ -8429,7 +10796,7 @@ jscodeshift@^0.15.1:
temp "^0.8.4"
write-file-atomic "^2.3.0"
-jsdom@^23.0.1:
+jsdom@*, jsdom@^23.0.1:
version "23.2.0"
resolved "https://registry.npmjs.org/jsdom/-/jsdom-23.2.0.tgz"
integrity sha512-L88oL7D/8ufIES+Zjz7v0aes+oBMh2Xnh3ygWvL0OaICOomKEPKuPnIfBJekiXr+BHbbMjrWn/xqrDQuxFTeyA==
@@ -8456,6 +10823,39 @@ jsdom@^23.0.1:
ws "^8.16.0"
xml-name-validator "^5.0.0"
+jsdom@^16.6.0:
+ version "16.7.0"
+ resolved "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz"
+ integrity sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==
+ dependencies:
+ abab "^2.0.5"
+ acorn "^8.2.4"
+ acorn-globals "^6.0.0"
+ cssom "^0.4.4"
+ cssstyle "^2.3.0"
+ data-urls "^2.0.0"
+ decimal.js "^10.2.1"
+ domexception "^2.0.1"
+ escodegen "^2.0.0"
+ form-data "^3.0.0"
+ html-encoding-sniffer "^2.0.1"
+ http-proxy-agent "^4.0.1"
+ https-proxy-agent "^5.0.0"
+ is-potential-custom-element-name "^1.0.1"
+ nwsapi "^2.2.0"
+ parse5 "6.0.1"
+ saxes "^5.0.1"
+ symbol-tree "^3.2.4"
+ tough-cookie "^4.0.0"
+ w3c-hr-time "^1.0.2"
+ w3c-xmlserializer "^2.0.0"
+ webidl-conversions "^6.1.0"
+ whatwg-encoding "^1.0.5"
+ whatwg-mimetype "^2.3.0"
+ whatwg-url "^8.5.0"
+ ws "^7.4.6"
+ xml-name-validator "^3.0.0"
+
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
@@ -8471,7 +10871,7 @@ json-buffer@3.0.1:
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
-json-parse-even-better-errors@^2.3.0:
+json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
@@ -8481,6 +10881,16 @@ json-schema-traverse@^0.4.1:
resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
+json-schema-traverse@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz"
+ integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
+
+json-schema@^0.4.0:
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz"
+ integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
+
json-stable-stringify-without-jsonify@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
@@ -8510,7 +10920,7 @@ json5@^1.0.2:
dependencies:
minimist "^1.2.0"
-json5@^2.1.2, json5@^2.2.3:
+json5@^2.1.2, json5@^2.2.0, json5@^2.2.3:
version "2.2.3"
resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
@@ -8544,6 +10954,20 @@ jsonld@^8.3.2:
lru-cache "^6.0.0"
rdf-canonize "^3.4.0"
+jsonpath@^1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/jsonpath/-/jsonpath-1.1.1.tgz"
+ integrity sha512-l6Cg7jRpixfbgoWgkrl77dgEj8RPvND0wMH6TwQmi9Qs4TFfS9u5cUFnbeKTwj5ga5Y3BTGGNI28k117LJ009w==
+ dependencies:
+ esprima "1.2.2"
+ static-eval "2.0.2"
+ underscore "1.12.1"
+
+jsonpointer@^5.0.0:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/jsonpointer/-/jsonpointer-5.0.1.tgz"
+ integrity sha512-p/nXbhSEcu3pZRdkW1OfJhpsVtW1gd4Wa1fnQc9YLiTfAjn0312eMKimbdIQzuZl9aa9xUGaRlP9T/CJE/ditQ==
+
"jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.3.5:
version "3.3.5"
resolved "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz"
@@ -8588,6 +11012,11 @@ kleur@^4.0.3:
resolved "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz"
integrity sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==
+klona@^2.0.4, klona@^2.0.5:
+ version "2.0.6"
+ resolved "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz"
+ integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==
+
ky-universal@^0.11.0:
version "0.11.0"
resolved "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz"
@@ -8596,7 +11025,7 @@ ky-universal@^0.11.0:
abort-controller "^3.0.0"
node-fetch "^3.2.10"
-ky@^0.33.3:
+ky@^0.33.3, ky@>=0.31.4:
version "0.33.3"
resolved "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz"
integrity sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==
@@ -8613,6 +11042,14 @@ language-tags@^1.0.9:
dependencies:
language-subtag-registry "^0.3.20"
+launch-editor@^2.6.0:
+ version "2.8.1"
+ resolved "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz"
+ integrity sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==
+ dependencies:
+ picocolors "^1.0.0"
+ shell-quote "^1.8.1"
+
lazy-universal-dotenv@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-4.0.0.tgz"
@@ -8635,6 +11072,14 @@ levn@^0.4.1:
prelude-ls "^1.2.1"
type-check "~0.4.0"
+levn@~0.3.0:
+ version "0.3.0"
+ resolved "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz"
+ integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==
+ dependencies:
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+
lie@3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/lie/-/lie-3.1.1.tgz"
@@ -8642,12 +11087,27 @@ lie@3.1.1:
dependencies:
immediate "~3.0.5"
+lilconfig@^2.0.3, lilconfig@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz"
+ integrity sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==
+
+lilconfig@^3.0.0:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz"
+ integrity sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==
+
lines-and-columns@^1.1.6:
version "1.2.4"
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
-loader-utils@^2.0.0:
+loader-runner@^4.2.0:
+ version "4.3.0"
+ resolved "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz"
+ integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
+
+loader-utils@^2.0.0, loader-utils@^2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz"
integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==
@@ -8656,6 +11116,11 @@ loader-utils@^2.0.0:
emojis-list "^3.0.0"
json5 "^2.1.2"
+loader-utils@^3.2.0:
+ version "3.3.1"
+ resolved "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz"
+ integrity sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==
+
local-pkg@^0.5.0:
version "0.5.0"
resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz"
@@ -8708,12 +11173,27 @@ lodash.flattendeep@^4.4.0:
resolved "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz"
integrity sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==
+lodash.memoize@^4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
+ integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
+
lodash.merge@^4.6.2:
version "4.6.2"
resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash@^4.17.15, lodash@^4.17.21:
+lodash.sortby@^4.7.0:
+ version "4.7.0"
+ resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz"
+ integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
+
+lodash.uniq@^4.5.0:
+ version "4.5.0"
+ resolved "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz"
+ integrity sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==
+
+lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -8745,6 +11225,13 @@ loupe@^2.3.6, loupe@^2.3.7:
dependencies:
get-func-name "^2.0.1"
+lower-case@^2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz"
+ integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
+ dependencies:
+ tslib "^2.0.3"
+
lru-cache@^10.2.0:
version "10.4.3"
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz"
@@ -8769,6 +11256,20 @@ lz-string@^1.5.0:
resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz"
integrity sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==
+magic-string@^0.25.0:
+ version "0.25.9"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
+magic-string@^0.25.7:
+ version "0.25.9"
+ resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz"
+ integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==
+ dependencies:
+ sourcemap-codec "^1.4.8"
+
magic-string@^0.27.0:
version "0.27.0"
resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz"
@@ -8800,7 +11301,7 @@ make-dir@^2.0.0, make-dir@^2.1.0:
pify "^4.0.1"
semver "^5.6.0"
-make-dir@^3.0.0, make-dir@^3.0.2:
+make-dir@^3.0.0, make-dir@^3.0.2, make-dir@^3.1.0:
version "3.1.0"
resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
@@ -9003,16 +11504,33 @@ mdast-util-to-string@^4.0.0:
dependencies:
"@types/mdast" "^4.0.0"
+mdn-data@2.0.14:
+ version "2.0.14"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz"
+ integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
+
mdn-data@2.0.30:
version "2.0.30"
resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz"
integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==
+mdn-data@2.0.4:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz"
+ integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
+
media-typer@0.3.0:
version "0.3.0"
resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
+memfs@^3.1.2, memfs@^3.4.3:
+ version "3.5.3"
+ resolved "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz"
+ integrity sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==
+ dependencies:
+ fs-monkey "^1.0.4"
+
memoizerific@^1.11.3:
version "1.11.3"
resolved "https://registry.npmjs.org/memoizerific/-/memoizerific-1.11.3.tgz"
@@ -9435,7 +11953,7 @@ micromark@^4.0.0:
micromark-util-symbol "^2.0.0"
micromark-util-types "^2.0.0"
-micromatch@^4.0.2, micromatch@^4.0.4:
+micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5:
version "4.0.8"
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
@@ -9448,28 +11966,28 @@ microseconds@0.2.0:
resolved "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz"
integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==
-mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
+"mime-db@>= 1.43.0 < 2", mime-db@1.52.0:
version "1.52.0"
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-mime-types@^2.1.12, mime-types@^2.1.25, mime-types@~2.1.24, mime-types@~2.1.34:
+mime-types@^2.1.12, mime-types@^2.1.25, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
-mime@1.6.0:
- version "1.6.0"
- resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
- integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-
mime@^2.0.3:
version "2.6.0"
resolved "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz"
integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==
+mime@1.6.0:
+ version "1.6.0"
+ resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz"
+ integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+
mimic-fn@^2.1.0:
version "2.1.0"
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
@@ -9485,6 +12003,19 @@ min-indent@^1.0.0, min-indent@^1.0.1:
resolved "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz"
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
+mini-css-extract-plugin@^2.4.5:
+ version "2.9.1"
+ resolved "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz"
+ integrity sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==
+ dependencies:
+ schema-utils "^4.0.0"
+ tapable "^2.2.1"
+
+minimalistic-assert@^1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz"
+ integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
+
minimatch@^10.0.1:
version "10.0.1"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz"
@@ -9492,7 +12023,28 @@ minimatch@^10.0.1:
dependencies:
brace-expansion "^2.0.1"
-minimatch@^3.0.2, minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
+minimatch@^3.0.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^3.0.4, minimatch@^3.1.1:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^3.0.5:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
+ integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
+ dependencies:
+ brace-expansion "^1.1.7"
+
+minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -9525,16 +12077,16 @@ minipass@^3.0.0:
dependencies:
yallist "^4.0.0"
-minipass@^5.0.0:
- version "5.0.0"
- resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"
- integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
-
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.1.2:
version "7.1.2"
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
+minipass@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz"
+ integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==
+
minizlib@^2.1.1:
version "2.1.2"
resolved "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz"
@@ -9560,6 +12112,13 @@ mkdirp@^1.0.3, mkdirp@^1.0.4:
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz"
integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==
+mkdirp@~0.5.1:
+ version "0.5.6"
+ resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz"
+ integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
+ dependencies:
+ minimist "^1.2.6"
+
mlly@^1.4.2, mlly@^1.7.1:
version "1.7.1"
resolved "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz"
@@ -9580,21 +12139,38 @@ mrmime@^2.0.0:
resolved "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz"
integrity sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==
+ms@^2.1.1, ms@2.1.2:
+ version "2.1.2"
+ resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
+ integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
+
ms@2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz"
integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
-ms@2.1.2, ms@^2.1.1:
- version "2.1.2"
- resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
ms@2.1.3:
version "2.1.3"
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
+multicast-dns@^7.2.5:
+ version "7.2.5"
+ resolved "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz"
+ integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==
+ dependencies:
+ dns-packet "^5.2.2"
+ thunky "^1.0.2"
+
+mz@^2.7.0:
+ version "2.7.0"
+ resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz"
+ integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
+ dependencies:
+ any-promise "^1.0.0"
+ object-assign "^4.0.1"
+ thenify-all "^1.0.0"
+
nano-time@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz"
@@ -9607,6 +12183,11 @@ nanoid@^3.3.7:
resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz"
integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
+natural-compare-lite@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz"
+ integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==
+
natural-compare@^1.4.0:
version "1.4.0"
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
@@ -9622,6 +12203,14 @@ neo-async@^2.5.0, neo-async@^2.6.2:
resolved "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+no-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz"
+ integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
+ dependencies:
+ lower-case "^2.0.2"
+ tslib "^2.0.3"
+
node-dir@^0.1.17:
version "0.1.17"
resolved "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz"
@@ -9655,6 +12244,11 @@ node-fetch@^3.2.10:
fetch-blob "^3.1.4"
formdata-polyfill "^4.0.10"
+node-forge@^1:
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz"
+ integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
+
node-int64@^0.4.0:
version "0.4.0"
resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz"
@@ -9687,6 +12281,16 @@ normalize-path@^3.0.0, normalize-path@~3.0.0:
resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
+normalize-range@^0.1.2:
+ version "0.1.2"
+ resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz"
+ integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
+
+normalize-url@^6.0.1:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz"
+ integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==
+
npm-run-path@^4.0.1:
version "4.0.1"
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"
@@ -9701,6 +12305,25 @@ npm-run-path@^5.1.0:
dependencies:
path-key "^4.0.0"
+nth-check@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz"
+ integrity sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==
+ dependencies:
+ boolbase "~1.0.0"
+
+nth-check@^2.0.1:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
+ integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
+ dependencies:
+ boolbase "^1.0.0"
+
+nwsapi@^2.2.0:
+ version "2.2.12"
+ resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz"
+ integrity sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==
+
nyc@^15.1.0:
version "15.1.0"
resolved "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz"
@@ -9746,11 +12369,16 @@ nypm@^0.3.8:
pkg-types "^1.2.0"
ufo "^1.5.4"
-object-assign@^4.1.1:
+object-assign@^4.0.1, object-assign@^4.1.1:
version "4.1.1"
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
+object-hash@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz"
+ integrity sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==
+
object-inspect@^1.13.1:
version "1.13.2"
resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz"
@@ -9798,6 +12426,19 @@ object.fromentries@^2.0.7, object.fromentries@^2.0.8:
es-abstract "^1.23.2"
es-object-atoms "^1.0.0"
+object.getownpropertydescriptors@^2.1.0:
+ version "2.1.8"
+ resolved "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.8.tgz"
+ integrity sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==
+ dependencies:
+ array.prototype.reduce "^1.0.6"
+ call-bind "^1.0.7"
+ define-properties "^1.2.1"
+ es-abstract "^1.23.2"
+ es-object-atoms "^1.0.0"
+ gopd "^1.0.1"
+ safe-array-concat "^1.1.2"
+
object.groupby@^1.0.1:
version "1.0.3"
resolved "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz"
@@ -9807,7 +12448,7 @@ object.groupby@^1.0.1:
define-properties "^1.2.1"
es-abstract "^1.23.2"
-object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0:
+object.values@^1.1.0, object.values@^1.1.6, object.values@^1.1.7, object.values@^1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz"
integrity sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==
@@ -9821,6 +12462,11 @@ oblivious-set@1.0.0:
resolved "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz"
integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==
+obuf@^1.0.0, obuf@^1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz"
+ integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
+
ohash@^1.1.3:
version "1.1.3"
resolved "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz"
@@ -9867,7 +12513,25 @@ open@^7.4.2:
is-docker "^2.0.0"
is-wsl "^2.1.1"
-open@^8.0.4, open@^8.4.0:
+open@^8.0.4:
+ version "8.4.2"
+ resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz"
+ integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.0"
+
+open@^8.0.9:
+ version "8.4.2"
+ resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz"
+ integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
+ dependencies:
+ define-lazy-prop "^2.0.0"
+ is-docker "^2.1.1"
+ is-wsl "^2.2.0"
+
+open@^8.4.0:
version "8.4.2"
resolved "https://registry.npmjs.org/open/-/open-8.4.2.tgz"
integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==
@@ -9876,6 +12540,18 @@ open@^8.0.4, open@^8.4.0:
is-docker "^2.1.1"
is-wsl "^2.2.0"
+optionator@^0.8.1:
+ version "0.8.3"
+ resolved "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz"
+ integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==
+ dependencies:
+ deep-is "~0.1.3"
+ fast-levenshtein "~2.0.6"
+ levn "~0.3.0"
+ prelude-ls "~1.1.2"
+ type-check "~0.3.2"
+ word-wrap "~1.2.3"
+
optionator@^0.9.3:
version "0.9.4"
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz"
@@ -9913,7 +12589,14 @@ os-tmpdir@~1.0.2:
resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz"
integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==
-p-limit@^2.0.0, p-limit@^2.2.0:
+p-limit@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
+ integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
+ dependencies:
+ p-try "^2.0.0"
+
+p-limit@^2.2.0:
version "2.3.0"
resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
@@ -9969,6 +12652,14 @@ p-map@^4.0.0:
dependencies:
aggregate-error "^3.0.0"
+p-retry@^4.5.0:
+ version "4.6.2"
+ resolved "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz"
+ integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==
+ dependencies:
+ "@types/retry" "0.12.0"
+ retry "^0.13.1"
+
p-try@^2.0.0:
version "2.2.0"
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
@@ -9994,6 +12685,14 @@ pako@~0.2.0:
resolved "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz"
integrity sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==
+param-case@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz"
+ integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
+ dependencies:
+ dot-case "^3.0.4"
+ tslib "^2.0.3"
+
parent-module@^1.0.0:
version "1.0.1"
resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
@@ -10037,11 +12736,24 @@ parse5@^7.1.2:
dependencies:
entities "^4.4.0"
-parseurl@~1.3.3:
+parse5@6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz"
+ integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==
+
+parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
+pascal-case@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz"
+ integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
+ dependencies:
+ no-case "^3.0.4"
+ tslib "^2.0.3"
+
patch-package@^8.0.0:
version "8.0.0"
resolved "https://registry.npmjs.org/patch-package/-/patch-package-8.0.0.tgz"
@@ -10111,6 +12823,11 @@ path-type@^4.0.0:
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
+path-type@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz"
+ integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==
+
pathe@^1.1.1, pathe@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz"
@@ -10135,22 +12852,37 @@ pend@~1.2.0:
resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
+performance-now@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz"
+ integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
+
+picocolors@^0.2.1:
+ version "0.2.1"
+ resolved "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz"
+ integrity sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==
+
picocolors@^1.0.0, picocolors@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz"
integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
-picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1:
+picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3, picomatch@^2.3.0, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+pify@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz"
+ integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
+
pify@^4.0.1:
version "4.0.1"
resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz"
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
-pirates@^4.0.4, pirates@^4.0.6:
+pirates@^4.0.1, pirates@^4.0.4, pirates@^4.0.6:
version "4.0.6"
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz"
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
@@ -10162,7 +12894,14 @@ pkg-dir@^3.0.0:
dependencies:
find-up "^3.0.0"
-pkg-dir@^4.1.0, pkg-dir@^4.2.0:
+pkg-dir@^4.1.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
+ integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
+ dependencies:
+ find-up "^4.0.0"
+
+pkg-dir@^4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
@@ -10185,7 +12924,14 @@ pkg-types@^1.0.3, pkg-types@^1.1.1, pkg-types@^1.2.0:
mlly "^1.7.1"
pathe "^1.1.2"
-playwright-core@1.46.1, playwright-core@>=1.2.0:
+pkg-up@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz"
+ integrity sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==
+ dependencies:
+ find-up "^3.0.0"
+
+playwright-core@>=1.2.0, playwright-core@1.46.1:
version "1.46.1"
resolved "https://registry.npmjs.org/playwright-core/-/playwright-core-1.46.1.tgz"
integrity sha512-h9LqIQaAv+CYvWzsZ+h3RsrqCStkBHlgo6/TJlFst3cOTlLghBQlJwPOZKQJTKNaD3QIB7aAVQ+gfWbN3NXB7A==
@@ -10211,7 +12957,542 @@ possible-typed-array-names@^1.0.0:
resolved "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz"
integrity sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==
-postcss@^8.4.27, postcss@^8.4.41:
+postcss-attribute-case-insensitive@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz"
+ integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-browser-comments@^4:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz"
+ integrity sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==
+
+postcss-calc@^8.2.3:
+ version "8.2.4"
+ resolved "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz"
+ integrity sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==
+ dependencies:
+ postcss-selector-parser "^6.0.9"
+ postcss-value-parser "^4.2.0"
+
+postcss-clamp@^4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz"
+ integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-color-functional-notation@^4.2.4:
+ version "4.2.4"
+ resolved "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz"
+ integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-color-hex-alpha@^8.0.4:
+ version "8.0.4"
+ resolved "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz"
+ integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-color-rebeccapurple@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz"
+ integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-colormin@^5.3.1:
+ version "5.3.1"
+ resolved "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.1.tgz"
+ integrity sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==
+ dependencies:
+ browserslist "^4.21.4"
+ caniuse-api "^3.0.0"
+ colord "^2.9.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-convert-values@^5.1.3:
+ version "5.1.3"
+ resolved "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.3.tgz"
+ integrity sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==
+ dependencies:
+ browserslist "^4.21.4"
+ postcss-value-parser "^4.2.0"
+
+postcss-custom-media@^8.0.2:
+ version "8.0.2"
+ resolved "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz"
+ integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-custom-properties@^12.1.10:
+ version "12.1.11"
+ resolved "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz"
+ integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-custom-selectors@^6.0.3:
+ version "6.0.3"
+ resolved "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz"
+ integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==
+ dependencies:
+ postcss-selector-parser "^6.0.4"
+
+postcss-dir-pseudo-class@^6.0.5:
+ version "6.0.5"
+ resolved "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz"
+ integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-discard-comments@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.2.tgz"
+ integrity sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==
+
+postcss-discard-duplicates@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz"
+ integrity sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==
+
+postcss-discard-empty@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz"
+ integrity sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==
+
+postcss-discard-overridden@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz"
+ integrity sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==
+
+postcss-double-position-gradients@^3.1.2:
+ version "3.1.2"
+ resolved "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz"
+ integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==
+ dependencies:
+ "@csstools/postcss-progressive-custom-properties" "^1.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-env-function@^4.0.6:
+ version "4.0.6"
+ resolved "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz"
+ integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-flexbugs-fixes@^5.0.2:
+ version "5.0.2"
+ resolved "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz"
+ integrity sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==
+
+postcss-focus-visible@^6.0.4:
+ version "6.0.4"
+ resolved "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz"
+ integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==
+ dependencies:
+ postcss-selector-parser "^6.0.9"
+
+postcss-focus-within@^5.0.4:
+ version "5.0.4"
+ resolved "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz"
+ integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==
+ dependencies:
+ postcss-selector-parser "^6.0.9"
+
+postcss-font-variant@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz"
+ integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==
+
+postcss-gap-properties@^3.0.5:
+ version "3.0.5"
+ resolved "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz"
+ integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==
+
+postcss-image-set-function@^4.0.7:
+ version "4.0.7"
+ resolved "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz"
+ integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-import@^15.1.0:
+ version "15.1.0"
+ resolved "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz"
+ integrity sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==
+ dependencies:
+ postcss-value-parser "^4.0.0"
+ read-cache "^1.0.0"
+ resolve "^1.1.7"
+
+postcss-initial@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz"
+ integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==
+
+postcss-js@^4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz"
+ integrity sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==
+ dependencies:
+ camelcase-css "^2.0.1"
+
+postcss-lab-function@^4.2.1:
+ version "4.2.1"
+ resolved "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz"
+ integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==
+ dependencies:
+ "@csstools/postcss-progressive-custom-properties" "^1.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-load-config@^4.0.1:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz"
+ integrity sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==
+ dependencies:
+ lilconfig "^3.0.0"
+ yaml "^2.3.4"
+
+postcss-loader@^6.2.1:
+ version "6.2.1"
+ resolved "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz"
+ integrity sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==
+ dependencies:
+ cosmiconfig "^7.0.0"
+ klona "^2.0.5"
+ semver "^7.3.5"
+
+postcss-logical@^5.0.4:
+ version "5.0.4"
+ resolved "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz"
+ integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==
+
+postcss-media-minmax@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz"
+ integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==
+
+postcss-merge-longhand@^5.1.7:
+ version "5.1.7"
+ resolved "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz"
+ integrity sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+ stylehacks "^5.1.1"
+
+postcss-merge-rules@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.4.tgz"
+ integrity sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==
+ dependencies:
+ browserslist "^4.21.4"
+ caniuse-api "^3.0.0"
+ cssnano-utils "^3.1.0"
+ postcss-selector-parser "^6.0.5"
+
+postcss-minify-font-values@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz"
+ integrity sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-minify-gradients@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz"
+ integrity sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==
+ dependencies:
+ colord "^2.9.1"
+ cssnano-utils "^3.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-minify-params@^5.1.4:
+ version "5.1.4"
+ resolved "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.4.tgz"
+ integrity sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==
+ dependencies:
+ browserslist "^4.21.4"
+ cssnano-utils "^3.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-minify-selectors@^5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.1.tgz"
+ integrity sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==
+ dependencies:
+ postcss-selector-parser "^6.0.5"
+
+postcss-modules-extract-imports@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz"
+ integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==
+
+postcss-modules-local-by-default@^4.0.5:
+ version "4.0.5"
+ resolved "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz"
+ integrity sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==
+ dependencies:
+ icss-utils "^5.0.0"
+ postcss-selector-parser "^6.0.2"
+ postcss-value-parser "^4.1.0"
+
+postcss-modules-scope@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz"
+ integrity sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==
+ dependencies:
+ postcss-selector-parser "^6.0.4"
+
+postcss-modules-values@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz"
+ integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==
+ dependencies:
+ icss-utils "^5.0.0"
+
+postcss-nested@^6.0.1:
+ version "6.2.0"
+ resolved "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz"
+ integrity sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==
+ dependencies:
+ postcss-selector-parser "^6.1.1"
+
+postcss-nesting@^10.2.0:
+ version "10.2.0"
+ resolved "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz"
+ integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==
+ dependencies:
+ "@csstools/selector-specificity" "^2.0.0"
+ postcss-selector-parser "^6.0.10"
+
+postcss-normalize-charset@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz"
+ integrity sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==
+
+postcss-normalize-display-values@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz"
+ integrity sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-positions@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.1.tgz"
+ integrity sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-repeat-style@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.1.tgz"
+ integrity sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-string@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz"
+ integrity sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-timing-functions@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz"
+ integrity sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-unicode@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.1.tgz"
+ integrity sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==
+ dependencies:
+ browserslist "^4.21.4"
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-url@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz"
+ integrity sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==
+ dependencies:
+ normalize-url "^6.0.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize-whitespace@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz"
+ integrity sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-normalize@^10.0.1:
+ version "10.0.1"
+ resolved "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz"
+ integrity sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==
+ dependencies:
+ "@csstools/normalize.css" "*"
+ postcss-browser-comments "^4"
+ sanitize.css "*"
+
+postcss-opacity-percentage@^1.1.2:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz"
+ integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A==
+
+postcss-ordered-values@^5.1.3:
+ version "5.1.3"
+ resolved "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.3.tgz"
+ integrity sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==
+ dependencies:
+ cssnano-utils "^3.1.0"
+ postcss-value-parser "^4.2.0"
+
+postcss-overflow-shorthand@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz"
+ integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-page-break@^3.0.4:
+ version "3.0.4"
+ resolved "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz"
+ integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==
+
+postcss-place@^7.0.5:
+ version "7.0.5"
+ resolved "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz"
+ integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-preset-env@^7.0.1:
+ version "7.8.3"
+ resolved "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.3.tgz"
+ integrity sha512-T1LgRm5uEVFSEF83vHZJV2z19lHg4yJuZ6gXZZkqVsqv63nlr6zabMH3l4Pc01FQCyfWVrh2GaUeCVy9Po+Aag==
+ dependencies:
+ "@csstools/postcss-cascade-layers" "^1.1.1"
+ "@csstools/postcss-color-function" "^1.1.1"
+ "@csstools/postcss-font-format-keywords" "^1.0.1"
+ "@csstools/postcss-hwb-function" "^1.0.2"
+ "@csstools/postcss-ic-unit" "^1.0.1"
+ "@csstools/postcss-is-pseudo-class" "^2.0.7"
+ "@csstools/postcss-nested-calc" "^1.0.0"
+ "@csstools/postcss-normalize-display-values" "^1.0.1"
+ "@csstools/postcss-oklab-function" "^1.1.1"
+ "@csstools/postcss-progressive-custom-properties" "^1.3.0"
+ "@csstools/postcss-stepped-value-functions" "^1.0.1"
+ "@csstools/postcss-text-decoration-shorthand" "^1.0.0"
+ "@csstools/postcss-trigonometric-functions" "^1.0.2"
+ "@csstools/postcss-unset-value" "^1.0.2"
+ autoprefixer "^10.4.13"
+ browserslist "^4.21.4"
+ css-blank-pseudo "^3.0.3"
+ css-has-pseudo "^3.0.4"
+ css-prefers-color-scheme "^6.0.3"
+ cssdb "^7.1.0"
+ postcss-attribute-case-insensitive "^5.0.2"
+ postcss-clamp "^4.1.0"
+ postcss-color-functional-notation "^4.2.4"
+ postcss-color-hex-alpha "^8.0.4"
+ postcss-color-rebeccapurple "^7.1.1"
+ postcss-custom-media "^8.0.2"
+ postcss-custom-properties "^12.1.10"
+ postcss-custom-selectors "^6.0.3"
+ postcss-dir-pseudo-class "^6.0.5"
+ postcss-double-position-gradients "^3.1.2"
+ postcss-env-function "^4.0.6"
+ postcss-focus-visible "^6.0.4"
+ postcss-focus-within "^5.0.4"
+ postcss-font-variant "^5.0.0"
+ postcss-gap-properties "^3.0.5"
+ postcss-image-set-function "^4.0.7"
+ postcss-initial "^4.0.1"
+ postcss-lab-function "^4.2.1"
+ postcss-logical "^5.0.4"
+ postcss-media-minmax "^5.0.0"
+ postcss-nesting "^10.2.0"
+ postcss-opacity-percentage "^1.1.2"
+ postcss-overflow-shorthand "^3.0.4"
+ postcss-page-break "^3.0.4"
+ postcss-place "^7.0.5"
+ postcss-pseudo-class-any-link "^7.1.6"
+ postcss-replace-overflow-wrap "^4.0.0"
+ postcss-selector-not "^6.0.1"
+ postcss-value-parser "^4.2.0"
+
+postcss-pseudo-class-any-link@^7.1.6:
+ version "7.1.6"
+ resolved "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz"
+ integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-reduce-initial@^5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.2.tgz"
+ integrity sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==
+ dependencies:
+ browserslist "^4.21.4"
+ caniuse-api "^3.0.0"
+
+postcss-reduce-transforms@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz"
+ integrity sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+
+postcss-replace-overflow-wrap@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz"
+ integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==
+
+postcss-selector-not@^6.0.1:
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz"
+ integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==
+ dependencies:
+ postcss-selector-parser "^6.0.10"
+
+postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5, postcss-selector-parser@^6.0.9, postcss-selector-parser@^6.1.1:
+ version "6.1.2"
+ resolved "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz"
+ integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==
+ dependencies:
+ cssesc "^3.0.0"
+ util-deprecate "^1.0.2"
+
+postcss-svgo@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz"
+ integrity sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==
+ dependencies:
+ postcss-value-parser "^4.2.0"
+ svgo "^2.7.0"
+
+postcss-unique-selectors@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz"
+ integrity sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==
+ dependencies:
+ postcss-selector-parser "^6.0.5"
+
+postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz"
+ integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
+
+"postcss@^7.0.0 || ^8.0.1", postcss@^8, postcss@^8.0.0, postcss@^8.0.3, postcss@^8.0.9, postcss@^8.1.0, postcss@^8.1.4, postcss@^8.2, postcss@^8.2.14, postcss@^8.2.15, postcss@^8.2.2, postcss@^8.3, postcss@^8.3.5, postcss@^8.4, postcss@^8.4.21, postcss@^8.4.23, postcss@^8.4.27, postcss@^8.4.33, postcss@^8.4.4, postcss@^8.4.41, postcss@^8.4.6, "postcss@>= 8", postcss@>=8, postcss@>=8.0.9:
version "8.4.41"
resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz"
integrity sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==
@@ -10220,17 +13501,48 @@ postcss@^8.4.27, postcss@^8.4.41:
picocolors "^1.0.1"
source-map-js "^1.2.0"
+postcss@^7.0.35:
+ version "7.0.39"
+ resolved "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz"
+ integrity sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==
+ dependencies:
+ picocolors "^0.2.1"
+ source-map "^0.6.1"
+
prelude-ls@^1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
+prelude-ls@~1.1.2:
+ version "1.1.2"
+ resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz"
+ integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==
+
prettier@^2.8.0:
version "2.8.8"
resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz"
integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==
-pretty-format@^27.0.2:
+prettier@^3.1.1:
+ version "3.3.3"
+ resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz"
+ integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
+
+pretty-bytes@^5.3.0, pretty-bytes@^5.4.1:
+ version "5.6.0"
+ resolved "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz"
+ integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
+
+pretty-error@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz"
+ integrity sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==
+ dependencies:
+ lodash "^4.17.20"
+ renderkid "^3.0.0"
+
+pretty-format@^27.0.2, pretty-format@^27.5.1:
version "27.5.1"
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz"
integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
@@ -10239,7 +13551,17 @@ pretty-format@^27.0.2:
ansi-styles "^5.0.0"
react-is "^17.0.1"
-pretty-format@^28.0.0, pretty-format@^28.1.3:
+pretty-format@^28.0.0:
+ version "28.1.3"
+ resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz"
+ integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==
+ dependencies:
+ "@jest/schemas" "^28.1.3"
+ ansi-regex "^5.0.1"
+ ansi-styles "^5.0.0"
+ react-is "^18.0.0"
+
+pretty-format@^28.1.3:
version "28.1.3"
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz"
integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==
@@ -10285,7 +13607,14 @@ progress@^2.0.1:
resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-prompts@^2.0.1, prompts@^2.4.0, prompts@^2.4.1:
+promise@^8.1.0:
+ version "8.3.0"
+ resolved "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz"
+ integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==
+ dependencies:
+ asap "~2.0.6"
+
+prompts@^2.0.1, prompts@^2.4.0, prompts@^2.4.1, prompts@^2.4.2:
version "2.4.2"
resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz"
integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
@@ -10381,12 +13710,10 @@ pure-rand@^6.0.0:
resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz"
integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==
-qs@6.11.0:
- version "6.11.0"
- resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz"
- integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
- dependencies:
- side-channel "^1.0.4"
+q@^1.1.2:
+ version "1.5.1"
+ resolved "https://registry.npmjs.org/q/-/q-1.5.1.tgz"
+ integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==
qs@^6.10.0:
version "6.13.0"
@@ -10395,6 +13722,13 @@ qs@^6.10.0:
dependencies:
side-channel "^1.0.6"
+qs@6.11.0:
+ version "6.11.0"
+ resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+ dependencies:
+ side-channel "^1.0.4"
+
querystringify@^2.1.1:
version "2.2.0"
resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz"
@@ -10405,12 +13739,26 @@ queue-microtask@^1.2.2:
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
+raf@^3.4.1:
+ version "3.4.1"
+ resolved "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz"
+ integrity sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==
+ dependencies:
+ performance-now "^2.1.0"
+
ramda@0.29.0:
version "0.29.0"
resolved "https://registry.npmjs.org/ramda/-/ramda-0.29.0.tgz"
integrity sha512-BBea6L67bYLtdbOqfp8f58fPMqEwx0doL+pAi8TZyp2YWz8R9G8z9x75CZI8W+ftqhFHCpEX2cRnUUXK130iKA==
-range-parser@~1.2.1:
+randombytes@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
+ integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
+ dependencies:
+ safe-buffer "^5.1.0"
+
+range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
@@ -10432,6 +13780,18 @@ rdf-canonize@^3.4.0:
dependencies:
setimmediate "^1.0.5"
+react-app-polyfill@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-3.0.0.tgz"
+ integrity sha512-sZ41cxiU5llIB003yxxQBYrARBqe0repqPTTYBTmMqTz9szeBbE37BehCE891NZsmdZqqP+xWKdT3eo3vOzN8w==
+ dependencies:
+ core-js "^3.19.2"
+ object-assign "^4.1.1"
+ promise "^8.1.0"
+ raf "^3.4.1"
+ regenerator-runtime "^0.13.9"
+ whatwg-fetch "^3.6.2"
+
react-base16-styling@^0.10.0:
version "0.10.0"
resolved "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.10.0.tgz"
@@ -10454,6 +13814,36 @@ react-confetti@^6.1.0:
dependencies:
tween-functions "^1.2.0"
+react-dev-utils@^12.0.1:
+ version "12.0.1"
+ resolved "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz"
+ integrity sha512-84Ivxmr17KjUupyqzFode6xKhjwuEJDROWKJy/BthkL7Wn6NJ8h4WE6k/exAv6ImS+0oZLRRW5j/aINMHyeGeQ==
+ dependencies:
+ "@babel/code-frame" "^7.16.0"
+ address "^1.1.2"
+ browserslist "^4.18.1"
+ chalk "^4.1.2"
+ cross-spawn "^7.0.3"
+ detect-port-alt "^1.1.6"
+ escape-string-regexp "^4.0.0"
+ filesize "^8.0.6"
+ find-up "^5.0.0"
+ fork-ts-checker-webpack-plugin "^6.5.0"
+ global-modules "^2.0.0"
+ globby "^11.0.4"
+ gzip-size "^6.0.0"
+ immer "^9.0.7"
+ is-root "^2.1.0"
+ loader-utils "^3.2.0"
+ open "^8.4.0"
+ pkg-up "^3.1.0"
+ prompts "^2.4.2"
+ react-error-overlay "^6.0.11"
+ recursive-readdir "^2.2.2"
+ shell-quote "^1.7.3"
+ strip-ansi "^6.0.1"
+ text-table "^0.2.0"
+
react-diff-view@^3.2.1:
version "3.2.1"
resolved "https://registry.npmjs.org/react-diff-view/-/react-diff-view-3.2.1.tgz"
@@ -10487,7 +13877,7 @@ react-docgen@^7.0.0:
resolve "^1.22.1"
strip-indent "^4.0.0"
-react-dom@^18.2.0:
+"react-dom@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react-dom@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", "react-dom@^16.8 || ^17.0 || ^18.0", "react-dom@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react-dom@^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom@^17.0.0 || ^18.0.0", react-dom@^18.0.0, react-dom@^18.2.0, react-dom@^18.3.1, react-dom@>=16.6.0, react-dom@>=16.8, react-dom@>=16.8.0, "react-dom@16.8.0 - 18":
version "18.3.1"
resolved "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz"
integrity sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==
@@ -10504,12 +13894,17 @@ react-element-to-jsx-string@^15.0.0:
is-plain-object "5.0.0"
react-is "18.1.0"
+react-error-overlay@^6.0.11:
+ version "6.0.11"
+ resolved "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz"
+ integrity sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==
+
react-gtm-module@^2.0.11:
version "2.0.11"
resolved "https://registry.npmjs.org/react-gtm-module/-/react-gtm-module-2.0.11.tgz"
integrity sha512-8gyj4TTxeP7eEyc2QKawEuQoAZdjKvMY4pgWfycGmqGByhs17fR+zEBs0JUDq4US/l+vbTl+6zvUIx27iDo/Vw==
-react-hook-form@^7.47.0:
+react-hook-form@^7.0.0, react-hook-form@^7.47.0:
version "7.53.0"
resolved "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.0.tgz"
integrity sha512-M1n3HhqCww6S2hxLxciEXy2oISPnAzxY7gvwVPrtlczTM/1dDadXgUxDpHMrMTblDOcm/AXtXxHwZ3jpg1mqKQ==
@@ -10522,12 +13917,12 @@ react-i18next@^14.0.1:
"@babel/runtime" "^7.23.9"
html-parse-stringify "^3.0.1"
-react-is@18.1.0:
- version "18.1.0"
- resolved "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz"
- integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==
+react-is@^16.13.1:
+ version "16.13.1"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
+ integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
-react-is@^16.13.1, react-is@^16.7.0:
+react-is@^16.7.0:
version "16.13.1"
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
@@ -10542,6 +13937,11 @@ react-is@^18.0.0, react-is@^18.3.1:
resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz"
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
+react-is@18.1.0:
+ version "18.1.0"
+ resolved "https://registry.npmjs.org/react-is/-/react-is-18.1.0.tgz"
+ integrity sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==
+
react-json-tree@^0.19.0:
version "0.19.0"
resolved "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.19.0.tgz"
@@ -10596,7 +13996,12 @@ react-query@^3.39.3:
broadcast-channel "^3.4.1"
match-sorter "^6.0.2"
-react-refresh@^0.14.0, react-refresh@^0.14.2:
+react-refresh@^0.11.0:
+ version "0.11.0"
+ resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz"
+ integrity sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==
+
+react-refresh@^0.14.0, react-refresh@^0.14.2, "react-refresh@>=0.10.0 <1.0.0":
version "0.14.2"
resolved "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz"
integrity sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==
@@ -10620,7 +14025,7 @@ react-remove-scroll@2.5.5:
use-callback-ref "^1.3.0"
use-sidecar "^1.1.2"
-react-router-dom@^6.13.0:
+react-router-dom@^6.13.0, react-router-dom@^6.23.1:
version "6.26.1"
resolved "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.1.tgz"
integrity sha512-veut7m41S1fLql4pLhxeSW3jlqs+4MtjRLj0xvuCEXsxusJCbs6I8yn9BxzzDX2XDgafrccY6hwjmd/bL54tFw==
@@ -10635,6 +14040,61 @@ react-router@6.26.1:
dependencies:
"@remix-run/router" "1.19.1"
+react-scripts@5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/react-scripts/-/react-scripts-5.0.1.tgz"
+ integrity sha512-8VAmEm/ZAwQzJ+GOMLbBsTdDKOpuZh7RPs0UymvBR2vRk4iZWCskjbFnxqjrzoIvlNNRZ3QJFx6/qDSi6zSnaQ==
+ dependencies:
+ "@babel/core" "^7.16.0"
+ "@pmmmwh/react-refresh-webpack-plugin" "^0.5.3"
+ "@svgr/webpack" "^5.5.0"
+ babel-jest "^27.4.2"
+ babel-loader "^8.2.3"
+ babel-plugin-named-asset-import "^0.3.8"
+ babel-preset-react-app "^10.0.1"
+ bfj "^7.0.2"
+ browserslist "^4.18.1"
+ camelcase "^6.2.1"
+ case-sensitive-paths-webpack-plugin "^2.4.0"
+ css-loader "^6.5.1"
+ css-minimizer-webpack-plugin "^3.2.0"
+ dotenv "^10.0.0"
+ dotenv-expand "^5.1.0"
+ eslint "^8.3.0"
+ eslint-config-react-app "^7.0.1"
+ eslint-webpack-plugin "^3.1.1"
+ file-loader "^6.2.0"
+ fs-extra "^10.0.0"
+ html-webpack-plugin "^5.5.0"
+ identity-obj-proxy "^3.0.0"
+ jest "^27.4.3"
+ jest-resolve "^27.4.2"
+ jest-watch-typeahead "^1.0.0"
+ mini-css-extract-plugin "^2.4.5"
+ postcss "^8.4.4"
+ postcss-flexbugs-fixes "^5.0.2"
+ postcss-loader "^6.2.1"
+ postcss-normalize "^10.0.1"
+ postcss-preset-env "^7.0.1"
+ prompts "^2.4.2"
+ react-app-polyfill "^3.0.0"
+ react-dev-utils "^12.0.1"
+ react-refresh "^0.11.0"
+ resolve "^1.20.0"
+ resolve-url-loader "^4.0.0"
+ sass-loader "^12.3.0"
+ semver "^7.3.5"
+ source-map-loader "^3.0.0"
+ style-loader "^3.3.1"
+ tailwindcss "^3.0.2"
+ terser-webpack-plugin "^5.2.5"
+ webpack "^5.64.4"
+ webpack-dev-server "^4.6.0"
+ webpack-manifest-plugin "^4.0.2"
+ workbox-webpack-plugin "^6.4.1"
+ optionalDependencies:
+ fsevents "^2.3.2"
+
react-slick@^0.30.2:
version "0.30.2"
resolved "https://registry.npmjs.org/react-slick/-/react-slick-0.30.2.tgz"
@@ -10665,13 +14125,20 @@ react-transition-group@^4.4.5:
loose-envify "^1.4.0"
prop-types "^15.6.2"
-react@^18.2.0:
+"react@^0.14.0 || ^15.0.1 || ^16.0.0 || ^17.0.0 || ^18.0.0", "react@^0.14.8 || ^15.0.1 || ^16.0.0 || ^17.0.1 || ^18.0.0", "react@^16.3.0 || ^17.0.1 || ^18.0.0", "react@^16.8 || ^17.0 || ^18.0", "react@^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", "react@^16.8.0 || ^17 || ^18 || ^19", "react@^16.8.0 || ^17.0.0 || ^18.0.0", "react@^17.0.0 || ^18.0.0", react@^18.0.0, react@^18.2.0, react@^18.3.1, "react@>= 0.14.0", "react@>= 16", "react@>= 16.8.0", react@>=16, react@>=16.14.0, react@>=16.6.0, react@>=16.8, react@>=16.8.0, react@>=18, "react@15.x || 16.x || 17.x || 18.x", "react@16.8.0 - 18":
version "18.3.1"
resolved "https://registry.npmjs.org/react/-/react-18.3.1.tgz"
integrity sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==
dependencies:
loose-envify "^1.1.0"
+read-cache@^1.0.0:
+ version "1.0.0"
+ resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz"
+ integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==
+ dependencies:
+ pify "^2.3.0"
+
read-pkg-up@^7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz"
@@ -10691,7 +14158,20 @@ read-pkg@^5.2.0:
parse-json "^5.0.0"
type-fest "^0.6.0"
-readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@~2.3.6:
+readable-stream@^2.0.0:
+ version "2.3.8"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
+ integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^2.0.1:
version "2.3.8"
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
@@ -10704,7 +14184,20 @@ readable-stream@^2.0.0, readable-stream@^2.2.2, readable-stream@~2.3.6:
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
-readable-stream@^3.1.1, readable-stream@^3.4.0:
+readable-stream@^2.2.2:
+ version "2.3.8"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
+ integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
+readable-stream@^3.0.6, readable-stream@^3.1.1, readable-stream@^3.4.0:
version "3.6.2"
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz"
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
@@ -10713,6 +14206,19 @@ readable-stream@^3.1.1, readable-stream@^3.4.0:
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
+readable-stream@~2.3.6:
+ version "2.3.8"
+ resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
+ integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
+ dependencies:
+ core-util-is "~1.0.0"
+ inherits "~2.0.3"
+ isarray "~1.0.0"
+ process-nextick-args "~2.0.0"
+ safe-buffer "~5.1.1"
+ string_decoder "~1.1.1"
+ util-deprecate "~1.0.1"
+
readdirp@~3.6.0:
version "3.6.0"
resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
@@ -10720,7 +14226,7 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
-recast@^0.23.1, recast@^0.23.3:
+recast@^0.23.1, recast@^0.23.3, recast@^0.23.5:
version "0.23.9"
resolved "https://registry.npmjs.org/recast/-/recast-0.23.9.tgz"
integrity sha512-Hx/BGIbwj+Des3+xy5uAtAbdCyqK9y9wbBcDFDYanLS9JnMqf7OeF87HQwUimE87OEc72mr6tkKUKMBBL+hF9Q==
@@ -10731,6 +14237,13 @@ recast@^0.23.1, recast@^0.23.3:
tiny-invariant "^1.3.3"
tslib "^2.0.1"
+recursive-readdir@^2.2.2:
+ version "2.2.3"
+ resolved "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.3.tgz"
+ integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==
+ dependencies:
+ minimatch "^3.0.5"
+
redent@^3.0.0:
version "3.0.0"
resolved "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz"
@@ -10764,6 +14277,11 @@ regenerate@^1.4.2:
resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz"
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
+regenerator-runtime@^0.13.9:
+ version "0.13.11"
+ resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
+ integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
+
regenerator-runtime@^0.14.0:
version "0.14.1"
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz"
@@ -10776,6 +14294,11 @@ regenerator-transform@^0.15.2:
dependencies:
"@babel/runtime" "^7.8.4"
+regex-parser@^2.2.11:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz"
+ integrity sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==
+
regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.2:
version "1.5.2"
resolved "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz"
@@ -10805,6 +14328,11 @@ regjsparser@^0.9.1:
dependencies:
jsesc "~0.5.0"
+relateurl@^0.2.7:
+ version "0.2.7"
+ resolved "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz"
+ integrity sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==
+
release-zalgo@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz"
@@ -10877,6 +14405,17 @@ remove-accents@0.5.0:
resolved "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz"
integrity sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==
+renderkid@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz"
+ integrity sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==
+ dependencies:
+ css-select "^4.1.3"
+ dom-converter "^0.2.0"
+ htmlparser2 "^6.1.0"
+ lodash "^4.17.21"
+ strip-ansi "^6.0.1"
+
require-directory@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
@@ -10932,12 +14471,28 @@ resolve-from@^5.0.0:
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz"
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
+resolve-url-loader@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz"
+ integrity sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==
+ dependencies:
+ adjust-sourcemap-loader "^4.0.0"
+ convert-source-map "^1.7.0"
+ loader-utils "^2.0.0"
+ postcss "^7.0.35"
+ source-map "0.6.1"
+
+resolve.exports@^1.1.0:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.1.tgz"
+ integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==
+
resolve.exports@^2.0.0:
version "2.0.2"
resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz"
integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==
-resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.4:
+resolve@^1.1.7, resolve@^1.10.0, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.22.1, resolve@^1.22.2, resolve@^1.22.4:
version "1.22.8"
resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz"
integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
@@ -10963,25 +14518,37 @@ restore-cursor@^3.1.0:
onetime "^5.1.0"
signal-exit "^3.0.2"
+retry@^0.13.1:
+ version "0.13.1"
+ resolved "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz"
+ integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==
+
reusify@^1.0.4:
version "1.0.4"
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2:
- version "3.0.2"
- resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+rimraf@^2.6.1:
+ version "2.7.1"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
+ integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
-rimraf@^2.6.1, rimraf@^2.6.3:
+rimraf@^2.6.3:
version "2.7.1"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz"
integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==
dependencies:
glob "^7.1.3"
+rimraf@^3.0.0, rimraf@^3.0.2, rimraf@3.0.2:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
+ integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
+ dependencies:
+ glob "^7.1.3"
+
rimraf@~2.6.2:
version "2.6.3"
resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz"
@@ -10989,7 +14556,24 @@ rimraf@~2.6.2:
dependencies:
glob "^7.1.3"
-"rollup@^2.25.0 || ^3.3.0", rollup@^3.27.1:
+rollup-plugin-terser@^7.0.0:
+ version "7.0.2"
+ resolved "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-7.0.2.tgz"
+ integrity sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==
+ dependencies:
+ "@babel/code-frame" "^7.10.4"
+ jest-worker "^26.2.1"
+ serialize-javascript "^4.0.0"
+ terser "^5.0.0"
+
+"rollup@^1.20.0 || ^2.0.0", rollup@^1.20.0||^2.0.0, rollup@^2.0.0, rollup@^2.43.1:
+ version "2.79.1"
+ resolved "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz"
+ integrity sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==
+ optionalDependencies:
+ fsevents "~2.3.2"
+
+rollup@^1.20.0||^2.0.0||^3.0.0||^4.0.0, "rollup@^2.25.0 || ^3.3.0", rollup@^3.27.1:
version "3.29.4"
resolved "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz"
integrity sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==
@@ -11057,15 +14641,20 @@ safe-array-concat@^1.1.2:
has-symbols "^1.0.3"
isarray "^2.0.5"
-safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
+safe-buffer@^5.1.0, safe-buffer@>=5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
+ version "5.2.1"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
+ integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+
+safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-safe-buffer@5.2.1, safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
+safe-buffer@5.1.2:
+ version "5.1.2"
+ resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
+ integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
safe-regex-test@^1.0.3:
version "1.0.3"
@@ -11081,6 +14670,40 @@ safe-regex-test@^1.0.3:
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
+sanitize.css@*:
+ version "13.0.0"
+ resolved "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz"
+ integrity sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==
+
+sass-loader@^12.3.0:
+ version "12.6.0"
+ resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz"
+ integrity sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==
+ dependencies:
+ klona "^2.0.4"
+ neo-async "^2.6.2"
+
+sass@*, sass@^1.3.0, sass@^1.77.2:
+ version "1.77.8"
+ resolved "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz"
+ integrity sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==
+ dependencies:
+ chokidar ">=3.0.0 <4.0.0"
+ immutable "^4.0.0"
+ source-map-js ">=0.6.2 <2.0.0"
+
+sax@~1.2.4:
+ version "1.2.4"
+ resolved "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz"
+ integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==
+
+saxes@^5.0.1:
+ version "5.0.1"
+ resolved "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz"
+ integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==
+ dependencies:
+ xmlchars "^2.2.0"
+
saxes@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz"
@@ -11095,7 +14718,7 @@ scheduler@^0.23.2:
dependencies:
loose-envify "^1.1.0"
-schema-utils@^2.7.0:
+schema-utils@^2.6.5, schema-utils@^2.7.0:
version "2.7.1"
resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz"
integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==
@@ -11104,7 +14727,76 @@ schema-utils@^2.7.0:
ajv "^6.12.4"
ajv-keywords "^3.5.2"
-"semver@2 || 3 || 4 || 5", semver@^5.6.0:
+schema-utils@^3.0.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
+ integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.1.1:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
+ integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^3.2.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz"
+ integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==
+ dependencies:
+ "@types/json-schema" "^7.0.8"
+ ajv "^6.12.5"
+ ajv-keywords "^3.5.2"
+
+schema-utils@^4.0.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz"
+ integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ ajv "^8.9.0"
+ ajv-formats "^2.1.1"
+ ajv-keywords "^5.1.0"
+
+schema-utils@^4.2.0:
+ version "4.2.0"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz"
+ integrity sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==
+ dependencies:
+ "@types/json-schema" "^7.0.9"
+ ajv "^8.9.0"
+ ajv-formats "^2.1.1"
+ ajv-keywords "^5.1.0"
+
+schema-utils@2.7.0:
+ version "2.7.0"
+ resolved "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz"
+ integrity sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==
+ dependencies:
+ "@types/json-schema" "^7.0.4"
+ ajv "^6.12.2"
+ ajv-keywords "^3.4.1"
+
+select-hose@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz"
+ integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==
+
+selfsigned@^2.1.1:
+ version "2.4.1"
+ resolved "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz"
+ integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==
+ dependencies:
+ "@types/node-forge" "^1.3.0"
+ node-forge "^1"
+
+semver@^5.6.0:
version "5.7.2"
resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
@@ -11114,11 +14806,36 @@ semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
-semver@^7.3.7, semver@^7.5.3, semver@^7.5.4, semver@^7.6.0:
+semver@^7.3.2, semver@^7.3.5:
+ version "7.6.3"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
+
+semver@^7.3.7:
+ version "7.6.3"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
+
+semver@^7.5.3:
+ version "7.6.3"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
+
+semver@^7.5.4:
version "7.6.3"
resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
+semver@^7.6.0:
+ version "7.6.3"
+ resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
+ integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
+
+"semver@2 || 3 || 4 || 5":
+ version "5.7.2"
+ resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz"
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
+
send@0.18.0:
version "0.18.0"
resolved "https://registry.npmjs.org/send/-/send-0.18.0.tgz"
@@ -11138,6 +14855,33 @@ send@0.18.0:
range-parser "~1.2.1"
statuses "2.0.1"
+serialize-javascript@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz"
+ integrity sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==
+ dependencies:
+ randombytes "^2.1.0"
+
+serialize-javascript@^6.0.0, serialize-javascript@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
+ integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
+ dependencies:
+ randombytes "^2.1.0"
+
+serve-index@^1.9.1:
+ version "1.9.1"
+ resolved "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz"
+ integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==
+ dependencies:
+ accepts "~1.3.4"
+ batch "0.6.1"
+ debug "2.6.9"
+ escape-html "~1.0.3"
+ http-errors "~1.6.2"
+ mime-types "~2.1.17"
+ parseurl "~1.3.2"
+
serve-static@1.15.0:
version "1.15.0"
resolved "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz"
@@ -11180,6 +14924,11 @@ setimmediate@^1.0.5:
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
+setprototypeof@1.1.0:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz"
+ integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==
+
setprototypeof@1.2.0:
version "1.2.0"
resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
@@ -11209,6 +14958,11 @@ shebang-regex@^3.0.0:
resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
+shell-quote@^1.7.3, shell-quote@^1.8.1:
+ version "1.8.1"
+ resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz"
+ integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
+
side-channel@^1.0.4, side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz"
@@ -11229,7 +14983,12 @@ signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-signal-exit@^4.0.1, signal-exit@^4.1.0:
+signal-exit@^4.0.1:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
+ integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
+
+signal-exit@^4.1.0:
version "4.1.0"
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
@@ -11265,22 +15024,63 @@ slash@^3.0.0:
resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
+slash@^4.0.0:
+ version "4.0.0"
+ resolved "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz"
+ integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
+
slash@^5.0.0:
version "5.1.0"
resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz"
integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==
+slash@^5.1.0:
+ version "5.1.0"
+ resolved "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz"
+ integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==
+
slick-carousel@^1.8.1:
version "1.8.1"
resolved "https://registry.npmjs.org/slick-carousel/-/slick-carousel-1.8.1.tgz"
integrity sha512-XB9Ftrf2EEKfzoQXt3Nitrt/IPbT+f1fgqBdoxO3W/+JYvtEOW6EgxnWfr9GH6nmULv7Y2tPmEX3koxThVmebA==
-source-map-js@^1.0.1, source-map-js@^1.2.0:
+sockjs@^0.3.24:
+ version "0.3.24"
+ resolved "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz"
+ integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
+ dependencies:
+ faye-websocket "^0.11.3"
+ uuid "^8.3.2"
+ websocket-driver "^0.7.4"
+
+source-list-map@^2.0.0, source-list-map@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz"
+ integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==
+
+source-map-js@^1.0.1, source-map-js@^1.2.0, "source-map-js@>=0.6.2 <2.0.0":
version "1.2.0"
resolved "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz"
integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==
-source-map-support@0.5.13:
+source-map-loader@^3.0.0:
+ version "3.0.2"
+ resolved "https://registry.npmjs.org/source-map-loader/-/source-map-loader-3.0.2.tgz"
+ integrity sha512-BokxPoLjyl3iOrgkWaakaxqnelAJSS+0V+De0kKIq6lyWrXuiPgYTGp6z3iHmqljKAaLXwZa+ctD8GccRJeVvg==
+ dependencies:
+ abab "^2.0.5"
+ iconv-lite "^0.6.3"
+ source-map-js "^1.0.1"
+
+source-map-support@^0.5.16:
+ version "0.5.21"
+ resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
+ integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
+
+source-map-support@^0.5.6, source-map-support@0.5.13:
version "0.5.13"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz"
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
@@ -11288,7 +15088,7 @@ source-map-support@0.5.13:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map-support@^0.5.16:
+source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
@@ -11301,11 +15101,38 @@ source-map@^0.5.7:
resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
-source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
+source-map@^0.6.0, source-map@^0.6.1, source-map@0.6.1:
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@^0.7.3:
+ version "0.7.4"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+source-map@^0.8.0-beta.0:
+ version "0.8.0-beta.0"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz"
+ integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==
+ dependencies:
+ whatwg-url "^7.0.0"
+
+source-map@~0.6.0:
+ version "0.6.1"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
+ integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+
+source-map@~0.6.1:
version "0.6.1"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+sourcemap-codec@^1.4.8:
+ version "1.4.8"
+ resolved "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz"
+ integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
+
space-separated-tokens@^1.0.0:
version "1.1.5"
resolved "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-1.1.5.tgz"
@@ -11364,11 +15191,39 @@ spdx-license-ids@^3.0.0:
resolved "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz"
integrity sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==
+spdy-transport@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz"
+ integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==
+ dependencies:
+ debug "^4.1.0"
+ detect-node "^2.0.4"
+ hpack.js "^2.1.6"
+ obuf "^1.1.2"
+ readable-stream "^3.0.6"
+ wbuf "^1.7.3"
+
+spdy@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz"
+ integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==
+ dependencies:
+ debug "^4.1.0"
+ handle-thing "^2.0.0"
+ http-deceiver "^1.2.7"
+ select-hose "^2.0.0"
+ spdy-transport "^3.0.0"
+
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
+stable@^0.1.8:
+ version "0.1.8"
+ resolved "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz"
+ integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
+
stack-utils@^2.0.3:
version "2.0.6"
resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz"
@@ -11381,6 +15236,23 @@ stackback@0.0.2:
resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz"
integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
+stackframe@^1.3.4:
+ version "1.3.4"
+ resolved "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz"
+ integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+
+static-eval@2.0.2:
+ version "2.0.2"
+ resolved "https://registry.npmjs.org/static-eval/-/static-eval-2.0.2.tgz"
+ integrity sha512-N/D219Hcr2bPjLxPiV+TQE++Tsmrady7TqAJugLy7Xk1EumfDWS/f5dtBbkRCGE7wKKXuYockQoj8Rm2/pVKyg==
+ dependencies:
+ escodegen "^1.8.1"
+
+"statuses@>= 1.4.0 < 2":
+ version "1.5.0"
+ resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz"
+ integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==
+
statuses@2.0.1:
version "2.0.1"
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
@@ -11424,11 +15296,59 @@ storybook@^7.4.5:
dependencies:
"@storybook/cli" "7.6.20"
+storybook@^8.2.9:
+ version "8.2.9"
+ resolved "https://registry.npmjs.org/storybook/-/storybook-8.2.9.tgz"
+ integrity sha512-S7Q/Yt4A+nu1O23rg39lQvBqL2Vg+PKXbserDWUR4LFJtfmoZ2xGO8oFIhJmvvhjUBvolw1q7QDeswPq2i0sGw==
+ dependencies:
+ "@babel/core" "^7.24.4"
+ "@babel/types" "^7.24.0"
+ "@storybook/codemod" "8.2.9"
+ "@storybook/core" "8.2.9"
+ "@types/semver" "^7.3.4"
+ "@yarnpkg/fslib" "2.10.3"
+ "@yarnpkg/libzip" "2.3.0"
+ chalk "^4.1.0"
+ commander "^6.2.1"
+ cross-spawn "^7.0.3"
+ detect-indent "^6.1.0"
+ envinfo "^7.7.3"
+ execa "^5.0.0"
+ fd-package-json "^1.2.0"
+ find-up "^5.0.0"
+ fs-extra "^11.1.0"
+ giget "^1.0.0"
+ globby "^14.0.1"
+ jscodeshift "^0.15.1"
+ leven "^3.1.0"
+ ora "^5.4.1"
+ prettier "^3.1.1"
+ prompts "^2.4.0"
+ semver "^7.3.7"
+ strip-json-comments "^3.0.1"
+ tempy "^3.1.0"
+ tiny-invariant "^1.3.1"
+ ts-dedent "^2.0.0"
+
stream-shift@^1.0.0:
version "1.0.3"
resolved "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz"
integrity sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
string-convert@^0.2.0:
version "0.2.1"
resolved "https://registry.npmjs.org/string-convert/-/string-convert-0.2.1.tgz"
@@ -11450,7 +15370,30 @@ string-length@^5.0.1:
char-regex "^2.0.0"
strip-ansi "^7.0.1"
-"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
+string-natural-compare@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz"
+ integrity sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==
+
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.1.0, string-width@^4.2.0:
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -11476,7 +15419,7 @@ string.prototype.includes@^2.0.0:
define-properties "^1.1.3"
es-abstract "^1.17.5"
-string.prototype.matchall@^4.0.11:
+string.prototype.matchall@^4.0.11, string.prototype.matchall@^4.0.6:
version "4.0.11"
resolved "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz"
integrity sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==
@@ -11530,20 +15473,6 @@ string.prototype.trimstart@^1.0.8:
define-properties "^1.2.1"
es-object-atoms "^1.0.0"
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
stringify-entities@^4.0.0:
version "4.0.4"
resolved "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz"
@@ -11552,7 +15481,23 @@ stringify-entities@^4.0.0:
character-entities-html4 "^2.0.0"
character-entities-legacy "^3.0.0"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+stringify-object@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz"
+ integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==
+ dependencies:
+ get-own-enumerable-property-symbols "^3.0.0"
+ is-obj "^1.0.1"
+ is-regexp "^1.0.0"
+
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
+ dependencies:
+ ansi-regex "^5.0.1"
+
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -11576,6 +15521,11 @@ strip-bom@^4.0.0:
resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz"
integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
+strip-comments@^2.0.1:
+ version "2.0.1"
+ resolved "https://registry.npmjs.org/strip-comments/-/strip-comments-2.0.1.tgz"
+ integrity sha512-ZprKx+bBLXv067WTCALv8SSz5l2+XhpYCsVtSqlMnkAXMWDq+/ekVbl1ghqP9rUHTzv6sm/DwCOiYutU/yp1fw==
+
strip-final-newline@^2.0.0:
version "2.0.0"
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
@@ -11612,6 +15562,11 @@ strip-literal@^2.0.0:
dependencies:
js-tokens "^9.0.0"
+style-loader@^3.3.1:
+ version "3.3.4"
+ resolved "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz"
+ integrity sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==
+
style-to-object@^0.4.0:
version "0.4.4"
resolved "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz"
@@ -11626,11 +15581,32 @@ style-to-object@^1.0.0:
dependencies:
inline-style-parser "0.2.3"
+stylehacks@^5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.1.tgz"
+ integrity sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==
+ dependencies:
+ browserslist "^4.21.4"
+ postcss-selector-parser "^6.0.4"
+
stylis@4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz"
integrity sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==
+sucrase@^3.32.0:
+ version "3.35.0"
+ resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz"
+ integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==
+ dependencies:
+ "@jridgewell/gen-mapping" "^0.3.2"
+ commander "^4.0.0"
+ glob "^10.3.10"
+ lines-and-columns "^1.1.6"
+ mz "^2.7.0"
+ pirates "^4.0.1"
+ ts-interface-checker "^0.1.9"
+
supports-color@^5.3.0:
version "5.5.0"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
@@ -11638,6 +15614,13 @@ supports-color@^5.3.0:
dependencies:
has-flag "^3.0.0"
+supports-color@^7.0.0:
+ version "7.2.0"
+ resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
+ integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
+ dependencies:
+ has-flag "^4.0.0"
+
supports-color@^7.1.0:
version "7.2.0"
resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
@@ -11652,11 +15635,56 @@ supports-color@^8.0.0:
dependencies:
has-flag "^4.0.0"
+supports-hyperlinks@^2.0.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz"
+ integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
+ dependencies:
+ has-flag "^4.0.0"
+ supports-color "^7.0.0"
+
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
+svg-parser@^2.0.2:
+ version "2.0.4"
+ resolved "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz"
+ integrity sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==
+
+svgo@^1.2.2:
+ version "1.3.2"
+ resolved "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz"
+ integrity sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==
+ dependencies:
+ chalk "^2.4.1"
+ coa "^2.0.2"
+ css-select "^2.0.0"
+ css-select-base-adapter "^0.1.1"
+ css-tree "1.0.0-alpha.37"
+ csso "^4.0.2"
+ js-yaml "^3.13.1"
+ mkdirp "~0.5.1"
+ object.values "^1.1.0"
+ sax "~1.2.4"
+ stable "^0.1.8"
+ unquote "~1.1.1"
+ util.promisify "~1.0.0"
+
+svgo@^2.7.0:
+ version "2.8.0"
+ resolved "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz"
+ integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
+ dependencies:
+ "@trysound/sax" "0.2.0"
+ commander "^7.2.0"
+ css-select "^4.1.3"
+ css-tree "^1.1.3"
+ csso "^4.2.0"
+ picocolors "^1.0.0"
+ stable "^0.1.8"
+
symbol-tree@^3.2.4:
version "3.2.4"
resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz"
@@ -11667,6 +15695,44 @@ synchronous-promise@^2.0.15:
resolved "https://registry.npmjs.org/synchronous-promise/-/synchronous-promise-2.0.17.tgz"
integrity sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==
+tailwindcss@^3.0.2:
+ version "3.4.10"
+ resolved "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz"
+ integrity sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==
+ dependencies:
+ "@alloc/quick-lru" "^5.2.0"
+ arg "^5.0.2"
+ chokidar "^3.5.3"
+ didyoumean "^1.2.2"
+ dlv "^1.1.3"
+ fast-glob "^3.3.0"
+ glob-parent "^6.0.2"
+ is-glob "^4.0.3"
+ jiti "^1.21.0"
+ lilconfig "^2.1.0"
+ micromatch "^4.0.5"
+ normalize-path "^3.0.0"
+ object-hash "^3.0.0"
+ picocolors "^1.0.0"
+ postcss "^8.4.23"
+ postcss-import "^15.1.0"
+ postcss-js "^4.0.1"
+ postcss-load-config "^4.0.1"
+ postcss-nested "^6.0.1"
+ postcss-selector-parser "^6.0.11"
+ resolve "^1.22.2"
+ sucrase "^3.32.0"
+
+tapable@^1.0.0:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz"
+ integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
+
+tapable@^2.0.0, tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1:
+ version "2.2.1"
+ resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
+ integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
+
tar-fs@^2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz"
@@ -11712,6 +15778,11 @@ temp-dir@^2.0.0:
resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz"
integrity sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==
+temp-dir@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz"
+ integrity sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==
+
temp@^0.8.4:
version "0.8.4"
resolved "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz"
@@ -11719,6 +15790,16 @@ temp@^0.8.4:
dependencies:
rimraf "~2.6.2"
+tempy@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.npmjs.org/tempy/-/tempy-0.6.0.tgz"
+ integrity sha512-G13vtMYPT/J8A4X2SjdtBTphZlrp1gKv6hZiOjw14RCWg6GbHuQBGtjlx75xLbYV/wEc0D7G5K4rxKP/cXk8Bw==
+ dependencies:
+ is-stream "^2.0.0"
+ temp-dir "^2.0.0"
+ type-fest "^0.16.0"
+ unique-string "^2.0.0"
+
tempy@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz"
@@ -11730,6 +15811,45 @@ tempy@^1.0.1:
type-fest "^0.16.0"
unique-string "^2.0.0"
+tempy@^3.1.0:
+ version "3.1.0"
+ resolved "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz"
+ integrity sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==
+ dependencies:
+ is-stream "^3.0.0"
+ temp-dir "^3.0.0"
+ type-fest "^2.12.2"
+ unique-string "^3.0.0"
+
+terminal-link@^2.0.0:
+ version "2.1.1"
+ resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz"
+ integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
+ dependencies:
+ ansi-escapes "^4.2.1"
+ supports-hyperlinks "^2.0.0"
+
+terser-webpack-plugin@^5.2.5, terser-webpack-plugin@^5.3.10:
+ version "5.3.10"
+ resolved "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz"
+ integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==
+ dependencies:
+ "@jridgewell/trace-mapping" "^0.3.20"
+ jest-worker "^27.4.5"
+ schema-utils "^3.1.1"
+ serialize-javascript "^6.0.1"
+ terser "^5.26.0"
+
+terser@^5.0.0, terser@^5.10.0, terser@^5.26.0, terser@^5.4.0:
+ version "5.31.6"
+ resolved "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz"
+ integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==
+ dependencies:
+ "@jridgewell/source-map" "^0.3.3"
+ acorn "^8.8.2"
+ commander "^2.20.0"
+ source-map-support "~0.5.20"
+
test-exclude@^6.0.0:
version "6.0.0"
resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz"
@@ -11744,6 +15864,25 @@ text-table@^0.2.0:
resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
+thenify-all@^1.0.0:
+ version "1.6.0"
+ resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz"
+ integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
+ dependencies:
+ thenify ">= 3.1.0 < 4"
+
+"thenify@>= 3.1.0 < 4":
+ version "3.3.1"
+ resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz"
+ integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
+ dependencies:
+ any-promise "^1.0.0"
+
+throat@^6.0.1:
+ version "6.0.2"
+ resolved "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz"
+ integrity sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==
+
through2@^2.0.3:
version "2.0.5"
resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz"
@@ -11752,6 +15891,11 @@ through2@^2.0.3:
readable-stream "~2.3.6"
xtend "~4.0.1"
+thunky@^1.0.2:
+ version "1.1.0"
+ resolved "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz"
+ integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==
+
tiny-case@^1.0.3:
version "1.0.3"
resolved "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz"
@@ -11821,7 +15965,7 @@ totalist@^3.0.0:
resolved "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz"
integrity sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==
-tough-cookie@^4.1.3:
+tough-cookie@^4.0.0, tough-cookie@^4.1.3:
version "4.1.4"
resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz"
integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==
@@ -11831,6 +15975,20 @@ tough-cookie@^4.1.3:
universalify "^0.2.0"
url-parse "^1.5.3"
+tr46@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz"
+ integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==
+ dependencies:
+ punycode "^2.1.0"
+
+tr46@^2.1.0:
+ version "2.1.0"
+ resolved "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz"
+ integrity sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==
+ dependencies:
+ punycode "^2.1.1"
+
tr46@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/tr46/-/tr46-5.0.0.tgz"
@@ -11858,6 +16016,11 @@ trough@^2.0.0:
resolved "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz"
integrity sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==
+tryer@^1.0.1:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz"
+ integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==
+
ts-api-utils@^1.3.0:
version "1.3.0"
resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz"
@@ -11868,6 +16031,11 @@ ts-dedent@^2.0.0, ts-dedent@^2.2.0:
resolved "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz"
integrity sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==
+ts-interface-checker@^0.1.9:
+ version "0.1.13"
+ resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz"
+ integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
+
tsconfig-paths@^3.15.0:
version "3.15.0"
resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz"
@@ -11878,12 +16046,17 @@ tsconfig-paths@^3.15.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@^1.13.0, tslib@^1.8.1:
+tslib@^1.13.0:
+ version "1.14.1"
+ resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
+ integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
+
+tslib@^1.8.1:
version "1.14.1"
resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz"
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
-tslib@^2.0.0, tslib@^2.0.1, tslib@^2.1.0, tslib@^2.4.0:
+tslib@^2.0.0, tslib@^2.0.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.4.0:
version "2.7.0"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz"
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
@@ -11907,7 +16080,14 @@ type-check@^0.4.0, type-check@~0.4.0:
dependencies:
prelude-ls "^1.2.1"
-type-detect@4.0.8, type-detect@^4.0.0:
+type-check@~0.3.2:
+ version "0.3.2"
+ resolved "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz"
+ integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==
+ dependencies:
+ prelude-ls "~1.1.2"
+
+type-detect@^4.0.0, type-detect@4.0.8:
version "4.0.8"
resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
@@ -11937,12 +16117,22 @@ type-fest@^0.6.0:
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz"
integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==
-type-fest@^0.8.0, type-fest@^0.8.1:
+type-fest@^0.8.0:
version "0.8.1"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz"
integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
-type-fest@^2.19.0, type-fest@~2.19:
+type-fest@^0.8.1:
+ version "0.8.1"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz"
+ integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
+
+type-fest@^1.0.1:
+ version "1.4.0"
+ resolved "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz"
+ integrity sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==
+
+type-fest@^2.12.2, type-fest@^2.19.0, "type-fest@>=0.17.0 <5.0.0", type-fest@~2.19:
version "2.19.0"
resolved "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz"
integrity sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==
@@ -12036,6 +16226,11 @@ unbox-primitive@^1.0.2:
has-symbols "^1.0.3"
which-boxed-primitive "^1.0.2"
+underscore@1.12.1:
+ version "1.12.1"
+ resolved "https://registry.npmjs.org/underscore/-/underscore-1.12.1.tgz"
+ integrity sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==
+
undici-types@~5.26.4:
version "5.26.5"
resolved "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz"
@@ -12076,6 +16271,11 @@ unicode-property-aliases-ecmascript@^2.0.0:
resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz"
integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
+unicorn-magic@^0.1.0:
+ version "0.1.0"
+ resolved "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz"
+ integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==
+
unidiff@^1.0.4:
version "1.0.4"
resolved "https://registry.npmjs.org/unidiff/-/unidiff-1.0.4.tgz"
@@ -12116,6 +16316,13 @@ unique-string@^2.0.0:
dependencies:
crypto-random-string "^2.0.0"
+unique-string@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz"
+ integrity sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==
+ dependencies:
+ crypto-random-string "^4.0.0"
+
unist-util-generated@^2.0.0:
version "2.0.1"
resolved "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz"
@@ -12237,7 +16444,7 @@ unload@2.2.0:
"@babel/runtime" "^7.6.2"
detect-node "^2.0.4"
-unpipe@1.0.0, unpipe@~1.0.0:
+unpipe@~1.0.0, unpipe@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
@@ -12252,11 +16459,21 @@ unplugin@^1.3.1:
webpack-sources "^3.2.3"
webpack-virtual-modules "^0.6.2"
+unquote@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz"
+ integrity sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==
+
untildify@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz"
integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
+upath@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz"
+ integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
+
update-browserslist-db@^1.1.0:
version "1.1.0"
resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz"
@@ -12307,6 +16524,16 @@ util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1:
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
+util.promisify@~1.0.0:
+ version "1.0.1"
+ resolved "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz"
+ integrity sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==
+ dependencies:
+ define-properties "^1.1.3"
+ es-abstract "^1.17.2"
+ has-symbols "^1.0.1"
+ object.getownpropertydescriptors "^2.1.0"
+
util@^0.12.4, util@^0.12.5:
version "0.12.5"
resolved "https://registry.npmjs.org/util/-/util-0.12.5.tgz"
@@ -12318,6 +16545,11 @@ util@^0.12.4, util@^0.12.5:
is-typed-array "^1.1.3"
which-typed-array "^1.1.2"
+utila@~0.4:
+ version "0.4.0"
+ resolved "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz"
+ integrity sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==
+
utils-merge@1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz"
@@ -12343,6 +16575,15 @@ uvu@^0.5.0:
kleur "^4.0.3"
sade "^1.7.3"
+v8-to-istanbul@^8.1.0:
+ version "8.1.1"
+ resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz"
+ integrity sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==
+ dependencies:
+ "@types/istanbul-lib-coverage" "^2.0.1"
+ convert-source-map "^1.6.0"
+ source-map "^0.7.3"
+
v8-to-istanbul@^9.0.1:
version "9.3.0"
resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz"
@@ -12425,7 +16666,7 @@ vite-plugin-istanbul@^3.0.1:
picocolors "^1.0.0"
test-exclude "^6.0.0"
-vite@^4.3.9:
+vite@*, "vite@^2.7.0 || ^3.0.0 || ^4.0.0 || ^5.0.0", "vite@^3.0.0 || ^4.0.0 || ^5.0.0", vite@^4.1.0-beta.0, "vite@^4.2.0 || ^5.0.0", vite@^4.3.9:
version "4.5.3"
resolved "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz"
integrity sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==
@@ -12447,7 +16688,7 @@ vite@^5.0.0:
optionalDependencies:
fsevents "~2.3.3"
-vitest@^1.1.0:
+vitest@^1.1.0, "vitest@>= 0.32", vitest@1.6.0:
version "1.6.0"
resolved "https://registry.npmjs.org/vitest/-/vitest-1.6.0.tgz"
integrity sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==
@@ -12478,6 +16719,20 @@ void-elements@3.1.0:
resolved "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz"
integrity sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==
+w3c-hr-time@^1.0.2:
+ version "1.0.2"
+ resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz"
+ integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
+ dependencies:
+ browser-process-hrtime "^1.0.0"
+
+w3c-xmlserializer@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz"
+ integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==
+ dependencies:
+ xml-name-validator "^3.0.0"
+
w3c-xmlserializer@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz"
@@ -12505,7 +16760,12 @@ wait-port@^0.2.9:
commander "^3.0.2"
debug "^4.1.1"
-walker@^1.0.8:
+walk-up-path@^3.0.1:
+ version "3.0.1"
+ resolved "https://registry.npmjs.org/walk-up-path/-/walk-up-path-3.0.1.tgz"
+ integrity sha512-9YlCL/ynK3CTlrSRrDxZvUauLzAswPCrsaCgilqFevUYpeEW0/3ScEjaa3kbW/T0ghhkEr7mv+fpjqn1Y1YuTA==
+
+walker@^1.0.7, walker@^1.0.8:
version "1.0.8"
resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz"
integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
@@ -12519,7 +16779,7 @@ warning@^4.0.3:
dependencies:
loose-envify "^1.0.0"
-watchpack@^2.2.0:
+watchpack@^2.2.0, watchpack@^2.4.1:
version "2.4.2"
resolved "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz"
integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==
@@ -12527,6 +16787,13 @@ watchpack@^2.2.0:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
+wbuf@^1.1.0, wbuf@^1.7.3:
+ version "1.7.3"
+ resolved "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz"
+ integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==
+ dependencies:
+ minimalistic-assert "^1.0.0"
+
wcwidth@^1.0.1:
version "1.0.1"
resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz"
@@ -12534,7 +16801,7 @@ wcwidth@^1.0.1:
dependencies:
defaults "^1.0.3"
-web-streams-polyfill@^3.0.3:
+web-streams-polyfill@^3.0.3, web-streams-polyfill@>=3.2.1:
version "3.3.3"
resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz"
integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
@@ -12549,11 +16816,97 @@ webidl-conversions@^3.0.0:
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz"
integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==
+webidl-conversions@^4.0.2:
+ version "4.0.2"
+ resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz"
+ integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
+
+webidl-conversions@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz"
+ integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==
+
+webidl-conversions@^6.1.0:
+ version "6.1.0"
+ resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz"
+ integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==
+
webidl-conversions@^7.0.0:
version "7.0.0"
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
+webpack-dev-middleware@^5.3.4:
+ version "5.3.4"
+ resolved "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz"
+ integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==
+ dependencies:
+ colorette "^2.0.10"
+ memfs "^3.4.3"
+ mime-types "^2.1.31"
+ range-parser "^1.2.1"
+ schema-utils "^4.0.0"
+
+webpack-dev-server@^4.6.0, "webpack-dev-server@3.x || 4.x || 5.x":
+ version "4.15.2"
+ resolved "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz"
+ integrity sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==
+ dependencies:
+ "@types/bonjour" "^3.5.9"
+ "@types/connect-history-api-fallback" "^1.3.5"
+ "@types/express" "^4.17.13"
+ "@types/serve-index" "^1.9.1"
+ "@types/serve-static" "^1.13.10"
+ "@types/sockjs" "^0.3.33"
+ "@types/ws" "^8.5.5"
+ ansi-html-community "^0.0.8"
+ bonjour-service "^1.0.11"
+ chokidar "^3.5.3"
+ colorette "^2.0.10"
+ compression "^1.7.4"
+ connect-history-api-fallback "^2.0.0"
+ default-gateway "^6.0.3"
+ express "^4.17.3"
+ graceful-fs "^4.2.6"
+ html-entities "^2.3.2"
+ http-proxy-middleware "^2.0.3"
+ ipaddr.js "^2.0.1"
+ launch-editor "^2.6.0"
+ open "^8.0.9"
+ p-retry "^4.5.0"
+ rimraf "^3.0.2"
+ schema-utils "^4.0.0"
+ selfsigned "^2.1.1"
+ serve-index "^1.9.1"
+ sockjs "^0.3.24"
+ spdy "^4.0.2"
+ webpack-dev-middleware "^5.3.4"
+ ws "^8.13.0"
+
+webpack-manifest-plugin@^4.0.2:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-4.1.1.tgz"
+ integrity sha512-YXUAwxtfKIJIKkhg03MKuiFAD72PlrqCiwdwO4VEXdRO5V0ORCNwaOwAZawPZalCbmH9kBDmXnNeQOw+BIEiow==
+ dependencies:
+ tapable "^2.0.0"
+ webpack-sources "^2.2.0"
+
+webpack-sources@^1.4.3:
+ version "1.4.3"
+ resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz"
+ integrity sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==
+ dependencies:
+ source-list-map "^2.0.0"
+ source-map "~0.6.1"
+
+webpack-sources@^2.2.0:
+ version "2.3.1"
+ resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.3.1.tgz"
+ integrity sha512-y9EI9AO42JjEcrTJFOYmVywVZdKVUfOvDUPsJea5GIr1JOEGFVqwlY2K098fFoIjOkDzHn2AjRvM8dsBZu+gCA==
+ dependencies:
+ source-list-map "^2.0.1"
+ source-map "^0.6.1"
+
webpack-sources@^3.2.3:
version "3.2.3"
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
@@ -12564,6 +16917,56 @@ webpack-virtual-modules@^0.6.2:
resolved "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz"
integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
+webpack@*, "webpack@^4.0.0 || ^5.0.0", "webpack@^4.37.0 || ^5.0.0", "webpack@^4.4.0 || ^5.9.0", "webpack@^4.44.2 || ^5.47.0", webpack@^5.0.0, webpack@^5.1.0, webpack@^5.20.0, webpack@^5.64.4, "webpack@>= 4", webpack@>=2, "webpack@>=4.43.0 <6.0.0":
+ version "5.94.0"
+ resolved "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz"
+ integrity sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==
+ dependencies:
+ "@types/estree" "^1.0.5"
+ "@webassemblyjs/ast" "^1.12.1"
+ "@webassemblyjs/wasm-edit" "^1.12.1"
+ "@webassemblyjs/wasm-parser" "^1.12.1"
+ acorn "^8.7.1"
+ acorn-import-attributes "^1.9.5"
+ browserslist "^4.21.10"
+ chrome-trace-event "^1.0.2"
+ enhanced-resolve "^5.17.1"
+ es-module-lexer "^1.2.1"
+ eslint-scope "5.1.1"
+ events "^3.2.0"
+ glob-to-regexp "^0.4.1"
+ graceful-fs "^4.2.11"
+ json-parse-even-better-errors "^2.3.1"
+ loader-runner "^4.2.0"
+ mime-types "^2.1.27"
+ neo-async "^2.6.2"
+ schema-utils "^3.2.0"
+ tapable "^2.1.1"
+ terser-webpack-plugin "^5.3.10"
+ watchpack "^2.4.1"
+ webpack-sources "^3.2.3"
+
+websocket-driver@^0.7.4, websocket-driver@>=0.5.1:
+ version "0.7.4"
+ resolved "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz"
+ integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==
+ dependencies:
+ http-parser-js ">=0.5.1"
+ safe-buffer ">=5.1.0"
+ websocket-extensions ">=0.1.1"
+
+websocket-extensions@>=0.1.1:
+ version "0.1.4"
+ resolved "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz"
+ integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==
+
+whatwg-encoding@^1.0.5:
+ version "1.0.5"
+ resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz"
+ integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==
+ dependencies:
+ iconv-lite "0.4.24"
+
whatwg-encoding@^3.1.1:
version "3.1.1"
resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz"
@@ -12571,6 +16974,16 @@ whatwg-encoding@^3.1.1:
dependencies:
iconv-lite "0.6.3"
+whatwg-fetch@^3.6.2:
+ version "3.6.20"
+ resolved "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz"
+ integrity sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==
+
+whatwg-mimetype@^2.3.0:
+ version "2.3.0"
+ resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz"
+ integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==
+
whatwg-mimetype@^4.0.0:
version "4.0.0"
resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz"
@@ -12592,6 +17005,24 @@ whatwg-url@^5.0.0:
tr46 "~0.0.3"
webidl-conversions "^3.0.0"
+whatwg-url@^7.0.0:
+ version "7.1.0"
+ resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz"
+ integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
+ dependencies:
+ lodash.sortby "^4.7.0"
+ tr46 "^1.0.1"
+ webidl-conversions "^4.0.2"
+
+whatwg-url@^8.0.0, whatwg-url@^8.5.0:
+ version "8.7.0"
+ resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz"
+ integrity sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==
+ dependencies:
+ lodash "^4.7.0"
+ tr46 "^2.1.0"
+ webidl-conversions "^6.1.0"
+
which-boxed-primitive@^1.0.2:
version "1.0.2"
resolved "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz"
@@ -12654,6 +17085,13 @@ which@^1.2.12:
dependencies:
isexe "^2.0.0"
+which@^1.3.1:
+ version "1.3.1"
+ resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
+ integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
+ dependencies:
+ isexe "^2.0.0"
+
which@^2.0.1:
version "2.0.2"
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
@@ -12669,7 +17107,7 @@ why-is-node-running@^2.2.2:
siginfo "^2.0.0"
stackback "0.0.2"
-word-wrap@^1.2.5:
+word-wrap@^1.2.5, word-wrap@~1.2.3:
version "1.2.5"
resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
@@ -12679,7 +17117,176 @@ wordwrap@^1.0.0:
resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
+workbox-background-sync@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-6.6.0.tgz"
+ integrity sha512-jkf4ZdgOJxC9u2vztxLuPT/UjlH7m/nWRQ/MgGL0v8BJHoZdVGJd18Kck+a0e55wGXdqyHO+4IQTk0685g4MUw==
+ dependencies:
+ idb "^7.0.1"
+ workbox-core "6.6.0"
+
+workbox-broadcast-update@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-6.6.0.tgz"
+ integrity sha512-nm+v6QmrIFaB/yokJmQ/93qIJ7n72NICxIwQwe5xsZiV2aI93MGGyEyzOzDPVz5THEr5rC3FJSsO3346cId64Q==
+ dependencies:
+ workbox-core "6.6.0"
+
+workbox-build@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-build/-/workbox-build-6.6.0.tgz"
+ integrity sha512-Tjf+gBwOTuGyZwMz2Nk/B13Fuyeo0Q84W++bebbVsfr9iLkDSo6j6PST8tET9HYA58mlRXwlMGpyWO8ETJiXdQ==
+ dependencies:
+ "@apideck/better-ajv-errors" "^0.3.1"
+ "@babel/core" "^7.11.1"
+ "@babel/preset-env" "^7.11.0"
+ "@babel/runtime" "^7.11.2"
+ "@rollup/plugin-babel" "^5.2.0"
+ "@rollup/plugin-node-resolve" "^11.2.1"
+ "@rollup/plugin-replace" "^2.4.1"
+ "@surma/rollup-plugin-off-main-thread" "^2.2.3"
+ ajv "^8.6.0"
+ common-tags "^1.8.0"
+ fast-json-stable-stringify "^2.1.0"
+ fs-extra "^9.0.1"
+ glob "^7.1.6"
+ lodash "^4.17.20"
+ pretty-bytes "^5.3.0"
+ rollup "^2.43.1"
+ rollup-plugin-terser "^7.0.0"
+ source-map "^0.8.0-beta.0"
+ stringify-object "^3.3.0"
+ strip-comments "^2.0.1"
+ tempy "^0.6.0"
+ upath "^1.2.0"
+ workbox-background-sync "6.6.0"
+ workbox-broadcast-update "6.6.0"
+ workbox-cacheable-response "6.6.0"
+ workbox-core "6.6.0"
+ workbox-expiration "6.6.0"
+ workbox-google-analytics "6.6.0"
+ workbox-navigation-preload "6.6.0"
+ workbox-precaching "6.6.0"
+ workbox-range-requests "6.6.0"
+ workbox-recipes "6.6.0"
+ workbox-routing "6.6.0"
+ workbox-strategies "6.6.0"
+ workbox-streams "6.6.0"
+ workbox-sw "6.6.0"
+ workbox-window "6.6.0"
+
+workbox-cacheable-response@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-6.6.0.tgz"
+ integrity sha512-JfhJUSQDwsF1Xv3EV1vWzSsCOZn4mQ38bWEBR3LdvOxSPgB65gAM6cS2CX8rkkKHRgiLrN7Wxoyu+TuH67kHrw==
+ dependencies:
+ workbox-core "6.6.0"
+
+workbox-core@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-core/-/workbox-core-6.6.0.tgz"
+ integrity sha512-GDtFRF7Yg3DD859PMbPAYPeJyg5gJYXuBQAC+wyrWuuXgpfoOrIQIvFRZnQ7+czTIQjIr1DhLEGFzZanAT/3bQ==
+
+workbox-expiration@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-6.6.0.tgz"
+ integrity sha512-baplYXcDHbe8vAo7GYvyAmlS4f6998Jff513L4XvlzAOxcl8F620O91guoJ5EOf5qeXG4cGdNZHkkVAPouFCpw==
+ dependencies:
+ idb "^7.0.1"
+ workbox-core "6.6.0"
+
+workbox-google-analytics@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-6.6.0.tgz"
+ integrity sha512-p4DJa6OldXWd6M9zRl0H6vB9lkrmqYFkRQ2xEiNdBFp9U0LhsGO7hsBscVEyH9H2/3eZZt8c97NB2FD9U2NJ+Q==
+ dependencies:
+ workbox-background-sync "6.6.0"
+ workbox-core "6.6.0"
+ workbox-routing "6.6.0"
+ workbox-strategies "6.6.0"
+
+workbox-navigation-preload@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-6.6.0.tgz"
+ integrity sha512-utNEWG+uOfXdaZmvhshrh7KzhDu/1iMHyQOV6Aqup8Mm78D286ugu5k9MFD9SzBT5TcwgwSORVvInaXWbvKz9Q==
+ dependencies:
+ workbox-core "6.6.0"
+
+workbox-precaching@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-6.6.0.tgz"
+ integrity sha512-eYu/7MqtRZN1IDttl/UQcSZFkHP7dnvr/X3Vn6Iw6OsPMruQHiVjjomDFCNtd8k2RdjLs0xiz9nq+t3YVBcWPw==
+ dependencies:
+ workbox-core "6.6.0"
+ workbox-routing "6.6.0"
+ workbox-strategies "6.6.0"
+
+workbox-range-requests@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-6.6.0.tgz"
+ integrity sha512-V3aICz5fLGq5DpSYEU8LxeXvsT//mRWzKrfBOIxzIdQnV/Wj7R+LyJVTczi4CQ4NwKhAaBVaSujI1cEjXW+hTw==
+ dependencies:
+ workbox-core "6.6.0"
+
+workbox-recipes@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-recipes/-/workbox-recipes-6.6.0.tgz"
+ integrity sha512-TFi3kTgYw73t5tg73yPVqQC8QQjxJSeqjXRO4ouE/CeypmP2O/xqmB/ZFBBQazLTPxILUQ0b8aeh0IuxVn9a6A==
+ dependencies:
+ workbox-cacheable-response "6.6.0"
+ workbox-core "6.6.0"
+ workbox-expiration "6.6.0"
+ workbox-precaching "6.6.0"
+ workbox-routing "6.6.0"
+ workbox-strategies "6.6.0"
+
+workbox-routing@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-routing/-/workbox-routing-6.6.0.tgz"
+ integrity sha512-x8gdN7VDBiLC03izAZRfU+WKUXJnbqt6PG9Uh0XuPRzJPpZGLKce/FkOX95dWHRpOHWLEq8RXzjW0O+POSkKvw==
+ dependencies:
+ workbox-core "6.6.0"
+
+workbox-strategies@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-6.6.0.tgz"
+ integrity sha512-eC07XGuINAKUWDnZeIPdRdVja4JQtTuc35TZ8SwMb1ztjp7Ddq2CJ4yqLvWzFWGlYI7CG/YGqaETntTxBGdKgQ==
+ dependencies:
+ workbox-core "6.6.0"
+
+workbox-streams@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-streams/-/workbox-streams-6.6.0.tgz"
+ integrity sha512-rfMJLVvwuED09CnH1RnIep7L9+mj4ufkTyDPVaXPKlhi9+0czCu+SJggWCIFbPpJaAZmp2iyVGLqS3RUmY3fxg==
+ dependencies:
+ workbox-core "6.6.0"
+ workbox-routing "6.6.0"
+
+workbox-sw@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-sw/-/workbox-sw-6.6.0.tgz"
+ integrity sha512-R2IkwDokbtHUE4Kus8pKO5+VkPHD2oqTgl+XJwh4zbF1HyjAbgNmK/FneZHVU7p03XUt9ICfuGDYISWG9qV/CQ==
+
+workbox-webpack-plugin@^6.4.1:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-6.6.0.tgz"
+ integrity sha512-xNZIZHalboZU66Wa7x1YkjIqEy1gTR+zPM+kjrYJzqN7iurYZBctBLISyScjhkJKYuRrZUP0iqViZTh8rS0+3A==
+ dependencies:
+ fast-json-stable-stringify "^2.1.0"
+ pretty-bytes "^5.4.1"
+ upath "^1.2.0"
+ webpack-sources "^1.4.3"
+ workbox-build "6.6.0"
+
+workbox-window@6.6.0:
+ version "6.6.0"
+ resolved "https://registry.npmjs.org/workbox-window/-/workbox-window-6.6.0.tgz"
+ integrity sha512-L4N9+vka17d16geaJXXRjENLFldvkWy7JyGxElRD0JvBxvFEd8LOhr+uXCcar/NzAmIBRv9EZ+M+Qr4mOoBITw==
+ dependencies:
+ "@types/trusted-types" "^2.0.2"
+ workbox-core "6.6.0"
+
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -12697,6 +17304,15 @@ wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
@@ -12745,11 +17361,21 @@ ws@^6.1.0:
dependencies:
async-limiter "~1.0.0"
-ws@^8.16.0, ws@^8.2.3:
+ws@^7.4.6:
+ version "7.5.10"
+ resolved "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz"
+ integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==
+
+ws@^8.13.0, ws@^8.16.0, ws@^8.2.3:
version "8.18.0"
resolved "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz"
integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==
+xml-name-validator@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz"
+ integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==
+
xml-name-validator@^5.0.0:
version "5.0.0"
resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz"
@@ -12790,7 +17416,7 @@ yallist@^4.0.0:
resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.10.0:
+yaml@^1.10.0, yaml@^1.10.2, yaml@^1.7.2:
version "1.10.2"
resolved "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==
@@ -12800,6 +17426,11 @@ yaml@^2.2.2:
resolved "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz"
integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
+yaml@^2.3.4:
+ version "2.5.0"
+ resolved "https://registry.npmjs.org/yaml/-/yaml-2.5.0.tgz"
+ integrity sha512-2wWLbGbYDiSqqIKoPjar3MPgB94ErzCtrNE1FdqGuaO0pi2JGjmE8aW8TDZwzU7vuxcGRdL/4gPQwQ7hD5AMSw==
+
yargs-parser@^18.1.2:
version "18.1.3"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz"
@@ -12808,6 +17439,11 @@ yargs-parser@^18.1.2:
camelcase "^5.0.0"
decamelize "^1.2.0"
+yargs-parser@^20.2.2:
+ version "20.2.9"
+ resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
+ integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
+
yargs-parser@^21.1.1:
version "21.1.1"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
@@ -12830,6 +17466,19 @@ yargs@^15.0.2:
y18n "^4.0.0"
yargs-parser "^18.1.2"
+yargs@^16.2.0:
+ version "16.2.0"
+ resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"
+ integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
+ dependencies:
+ cliui "^7.0.2"
+ escalade "^3.1.1"
+ get-caller-file "^2.0.5"
+ require-directory "^2.1.1"
+ string-width "^4.2.0"
+ y18n "^5.0.5"
+ yargs-parser "^20.2.2"
+
yargs@^17.3.1:
version "17.7.2"
resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
diff --git a/govtool/metadata-validation/package-lock.json b/govtool/metadata-validation/package-lock.json
index 7e7115697..a4d4a5f31 100644
--- a/govtool/metadata-validation/package-lock.json
+++ b/govtool/metadata-validation/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@govtool/metadata-validation",
- "version": "1.0.17",
+ "version": "1.0.26",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@govtool/metadata-validation",
- "version": "1.0.17",
+ "version": "1.0.26",
"license": "UNLICENSED",
"dependencies": {
"@nestjs/axios": "^3.0.2",
diff --git a/govtool/metadata-validation/package.json b/govtool/metadata-validation/package.json
index 1f511d8bd..da3baa71d 100644
--- a/govtool/metadata-validation/package.json
+++ b/govtool/metadata-validation/package.json
@@ -1,6 +1,6 @@
{
"name": "@govtool/metadata-validation",
- "version": "1.0.17",
+ "version": "1.0.26",
"description": "",
"author": "",
"private": true,
diff --git a/govtool/metadata-validation/src/app.module.ts b/govtool/metadata-validation/src/app.module.ts
index 0c0139152..0f6e9d7be 100644
--- a/govtool/metadata-validation/src/app.module.ts
+++ b/govtool/metadata-validation/src/app.module.ts
@@ -1,6 +1,8 @@
import { Module } from '@nestjs/common';
import { HttpModule } from '@nestjs/axios';
import { ConfigModule } from '@nestjs/config';
+import * as http from 'http';
+import * as https from 'https';
import { AppController } from './app.controller';
import { AppService } from './app.service';
@@ -12,8 +14,17 @@ import { HealthModule } from './health/health.module';
isGlobal: true,
}),
HttpModule.register({
- timeout: 5000,
- maxRedirects: 5,
+ timeout: 10000,
+ maxContentLength: 10 * 1024 * 1024, // Max content length 10MB
+ maxBodyLength: 10 * 1024 * 1024, // Max body length 10MB
+ responseType: 'text',
+ headers: {
+ 'Cache-Control': 'no-cache',
+ Pragma: 'no-cache',
+ Expires: '0',
+ },
+ httpAgent: new http.Agent({ keepAlive: true }),
+ httpsAgent: new https.Agent({ keepAlive: true }),
}),
HealthModule,
],
diff --git a/govtool/metadata-validation/src/app.service.ts b/govtool/metadata-validation/src/app.service.ts
index 86c66e13e..a948ef173 100644
--- a/govtool/metadata-validation/src/app.service.ts
+++ b/govtool/metadata-validation/src/app.service.ts
@@ -1,8 +1,7 @@
import { Injectable, Logger } from '@nestjs/common';
-import { catchError, firstValueFrom, timeout } from 'rxjs';
+import { catchError, finalize, firstValueFrom } from 'rxjs';
import { HttpService } from '@nestjs/axios';
import * as blake from 'blakejs';
-import { AxiosRequestConfig } from 'axios';
import * as jsonld from 'jsonld';
import { ValidateMetadataDTO } from '@dto';
@@ -10,13 +9,6 @@ import { LoggerMessage, MetadataValidationStatus } from '@enums';
import { validateMetadataStandard, parseMetadata, getStandard } from '@utils';
import { ValidateMetadataResult } from '@types';
-const axiosConfig: AxiosRequestConfig = {
- timeout: 5000,
- maxContentLength: 10 * 1024 * 1024, // Max content length 10MB
- maxBodyLength: 10 * 1024 * 1024, // Max body length 10MB
- responseType: 'text',
-};
-
@Injectable()
export class AppService {
constructor(private readonly httpService: HttpService) {}
@@ -24,15 +16,18 @@ export class AppService {
async validateMetadata({
hash,
url,
+ standard: paramStandard,
}: ValidateMetadataDTO): Promise {
let status: MetadataValidationStatus;
let metadata: Record;
+ let standard = paramStandard;
try {
const { data: rawData } = await firstValueFrom(
- this.httpService.get(url, axiosConfig).pipe(
- timeout(5000),
- catchError(() => {
+ this.httpService.get(url).pipe(
+ finalize(() => Logger.log(`Fetching ${url} completed`)),
+ catchError((error) => {
+ Logger.error(error, JSON.stringify(error));
throw MetadataValidationStatus.URL_NOT_FOUND;
}),
),
@@ -49,7 +44,9 @@ export class AppService {
throw MetadataValidationStatus.INCORRECT_FORMAT;
}
- const standard = getStandard(parsedData);
+ if (!standard) {
+ standard = getStandard(parsedData);
+ }
if (standard) {
await validateMetadataStandard(parsedData.body, standard);
@@ -61,7 +58,7 @@ export class AppService {
if (hashedMetadata !== hash) {
// Optionally validate on a parsed metadata
const hashedParsedMetadata = blake.blake2bHex(
- JSON.stringify(parsedData),
+ JSON.stringify(parsedData, null, 2),
undefined,
32,
);
diff --git a/govtool/metadata-validation/src/dto/validateMetadata.dto.ts b/govtool/metadata-validation/src/dto/validateMetadata.dto.ts
index c962d5679..edf5bf55a 100644
--- a/govtool/metadata-validation/src/dto/validateMetadata.dto.ts
+++ b/govtool/metadata-validation/src/dto/validateMetadata.dto.ts
@@ -1,5 +1,9 @@
+import { MetadataStandard } from '@/types';
+
export class ValidateMetadataDTO {
hash: string;
url: string;
+
+ standard?: MetadataStandard;
}
diff --git a/govtool/metadata-validation/src/main.ts b/govtool/metadata-validation/src/main.ts
index 753b3b704..28494c916 100644
--- a/govtool/metadata-validation/src/main.ts
+++ b/govtool/metadata-validation/src/main.ts
@@ -13,7 +13,7 @@ async function bootstrap() {
const config = new DocumentBuilder()
.setTitle('Metadata Validation Tool')
.setDescription('The Metadata Validation Tool API description')
- .setVersion('1.0.17')
+ .setVersion('1.0.26')
.build();
const document = SwaggerModule.createDocument(app, config);
diff --git a/govtool/metadata-validation/src/utils/getFieldValue.ts b/govtool/metadata-validation/src/utils/getFieldValue.ts
index cbcae0f28..60e537199 100644
--- a/govtool/metadata-validation/src/utils/getFieldValue.ts
+++ b/govtool/metadata-validation/src/utils/getFieldValue.ts
@@ -9,12 +9,13 @@ export const getFieldValue = (
body: Record,
field: string,
): unknown => {
- if (body[field] && body[field]['@value']) {
- return body[field]['@value'];
+ const fieldValue = body[field];
+ if (fieldValue.hasOwnProperty('@value')) {
+ return fieldValue['@value'];
}
- if (body[field]) {
- return body[field];
+ if (fieldValue) {
+ return fieldValue;
}
return undefined;
diff --git a/govtool/metadata-validation/src/utils/parseMetadata.ts b/govtool/metadata-validation/src/utils/parseMetadata.ts
index 4eca43514..9f3f13510 100644
--- a/govtool/metadata-validation/src/utils/parseMetadata.ts
+++ b/govtool/metadata-validation/src/utils/parseMetadata.ts
@@ -10,7 +10,12 @@ export const parseMetadata = (body: Record) => {
const metadata = {};
Object.keys(body).forEach((key) => {
- metadata[key] = getFieldValue(body, key);
+ if (key === 'references') {
+ const parsedReferences = (body[key] as Record[]).map((reference) => parseMetadata(reference));
+ metadata[key] = parsedReferences;
+ } else {
+ metadata[key] = getFieldValue(body, key);
+ }
});
return metadata;
};
diff --git a/govtool/metadata-validation/yarn.lock b/govtool/metadata-validation/yarn.lock
index 88007f81c..9008b8f3f 100644
--- a/govtool/metadata-validation/yarn.lock
+++ b/govtool/metadata-validation/yarn.lock
@@ -58,7 +58,7 @@
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz"
integrity sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==
-"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9":
+"@babel/core@^7.0.0", "@babel/core@^7.0.0-0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9", "@babel/core@^7.8.0", "@babel/core@>=7.0.0-beta.0 <8":
version "7.25.2"
resolved "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz"
integrity sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==
@@ -602,7 +602,7 @@
jest-haste-map "^29.7.0"
slash "^3.0.0"
-"@jest/transform@^29.7.0":
+"@jest/transform@^29.0.0", "@jest/transform@^29.7.0":
version "29.7.0"
resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz"
integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==
@@ -623,7 +623,7 @@
slash "^3.0.0"
write-file-atomic "^4.0.2"
-"@jest/types@^29.6.3":
+"@jest/types@^29.0.0", "@jest/types@^29.6.3":
version "29.6.3"
resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz"
integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
@@ -667,14 +667,6 @@
resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz"
integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==
-"@jridgewell/trace-mapping@0.3.9":
- version "0.3.9"
- resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
- integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
- dependencies:
- "@jridgewell/resolve-uri" "^3.0.3"
- "@jridgewell/sourcemap-codec" "^1.4.10"
-
"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
version "0.3.25"
resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
@@ -683,6 +675,14 @@
"@jridgewell/resolve-uri" "^3.1.0"
"@jridgewell/sourcemap-codec" "^1.4.14"
+"@jridgewell/trace-mapping@0.3.9":
+ version "0.3.9"
+ resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
+ integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
+ dependencies:
+ "@jridgewell/resolve-uri" "^3.0.3"
+ "@jridgewell/sourcemap-codec" "^1.4.10"
+
"@ljharb/through@^2.3.12":
version "2.3.13"
resolved "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz"
@@ -700,7 +700,7 @@
resolved "https://registry.npmjs.org/@microsoft/tsdoc/-/tsdoc-0.15.0.tgz"
integrity sha512-HZpPoABogPvjeJOdzCOSJsXeL/SMCBgBZMVC3X3d7YYp2gf31MfxhUoYUNwf1ERPJOnQc0wkFn9trqI6ZEdZuA==
-"@nestjs/axios@^3.0.2":
+"@nestjs/axios@^1.0.0 || ^2.0.0 || ^3.0.0", "@nestjs/axios@^3.0.2":
version "3.0.3"
resolved "https://registry.npmjs.org/@nestjs/axios/-/axios-3.0.3.tgz"
integrity sha512-h6TCn3yJwD6OKqqqfmtRS5Zo4E46Ip2n+gK1sqwzNBC+qxQ9xpCu+ODVRFur6V3alHSCSBxb3nNtt73VEdluyA==
@@ -730,14 +730,14 @@
webpack "5.93.0"
webpack-node-externals "3.0.0"
-"@nestjs/common@^10.0.0":
+"@nestjs/common@^10.0.0", "@nestjs/common@^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^8.0.0 || ^9.0.0 || ^10.0.0", "@nestjs/common@^9.0.0 || ^10.0.0":
version "10.4.1"
resolved "https://registry.npmjs.org/@nestjs/common/-/common-10.4.1.tgz"
integrity sha512-4CkrDx0s4XuWqFjX8WvOFV7Y6RGJd0P2OBblkhZS7nwoctoSuW5pyEa8SWak6YHNGrHRpFb6ymm5Ai4LncwRVA==
dependencies:
- uid "2.0.2"
iterare "1.2.1"
tslib "2.6.3"
+ uid "2.0.2"
"@nestjs/config@^3.2.1":
version "3.2.3"
@@ -748,17 +748,17 @@
dotenv-expand "10.0.0"
lodash "4.17.21"
-"@nestjs/core@^10.0.0":
+"@nestjs/core@^10.0.0", "@nestjs/core@^9.0.0 || ^10.0.0":
version "10.4.1"
resolved "https://registry.npmjs.org/@nestjs/core/-/core-10.4.1.tgz"
integrity sha512-9I1WdfOBCCHdUm+ClBJupOuZQS6UxzIWHIq6Vp1brAA5ZKl/Wq6BVwSsbnUJGBy3J3PM2XHmR0EQ4fwX3nR7lA==
dependencies:
- uid "2.0.2"
"@nuxtjs/opencollective" "0.3.2"
fast-safe-stringify "2.1.1"
iterare "1.2.1"
path-to-regexp "3.2.0"
tslib "2.6.3"
+ uid "2.0.2"
"@nestjs/mapped-types@2.0.5":
version "2.0.5"
@@ -822,7 +822,7 @@
"@nodelib/fs.stat" "2.0.5"
run-parallel "^1.1.9"
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
+"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5":
version "2.0.5"
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
@@ -971,7 +971,7 @@
"@types/eslint" "*"
"@types/estree" "*"
-"@types/eslint@*":
+"@types/eslint@*", "@types/eslint@>=8.0.0":
version "9.6.0"
resolved "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz"
integrity sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==
@@ -1154,7 +1154,7 @@
semver "^7.5.4"
ts-api-utils "^1.0.1"
-"@typescript-eslint/parser@^6.0.0":
+"@typescript-eslint/parser@^6.0.0", "@typescript-eslint/parser@^6.0.0 || ^6.0.0-alpha":
version "6.21.0"
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz"
integrity sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==
@@ -1228,7 +1228,7 @@
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
-"@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.12.1":
+"@webassemblyjs/ast@^1.12.1", "@webassemblyjs/ast@1.12.1":
version "1.12.1"
resolved "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz"
integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==
@@ -1329,7 +1329,7 @@
"@webassemblyjs/wasm-gen" "1.12.1"
"@webassemblyjs/wasm-parser" "1.12.1"
-"@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.12.1":
+"@webassemblyjs/wasm-parser@^1.12.1", "@webassemblyjs/wasm-parser@1.12.1":
version "1.12.1"
resolved "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz"
integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==
@@ -1391,7 +1391,7 @@ acorn-walk@^8.1.1:
dependencies:
acorn "^8.11.0"
-acorn@^8.11.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0:
+"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", acorn@^8, acorn@^8.11.0, acorn@^8.4.1, acorn@^8.7.1, acorn@^8.8.2, acorn@^8.9.0:
version "8.12.1"
resolved "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz"
integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==
@@ -1408,17 +1408,7 @@ ajv-keywords@^3.5.2:
resolved "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz"
integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==
-ajv@8.12.0:
- version "8.12.0"
- resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
- integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
- dependencies:
- fast-deep-equal "^3.1.1"
- json-schema-traverse "^1.0.0"
- require-from-string "^2.0.2"
- uri-js "^4.2.2"
-
-ajv@^6.12.4, ajv@^6.12.5:
+ajv@^6.12.4, ajv@^6.12.5, ajv@^6.9.1:
version "6.12.6"
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
@@ -1438,6 +1428,16 @@ ajv@^8.0.0:
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
+ajv@8.12.0:
+ version "8.12.0"
+ resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz"
+ integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
+ dependencies:
+ fast-deep-equal "^3.1.1"
+ json-schema-traverse "^1.0.0"
+ require-from-string "^2.0.2"
+ uri-js "^4.2.2"
+
ansi-align@^3.0.0:
version "3.0.1"
resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz"
@@ -1551,7 +1551,7 @@ asynckit@^0.4.0:
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
-axios@^1.6.8:
+axios@^1.3.1, axios@^1.6.8:
version "1.7.4"
resolved "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz"
integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==
@@ -1560,7 +1560,7 @@ axios@^1.6.8:
form-data "^4.0.0"
proxy-from-env "^1.1.0"
-babel-jest@^29.7.0:
+babel-jest@^29.0.0, babel-jest@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz"
integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==
@@ -1706,7 +1706,7 @@ braces@^3.0.3, braces@~3.0.2:
dependencies:
fill-range "^7.1.1"
-browserslist@^4.21.10, browserslist@^4.23.1:
+browserslist@^4.21.10, browserslist@^4.23.1, "browserslist@>= 4.21.0":
version "4.23.3"
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz"
integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==
@@ -1791,14 +1791,6 @@ canonicalize@^1.0.1:
resolved "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz"
integrity sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==
-chalk@4.1.2, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2:
- version "4.1.2"
- resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
- integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
@@ -1808,6 +1800,14 @@ chalk@^2.4.2:
escape-string-regexp "^1.0.5"
supports-color "^5.3.0"
+chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.1, chalk@^4.1.2, chalk@4.1.2:
+ version "4.1.2"
+ resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
+ integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
+ dependencies:
+ ansi-styles "^4.1.0"
+ supports-color "^7.1.0"
+
chalk@^5.3.0:
version "5.3.0"
resolved "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz"
@@ -1828,7 +1828,7 @@ check-disk-space@3.4.0:
resolved "https://registry.npmjs.org/check-disk-space/-/check-disk-space-3.4.0.tgz"
integrity sha512-drVkSqfwA+TvuEhFipiR1OC9boEGZL5RrWvVsOthdcvQNXyCCuKkEiTOTXZ7qxSf/GLwq4GvzfrQD/Wz325hgw==
-chokidar@3.6.0, chokidar@^3.5.3:
+chokidar@^3.5.2, chokidar@^3.5.3, chokidar@3.6.0:
version "3.6.0"
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
@@ -1858,12 +1858,12 @@ cjs-module-lexer@^1.0.0:
resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz"
integrity sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==
-class-transformer@^0.5.1:
+class-transformer@*, "class-transformer@^0.4.0 || ^0.5.0", class-transformer@^0.5.1:
version "0.5.1"
resolved "https://registry.npmjs.org/class-transformer/-/class-transformer-0.5.1.tgz"
integrity sha512-SQa1Ws6hUbfC98vKGxZH3KFY0Y1lm5Zm0SY8XX9zbK7FJCyVEac3ATW0RIpwzW+oOfmHE5PMPufDG9hCfoEOMw==
-class-validator@^0.14.1:
+class-validator@*, "class-validator@^0.13.0 || ^0.14.0", class-validator@^0.14.1:
version "0.14.1"
resolved "https://registry.npmjs.org/class-validator/-/class-validator-0.14.1.tgz"
integrity sha512-2VEG9JICxIqTpoK1eMzZqaV+u/EiwEJkMGzTrZf6sU/fwsnOITVgYJ8yojSy6CaXtO9V0Cc6ZQZ8h8m4UBuLwQ==
@@ -1946,16 +1946,16 @@ color-convert@^2.0.1:
dependencies:
color-name "~1.1.4"
-color-name@1.1.3:
- version "1.1.3"
- resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
- integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
-
color-name@~1.1.4:
version "1.1.4"
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
+color-name@1.1.3:
+ version "1.1.3"
+ resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
+ integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
+
combined-stream@^1.0.8:
version "1.0.8"
resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
@@ -1963,16 +1963,16 @@ combined-stream@^1.0.8:
dependencies:
delayed-stream "~1.0.0"
-commander@4.1.1:
- version "4.1.1"
- resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz"
- integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
-
commander@^2.20.0:
version "2.20.3"
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
+commander@4.1.1:
+ version "4.1.1"
+ resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz"
+ integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
+
comment-json@4.2.3:
version "4.2.3"
resolved "https://registry.npmjs.org/comment-json/-/comment-json-4.2.3.tgz"
@@ -2096,13 +2096,6 @@ data-uri-to-buffer@^4.0.0:
resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz"
integrity sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==
-debug@2.6.9:
- version "2.6.9"
- resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
version "4.3.6"
resolved "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz"
@@ -2110,6 +2103,13 @@ debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
dependencies:
ms "2.1.2"
+debug@2.6.9:
+ version "2.6.9"
+ resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz"
+ integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
+ dependencies:
+ ms "2.0.0"
+
dedent@^1.0.0:
version "1.5.3"
resolved "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz"
@@ -2302,7 +2302,7 @@ escape-string-regexp@^4.0.0:
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
-eslint-config-prettier@^9.0.0:
+eslint-config-prettier@*, eslint-config-prettier@^9.0.0:
version "9.1.0"
resolved "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz"
integrity sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==
@@ -2315,14 +2315,6 @@ eslint-plugin-prettier@^5.0.0:
prettier-linter-helpers "^1.0.0"
synckit "^0.9.1"
-eslint-scope@5.1.1:
- version "5.1.1"
- resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
- integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
- dependencies:
- esrecurse "^4.3.0"
- estraverse "^4.1.1"
-
eslint-scope@^7.2.2:
version "7.2.2"
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
@@ -2331,12 +2323,20 @@ eslint-scope@^7.2.2:
esrecurse "^4.3.0"
estraverse "^5.2.0"
+eslint-scope@5.1.1:
+ version "5.1.1"
+ resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz"
+ integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
+ dependencies:
+ esrecurse "^4.3.0"
+ estraverse "^4.1.1"
+
eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3:
version "3.4.3"
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
-eslint@^8.42.0:
+"eslint@^6.0.0 || ^7.0.0 || >=8.0.0", "eslint@^7.0.0 || ^8.0.0", eslint@^8.42.0, eslint@>=7.0.0, eslint@>=8.0.0:
version "8.57.0"
resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
@@ -2536,7 +2536,7 @@ fast-glob@^3.2.9:
merge2 "^1.3.0"
micromatch "^4.0.4"
-fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
+fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0, fast-json-stable-stringify@2.x:
version "2.1.0"
resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
@@ -2546,7 +2546,7 @@ fast-levenshtein@^2.0.6:
resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
-fast-safe-stringify@2.1.1, fast-safe-stringify@^2.1.1:
+fast-safe-stringify@^2.1.1, fast-safe-stringify@2.1.1:
version "2.1.1"
resolved "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz"
integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
@@ -2735,11 +2735,6 @@ fs.realpath@^1.0.0:
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-fsevents@^2.3.2, fsevents@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
- integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
function-bind@^1.1.2:
version "1.1.2"
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
@@ -2795,18 +2790,6 @@ glob-to-regexp@^0.4.1:
resolved "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz"
integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==
-glob@10.4.2:
- version "10.4.2"
- resolved "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz"
- integrity sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==
- dependencies:
- foreground-child "^3.1.0"
- jackspeak "^3.1.2"
- minimatch "^9.0.4"
- minipass "^7.1.2"
- package-json-from-dist "^1.0.0"
- path-scurry "^1.11.1"
-
glob@^7.1.3, glob@^7.1.4:
version "7.2.3"
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
@@ -2819,6 +2802,18 @@ glob@^7.1.3, glob@^7.1.4:
once "^1.3.0"
path-is-absolute "^1.0.0"
+glob@10.4.2:
+ version "10.4.2"
+ resolved "https://registry.npmjs.org/glob/-/glob-10.4.2.tgz"
+ integrity sha512-GwMlUF6PkPo3Gk21UxkCohOv0PLcIXVtKyLlpEI28R/cO/4eNOdmLk3CMW1wROV/WR/EsZOWAfBbBOqYvs88/w==
+ dependencies:
+ foreground-child "^3.1.0"
+ jackspeak "^3.1.2"
+ minimatch "^9.0.4"
+ minipass "^7.1.2"
+ package-json-from-dist "^1.0.0"
+ path-scurry "^1.11.1"
+
globals@^11.1.0:
version "11.12.0"
resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
@@ -2925,7 +2920,7 @@ human-signals@^2.1.0:
resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
-iconv-lite@0.4.24, iconv-lite@^0.4.24:
+iconv-lite@^0.4.24, iconv-lite@0.4.24:
version "0.4.24"
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz"
integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -2971,7 +2966,7 @@ inflight@^1.0.4:
once "^1.3.0"
wrappy "1"
-inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
+inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3, inherits@2, inherits@2.0.4:
version "2.0.4"
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
@@ -3380,7 +3375,7 @@ jest-resolve-dependencies@^29.7.0:
jest-regex-util "^29.6.3"
jest-snapshot "^29.7.0"
-jest-resolve@^29.7.0:
+jest-resolve@*, jest-resolve@^29.7.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz"
integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
@@ -3533,7 +3528,7 @@ jest-worker@^29.7.0:
merge-stream "^2.0.0"
supports-color "^8.0.0"
-jest@^29.5.0:
+jest@^29.0.0, jest@^29.5.0:
version "29.7.0"
resolved "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz"
integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
@@ -3559,13 +3554,6 @@ js-tokens@^4.0.0:
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
-js-yaml@4.1.0, js-yaml@^4.1.0:
- version "4.1.0"
- resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
- integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
- dependencies:
- argparse "^2.0.1"
-
js-yaml@^3.13.1:
version "3.14.1"
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
@@ -3574,6 +3562,13 @@ js-yaml@^3.13.1:
argparse "^1.0.7"
esprima "^4.0.0"
+js-yaml@^4.1.0, js-yaml@4.1.0:
+ version "4.1.0"
+ resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
+ integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
+ dependencies:
+ argparse "^2.0.1"
+
jsesc@^2.5.1:
version "2.5.2"
resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
@@ -3658,7 +3653,7 @@ ky-universal@^0.11.0:
abort-controller "^3.0.0"
node-fetch "^3.2.10"
-ky@^0.33.3:
+ky@^0.33.3, ky@>=0.31.4:
version "0.33.3"
resolved "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz"
integrity sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==
@@ -3715,7 +3710,7 @@ lodash.merge@^4.6.2:
resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
-lodash@4.17.21, lodash@^4.17.21:
+lodash@^4.17.21, lodash@4.17.21:
version "4.17.21"
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
@@ -3761,7 +3756,7 @@ make-dir@^4.0.0:
dependencies:
semver "^7.5.3"
-make-error@1.x, make-error@^1.1.1:
+make-error@^1.1.1, make-error@1.x:
version "1.3.6"
resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
@@ -3840,13 +3835,6 @@ mimic-fn@^2.1.0:
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-minimatch@9.0.3:
- version "9.0.3"
- resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz"
- integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
- dependencies:
- brace-expansion "^2.0.1"
-
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
@@ -3868,6 +3856,13 @@ minimatch@^9.0.4:
dependencies:
brace-expansion "^2.0.1"
+minimatch@9.0.3:
+ version "9.0.3"
+ resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz"
+ integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
+ dependencies:
+ brace-expansion "^2.0.1"
+
minimist@^1.2.6:
version "1.2.8"
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
@@ -4036,7 +4031,7 @@ optionator@^0.9.3:
type-check "^0.4.0"
word-wrap "^1.2.5"
-ora@5.4.1, ora@^5.4.1:
+ora@^5.4.1, ora@5.4.1:
version "5.4.1"
resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz"
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
@@ -4164,16 +4159,16 @@ picocolors@^1.0.0, picocolors@^1.0.1:
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz"
integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==
-picomatch@4.0.1:
- version "4.0.1"
- resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz"
- integrity sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==
-
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
version "2.3.1"
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
+picomatch@4.0.1:
+ version "4.0.1"
+ resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz"
+ integrity sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==
+
pirates@^4.0.4:
version "4.0.6"
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz"
@@ -4203,7 +4198,7 @@ prettier-linter-helpers@^1.0.0:
dependencies:
fast-diff "^1.1.2"
-prettier@^3.0.0:
+prettier@^3.0.0, prettier@>=3.0.0:
version "3.3.3"
resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz"
integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
@@ -4253,13 +4248,6 @@ pure-rand@^6.0.0:
resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz"
integrity sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==
-qs@6.11.0:
- version "6.11.0"
- resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz"
- integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
- dependencies:
- side-channel "^1.0.4"
-
qs@^6.11.0:
version "6.13.0"
resolved "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz"
@@ -4267,6 +4255,13 @@ qs@^6.11.0:
dependencies:
side-channel "^1.0.6"
+qs@6.11.0:
+ version "6.11.0"
+ resolved "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz"
+ integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+ dependencies:
+ side-channel "^1.0.4"
+
queue-microtask@^1.2.2:
version "1.2.3"
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
@@ -4335,7 +4330,7 @@ readdirp@~3.6.0:
dependencies:
picomatch "^2.2.1"
-reflect-metadata@^0.2.0:
+"reflect-metadata@^0.1.12 || ^0.2.0", reflect-metadata@^0.2.0, "reflect-metadata@0.1.x || 0.2.x":
version "0.2.2"
resolved "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz"
integrity sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==
@@ -4423,14 +4418,14 @@ run-parallel@^1.1.9:
dependencies:
queue-microtask "^1.2.2"
-rxjs@7.8.1, rxjs@^7.5.5, rxjs@^7.8.1:
+"rxjs@^6.0.0 || ^7.0.0", rxjs@^7.1.0, rxjs@^7.5.5, rxjs@^7.8.1, rxjs@7.8.1, rxjs@7.x:
version "7.8.1"
resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz"
integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
dependencies:
tslib "^2.1.0"
-safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
+safe-buffer@^5.1.0, safe-buffer@~5.2.0, safe-buffer@5.2.1:
version "5.2.1"
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
@@ -4454,7 +4449,12 @@ schema-utils@^3.1.1, schema-utils@^3.2.0:
ajv "^6.12.5"
ajv-keywords "^3.5.2"
-semver@^6.3.0, semver@^6.3.1:
+semver@^6.3.0:
+ version "6.3.1"
+ resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
+
+semver@^6.3.1:
version "6.3.1"
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
@@ -4564,14 +4564,6 @@ slash@^3.0.0:
resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-source-map-support@0.5.13:
- version "0.5.13"
- resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz"
- integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
source-map-support@^0.5.21, source-map-support@~0.5.20:
version "0.5.21"
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
@@ -4580,16 +4572,29 @@ source-map-support@^0.5.21, source-map-support@~0.5.20:
buffer-from "^1.0.0"
source-map "^0.6.0"
-source-map@0.7.4, source-map@^0.7.4:
- version "0.7.4"
- resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
- integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+source-map-support@0.5.13:
+ version "0.5.13"
+ resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz"
+ integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
+ dependencies:
+ buffer-from "^1.0.0"
+ source-map "^0.6.0"
source-map@^0.6.0, source-map@^0.6.1:
version "0.6.1"
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
+source-map@^0.7.4:
+ version "0.7.4"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
+source-map@0.7.4:
+ version "0.7.4"
+ resolved "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz"
+ integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==
+
sprintf-js@~1.0.2:
version "1.0.3"
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
@@ -4612,6 +4617,20 @@ streamsearch@^1.1.0:
resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz"
integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==
+string_decoder@^1.1.1:
+ version "1.3.0"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
+ integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
+ dependencies:
+ safe-buffer "~5.2.0"
+
+string_decoder@~1.1.1:
+ version "1.1.1"
+ resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
+ integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+ dependencies:
+ safe-buffer "~5.1.0"
+
string-length@^4.0.1:
version "4.0.2"
resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz"
@@ -4620,7 +4639,16 @@ string-length@^4.0.1:
char-regex "^1.0.2"
strip-ansi "^6.0.0"
-"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
+"string-width-cjs@npm:string-width@^4.2.0":
+ version "4.2.3"
+ resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
+ integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
+ dependencies:
+ emoji-regex "^8.0.0"
+ is-fullwidth-code-point "^3.0.0"
+ strip-ansi "^6.0.1"
+
+string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3:
version "4.2.3"
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
@@ -4638,21 +4666,14 @@ string-width@^5.0.1, string-width@^5.1.2:
emoji-regex "^9.2.2"
strip-ansi "^7.0.1"
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
+"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
+ version "6.0.1"
+ resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
+ integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
dependencies:
- safe-buffer "~5.1.0"
+ ansi-regex "^5.0.1"
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
+strip-ansi@^6.0.0, strip-ansi@^6.0.1:
version "6.0.1"
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
@@ -4869,7 +4890,7 @@ ts-loader@^9.4.3:
semver "^7.3.4"
source-map "^0.7.4"
-ts-node@^10.9.1:
+ts-node@^10.9.1, ts-node@>=9.0.0:
version "10.9.2"
resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz"
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
@@ -4897,7 +4918,7 @@ tsconfig-paths-webpack-plugin@4.1.0:
enhanced-resolve "^5.7.0"
tsconfig-paths "^4.1.2"
-tsconfig-paths@4.2.0, tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0:
+tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0, tsconfig-paths@4.2.0:
version "4.2.0"
resolved "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz"
integrity sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==
@@ -4906,7 +4927,7 @@ tsconfig-paths@4.2.0, tsconfig-paths@^4.1.2, tsconfig-paths@^4.2.0:
minimist "^1.2.6"
strip-bom "^3.0.0"
-tslib@2.6.3, tslib@^2.1.0, tslib@^2.6.2:
+tslib@^2.1.0, tslib@^2.6.2, tslib@2.6.3:
version "2.6.3"
resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz"
integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
@@ -4946,16 +4967,16 @@ typedarray@^0.0.6:
resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz"
integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
-typescript@5.3.3:
- version "5.3.3"
- resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz"
- integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==
-
-typescript@^5.1.3:
+typescript@*, typescript@^5.1.3, typescript@>=2.7, typescript@>=4.2.0, "typescript@>=4.3 <6", typescript@>=4.8.2:
version "5.5.4"
resolved "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz"
integrity sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==
+typescript@>=4.9.5, typescript@>3.6.0, typescript@5.3.3:
+ version "5.3.3"
+ resolved "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz"
+ integrity sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==
+
uid@2.0.2:
version "2.0.2"
resolved "https://registry.npmjs.org/uid/-/uid-2.0.2.tgz"
@@ -4980,7 +5001,7 @@ universalify@^2.0.0:
resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz"
integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-unpipe@1.0.0, unpipe@~1.0.0:
+unpipe@~1.0.0, unpipe@1.0.0:
version "1.0.0"
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
@@ -5056,7 +5077,7 @@ wcwidth@^1.0.1:
dependencies:
defaults "^1.0.3"
-web-streams-polyfill@^3.0.3:
+web-streams-polyfill@^3.0.3, web-streams-polyfill@>=3.2.1:
version "3.3.3"
resolved "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz"
integrity sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==
@@ -5076,7 +5097,7 @@ webpack-sources@^3.2.3:
resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
-webpack@5.93.0:
+webpack@^5.0.0, webpack@^5.1.0, webpack@^5.11.0, webpack@5.93.0:
version "5.93.0"
resolved "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz"
integrity sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==
@@ -5133,7 +5154,7 @@ word-wrap@^1.2.5:
resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz"
integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
version "7.0.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
@@ -5151,6 +5172,15 @@ wrap-ansi@^6.0.1, wrap-ansi@^6.2.0:
string-width "^4.1.0"
strip-ansi "^6.0.0"
+wrap-ansi@^7.0.0:
+ version "7.0.0"
+ resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
+ integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
+ dependencies:
+ ansi-styles "^4.0.0"
+ string-width "^4.1.0"
+ strip-ansi "^6.0.0"
+
wrap-ansi@^8.1.0:
version "8.1.0"
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
@@ -5193,7 +5223,7 @@ yallist@^4.0.0:
resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yargs-parser@21.1.1, yargs-parser@^21.0.1, yargs-parser@^21.1.1:
+yargs-parser@^21.0.1, yargs-parser@^21.1.1, yargs-parser@21.1.1:
version "21.1.1"
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
diff --git a/scripts/govtool/Makefile b/scripts/govtool/Makefile
index 1867afa12..812d1b05f 100644
--- a/scripts/govtool/Makefile
+++ b/scripts/govtool/Makefile
@@ -11,8 +11,8 @@ include config.mk
.DEFAULT_GOAL := info
# image tags
-cardano_node_image_tag := 9.1.1
-cardano_db_sync_image_tag := 13.5.0.1
+cardano_node_image_tag := 10.1.0-pre
+cardano_db_sync_image_tag := 13.6.0.0-pre
.PHONY: all
all: deploy-stack notify
diff --git a/scripts/govtool/custom-cardano-db-sync.Dockerfile b/scripts/govtool/custom-cardano-db-sync.Dockerfile
index 805bdafda..93b6f6b7c 100644
--- a/scripts/govtool/custom-cardano-db-sync.Dockerfile
+++ b/scripts/govtool/custom-cardano-db-sync.Dockerfile
@@ -1,4 +1,4 @@
-FROM ghcr.io/intersectmbo/cardano-db-sync:13.5.0.1
+FROM ghcr.io/intersectmbo/cardano-db-sync:13.5.0.2
COPY custom-cardano-db-sync.entrypoint.sh /usr/local/bin/custom-cardano-db-sync.entrypoint.sh
RUN chmod +x /usr/local/bin/custom-cardano-db-sync.entrypoint.sh
diff --git a/scripts/govtool/docker-compose.node+dbsync.yml b/scripts/govtool/docker-compose.node+dbsync.yml
index f58abaa7c..4f114a549 100644
--- a/scripts/govtool/docker-compose.node+dbsync.yml
+++ b/scripts/govtool/docker-compose.node+dbsync.yml
@@ -51,7 +51,7 @@ services:
retries: 5
cardano-node:
- image: ghcr.io/intersectmbo/cardano-node:9.1.1
+ image: ghcr.io/intersectmbo/cardano-node:10.1.0-pre
environment:
- NETWORK=sanchonet
volumes:
@@ -65,7 +65,7 @@ services:
retries: 10
cardano-db-sync:
- image: ghcr.io/intersectmbo/cardano-db-sync:13.5.0.1
+ image: ghcr.io/intersectmbo/cardano-db-sync:13.6.0.0-pre
environment:
- NETWORK=sanchonet
- POSTGRES_HOST=postgres
diff --git a/tests/govtool-backend/lib/kuber_api.py b/tests/govtool-backend/lib/kuber_api.py
index c4a0366e6..d70fedca2 100644
--- a/tests/govtool-backend/lib/kuber_api.py
+++ b/tests/govtool-backend/lib/kuber_api.py
@@ -52,6 +52,9 @@ def get_balance(self, address: str) -> int:
def get_protocol_params(self):
return self.__get("api/v3/protocol-params").json()
+ def get_query_system_start(self):
+ return self.__get("api/v3/genesis-params").json()
+
def wait_for_txout(self, txin: str, timeout=400, log: bool = False):
end = time.time() + timeout
while time.time() < end:
diff --git a/tests/govtool-backend/requirements.txt b/tests/govtool-backend/requirements.txt
index 9ab683282..2f3f3b442 100644
--- a/tests/govtool-backend/requirements.txt
+++ b/tests/govtool-backend/requirements.txt
@@ -1,4 +1,4 @@
pytest-github-report==0.0.1
python-dotenv==1.0.0
-requests==2.31.0
+requests==2.32.3
allure-pytest==2.13.5
\ No newline at end of file
diff --git a/tests/govtool-backend/test_cases/test_proposal.py b/tests/govtool-backend/test_cases/test_proposal.py
index 8585f450e..47ae94548 100644
--- a/tests/govtool-backend/test_cases/test_proposal.py
+++ b/tests/govtool-backend/test_cases/test_proposal.py
@@ -1,6 +1,8 @@
from models.TestData import Proposal, ProposalListResponse, GetProposalResponse
+from datetime import datetime, timedelta
import allure
-
+from lib.kuber_api import KuberApi
+kuber_api = KuberApi.from_env()
def validate_proposal(proposal: Proposal) -> bool:
assert isinstance(proposal, dict), f"Expected Proposal to be of type dict, got {type(proposal)}"
@@ -12,6 +14,35 @@ def validate_proposal(proposal: Proposal) -> bool:
), f"proposal.{key} should be of type {Proposal.__annotations__[key]} got {type(proposal[key])}"
return True
+def validate_expiry_epoch(proposal,gov_action_lifetime) -> bool:
+ created_epoch_no = proposal['createdEpochNo']
+ actual_expiry_epoch_no = proposal['expiryEpochNo']
+ expected_expiry_epoch_no = created_epoch_no + gov_action_lifetime + 1
+ assert actual_expiry_epoch_no == expected_expiry_epoch_no, (
+ f"Expected expiry epoch {expected_expiry_epoch_no}, but got {actual_expiry_epoch_no}"
+ )
+ return True
+
+def validate_expiry_date(proposal, gov_action_lifetime, query_system) -> bool:
+ actual_expiry_date = proposal['expiryDate']
+ actual_expiry_date_in_datetime_format = datetime.strptime(actual_expiry_date, "%Y-%m-%dT%H:%M:%SZ")
+
+ # Calculate the expected expiry date
+ epoch_length = query_system['epochLength']
+ created_epoch_no = proposal['createdEpochNo']
+ start_time_of_0_epoch = query_system['systemStartTime']
+ added_seconds = (created_epoch_no + 1 + gov_action_lifetime) * epoch_length
+
+ # Parse the start time of epoch 0 and add the calculated seconds
+ expected_expiry_date = datetime.strptime(start_time_of_0_epoch, "%Y-%m-%dT%H:%M:%SZ") + timedelta(seconds=added_seconds)
+
+ max_time_difference = timedelta(minutes=10)
+ time_difference = abs(expected_expiry_date - actual_expiry_date_in_datetime_format)
+
+ # Assert that the difference is not greater than 10 minutes
+ assert time_difference <= max_time_difference, f"Time difference is greater than 10 minutes: {time_difference}"
+
+ return True
@allure.story("Proposal")
def test_list_proposal(govtool_api):
@@ -29,3 +60,15 @@ def test_get_proposal(govtool_api):
proposal["txHash"] + "%23" + str(proposal["index"])
).json()
assert validate_proposal(proposal_get["proposal"])
+
+@allure.story("Proposal")
+def test_epoch_boundary(govtool_api):
+ query_system = kuber_api.get_query_system_start()
+ epochParams = govtool_api.epoch_params().json()
+ gov_action_lifetime = epochParams['gov_action_lifetime']
+
+ response = govtool_api.proposal_list()
+ proposal_list = response.json()
+ for proposal in proposal_list["elements"]:
+ assert validate_expiry_epoch(proposal,gov_action_lifetime)
+ assert validate_expiry_date(proposal,gov_action_lifetime,query_system)
\ No newline at end of file
diff --git a/tests/govtool-frontend/.gitignore b/tests/govtool-frontend/.gitignore
deleted file mode 100644
index 250e6b539..000000000
--- a/tests/govtool-frontend/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-videos
-node_modules
-screenshots
-cypress/fixtures/
diff --git a/tests/govtool-frontend/README.md b/tests/govtool-frontend/README.md
deleted file mode 100644
index 32b5389f5..000000000
--- a/tests/govtool-frontend/README.md
+++ /dev/null
@@ -1,18 +0,0 @@
-GovTool frontend Integration Test
-=============================
-
-## Run tests
-
-```bash
-# install dependencies
-yarn
-
-# run cypress tests
-yarn cypress run
-```
-
-## Run tests in dev environment
-
-```
-yarn cypress run --env baseUrl=http://localhost:5173,apiUrl=https://govtool.dev.byron.network
-```
diff --git a/tests/govtool-frontend/currents.config.js b/tests/govtool-frontend/currents.config.js
deleted file mode 100644
index 4ce504e77..000000000
--- a/tests/govtool-frontend/currents.config.js
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = {
- projectId: "govtool-frontend",
- recordKey: "2a3f6b8c-7d4e-5f1a-9b0c-6d2e3f4a5b6c",
- // Sorry Cypress users - set the director service URL
- cloudServiceUrl: "https://cypress-director.cardanoapi.io",
-};
diff --git a/tests/govtool-frontend/cypress.config.ts b/tests/govtool-frontend/cypress.config.ts
deleted file mode 100644
index 9d6301054..000000000
--- a/tests/govtool-frontend/cypress.config.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-//import { cloudPlugin } from "cypress-cloud/plugin";
-
-module.exports = {
- projectId: "wg4iq9",
- chromeWebSecurity: false,
- // experimentalModifyObstructiveThirdPartyCode: true,
- env: {
- baseUrl: "https://govtool-sanchonet.cardanoapi.io",
- apiUrl: "http://govtool-sanchonet.cardanoapi.io/api",
- disableSecurityTest: false, // set to true for github-ci
- networkId: "testnet",
- mobileViewportWidthBreakpoint: 414,
- sanchoNet: true,
- faucetApiUrl: "https://faucet.sanchonet.world.dev.cardano.org",
- blockfrostUrl: "https://cardano-sanchonet.blockfrost.io/api/v0",
- blockfrostApiKey: "xxxxxxxxxxxxxxxxxxxx",
- kuberApiUrl: "https://sanchonet.kuber.cardanoapi.io",
- kuberApiKey: "xxxxxxxxxxxxxx",
- },
- e2e: {
- supportFile: "./cypress/support/e2e.ts",
- setupNodeEvents(on, config) {
- on("before:browser:launch", (browser, launchOptions) => {
- if (browser.name == "chrome") {
- launchOptions.args.push("--disable-gpu");
- }
- return launchOptions;
- });
- //return cloudPlugin(on, config);
- },
- },
-};
diff --git a/tests/govtool-frontend/cypress/constants/governanceActions.ts b/tests/govtool-frontend/cypress/constants/governanceActions.ts
deleted file mode 100644
index c0f8e78b8..000000000
--- a/tests/govtool-frontend/cypress/constants/governanceActions.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-export const governanceActions = [
- "Protocol Parameter Changes",
- "New Constitutional Committee or Quorum Size",
- "Hard Fork",
- "No Confidence",
- "Info Action",
- "Treasury Withdrawals",
- "Update to the Constitution",
-];
-
-export const governanceSorts = [
- "Soon to Expire",
- "Newest First",
- "Highest amount of 'Yes' votes",
-];
-
-export const govActionEnums = {
- NewConstitution: "Update to the Constitution",
- TreasuryWithdrawals: "Treasury Withdrawals",
- HardForkInitiation: "Hard Fork",
- ParameterChange: "Protocol Parameter Changes",
- InfoAction: "Info Action",
- NewCommittee: "New Constitutional Committee or Quorum Size",
- NoConfidence: "No Confidence",
-};
diff --git a/tests/govtool-frontend/cypress/constants/wallet.ts b/tests/govtool-frontend/cypress/constants/wallet.ts
deleted file mode 100644
index 41541bfa4..000000000
--- a/tests/govtool-frontend/cypress/constants/wallet.ts
+++ /dev/null
@@ -1,187 +0,0 @@
-// Active test wallets
-
-import { StaticWallet } from "../lib/wallet/types";
-
-interface DRepWallets {
- dRep1: StaticWallet;
- dRep2: StaticWallet;
- votedDRep: StaticWallet;
-}
-
-interface AdaHolderWallets {
- adaHolder1: StaticWallet;
- adaHolder2: StaticWallet;
-}
-
-interface ReferenceWallets {
- dRep1: StaticWallet;
- dRep2: StaticWallet;
-}
-export const bootstrapWallet = {
- type: "bootstrap",
- payment: {
- pkh: "b5187cdefbc5b49ddc17b423c079f0717721a03882a3b265bd4c12e0",
- private: "11abec096ef0ea7edbeeee01a1a3f0e9f24a7225c2ee99687fb328146fe85ba6",
- public: "b6a42d4ccc4d26adaec67e8578bf31f13b1b7e640527356248f2ec547f9de6e4",
- },
- stake: {
- pkh: "80f326af300273d19d5a541d45baa42ebc04265816735b026b5f34a4",
- private: "283fd7625ef596f04f21b50ee14a9f4b49f8b1a6f17773cd2e1e69841a111bc1",
- public: "86b08ee3d86cb72d026197a5a710e248d66f28fcff21b4467b75f876b4e6d050",
- },
- dRepId: "drep1zg6zq3ku422ppvfm835rnvzf9ckxtzmy3ayjwylck6s4q9zr5ve",
- address:
- "addr_test1qz63slx7l0zmf8wuz76z8sre7pchwgdq8zp28vn9h4xp9cyq7vn27vqzw0ge6kj5r4zm4fpwhszzvkqkwddsy66lxjjqxnc9zk",
-};
-
-export const dRepWallets: DRepWallets = {
- dRep1: {
- type: "dRep",
- payment: {
- private:
- "4f9e979cb0d2c089e319bf81926219957b227d30c5ec7388c2fd14965bdf02c6",
- public:
- "d06c0c27c1221e83dfe8e31b0f5c01b0d0a3522d6f25711fc02c2b82d4b49ecb",
- pkh: "38be1948e77426eaca9f967becc5455b11d3d40fb06b99dd3a817d5e",
- },
- stake: {
- private:
- "b1993b67216233b1a7e4bfccdc5f6677423e923a723d5982f493bc54adad8308",
- public:
- "cfd1df259612825c55803c6eb8f7ab9189eb9cb16e62f3ed6c238ed1cddfd246",
- pkh: "75c7a5e1120727f24236cfb5981ec30fd50a2684a5aca866a123a136",
- },
- dRepId: "drep1whr6tcgjqunlys3ke76es8krpl2s5f5y5kk2se4pywsnvnq50c2",
- address:
- "addr_test1qqutux2gua6zd6k2n7t8hmx9g4d3r575p7cxhxwa82qh6hn4c7j7zys8yleyydk0kkvpasc0659zdp994j5xdgfr5ymqyne2p2",
- },
- dRep2: {
- type: "dRep",
- payment: {
- private:
- "fdab65ff51d676b549841c3547bbc4d3f692a369d5b7956e66fe93a9468c8475",
- public:
- "4be92e72827caaa2238954136ff36f8006b170206dde71c228c237916bcf2e63",
- pkh: "bb17dbac8d4a3452dbb6d0c664e804deb14a0b95ded5274007189c36",
- },
- stake: {
- private:
- "f0f1afbb745320ac2bbba1c0be816b4156e43c6568c48cc027e2aab4249320fc",
- public:
- "919d9725e9c97c555bafaf7370a49b0ba45a791cefe728908ed2398ceb47e7ab",
- pkh: "41868c2b4e5289022a3a1f6f47f86823bc605c609d2c47a2db58e04a",
- },
- dRepId: "",
- address:
- "addr_test1qza30kav349rg5kmkmgvve8gqn0tzjstjh0d2f6qquvfcdjps6xzknjj3ypz5wsldarls6prh3s9ccya93r69k6cup9qkdtk5x",
- },
- votedDRep: {
- // voted DRep
- type: "dRep",
- payment: {
- private:
- "d64e2f706e416d55fb541081a8852dfcbc7593261cf1526eea357e36772a2e9e",
- public:
- "f1804c8e90e2931d076ce184e16427f18a379b9da5200d91be862af0a9a3173a",
- pkh: "f8e61d5f13ab575771af475ac599ad88c7116339f82d2ea969b0e601",
- },
- stake: {
- private:
- "d24b92d38ad455cd952296ae37fe0d0d0e6458107d65d1b5862a87ccf4da880c",
- public:
- "17382aab5a8c9f97bf2fa666dadef945f55f81505a58b4199b0f578311dcbd85",
- pkh: "d6d84c6a5b05cb8f89d24e9d46926975fa1dc08a58b3c26e96c06df7",
- },
- dRepId: "drep16mvyc6jmqh9clzwjf6w5dynfwhapmsy2tzeuym5kcpklwp9myhm",
- address:
- "addr_test1qruwv82lzw44w4m34ar443ve4kyvwytr88uz6t4fdxcwvqwkmpxx5kc9ew8cn5jwn4rfy6t4lgwupzjck0pxa9kqdhmsunzc7p",
- },
-};
-
-export const adaHolderWallets: AdaHolderWallets = {
- adaHolder1: {
- type: "adaHolder",
- payment: {
- private:
- "e21d70800240b9bb1b70c96ef909e96ecb46b83686b9c207e8e45f390daca28a",
- public:
- "ebddceb301df8a494855cb7e803e6ed95e078d815f4857c8b6d1a15efbd7386d",
- pkh: "693e466f25213254e061fdc95f8a5f07bf6ef0de0478adbf89a3308f",
- },
- stake: {
- private:
- "a7bdc3b90734a857bae808a479f88fdf93042ae11eec40e34d672b992ec08bbe",
- public:
- "d1a955aed30de26f800653beb3bc83a7de578d9c69edde45a35b15a5629e65f2",
- pkh: "7c4641296645e557c0a6426e140a09d4ba423d158aba1eae06aba797",
- },
- dRepId: "drep103ryz2txghj40s9xgfhpgzsf6jayy0g432apatsx4wnewwgg3qs",
- address:
- "addr_test1qp5nu3n0y5sny48qv87ujhu2turm7mhsmcz83tdl3x3nprmugeqjjej9u4tupfjzdc2q5zw5hfpr69v2hg02up4t57tstdrzh5",
- },
-
- adaHolder2: {
- type: "adaHolder",
- payment: {
- private:
- "e64d0e806cadd56771d0ec08c8c693212e27d890331462a5520ccb3a0d6b82ee",
- public:
- "728ce39e7e13d64d84c513d83a280ea03cad27e7fbc30fad4cd9c06ec9725460",
- pkh: "d93170064d82eab9dea2b3141bc88503ec80e93c8691fb6b223fe310",
- },
- stake: {
- private:
- "3eb78339bb813aa01ff7b0aaff39a273c5e684ff1fa9def96914d5342b25be76",
- public:
- "18d08f3178c0b467bd64c4be0509d97e640ac9035ad506e2cadf91b4170527d1",
- pkh: "877c17de5bd978526e288334114fada629f699c4e799394aa45c2aad",
- },
- dRepId: "drep1gxrgc26w22ysy236rah507rgyw7xqhrqn5ky0gkmtrsy5mn7tul",
- address:
- "addr_test1qrvnzuqxfkpw4ww752e3gx7gs5p7eq8f8jrfr7mtygl7xyy80stauk7e0pfxu2yrxsg5ltdx98mfn388nyu54fzu92ksmdwpzc",
- },
-};
-
-// Reference data DRep wallets
-export const referenceWallets: ReferenceWallets = {
- dRep1: {
- type: "dRep",
- payment: {
- private:
- "2aa400c17606fa58df1307e265a070ede1c15df9d8e59683bcd256aefbe689a9",
- public:
- "de337d365e7cec4f01ec7a9af4c37dd65afca0aaf0fa5c828da6898ca68f1968",
- pkh: "93ab1cf6cececd048265573176355a322b7732299bbd624f655af2f6",
- },
- stake: {
- private:
- "7a5eb1dfc051822039b54a782674c527dff8e72f18b44741daa34c13c0440fd0",
- public:
- "902f3e7c43a26dfcb743d9947fcef3a2c8eb355e6d4a3ca40f299821909644ae",
- pkh: "74984fae4ca1715fa1f8759f9d871015ac87f449a85dea6cf9956da1",
- },
- dRepId: "drep1wjvyltjv59c4lg0cwk0empcszkkg0azf4pw75m8ej4k6zuqfvt5",
- address:
- "addr_test1qzf6k88kem8v6pyzv4tnza34tgezkaej9xdm6cj0v4d09an5np86un9pw906r7r4n7wcwyq44jrlgjdgth4xe7v4dkssf9rvq7",
- },
- dRep2: {
- type: "dRep",
- payment: {
- private:
- "36d51e55069121db833aea2c4564a39a8ef95a5d351b4534bc166eb9789f58ee",
- public:
- "20b2147d6e596e8d60bbee91c63854afda49b172c0a210181aa7caeb27663fa9",
- pkh: "bc032a8614a84f5d9ee772f2788954e9d664b4264226cd36d0c4ddae",
- },
- stake: {
- private:
- "b522fc1a4ca31d1ab3a42f3334fd7eef8faf1e67658da7e45e550a1ff73dfb57",
- public:
- "1e1f37ff6091ce4cb87905c05e813ca106dd5a6a34b985ff6bc1fedc60a736b1",
- pkh: "aa22f3a63400c1d96ad118b5cdd300cd039e83ae1957a35b76488194",
- },
- dRepId: "drep14g308f35qrqaj6k3rz6um5cqe5peaqawr9t6xkmkfzqegq53t5z",
- address:
- "addr_test1qz7qx25xzj5y7hv7uae0y7yf2n5ave95yepzdnfk6rzdmt42yte6vdqqc8vk45gckhxaxqxdqw0g8tse2734kajgsx2qmrj65n",
- },
-};
diff --git a/tests/govtool-frontend/cypress/e2e/0_bootstrap.cy.ts b/tests/govtool-frontend/cypress/e2e/0_bootstrap.cy.ts
deleted file mode 100644
index 14a6b5796..000000000
--- a/tests/govtool-frontend/cypress/e2e/0_bootstrap.cy.ts
+++ /dev/null
@@ -1,182 +0,0 @@
-import {
- adaHolderWallets,
- bootstrapWallet,
- dRepWallets,
- referenceWallets,
-} from "../constants/wallet";
-import { ShelleyWallet } from "../lib/wallet/crypto";
-import {
- generateWallets,
- registerStake,
- setupWallets,
-} from "../lib/wallet/setupWallet";
-import { StaticWallet } from "../lib/wallet/types";
-import { pollTx, pollTxWithKuber } from "../services/apiService";
-import kuberService from "../services/kuberService";
-import { loadAmountFromFaucet } from "../services/faucetService";
-import { IFaucetResponse } from "../services/types";
-import { IProposal, IVotedProposal } from "../state/type";
-import { getDRepIDHash, getTxHash, saveWallets } from "../support/utils";
-import { loadAmountFromBootStrapWallet } from "./actions/commonActions";
-
-const staticWallets = [
- ...Object.values(dRepWallets),
- ...Object.values(adaHolderWallets),
- ...Object.values(referenceWallets),
-];
-
-const bootstrapConfig = {
- onTimeWalletSetup: Cypress.env("runOneTimeWalletSetup") || false,
- enableStakeRegistrationForStaticWallets:
- Cypress.env("enableStakeRegistrationForStaticWallets") || true,
-};
-// NOTE This is not for tests.
-describe("Bootstrap", () => {
- it("Setup mock wallets", () => {
- if (!bootstrapConfig.onTimeWalletSetup) return;
-
- const generateAndRegisterWallets = async () => {
- const wallets = await generateWallets(50);
- await setupWallets(wallets);
- saveWallets(wallets);
- };
- cy.wrap(0).then({ timeout: 2 * 60 * 10000 }, async () =>
- generateAndRegisterWallets()
- );
- });
-
- it("Load faucet into bootstrap wallet", () => {
- cy.wrap(loadAmountFromFaucet(bootstrapWallet.address)).then(
- { timeout: 2 * 60 * 1000 },
- async (res: IFaucetResponse) => {
- await pollTxWithKuber(res.txid);
- }
- );
- });
-
- it("Load amounts into static wallets", () => {
- const staticWalletAddressList = Object.values(staticWallets).map(
- (wallet) => wallet.address
- );
- cy.wrap(loadAmountFromBootStrapWallet(staticWalletAddressList)).then(
- { timeout: 2 * 60 * 1000 },
- async (tx: any) => {
- await pollTxWithKuber(tx.txId);
- }
- );
- });
-
- Object.values(staticWallets).forEach((walletJson) => {
- it(`Register stake of the static wallet: ${walletJson.type}`, () => {
- cy.on("fail", (err) => {
- console.log(err);
- if (err.message === "Stake already registered") {
- return false;
- }
- });
- cy.wrap(registerStake(ShelleyWallet.fromJson(walletJson)), {
- timeout: 2 * 60 * 1000,
- });
- });
- });
-
- Object.values(referenceWallets).forEach((walletJson: StaticWallet) => {
- it(`Clean up reference wallet: ${walletJson.type}`, () => {
- cy.on("fail", (err) => {
- return false;
- });
- cy.wrap(
- kuberService.dRepRegistration(
- walletJson.address,
- walletJson.payment.private,
- walletJson.stake.pkh
- )
- ).then({ timeout: 2 * 60 * 1000 }, async (tx: any) => {
- await pollTxWithKuber(tx.txId);
- });
- });
- });
-
- it("Setup proposals for voting ", () => {
- let notVotedProposals: IProposal[] = [];
- let votedProposals: IVotedProposal[] = [];
-
- const today = new Date();
- const tomorrow = new Date(today);
- today.setDate(today.getDate() + 1);
- // Creating proposals
- cy.log("Creating not voted proposal");
- cy.wrap(0).then({ timeout: 2 * 60 * 1000 }, async () => {
- const res = await kuberService.createGovAction(1);
- const txHash = getTxHash(res.cborHex);
- await pollTxWithKuber(txHash);
- notVotedProposals.push({
- id: "1",
- txHash: txHash,
- index: 0,
- type: "Info",
- details: "Info",
- createdDate: today.toISOString(),
- expiryDate: tomorrow.toISOString(),
- abstainVotes: 0,
- noVote: 0,
- metadataHash:
- "1111111111111111111111111111111111111111111111111111111111111111",
- url: "https://bit.ly/3zCH2HL",
- yesVotes: 0,
- });
- });
-
- cy.log("Creating voted proposal");
- cy.wrap(0).then({ timeout: 2 * 60 * 1000 }, async () => {
- const res = await kuberService.createGovAction(1);
- const txHash = getTxHash(res.cborHex);
- await pollTxWithKuber(txHash);
- votedProposals.push({
- proposal: {
- id: "1",
- txHash: txHash,
- index: 0,
- type: "Info",
- details: "Info",
- createdDate: today.toISOString(),
- expiryDate: tomorrow.toISOString(),
- abstainVotes: 0,
- noVote: 0,
- metadataHash:
- "1111111111111111111111111111111111111111111111111111111111111111",
- url: "https://bit.ly/3zCH2HL",
- yesVotes: 1,
- },
- vote: {
- drepId: getDRepIDHash(dRepWallets.votedDRep.dRepId),
- metadataHash:
- "1111111111111111111111111111111111111111111111111111111111111111",
- url: "https://bit.ly/3zCH2HL",
- proposalId: "1",
- vote: "Yes",
- },
- });
- });
- // vote
- cy.log("Voting proposal");
- cy.wrap(0).then({ timeout: 2 * 60 * 1000 }, async () => {
- const votedDRepWallet = dRepWallets.votedDRep;
- const votedProposal = votedProposals[0];
- const res = await kuberService.voteOnProposal(
- votedDRepWallet.address,
- votedDRepWallet.payment.private,
- getDRepIDHash(votedDRepWallet.dRepId),
- votedDRepWallet.stake.private,
- `${votedProposal.proposal.txHash}#${votedProposal.proposal.index}`
- );
- await pollTxWithKuber(res.txId);
- });
- cy.writeFile("cypress/fixtures/notVotedProposals.json", notVotedProposals, {
- flag: "w",
- });
- cy.writeFile("cypress/fixtures/votedProposals.json", votedProposals, {
- flag: "w",
- });
- });
-});
diff --git a/tests/govtool-frontend/cypress/e2e/1_user_story_wallet_connect.cy.ts b/tests/govtool-frontend/cypress/e2e/1_user_story_wallet_connect.cy.ts
deleted file mode 100644
index d0c7d96dd..000000000
--- a/tests/govtool-frontend/cypress/e2e/1_user_story_wallet_connect.cy.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Logger } from "../lib/logger/logger";
-import { ShelleyWallet } from "../lib/wallet/crypto";
-import {
- convertUint8ArrayToHex,
- getWebAppNetworkId,
- isMobile,
-} from "../support/utils";
-import { connectWallet, openMobileDrawer } from "./actions/commonActions";
-
-describe("Wallet Connection", () => {
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- });
-
- it("1A. Should connect wallet and choose stake-key to use", () => {
- cy.wrap(0).then(async () => {
- const shellyWallet1 = await ShelleyWallet.generate();
- const shellyWallet2 = await ShelleyWallet.generate();
- connectWallet({
- getRegisteredPubStakeKeys: [
- convertUint8ArrayToHex(shellyWallet1.stakeKey.public),
- convertUint8ArrayToHex(shellyWallet2.stakeKey.public),
- ],
- getRewardAddresses: [
- convertUint8ArrayToHex(shellyWallet1.rewardAddressRawBytes(0)),
- convertUint8ArrayToHex(shellyWallet2.rewardAddressRawBytes(0)),
- ],
- });
- });
- });
-
- it("1B. Should connect wallet with single stake key", () => {
- connectWallet({});
- });
-
- it("1C. Should disconnect Wallet When connected ", () => {
- connectWallet({});
-
- if (isMobile()) {
- openMobileDrawer();
- }
- cy.getBySel("disconnect-button").click();
- cy.getBySel("disconnect-button").should("not.exist");
- });
-
- it("1D. Should check correct network (Testnet/Mainnet) on connection", () => {
- const networkId = getWebAppNetworkId();
- const wrongNetwork = networkId == 0 ? 1 : 0;
- cy.on("uncaught:exception", (err, runnable) => {
- Logger.success("Network mismatch error caught");
- return false;
- });
- cy.on("fail", (err, runnable) => {
- Logger.success("Assertion error caught");
- return false;
- });
- connectWallet({ getNetworkId: wrongNetwork });
- });
-});
diff --git a/tests/govtool-frontend/cypress/e2e/2_user_story_delegate_to_drep.cy.ts b/tests/govtool-frontend/cypress/e2e/2_user_story_delegate_to_drep.cy.ts
deleted file mode 100644
index 7cc3c5795..000000000
--- a/tests/govtool-frontend/cypress/e2e/2_user_story_delegate_to_drep.cy.ts
+++ /dev/null
@@ -1,138 +0,0 @@
-import { generateDRep, getDRepIDHash, isMobile } from "../support/utils";
-import {
- connectWallet,
- disconnectAndReconnectWallet,
- loadWallet,
- openMobileDrawer,
- viewProposalDetails,
-} from "./actions/commonActions";
-import {
- checkForDelegationConfirmation,
- clickDelegateButton,
- delegateToDRepId,
- delegateToMyself,
-} from "./actions/delegateActions";
-import {
- adaHolderWallets,
- dRepWallets,
- referenceWallets,
-} from "../constants/wallet";
-import { retireDRep } from "./actions/dRepActions";
-
-describe("Delegation to DRep", () => {
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- });
-
- it("2A. Should show delegated DRepId on dashboard after delegating", () => {
- loadWallet(adaHolderWallets.adaHolder1, { withStakeSigning: true });
- clickDelegateButton();
- delegateToDRepId(referenceWallets.dRep1.dRepId);
- checkForDelegationConfirmation(referenceWallets.dRep1.dRepId);
- });
-
- // Given that I'm an Ada-Holder
- it("2B. Should access delegation to dRep page", () => {
- connectWallet();
- cy.getBySel("delegate-button").click();
- cy.contains("Delegate to dRep", { matchCase: false });
- });
-
- // Given that I'm not connected to the wallet
- // User visits the DRep delegation page
- it("2C. Verify DRep Behavior in Disconnected State", () => {
- cy.getBySel("delegate-connect-wallet-button").click();
- cy.getBySel("connect-your-wallet-modal").should("be.visible");
- });
-
- // Given that I'm connected to the wallet as ADA-Holder
- // User visits the DRep delegation page
- // All delegation actions should be accessible
- it("2D. Verify DRep Behavior in Connected State", () => {
- loadWallet(referenceWallets.dRep1);
- clickDelegateButton();
-
- // Verifying Delegation options card
- cy.getBySel("delegate-to-drep-card").should("be.visible");
- cy.getBySel("delegate-to-myself-card").should("be.visible");
- cy.contains("Other options").click();
- cy.getBySel("signal-no-confidence-card").should("be.visible");
- cy.getBySel("vote-abstain-card").should("be.visible");
-
- // Verifying dRepId delegation
- cy.getBySel("delegate-to-drep-card").click();
- cy.getBySel("next-step-button").click();
- cy.getBySel("dRep-id-input").should("be.visible");
- cy.getBySel("delegate-button").should("be.visible");
- });
-
- it("2E. Should delegate to myself", () => {
- loadWallet(dRepWallets.dRep1, { withStakeSigning: true });
- clickDelegateButton();
- delegateToMyself();
- checkForDelegationConfirmation(dRepWallets.dRep1.dRepId);
- });
-
- // Given that ADA-Holder has already delegated to a DRep
- it("2F. Should change delegated DRep", () => {
- loadWallet(adaHolderWallets.adaHolder2, { withStakeSigning: true });
- // delegate
- clickDelegateButton();
- delegateToDRepId(referenceWallets.dRep1.dRepId);
- checkForDelegationConfirmation(referenceWallets.dRep1.dRepId);
- // change delegation
- clickDelegateButton();
- delegateToDRepId(referenceWallets.dRep2.dRepId);
- checkForDelegationConfirmation(referenceWallets.dRep2.dRepId);
- });
-
- // Given I'm already registered as DRep
- // When pressing retire as dRep button, wallet asks to sign the tx
- it("2G. Should verify retire as a DRep", () => {
- loadWallet(dRepWallets.dRep1, { withStakeSigning: true });
- cy.getBySel("retire-button").should("be.enabled");
- cy.getBySel("retire-button").click();
- cy.intercept("**/tx/submit").as("submitTx");
- cy.wait("@submitTx").then((res) => {
- expect(
- res.response.statusCode,
- `[Submit Tx error]: ${res.response.body.message}`
- ).eq(200);
- });
- });
-
- // Given that the I'm connected to the wallet with the registered dRep account
- it("2H. Verify DRep behavior in Retired State", () => {
- loadWallet(dRepWallets.dRep2, { withStakeSigning: true });
- retireDRep();
- disconnectAndReconnectWallet(null, null, { withStakeSigning: true });
- if (isMobile()) {
- openMobileDrawer();
- }
- cy.getBySel("governance-actions-link").click();
- viewProposalDetails();
- cy.getBySel("vote-button").should("not.exist");
- });
-
- // Given that I'm an Ada-Holder
- it("2I. Should check validity of DRep Id", () => {
- connectWallet();
- const dRep = generateDRep();
-
- cy.getBySel("delegate-button").click();
- // not registered dRep id
- cy.getBySel("delegate-to-drep-card").click();
- cy.getBySel("next-step-button").click();
- cy.getBySel("dRep-id-input").type(getDRepIDHash(dRep.id));
- cy.getBySel("delegate-button").click();
- cy.contains("DrepId not found", { matchCase: false }).should("exist");
- cy.getBySel("confirm-modal-button").first().click({ force: true });
- cy.getBySel("dRep-id-input").clear();
- // registered dRep id
- cy.getBySel("dRep-id-input").type(
- getDRepIDHash(referenceWallets.dRep1.dRepId)
- );
- cy.getBySel("delegate-button").click();
- cy.contains("DrepId not found", { matchCase: false }).should("not.exist");
- });
-});
diff --git a/tests/govtool-frontend/cypress/e2e/3_user_story_drep_registration.cy.ts b/tests/govtool-frontend/cypress/e2e/3_user_story_drep_registration.cy.ts
deleted file mode 100644
index 9730e1af8..000000000
--- a/tests/govtool-frontend/cypress/e2e/3_user_story_drep_registration.cy.ts
+++ /dev/null
@@ -1,123 +0,0 @@
-import * as crypto from "crypto";
-import { random32BytesHex } from "../support/utils";
-import {
- connectWallet,
- loadWallet,
- waitForTxToComplete,
-} from "./actions/commonActions";
-import {
- checkForDRepRegistrationConfirmation,
- registerAsDRep,
-} from "./actions/dRepActions";
-import {
- validateDRepMetaHashInput,
- validateDRepURLInput,
-} from "../support/validations";
-import {
- adaHolderWallets,
- dRepWallets,
- referenceWallets,
-} from "../constants/wallet";
-
-describe("DRep registration", () => {
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- });
-
- it("3A. Should show dRepId on dashboard after connecting registered dRep Wallet", () => {
- loadWallet(referenceWallets.dRep1);
- checkForDRepRegistrationConfirmation(referenceWallets.dRep1.dRepId);
- });
-
- it("3B. Should access dRep registration page", () => {
- connectWallet();
- cy.getBySel("register-button").click();
- cy.contains("Add information", { matchCase: false });
- });
-
- it("3C. Should open wallet connection popup, when Register as DRep from wallet unconnected state", () => {
- cy.getBySel("register-connect-wallet-button").click();
- cy.getBySel("connect-your-wallet-modal").should("be.visible");
- });
-
- // Given that I'm connected to the wallet
- // User visits the DRep Registration page
- // DRep registration actions should be accessible
- it("3D.Should access DRep registration page in Wallet Connected State", () => {
- connectWallet();
- cy.getBySel("register-button").click();
- cy.getBySel("url-input").should("be.visible");
- cy.getBySel("hash-input").should("be.visible");
- cy.getBySel("skip-button").should("be.visible");
- });
-
- it("3E. Should reject invalid data and accept valid data", () => {
- connectWallet();
- cy.getBySel("register-button").click();
- // invalid datas
- const longUrl =
- "https://ipfs.io/ipfs/" + crypto.randomBytes(32).toString("hex");
- validateDRepURLInput(longUrl);
-
- const invalidUrl = "abcd";
- validateDRepURLInput(invalidUrl);
-
- const emptyUrl = " ";
- validateDRepURLInput(emptyUrl);
-
- const invalidHash = "ipfs://" + crypto.randomBytes(32).toString("hex");
- validateDRepMetaHashInput(invalidHash);
-
- // too short text should be invalid
- const tooShortHash = "abcd";
- validateDRepMetaHashInput(tooShortHash);
- // empty should be valid
- validateDRepMetaHashInput(" ");
-
- // valid datas
- const validUrl = "ipfs://" + crypto.randomBytes(28).toString("hex");
- const validHash = crypto.randomBytes(32).toString("hex");
- cy.getBySel("url-input").type(validUrl);
- cy.getBySel("hash-input").type(validHash);
- cy.getBySel("confirm-button").should("be.enabled");
- });
-
- // Given that I'm an ADA-Holder
- // When registering for DRep, wallet asks to sign the tx
- it("3F. Should create proper DRep registration request, when registered with data", () => {
- cy.intercept("**/utxo?**").as("getUtxos");
- connectWallet();
- cy.getBySel("register-button").click();
- cy.getBySel("url-input").type("https://google.com");
- cy.getBySel("hash-input").type(random32BytesHex());
- cy.getBySel("confirm-button").click();
- cy.getBySel("register-button").click();
- cy.wait("@getUtxos").then((interception) => {
- expect(interception.response.body.length).to.equal(0);
- });
- });
-
- it("3G: Should show confirmation message with link to view transaction, when DRep registration txn is submitted", () => {
- loadWallet(adaHolderWallets.adaHolder2);
- cy.getBySel("register-button").click();
- cy.getBySel("url-input").type(
- "ipfs://" + crypto.randomBytes(28).toString("hex")
- );
- cy.getBySel("hash-input").type(random32BytesHex());
- cy.getBySel("confirm-button").click();
- cy.getBySel("register-button").click();
- cy.getBySel("registration-transaction-submitted-modal").should(
- "be.visible"
- );
- waitForTxToComplete();
- cy.contains("this link");
- });
-
- it("3H. Should be able to update metadata.", () => {
- loadWallet(dRepWallets.dRep1);
- cy.getBySel("change-metadata-button").click();
- cy.getBySel("url-input").type("https://google.com");
- cy.getBySel("hash-input").should("be.visible").type(random32BytesHex());
- cy.getBySel("confirm-button").should("be.enabled");
- });
-});
diff --git a/tests/govtool-frontend/cypress/e2e/4_user_story_governance_action_visibility.cy.ts b/tests/govtool-frontend/cypress/e2e/4_user_story_governance_action_visibility.cy.ts
deleted file mode 100644
index b0fbfa29f..000000000
--- a/tests/govtool-frontend/cypress/e2e/4_user_story_governance_action_visibility.cy.ts
+++ /dev/null
@@ -1,114 +0,0 @@
-import { groupElements } from "../support/utils";
-import {
- checkGovernanceActionsVisibility,
- visitGovernanceActionsPage,
-} from "./actions/governanceActions";
-import {
- governanceActions,
- governanceSorts,
-} from "../constants/governanceActions";
-import {
- connectWallet,
- filterGovActions,
- sortElementByText,
- viewProposalDetails,
-} from "./actions/commonActions";
-import { validateSort } from "../support/validations";
-import { dRepWallets } from "../constants/wallet";
-
-describe("Governance Actions visibility", () => {
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- cy.intercept("**/proposal/list").as("getAllProposal");
- });
-
- it("4A: Should access Governance Actions page with/without connecting wallet", () => {
- // without wallet connection
- cy.getBySel("move-to-governance-actions-button").click();
- cy.wait("@getAllProposal", { timeout: 50000 });
- checkGovernanceActionsVisibility();
-
- // with wallet connection
- cy.visit(Cypress.env("baseUrl"));
- connectWallet();
- visitGovernanceActionsPage();
- checkGovernanceActionsVisibility();
- });
-
- it("4B: Should restrict voting for users who are not registered as DReps", () => {
- cy.getBySel("move-to-governance-actions-button").click();
- viewProposalDetails();
- cy.getBySel("vote-button").should("not.exist");
- });
-
- it("4C.1: Should filter Governance Action Type on governance actions page", () => {
- cy.intercept(`**/proposal/list?type=*`).as("getFilteredProposals");
- connectWallet();
- visitGovernanceActionsPage();
- cy.getBySel("filters-button").click();
- // single filter
- governanceActions.forEach((govAction) => {
- filterGovActions([govAction], () => {
- cy.wait("@getFilteredProposals");
- });
- });
-
- // multiple filters
- for (let i = 2; i <= governanceActions.length; i++) {
- filterGovActions(governanceActions.slice(0, i), () => {
- cy.wait("@getFilteredProposals");
- });
- }
- });
-
- it("4C.2: Should sort Governance Action Type on governance actions page", () => {
- cy.intercept({ method: "GET", url: "**/proposal/list?sort=*" }).as(
- "getSortedProposals"
- );
- connectWallet();
- visitGovernanceActionsPage();
- cy.getBySel("sort-button").click();
- governanceSorts.forEach((sort) => {
- sortElementByText(sort);
- cy.wait("@getSortedProposals").then((responseData: any) => {
- if (responseData) {
- const sortedData = groupElements(responseData.response.body);
- validateSort(sortedData);
- }
- });
- });
- });
-
- it("4C.3: Should filter and sort Governance Action Type on governance actions page", () => {
- cy.intercept(`**/proposal/list?type=*`).as("getFilteredProposals");
- cy.intercept({ method: "GET", url: "**/proposal/list?type=*sort=*" }).as(
- "getFilteredAndSortedProposals"
- );
- connectWallet();
- visitGovernanceActionsPage();
- cy.getBySel("filters-button").click();
- // single filter
- governanceActions.forEach((govAction) => {
- filterGovActions([govAction], () => {
- cy.wait("@getFilteredProposals");
- cy.getBySel("sort-button").click();
- governanceSorts.forEach((sort) => {
- sortElementByText(sort);
- cy.wait("@getFilteredAndSortedProposals").then(
- (responseData: any) => {
- if (responseData) {
- const sortedData = groupElements(responseData.response.body);
- validateSort(sortedData);
- }
- }
- );
- });
- cy.getBySel("filters-button").click();
- });
- });
- });
- // Not implemented in FE yet.
- it.skip(
- "4.D Should only view the proposals that are accepted by the Constitutional Committee."
- );
-});
diff --git a/tests/govtool-frontend/cypress/e2e/5_user_story_governance_action_functionality.cy.ts b/tests/govtool-frontend/cypress/e2e/5_user_story_governance_action_functionality.cy.ts
deleted file mode 100644
index 2100fbdf4..000000000
--- a/tests/govtool-frontend/cypress/e2e/5_user_story_governance_action_functionality.cy.ts
+++ /dev/null
@@ -1,177 +0,0 @@
-import { getDRepIDHash, injectOpen } from "../support/utils";
-import { randomBytes } from "crypto";
-import {
- castVote,
- visitGovernanceActionsPage,
-} from "./actions/governanceActions";
-import {
- validateDRepMetaHashInput,
- validateDRepURLInput,
-} from "../support/validations";
-import {
- connectWallet,
- loadWallet,
- viewProposalDetails,
-} from "./actions/commonActions";
-import { IProposal } from "../state/type";
-import { dRepWallets } from "../constants/wallet";
-
-describe("Governance Action Functionality", () => {
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- // stubbing responses
- cy.intercept("**/proposal/list", { fixture: "notVotedProposals.json" });
- cy.intercept(
- `**/drep/getVotes/${getDRepIDHash(dRepWallets.votedDRep.dRepId)}`,
- { fixture: "votedProposals.json" }
- ).as("getVotes");
- });
-
- it("5A: Should show relevant details about governance action as dRep.", () => {
- loadWallet(dRepWallets.dRep1);
- visitGovernanceActionsPage();
-
- viewProposalDetails();
- cy.contains("Expiry").should("exist");
- cy.contains("Governance Action Type").should("exist");
- cy.get("p:contains(View other details)").should("exist");
- cy.getBySel("vote-button").should("exist");
- cy.getBySel("yes-radio").should("exist");
- cy.getBySel("no-radio").should("exist");
- cy.getBySel("abstain-radio").should("exist");
- });
-
- it('5B: Should view "Vote" button on governance action item on registered as DRep', () => {
- loadWallet(dRepWallets.dRep1);
- visitGovernanceActionsPage();
-
- viewProposalDetails();
- cy.getBySel("vote-button").should("exist");
- });
-
- it("5C: Should show required field in proposal voting on registered as DRep", () => {
- loadWallet(dRepWallets.dRep1);
- visitGovernanceActionsPage();
-
- viewProposalDetails();
- cy.getBySel("yes-radio").should("exist");
- cy.getBySel("no-radio").should("exist");
- cy.getBySel("abstain-radio").should("exist");
- cy.getBySel("context-button").click();
- cy.getBySel("url-input").should("be.visible");
- cy.getBySel("hash-input").should("be.visible");
- cy.getBySel("yes-radio").click();
- cy.getBySel("vote-button").should("be.enabled");
- });
-
- it("5D: Should validate proposal voting", () => {
- const invalidURLs = ["testdotcom", "https://testdotcom", "https://test.c"];
- const validURLs = ["https://test.com"];
- loadWallet(dRepWallets.dRep1);
- visitGovernanceActionsPage();
-
- viewProposalDetails();
- cy.getBySel("context-button").click();
- invalidURLs.forEach((url) => {
- validateDRepURLInput(url);
- });
-
- validURLs.forEach((url) => {
- validateDRepURLInput(url, false);
- });
-
- // invalid hash
- const hash20Bytes = randomBytes(20).toString("hex");
- validateDRepMetaHashInput(hash20Bytes);
-
- const hash32BytesString = randomBytes(32).toString();
- validateDRepMetaHashInput(hash32BytesString);
-
- // valid hash
- const hash32Bytes = randomBytes(32).toString("hex");
- validateDRepMetaHashInput(hash32Bytes, false);
- });
-
- // The proposals should include following criteria
- // The proposals must be already voted by (VotedDRep)
- // As a dRep which has already voted
- it("5E: Should re-vote with new data on a already voted governance action.", () => {
- cy.fixture("votedProposals.json").then((proposals) => {
- cy.intercept("**/proposal/list").as("getAllProposal");
- console.log({ proposals });
- const votedProposal: IProposal = proposals[0].proposal;
- const proposalID = `${votedProposal.txHash}#${votedProposal.index}`;
- loadWallet(dRepWallets.votedDRep, { withStakeSigning: true });
- visitGovernanceActionsPage();
- cy.getBySel("voted-tab").click();
- cy.wait("@getVotes");
- cy.contains("Yes", { matchCase: false });
- cy.getBySel(`govaction-${proposalID}-change-your-vote`).click();
- cy.getBySel("no-radio").click();
- cy.getBySel("context-button").click();
- cy.getBySel("url-input").clear().type("https://test.com");
- cy.getBySel("hash-input").clear().type(randomBytes(32).toString("hex"));
- castVote("changeVote");
- cy.getBySel("voted-tab").click();
- cy.wait("@getAllProposal");
- cy.contains("No", { matchCase: false });
- });
- });
-
- it("5F: Should show notification of casted vote after vote", () => {
- cy.fixture("notVotedProposals.json").then((proposals) => {
- const proposalToVote: IProposal = proposals[0];
- const proposalID = `${proposalToVote.txHash}#${proposalToVote.index}`;
- loadWallet(dRepWallets.dRep1, { withStakeSigning: true });
- visitGovernanceActionsPage();
- cy.getBySel(`govaction-${proposalID}-view-detail`).click();
- cy.getBySel("context-button").click();
- cy.getBySel("yes-radio").click();
- cy.getBySel("url-input").clear().type("https://test.com");
- cy.getBySel("hash-input").clear().type(randomBytes(32).toString("hex"));
- castVote();
- });
- });
-
- it.skip(
- "5G: Given governance action headline is clicked, JSON metadata url is opened in new tab"
- );
-
- it.skip(
- "5H: Given governance action headline is clicked, warn user to validate the metadata hash themselves"
- );
-
- it("5I: Should show warning to the users to visit the site at their own risk, when external url is opened", () => {
- connectWallet();
- visitGovernanceActionsPage();
-
- viewProposalDetails();
- cy.getBySel("view-other-details-button").click();
- cy.getBySel("external-link-modal").should("be.visible");
- });
-
- it("5J: Should open a new tab, when external URL is opened", () => {
- connectWallet();
- visitGovernanceActionsPage();
-
- viewProposalDetails();
- cy.getBySel("view-other-details-button").click();
- cy.getBySel("external-link-modal").should("be.visible");
- let res = injectOpen();
- cy.getBySel("continue-modal-button").click();
- cy.wait(100).then(() => {
- expect(res.args[0]).to.exist;
- expect(res.args[1]).to.equal("_blank");
- });
- });
-
- // Given that I am logged into the app as a dRep
- // When I view governance actions I can see which ones I have personally voted on and how I voted
- it("5K: Should view the vote details,when viewing governance action already voted by the DRep", () => {
- loadWallet(dRepWallets.votedDRep);
- visitGovernanceActionsPage();
-
- cy.getBySel("voted-tab").click();
- cy.contains("Yes", { matchCase: false });
- });
-});
diff --git a/tests/govtool-frontend/cypress/e2e/6_user_story_miscellaneous.cy.ts b/tests/govtool-frontend/cypress/e2e/6_user_story_miscellaneous.cy.ts
deleted file mode 100644
index a74614cf7..000000000
--- a/tests/govtool-frontend/cypress/e2e/6_user_story_miscellaneous.cy.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { injectOpen, isMobile, random32BytesHex } from "../support/utils";
-import * as mockWallet from "../lib/wallet/mockWallet";
-import {
- checkInvalidityOfDRepId,
- connectWallet,
- openMobileDrawer,
-} from "./actions/commonActions";
-
-describe("Miscellaneous", () => {
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- });
- // All testes can be tested for mobile
- it.skip("6A: Should be accessible from mobile", () => {});
-
- it("6B. Provides error for invalid format", () => {
- connectWallet();
-
- // invalid dRep id
- checkInvalidityOfDRepId("Random values");
- cy.getBySel("confirm-modal-button").first().click({ force: true });
- cy.go(-2);
- // invalid dRep registration
- cy.getBySel("register-button").click();
- cy.getBySel("url-input").type("abc");
- cy.getBySel("invalid-url-format-error").should("be.visible");
-
- cy.getBySel("hash-input").type("abc");
- cy.getBySel("hash-must-be-exactly-64-characters-long-error").should(
- "be.visible"
- );
- });
-
- it("6C. Navigation within the dApp ", () => {
- if (isMobile()) {
- openMobileDrawer();
- }
- cy.getBySel("governance-actions-link").click();
- cy.url().should("include", "/governance_actions");
- if (isMobile()) {
- openMobileDrawer();
- }
- const res = injectOpen();
- cy.getBySel("guides-link").click();
- cy.wait(100).then(() => {
- expect(res.args[1]).to.equal("_blank");
- });
- if (isMobile()) {
- openMobileDrawer();
- }
- cy.getBySel("faqs-link").click();
- cy.wait(100).then(() => {
- expect(res.args[1]).to.equal("_blank");
- });
- if (isMobile()) {
- openMobileDrawer();
- }
- cy.getBySel("home-link").click();
- cy.url().should("include", "/");
- });
-
- it("6D. Proper label and recognition of the testnet network", () => {
- connectWallet();
- cy.contains("testnet");
- });
-
- //Skipped: Mainnet cannot be connected from testnet
- it.skip("6E. Proper label and recognition of the mainnet network");
-});
diff --git a/tests/govtool-frontend/cypress/e2e/actions/cleanUpActions.ts b/tests/govtool-frontend/cypress/e2e/actions/cleanUpActions.ts
deleted file mode 100644
index bc0db74d8..000000000
--- a/tests/govtool-frontend/cypress/e2e/actions/cleanUpActions.ts
+++ /dev/null
@@ -1,94 +0,0 @@
-import { ShelleyWallet } from "../../lib/wallet/crypto";
-import {
- CipMethodOverride,
- StaticWallet,
- WalletParams,
-} from "../../lib/wallet/types";
-import { convertUint8ArrayToHex } from "../../support/utils";
-import { disconnectAndReconnectWallet } from "./commonActions";
-import kuberService from "../../services/kuberService";
-import { pollTxWithKuber } from "../../services/apiService";
-
-export function cleanUpStaticWallet(
- walletJson: StaticWallet,
- overrides?: CipMethodOverride,
- walletParams?: WalletParams
-) {
- cy.log(`Check for ${walletJson.type} cleanup.....`);
- if (walletJson.type == "dRep") {
- cy.get("body").then((bodyElement) => {
- const generatedWallet = ShelleyWallet.fromJson(walletJson);
- if (bodyElement.find('[data-testid="dRep-id-display"]').length == 0) {
- cy.log("DRep clean up process (DRep registration).....");
- registerDRepAndReconnect(generatedWallet, overrides, walletParams);
- }
- if (bodyElement.find('[data-testid="delegated-to-drep-id"]').length > 0) {
- cy.log("AdaHolder clean up process (Abstain delegation).....");
- abstainDelegationAndReconnect(generatedWallet, overrides, walletParams);
- } else if (
- bodyElement.find(":contains('ABSTAIN')").length === 0 &&
- bodyElement.find('[data-testid="change-dRep-button"]').length > 0
- ) {
- cy.log("AdaHolder clean up process (Abstain delegation).....");
- abstainDelegationAndReconnect(generatedWallet, overrides, walletParams);
- }
- });
- } else if (walletJson.type == "adaHolder") {
- cy.get("body").then({ timeout: 2 * 60 * 1000 }, (bodyElement) => {
- const generatedWallet = ShelleyWallet.fromJson(walletJson);
- if (bodyElement.find('[data-testid="dRep-id-display"]').length > 0) {
- cy.log("AdaHolder clean up process (DRep de-registration).....");
- deRegisterDRepAndReconnect(generatedWallet, overrides, walletParams);
- }
- if (bodyElement.find('[data-testid="delegated-to-drep-id"]').length > 0) {
- cy.log("AdaHolder clean up process (Abstain delegation).....");
- abstainDelegationAndReconnect(generatedWallet, overrides, walletParams);
- }
- });
- }
-}
-
-function deRegisterDRepAndReconnect(wallet, overrides, walletParams) {
- cy.wrap(
- kuberService.dRepDeRegistration(
- wallet.addressBech32(0),
- convertUint8ArrayToHex(wallet.paymentKey.private),
- convertUint8ArrayToHex(wallet.stakeKey.private),
- convertUint8ArrayToHex(wallet.stakeKey.pkh)
- )
- ).then({ timeout: 5 * 60 * 1000 }, async (tx: any) => {
- await pollTxWithKuber(tx.txId);
- cy.wait(5000); // Wait for db sync
- disconnectAndReconnectWallet(null, overrides, walletParams);
- });
-}
-
-function registerDRepAndReconnect(wallet, overrides, walletParams) {
- cy.wrap(
- kuberService.dRepRegistration(
- wallet.addressBech32(0),
- convertUint8ArrayToHex(wallet.paymentKey.private),
- convertUint8ArrayToHex(wallet.stakeKey.pkh)
- )
- ).then({ timeout: 5 * 60 * 1000 }, async (tx: any) => {
- await pollTxWithKuber(tx.txId);
- cy.wait(5000); // Wait for db sync
- disconnectAndReconnectWallet(null, overrides, walletParams);
- });
-}
-
-function abstainDelegationAndReconnect(wallet, overrides, walletParams) {
- cy.wrap(
- kuberService.stakeDelegation(
- wallet.addressBech32(0),
- convertUint8ArrayToHex(wallet.paymentKey.private),
- convertUint8ArrayToHex(wallet.stakeKey.private),
- convertUint8ArrayToHex(wallet.stakeKey.pkh),
- "abstain"
- )
- ).then({ timeout: 5 * 60 * 1000 }, async (tx: any) => {
- await pollTxWithKuber(tx.txId);
- cy.wait(5000); // Wait for db sync
- disconnectAndReconnectWallet(null, overrides, walletParams);
- });
-}
diff --git a/tests/govtool-frontend/cypress/e2e/actions/commonActions.ts b/tests/govtool-frontend/cypress/e2e/actions/commonActions.ts
deleted file mode 100644
index bb47fff32..000000000
--- a/tests/govtool-frontend/cypress/e2e/actions/commonActions.ts
+++ /dev/null
@@ -1,216 +0,0 @@
-import { mkWallet } from "../../lib/wallet/mockWallet";
-import {
- CIP30Provider,
- CipMethodOverride,
- StaticWallet,
- WalletParams,
-} from "../../lib/wallet/types";
-import { validateFilter } from "../../support/validations";
-import { ShelleyWallet, ShelleyWalletAddress } from "../../lib/wallet/crypto";
-import { mkCardanoWalletExtension } from "../../lib/wallet/cardanoWallet";
-import walletState from "../../state/walletState";
-import { destructWalletArgs, isMobile } from "../../support/utils";
-
-import { cleanUpStaticWallet } from "./cleanUpActions";
-import { pollTxWithKuber } from "../../services/apiService";
-import kuberService from "../../services/kuberService";
-import { bootstrapWallet } from "../../constants/wallet";
-
-export function injectWallet(wallet: CIP30Provider) {
- cy.window().then((w: any) => {
- w.cardano = {
- demos: wallet || mkWallet(),
- };
- });
-}
-
-export function injectCardanoWallet(wallet: Promise) {
- cy.window().then(async (w: any) => {
- w.cardano = {
- demos: await wallet,
- };
- });
-}
-
-export async function initiateWalletConnection(
- overrides?: CipMethodOverride,
- walletParams?: WalletParams
-): Promise {
- const walletToInjected = mkCardanoWalletExtension(overrides, walletParams);
- injectCardanoWallet(walletToInjected);
- return await walletToInjected;
-}
-
-export async function initializeWallet(
- wallet: ShelleyWallet,
- overrides?: CipMethodOverride,
- walletParams?: WalletParams
-): Promise {
- return await mkCardanoWalletExtension(overrides, walletParams, wallet);
-}
-
-export function loadAndInjectWallet(
- wallet: ShelleyWallet,
- overrides?: CipMethodOverride,
- walletParams?: WalletParams
-) {
- injectCardanoWallet(initializeWallet(wallet, overrides, walletParams));
-}
-
-export function filterGovActions(
- govActions: string[],
- onFilterCallback?: () => void,
- element = "div"
-) {
- for (const govAction of govActions) {
- cy.get(element)
- .contains(govAction, { matchCase: false })
- .parent()
- .within(() => {
- cy.get("input").click();
- // cy.getBySel(`${govAction.replace(/ /g, "")}-checkbox`).click();
- });
- }
- onFilterCallback();
- for (const govAction of govActions) {
- validateFilter(govAction);
- }
- // Uncheck the filter after it's completed
- for (const govAction of govActions) {
- cy.get(element)
- .contains(govAction, { matchCase: false })
- .parent()
- .within(() => {
- cy.getBySel(`${govAction.replace(/ /g, "")}-checkbox`).uncheck();
- });
- }
-}
-
-export function sortElementByText(text: string, element = "span") {
- cy.get(element)
- .contains(text, { matchCase: false })
- .parent()
- .within(() => {
- cy.get("input").check();
- });
-}
-
-export function openMobileDrawer() {
- cy.getBySel("open-drawer-button").click({ force: true });
-}
-
-export function checkInvalidityOfDRepId(invalidDRepId: string) {
- cy.getBySel("delegate-button").click();
- cy.getBySel("delegate-to-drep-card").click();
- cy.getBySel("next-step-button").click();
- cy.get("input").type(invalidDRepId);
- cy.getBySel("delegate-button").click();
- cy.getBySel("delegation-transaction-error-modal").should("exist");
-}
-
-export function viewProposalDetails() {
- cy.get('[data-testid^="govaction-"][data-testid$="-view-detail"]')
- .first()
- .click();
-}
-
-export function disconnectAndReconnectWallet(
- walletToInject?: ShelleyWallet,
- overrides?: CipMethodOverride,
- walletParams?: WalletParams
-) {
- if (isMobile()) {
- openMobileDrawer();
- }
- cy.getBySel("disconnect-button").click();
- cy.wrap(
- loadAndInjectWallet(
- walletToInject || walletState.getWallet(),
- overrides,
- walletParams
- )
- );
- cy.clearCookie(Cypress.env("baseUrl"));
- cy.clearLocalStorage();
- cy.getBySel("connect-wallet-button").wait(100).first().click();
- cy.getBySel("demos-wallet-button").eq(1).click({ force: true });
- cy.getBySel("confirm-modal-button").first().click({ force: true }); // accept the info about sancho net};
- cy.wait(6000); // Waiting for wallet initialization
-}
-export function waitForTxToComplete() {
- cy.wrap(0).then({ timeout: 5 * 60 * 1000 }, async () => {
- console.log("Waiting for Tx to complete");
- const txHash = walletState.getTxHash();
- if (txHash === undefined) return;
-
- console.debug("Waiting for tx: " + txHash);
- await pollTxWithKuber(txHash);
- });
-}
-
-export function connectWallet(args?: CipMethodOverride & WalletParams) {
- const { overrides, walletParams } = destructWalletArgs(args);
- cy.wrap(initiateWalletConnection(overrides, walletParams)).then(
- { timeout: 5 * 60 * 1000 },
- async (injectedWallet: CIP30Provider) => {
- cy.getBySel("connect-wallet-button").wait(100).first().click();
- cy.getBySel("demos-wallet-button").eq(1).click({ force: true });
- // cy.getBySel("demos-wallet-button").click();
- cy.getBySel("confirm-modal-button").first().click({ force: true }); // accept the info about sancho net
- const walletInstance = await injectedWallet.enable();
-
- // load amount from faucet
- if (args && walletParams.loadFundsAndRegister) {
- console.debug("Loading faucet...");
- const shellyWalletAddress = ShelleyWalletAddress.fromRawBytes(
- await walletInstance.getChangeAddress()
- );
- const { txId } = await loadAmountFromBootStrapWallet([
- shellyWalletAddress.toBech32(),
- ]);
- await pollTxWithKuber(txId);
- // await pollTx(txId);
- }
- // Handle multiple stake keys
- if ("cip95" in walletInstance) {
- const stakeKeys =
- await walletInstance.cip95.getRegisteredPubStakeKeys();
- const rewardAddress = await walletInstance.getRewardAddresses();
- if (stakeKeys.length > 1) {
- console.log("Stake Keys:", stakeKeys);
- console.log("Reward address:", rewardAddress);
- cy.getBySel(`${rewardAddress[0]}-radio`);
- cy.contains("Voting power").click();
- cy.getBySel("select-button").click();
- }
- }
- cy.getBySel("alert-success", { timeout: 6000 }).should("be.visible");
- cy.wait(6000); // Waiting for wallet initialization
- }
- );
-}
-
-export const loadWallet = (
- walletJson: StaticWallet,
- args?: CipMethodOverride & WalletParams
-) => {
- cy.log(`Loading ${walletJson.type} wallet`);
- const { overrides, walletParams } = destructWalletArgs(args);
- const wallet = ShelleyWallet.fromJson(walletJson);
- cy.wrap(loadAndInjectWallet(wallet, overrides, walletParams));
- cy.log("Wallet injected");
- cy.getBySel("connect-wallet-button").wait(100).first().click();
- cy.getBySel("demos-wallet-button").eq(1).click({ force: true });
- cy.getBySel("confirm-modal-button").first().click({ force: true }); // accept the info about sancho net};
- cy.getBySel("alert-success", { timeout: 6000 }).should("be.visible");
- cy.wait(6000); // Waiting for wallet initialization
- cleanUpStaticWallet(walletJson, overrides, walletParams);
-};
-
-export async function loadAmountFromBootStrapWallet(addressList: string[]) {
- return await kuberService.transferADA(
- bootstrapWallet.address,
- addressList,
- bootstrapWallet.payment.private
- );
-}
diff --git a/tests/govtool-frontend/cypress/e2e/actions/dRepActions.ts b/tests/govtool-frontend/cypress/e2e/actions/dRepActions.ts
deleted file mode 100644
index 5c0e5f0a8..000000000
--- a/tests/govtool-frontend/cypress/e2e/actions/dRepActions.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import { waitForTxToComplete } from "./commonActions";
-
-export function registerAsDRep() {
- cy.getBySel("register-button").click();
- cy.getBySel("skip-button").click();
- cy.getBySel("register-button").click();
- cy.getBySel("registration-transaction-submitted-modal").should("be.visible");
- cy.getBySel("confirm-modal-button").first().click({ force: true });
- waitForTxToComplete();
-}
-
-export function retireDRep() {
- cy.getBySel("retire-button").click();
- cy.intercept("**/tx/submit").as("submitTx");
- cy.wait("@submitTx").then((res) => {
- expect(
- res.response.statusCode,
- `[Submit Tx error]: ${res.response.body.message}`
- ).eq(200);
- });
- cy.getBySel("retirement-transaction-submitted-modal").should("be.visible");
- cy.getBySel("confirm-modal-button").first().click({ force: true });
- waitForTxToComplete();
- cy.contains("in progress", { timeout: 30 * 1000, matchCase: false }).should(
- "not.exist"
- );
-}
-
-export function checkForDRepRegistrationConfirmation(expectedDRepId: string) {
- cy.getBySel("dRep-id-display", { timeout: 30 * 1000 }).then(($dRepIdEl) => {
- cy.wrap($dRepIdEl).should("contain", expectedDRepId);
- });
-}
-
-export function verifyVoteOnProposal() {
- cy.contains("button", "View proposal details", { matchCase: false }).click();
- cy.getBySel("abstain-radio").click();
- cy.getBySel("yes-radio").click();
- cy.getBySel("no-radio").click();
- cy.getBySel("vote-button").should("be.visible");
-}
diff --git a/tests/govtool-frontend/cypress/e2e/actions/delegateActions.ts b/tests/govtool-frontend/cypress/e2e/actions/delegateActions.ts
deleted file mode 100644
index 6ce50f596..000000000
--- a/tests/govtool-frontend/cypress/e2e/actions/delegateActions.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import { waitForTxToComplete } from "./commonActions";
-import { getDRepIDHash } from "../../support/utils";
-
-const enum DelegationOptions {
- delegateTodRep = "delegate-to-drep-card",
- delegateToMyself = "delegate-to-myself",
-}
-
-export function changeDRepDelegation(
- dRepId: string,
- option: DelegationOptions = DelegationOptions.delegateTodRep
-) {
- cy.getBySel("change-dRep-button").click();
- delegate(dRepId, option);
- waitForTxToComplete();
-}
-
-export function delegateToDRepId(dRepId: string, convertToHash = true) {
- delegate(dRepId, DelegationOptions.delegateTodRep, convertToHash);
-}
-
-export function delegateToMyself() {
- delegate("", DelegationOptions.delegateToMyself);
-}
-function delegate(
- dRepId: string,
- option: DelegationOptions = DelegationOptions.delegateTodRep,
- convertToHash = true
-) {
- const hashedDRepId =
- convertToHash && dRepId !== "" ? getDRepIDHash(dRepId) : dRepId;
-
- if (option === DelegationOptions.delegateTodRep) {
- cy.getBySel("delegate-to-drep-card").click();
- cy.getBySel("next-step-button").click();
- cy.getBySel("dRep-id-input").type(hashedDRepId);
- } else if (option === DelegationOptions.delegateToMyself) {
- cy.getBySel("delegate-to-myself-card").click();
- }
- cy.getBySel("delegate-button").click();
- cy.getBySel("delegation-transaction-submitted-modal").should("be.visible");
- cy.getBySel("confirm-modal-button").first().click({ force: true });
- waitForTxToComplete();
-}
-
-export function checkForDelegationConfirmation(dRepId: string) {
- cy.getBySel("change-dRep-button", { timeout: 30 * 1000 }).should("exist");
- cy.contains(dRepId).should("exist");
-}
-
-export function clickDelegateButton() {
- cy.get("body").then((bodyElement) => {
- if (bodyElement.find('[data-testid="delegate-button"]').length > 0) {
- cy.getBySel("delegate-button").click();
- } else {
- cy.getBySel("change-dRep-button").click();
- }
- });
-}
diff --git a/tests/govtool-frontend/cypress/e2e/actions/governanceActions.ts b/tests/govtool-frontend/cypress/e2e/actions/governanceActions.ts
deleted file mode 100644
index 5ab3810ea..000000000
--- a/tests/govtool-frontend/cypress/e2e/actions/governanceActions.ts
+++ /dev/null
@@ -1,58 +0,0 @@
-import { governanceActions } from "../../constants/governanceActions";
-import { isMobile } from "../../support/utils";
-import { openMobileDrawer, waitForTxToComplete } from "./commonActions";
-
-export function visitGovernanceActionsPage() {
- cy.intercept("**/proposal/list").as("getAllProposal");
- if (isMobile()) {
- openMobileDrawer();
- }
- cy.getBySel("governance-actions-link").click();
- cy.url().should("include", "/governance_actions");
- // Waits for proposals to be loaded for further governance actions functionality
- cy.wait("@getAllProposal", { timeout: 5000 });
-}
-
-function isViewProposalDetailsButtonMissing($slider: any) {
- return !(
- $slider.find('[data-testid^="govaction-"][data-testid$="-view-detail"]')
- .length > 0
- );
-}
-
-function isExpectedProposalTypeMissing($slide: any) {
- for (const type of governanceActions) {
- if ($slide.find(`p:contains(${type})`).length > 0) {
- return false;
- }
- }
-
- return true;
-}
-
-export const checkGovernanceActionsVisibility = () => {
- cy.get(".keen-slider")
- .find(".keen-slider__slide")
- .each(($slide) => {
- if ($slide.find("p:contains(Governance Action Type)").length > 0) {
- if (isExpectedProposalTypeMissing($slide)) {
- throw new Error("Expected proposals are missing");
- }
- if (isViewProposalDetailsButtonMissing($slide)) {
- throw new Error("View proposal button missing");
- }
- }
- });
-};
-
-export const castVote = (castOption: "newVote" | "changeVote" = "newVote") => {
- if (castOption === "changeVote") {
- cy.getBySel("change-vote").click();
- } else {
- cy.getBySel("vote-button").click();
- }
- cy.intercept("**/tx/submit").as("submitTx");
- cy.wait("@submitTx");
- cy.getBySel("alert-success").should("be.visible");
- waitForTxToComplete();
-};
diff --git a/tests/govtool-frontend/cypress/e2e/security/7.1_security_overflow_data_headers.cy.ts b/tests/govtool-frontend/cypress/e2e/security/7.1_security_overflow_data_headers.cy.ts
deleted file mode 100644
index 5c8ccb723..000000000
--- a/tests/govtool-frontend/cypress/e2e/security/7.1_security_overflow_data_headers.cy.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-import { governanceActions } from "../../constants/governanceActions";
-import {
- validateDRepMetaHashInput,
- validateDRepURLInput,
-} from "../../support/validations";
-import {
- connectWallet,
- disconnectAndReconnectWallet,
- viewProposalDetails,
-} from "../actions/commonActions";
-import * as crypto from "crypto";
-import { visitGovernanceActionsPage } from "../actions/governanceActions";
-import { ShelleyWallet } from "../../lib/wallet/crypto";
-import { referenceWallets } from "../../constants/wallet";
-
-describe("Test for Overflows, Valid/Invalid data and Headers", () => {
- if (Cypress.env("disableSecurityTest")) return;
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- });
-
- // Input Size Testing
- it("7.1.1: Should reject excessively long inputs", () => {
- // DRep registration
- connectWallet();
- cy.getBySel("register-button").click();
- const longInput = "a".repeat(1500);
- cy.getBySel("url-input").type(longInput).blur();
- cy.getBySel("hash-input").type(longInput).blur();
- cy.go("back");
- // Search input (Governance actions)
- visitGovernanceActionsPage();
- cy.getBySel("search-input").type(longInput).clear().blur();
-
- // Vote on Proposal form
- disconnectAndReconnectWallet(
- ShelleyWallet.fromJson(referenceWallets.dRep1)
- );
- visitGovernanceActionsPage();
- viewProposalDetails();
- cy.getBySel("context-button").click();
- cy.getBySel("url-input").type(longInput).blur();
- cy.getBySel("hash-input").type(longInput).blur();
- });
-
- // Valid/Invalid Data Testing
- it("7.1.2: Should accept valid data and reject the invalid data", () => {
- // DRep registration
- connectWallet();
- cy.getBySel("register-button").click();
- dRepFormValidation();
-
- // Search input (Governance actions)
- cy.go("back");
- // Positive data
- visitGovernanceActionsPage();
- governanceActions.forEach((action) => {
- cy.getBySel("search-input").type(action).blur();
- cy.contains(action);
- cy.getBySel("search-input").clear();
- });
-
- // Negative data
- cy.getBySel("search-input").type("nono").blur();
- cy.contains("There're any Governance Actions yet.").should("be.visible");
- cy.getBySel("search-input").clear();
-
- // Vote on Proposal form
- viewProposalDetails();
- dRepFormValidation();
- });
-
- it("7.1.3.a: Should contain CSP header", () => {
- const urlsToTest = ["", "governance_actions"];
- urlsToTest.map((url) => {
- cy.request({
- method: "GET",
- url: Cypress.env("baseUrl") + url,
- }).then((response) => {
- expect(response.headers).to.have.property("content-security-policy");
- });
- });
- });
-
- it("7.1.3.b: Should handle CORS request properly", () => {
- cy.request({
- method: "GET",
- url: Cypress.env("apiUrl") + "/proposal/list",
- headers: {
- Origin: "https://another-origin.com",
- },
- }).then((response) => {
- expect(response.headers).to.have.property("access-control-allow-origin");
- expect(response.headers).to.not.have.property(
- "access-control-allow-origin",
- "*"
- );
- });
- });
-
- it("7.1.3.c: Should match the actual content", () => {
- cy.visit(Cypress.env("baseUrl"));
- const endPointsContentTypes = [
- { endpoint: "/proposal/list", contentType: "application/json" },
- { endpoint: "/drep/list", contentType: "application/json" },
- ];
- endPointsContentTypes.forEach((endpoint) => {
- cy.request(Cypress.env("apiUrl") + endpoint.endpoint).then((response) => {
- expect(response.headers).to.have.property("content-type");
-
- const contentTypeHeader = response.headers["content-type"];
- expect(contentTypeHeader).to.include(endpoint.contentType);
- });
- });
- });
-});
-
-const dRepFormValidation = () => {
- const invalidUrls = [
- "https://ipfs.io/ipfs/" + crypto.randomBytes(32).toString("hex"),
- "abcd",
- " ",
- ];
- const invalidHashs = [
- "ipfs://" + crypto.randomBytes(32).toString("hex"),
- "abcd",
- " ",
- ];
- const validHash = crypto.randomBytes(32).toString("hex");
- const validUrl = "ipfs://QmXqBdW3t6jFwz3L4pRy7zmZGKEzj7qHpA7ZyG6Zr45nsw";
-
- // Negative Tests
- invalidUrls.forEach((url) => {
- validateDRepURLInput(url);
- });
- invalidHashs.forEach((url) => {
- validateDRepMetaHashInput(url);
- });
-
- // Positive Tests
- validateDRepURLInput(validUrl, false);
- validateDRepMetaHashInput(validHash, false);
-};
diff --git a/tests/govtool-frontend/cypress/e2e/security/7.3_security_xss.cy.ts b/tests/govtool-frontend/cypress/e2e/security/7.3_security_xss.cy.ts
deleted file mode 100644
index 62798db6b..000000000
--- a/tests/govtool-frontend/cypress/e2e/security/7.3_security_xss.cy.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import { referenceWallets } from "../../constants/wallet";
-import { ShelleyWallet } from "../../lib/wallet/crypto";
-import {
- connectWallet,
- disconnectAndReconnectWallet,
- viewProposalDetails,
-} from "../actions/commonActions";
-import { visitGovernanceActionsPage } from "../actions/governanceActions";
-
-describe("Cross Site Scripting", () => {
- if (Cypress.env("disableSecurityTest")) return;
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- });
-
- // Input Fields Testing
- it("7.3.1: Should prevent script from injection in input fields", () => {
- connectWallet();
- const script = "";
- // DRep Registration page
- cy.getBySel("register-button").click();
- dRepFormXSS(script);
-
- cy.go("back");
- disconnectAndReconnectWallet(
- ShelleyWallet.fromJson(referenceWallets.dRep1)
- );
- // Positive data
- visitGovernanceActionsPage();
- cy.getBySel("search-input").type(script).blur();
- listenXSSAlert();
-
- cy.getBySel("search-input").clear();
-
- // Vote on Proposal form
- viewProposalDetails();
- cy.getBySel("context-button").click();
- dRepFormXSS(script);
- });
-
- // Output Rendering Testing
- it("7.3.2: Should properly encode or escape user generated content", () => {
- const maliciousContent =
- "User-generated content with a
";
- cy.intercept("**/proposal/list", (req) => {
- req.continue((res) => {
- res.body = [...res.body, { ...res.body[0], type: maliciousContent }];
- });
- });
-
- cy.intercept("**/drep/get-voting-power/*", (req) => {
- req.continue((res) => {
- res.body = maliciousContent;
- });
- });
- connectWallet();
- visitGovernanceActionsPage();
- listenXSSAlert();
- });
-});
-
-const dRepFormXSS = (script: string) => {
- cy.getBySel("url-input").type(script).blur();
- cy.getBySel("hash-input").type(" ").blur();
- listenXSSAlert();
-};
-
-const listenXSSAlert = () => {
- cy.on("window:alert", (alertText) => {
- throw new Error(`Unexpected alert: ${alertText}`);
- });
-};
diff --git a/tests/govtool-frontend/cypress/e2e/security/7.4_sql_injection.cy.ts b/tests/govtool-frontend/cypress/e2e/security/7.4_sql_injection.cy.ts
deleted file mode 100644
index 812117913..000000000
--- a/tests/govtool-frontend/cypress/e2e/security/7.4_sql_injection.cy.ts
+++ /dev/null
@@ -1,111 +0,0 @@
-import { referenceWallets } from "../../constants/wallet";
-import { ShelleyWallet } from "../../lib/wallet/crypto";
-import {
- validateDRepMetaHashInput,
- validateDRepURLInput,
-} from "../../support/validations";
-import {
- connectWallet,
- disconnectAndReconnectWallet,
- viewProposalDetails,
-} from "../actions/commonActions";
-import { visitGovernanceActionsPage } from "../actions/governanceActions";
-
-const sqlVulnerable = "' OR '1'='1";
-const hexEncodedSqlVulnerable = Buffer.from(sqlVulnerable, "utf-8").toString(
- "hex"
-);
-
-describe("SQL Injection", () => {
- if (Cypress.env("disableSecurityTest")) return;
- beforeEach(() => {
- cy.visit(Cypress.env("baseUrl"));
- });
-
- it("7.4.1: Should prevent SQL Injection in input fields", () => {
- connectWallet();
- // DRep registration
- cy.getBySel("register-button").click();
- validateDRepURLInput(sqlVulnerable);
- validateDRepMetaHashInput(sqlVulnerable);
-
- cy.go("back");
-
- disconnectAndReconnectWallet(
- ShelleyWallet.fromJson(referenceWallets.dRep1)
- );
-
- // Proposal form
- visitGovernanceActionsPage();
- viewProposalDetails();
- cy.getBySel("context-button").click();
- cy.getBySel("url-input").type(sqlVulnerable).blur();
- cy.getBySel("hash-input").type(sqlVulnerable).blur();
- });
-
- it("7.4.2: Should prevent SQL Injection in query and path parameters", () => {
- // Sql injection in proposals query (Governance actions)
- checkForSqlVulnerable(`/proposal/list?type=${sqlVulnerable}`);
- // Sql injection in sort query (Governance actions)
- checkForSqlVulnerable(`/proposal/list?sort=${sqlVulnerable}`);
- // Sql injection in get-current-delegation path
- checkForSqlVulnerable(
- `/ada-holder/get-current-delegation/${hexEncodedSqlVulnerable}`
- );
- // Sql injection in adaHolder get-voting-power path
- checkForSqlVulnerable(
- `/ada-holder/get-voting-delegation/${hexEncodedSqlVulnerable}`
- );
- // Sql injection in dRep get-voting-power path
- checkForSqlVulnerable(
- `/dRep/get-voting-delegation/${hexEncodedSqlVulnerable}`
- );
- // Sql injection in dRep get-votes path
- checkForSqlVulnerable(`/dRep/getVotes/${hexEncodedSqlVulnerable}`);
- });
-
- it("7.4.3: Should prevent error based injection", () => {
- const sqlInjectionTests = [
- "'",
- "' '",
- '"',
- "“ ”",
- "\\",
- "\\\\",
- "' OR '1",
- "' OR 1 -- -",
- '" OR "" = "',
- '" OR 1 = 1 -- -',
- "'='",
- "'LIKE'",
- "'=0 -- +",
- ];
- sqlInjectionTests.forEach((test) => {
- // Sql injection in proposals query (Governance actions)
- checkForSqlVulnerable(`/proposal/list?type=${test}`);
- // Sql injection in sort query (Governance actions)
- checkForSqlVulnerable(`/proposal/list?sort=${test}`);
- // Sql injection in get-current-delegation path
- checkForSqlVulnerable(`/ada-holder/get-current-delegation/${test}`);
- // Sql injection injection in adaHolder get-voting-power path
- checkForSqlVulnerable(`/ada-holder/get-voting-delegation/${test}`);
- // Sql injection injection in dRep get-voting-power path
- checkForSqlVulnerable(`/dRep/get-voting-delegation/${test}`);
- // Sql injection injection in dRep get-votes path
- checkForSqlVulnerable(`/dRep/getVotes/${test}`);
- });
- });
-});
-
-function checkForSqlVulnerable(path: string) {
- cy.request({
- url: Cypress.env("apiUrl") + path,
- failOnStatusCode: false,
- }).then((resp) => {
- console.log(resp);
- expect(resp.status).to.eq(
- 400,
- `[SQL injection] URL:${Cypress.env("apiUrl")}${path}`
- );
- });
-}
diff --git a/tests/govtool-frontend/cypress/lib/logger/logger.ts b/tests/govtool-frontend/cypress/lib/logger/logger.ts
deleted file mode 100644
index 282544bb5..000000000
--- a/tests/govtool-frontend/cypress/lib/logger/logger.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-export class Logger {
- static success(msg: string) {
- console.debug(`\x1b[32m✔ ${msg}\x1b[0m`); // Green color
- }
-
- static fail(msg) {
- console.debug(`\x1b[33m✖ ${msg}\x1b[0m`); // Orange color
- }
-
- static info(msg: string) {
- console.debug(`\x1b[36mℹ ${msg}\x1b[0m`); // Cyan color
- }
-}
diff --git a/tests/govtool-frontend/cypress/lib/wallet/blockfrost.ts b/tests/govtool-frontend/cypress/lib/wallet/blockfrost.ts
deleted file mode 100644
index e3ae38d0e..000000000
--- a/tests/govtool-frontend/cypress/lib/wallet/blockfrost.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-const config = {
- apiUrl: "https://cardano-sanchonet.blockfrost.io/api/v0",
- apiKey: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
-};
-export const blockfrost = {
- async addresses(addr: string) {
- return await getBlockfrost("/addresses/" + addr).catch((e) => {
- if (e.status == 404) {
- return "00";
- } else {
- throw e;
- }
- });
- },
- async addressesUtxos(addr: string) {
- return await getBlockfrost("/addresses/" + addr + "/utxos?order=desc").catch((e) => {
- if (e.status == 404) {
- return [];
- } else {
- throw e;
- }
- });
- },
- async submitTransaction(tx:string){
- return await submitTransaction(Buffer.from(tx,'hex'))
- }
-};
-
-function getAssetDetail(asset: string) {
- return getBlockfrost("/assets/" + asset);
-}
-
-function getDatum(hash: string) {
- return getBlockfrost("/scripts/datum/" + hash);
-}
-function getTransactionDetails(txHash: any) {
- return getBlockfrost("/txs/" + txHash);
-}
-function getTransactionUtxos(txHash: any) {
- return getBlockfrost("/txs/" + txHash + "/utxos");
-}
-
-function getTransactions(addr: any) {
- return getBlockfrost("/addresses/" + addr + "/utxos");
-}
-
-
-function submitTransaction(txData: any) {
- const path = '/tx/submit';
- const method = 'POST';
- const contentType = 'application/cbor';
-
- return getBlockfrost(path, method, txData, contentType);
-
-}
-
-
-async function getBlockfrost(path: any, method: 'GET' | 'POST' = 'GET', body?: BodyInit,contentType?:string) {
- const url = config.apiUrl + path;
-
- const headers: Record = {
- project_id: config.apiKey,
- };
- if(contentType){
- headers['content-type']=contentType
- }
-
- const options: RequestInit = {
- method,
- headers,
- };
-
- if (method === 'POST' ) {
- if(body)
- options.body = body;
- }
-
- return fetch(url, options).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return res.text().then((txt) => {
- let err;
- let json: any;
- try {
- json = JSON.parse(txt);
- if (json) {
- err = Error(
- `BlockfrostApi [Status ${res.status}] : ${
- json.message ? json.message : txt
- }`
- );
- } else {
- err = Error(`BlockfrostApi [Status ${res.status}] : ${txt}`);
- }
- } catch (e) {
- err = Error(`BlockfrostApi [Status ${res.status}] : ${txt}`);
- }
- err.status = res.status;
- throw err;
- });
- }
- });
-}
diff --git a/tests/govtool-frontend/cypress/lib/wallet/cardanoWallet.ts b/tests/govtool-frontend/cypress/lib/wallet/cardanoWallet.ts
deleted file mode 100644
index a763850ef..000000000
--- a/tests/govtool-frontend/cypress/lib/wallet/cardanoWallet.ts
+++ /dev/null
@@ -1,329 +0,0 @@
-import * as blake from "blakejs";
-import {
- CIP30Provider,
- Cip95Instance,
- CipMethodOverride,
- WalletParams,
-} from "./types";
-import { encode, Decoder, Encoder, addExtension } from "cbor-x";
-import { ShelleyWallet } from "./crypto";
-import walletState from "../../state/walletState";
-import {
- cborxDecoder,
- cborxEncoder,
- getPubDRepIds,
- getTxHash,
-} from "../../support/utils";
-import { Logger } from "../logger/logger";
-import kuberService, * as kuber from "../../services/kuberService";
-import { KuberValue } from "../../models/types";
-import blockfrostService from "../../services/blockfrostService";
-
-class AuxData {
- value: any;
- constructor(value: any) {
- this.value = value;
- }
-}
-// this is required to override default beehaviour of AuxData
-addExtension({
- Class: AuxData,
- tag: 259, // register our own extension code for 259 tag
- encode(instance, encode) {
- return encode(instance.value);
- },
- decode(data: any) {
- return new AuxData(data);
- },
-});
-
-/**
- * Creates a CIP-30 and CIP-95 compliant wallet instance.
- *
- * @param {ShelleyWallet=} wallet_ - The Shelley wallet to use. If not provided, a new wallet will be generated.
- * @param {number=} networkId - The network ID for the wallet (0 for testnet, 1 for mainnet ).
- * @param {boolean=} withStakeSigning When set to true, when signing transactions, signature of stakeKey will also be added
- * @returns {Promise} A promise that resolves when the CIP-95 wallet is created.
- */
-
-export async function mkCip95Wallet(
- wallet_?: ShelleyWallet,
- networkId: number = 0,
- withStakeSigning = false,
- onSignTxCallback?: any,
- onWalletInitialized?: any
-) {
- const wallet = wallet_ || (await ShelleyWallet.generate());
- const walletAddress = wallet.addressBech32(networkId);
- // Setting wallet state for further use
- onWalletInitialized &&
- onWalletInitialized({
- wallet,
- stakePkh: Buffer.from(wallet.stakeKey.pkh).toString("hex"),
- signingKey: Buffer.from(wallet.paymentKey.private).toString("hex"),
- address: walletAddress,
- });
- console.debug("Wallet address:" + walletAddress);
- const walletAddressRaw = Buffer.from(wallet.addressRawBytes(networkId));
- const walletAddressHex = walletAddressRaw.toString("hex");
-
- const rewardAddr = Buffer.from(
- wallet.rewardAddressRawBytes(networkId)
- ).toString("hex");
- const stakePublicKey = Buffer.from(wallet.stakeKey.public).toString("hex");
- const dRepDetails = getPubDRepIds(stakePublicKey);
- console.debug("Injected Wallet DRepIds: " + JSON.stringify(dRepDetails));
- const walletInstance: Cip95Instance & {
- experimental: Record;
- } = {
- getBalance: async () => {
- const apiResponse = await blockfrostService.addresses(walletAddress);
- return Buffer.from(encode(amountToObject(apiResponse.amount))).toString(
- "hex"
- );
- },
-
- submitTx: async (tx) => {
- console.debug("[CardanoWallet] SubmittingTx: ", tx);
- return await kuberService.submitTransaction(tx).then(async (res) => {
- expect(res.status).eq(200);
- return getTxHash(tx);
- // if (res.status <= 200 || res.status <= 299) {
- // await blockfrost.submitTransaction(tx).catch(e=>{
- // console.log("Ignoring transaction submission error on blockfrost")
- // });
- // }
- });
- },
- getUtxos: (p1, p2) =>
- getUtxosKuber(walletAddress, walletAddressRaw, p1, p2),
- getUsedAddresses: async () => [walletAddressHex],
- getUnusedAddresses: async () => [walletAddressHex],
- getChangeAddress: async () => walletAddressHex,
- getRewardAddresses: async () => [rewardAddr],
- getNetworkId: async () => networkId,
- experimental: {
- on: (eventName, callback) => {
- return;
- },
- off: (eventName, callback) => {
- return;
- },
- getCollateral: () => {
- return "";
- },
- },
- cip95: {
- getPubDRepKey: async () => stakePublicKey,
- getUnregisteredPubStakeKeys: async () => [stakePublicKey],
- getRegisteredPubStakeKeys: async () => [stakePublicKey],
- },
- // CIP-95 -----------------------------
- getActivePubStakeKeys: async () => [rewardAddr],
-
- signTx: async (tx, partialSign) => {
- // decode transaction body and calculate hash
- let decodedTx = cborxDecoder.decode(Buffer.from(tx, "hex"));
- const reEncodedTx = Buffer.from(cborxEncoder.encode(decodedTx)).toString(
- "hex"
- );
-
- if (tx != reEncodedTx) {
- console.warn("[CardanoWallet] Re-encoded tx is not same");
- console.warn("[CardanoWallet] Starting Tx", tx);
- console.warn("[CardanoWallet] Re-Encoded Tx", reEncodedTx);
- }
-
- const txbody = Uint8Array.from(cborxEncoder.encode(decodedTx[0]));
- const txHash = blake.blake2b(txbody, undefined, 32);
- Logger.success(
- "[CardanoWallet] Signing Tx hash=" + Buffer.from(txHash).toString("hex")
- );
-
- // sign the transaction hash with payment key
- const paymentKeySig = await wallet.paymentKey.signRaw(txHash);
-
- // create witness set object
- const witness = new Map();
- const vkeyWitnesses = [[wallet.paymentKey.public, paymentKeySig]];
-
- // encode witness set to cbor hex and return
- if (withStakeSigning) {
- Logger.success("Signing stake key...");
- const stakeKeySig = await wallet.stakeKey.signRaw(txHash);
- vkeyWitnesses.push([wallet.stakeKey.public, stakeKeySig]);
- }
-
- witness.set(0, vkeyWitnesses);
-
- if (onSignTxCallback) {
- onSignTxCallback(Buffer.from(txHash).toString("hex"));
- }
- return Buffer.from(cborxEncoder.encode(witness)).toString("hex");
- },
-
- signData: async (address, payload) => {
- return "";
- },
- getExtensions: () => [{ cip: 95 }],
- };
- return walletInstance;
-}
-
-/**
- * Creates a Cardano Wallet Extension with CIP-95 compliance and optional overrides.
- * the returned object can be injected to `window.cardano.demos` for testing wallet extension feature.
- *
- * @param {CipMethodOverride=} overrides - Optional overrides for CIP-20 and cip95 overrides.
- * @param {ShelleyWallet=} shellyWallet - Optional Shelley wallet to use in the extension.
- * @param {boolean=} withStakeSigning When set to true, when signing transactions, signature of stakeKey will also be added
- * @returns {Promise} A promise that resolves with the created CIP-30 provider.
- */
-
-export async function mkCardanoWalletExtension(
- overrides?: CipMethodOverride,
- walletParams?: WalletParams,
- shellyWallet?: ShelleyWallet
-): Promise {
- let extension = await mkCip95Wallet(
- shellyWallet,
- 0,
- walletParams?.withStakeSigning,
- walletParams?.onTxSign,
- walletParams?.onWalletInitialized
- );
-
- let result = { ...extension };
-
- if (overrides) {
- Object.keys(overrides).forEach((k) => {
- if (result[k]) {
- console.debug(
- "[CardanoWallet] Overriding",
- k,
- "to",
- typeof overrides[k],
- overrides[k]
- );
- result[k] = async () => overrides[k];
- }
- if (result.cip95 && result.cip95[k]) {
- result.cip95[k] = async () => overrides[k];
- }
- });
- }
- let enabled = false;
-
- return {
- apiVersion: "1.3.1",
- icon: "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg viewBox='0 0 500 500' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='309.36' y='12.441' width='121.115' height='472.347' style='fill: rgb(128 177 211)%3B'/%3E%3Cellipse style='fill: rgb(128 177 211)%3B' cx='231.272' cy='320.966' rx='171.791' ry='137.051'/%3E%3C/svg%3E",
-
- enable: async function () {
- console.debug("[Cardano Wallet] Enable called");
- enabled = true;
- return result;
- },
-
- isEnabled: async function () {
- return enabled;
- },
-
- name: "Demos",
-
- supportedExtensions: [
- {
- cip: 95,
- },
- ],
- };
-}
-
-// convert MultiAsset Value from blockfrost for cbor encoding as per the ledger cddl
-function amountToObject(
- amount
-): [BigInt, Map>] | BigInt {
- let lovelace: BigInt;
- let assets: Map> = new Map();
- amount.forEach((a) => {
- if (a.unit == "lovelace") {
- lovelace = BigInt(a.quantity);
- } else {
- let policy = a.unit.substring(0, 56);
- let tokenName = a.unit.substring(56, a.unit.length);
- if (assets.has(policy)) {
- assets.get(policy).set(tokenName, BigInt(a.quantity));
- } else {
- let quantityMap = new Map();
- quantityMap.set(tokenName, BigInt(a.quantity));
- assets.set(policy, quantityMap);
- }
- }
- });
- if (assets.size > 0) {
- return [lovelace, assets];
- } else {
- return lovelace;
- }
-}
-
-const getUtxosBlockfrost = async (
- walletAddress,
- walletAddressRaw,
- amount,
- paginate
-) => {
- const apiResponse = await blockfrostService.addressesUtxos(walletAddress);
-
- return apiResponse.map((utxo, idx) => {
- return Buffer.from(
- cborxEncoder.encode([
- [Buffer.from(utxo.tx_hash, "hex"), utxo.output_index],
- [walletAddressRaw, amountToObject(utxo.amount)],
- ])
- ).toString("hex");
- });
-};
-
-const getUtxosKuber = async (
- walletAddress,
- walletAddressRaw,
- amount,
- paginate
-) => {
- function kuberValuetoObject(
- value: KuberValue
- ): [bigint, Map>] | bigint {
- const lovelace = BigInt(value.lovelace as bigint | number | string);
- let assets: Map> = new Map();
- for (let policy in value) {
- const assetMap = value[policy] as Record;
- for (let tokenName in assetMap) {
- if (assets.has(policy)) {
- assets.get(policy).set(tokenName, BigInt(assetMap[tokenName]));
- } else {
- let quantityMap = new Map();
- quantityMap.set(tokenName, BigInt(assetMap[tokenName]));
- assets.set(policy, quantityMap);
- }
- }
- }
-
- if (assets.size > 0) {
- return [lovelace, assets];
- } else {
- return lovelace;
- }
- }
-
- const apiResponse = await kuberService.queryUtxos(walletAddress);
- let result = [];
- return apiResponse.map((utxo) => {
- const txin = utxo.txin.split("#");
- return Buffer.from(
- cborxEncoder.encode([
- [Buffer.from(txin[0], "hex"), BigInt(txin[1])],
- [walletAddressRaw, kuberValuetoObject(utxo.value)],
- ])
- ).toString("hex");
- });
-};
diff --git a/tests/govtool-frontend/cypress/lib/wallet/crypto.ts b/tests/govtool-frontend/cypress/lib/wallet/crypto.ts
deleted file mode 100644
index 08db7de1e..000000000
--- a/tests/govtool-frontend/cypress/lib/wallet/crypto.ts
+++ /dev/null
@@ -1,253 +0,0 @@
-import * as ed from "@noble/ed25519";
-import { bech32 } from "bech32";
-import * as blake from "blakejs";
-
-const KEYHASH_LENGTH = 28;
-const ADDR_LENGTH = KEYHASH_LENGTH * 2 + 1;
-
-// Stores ed25519 KeyPair and hash of publicKey
-export class Ed25519Key {
- private: Uint8Array;
- public: Uint8Array;
- pkh: Uint8Array;
-
- private constructor(priv: Uint8Array, pub: Uint8Array, pkh: Uint8Array) {
- this.private = priv;
- this.public = pub;
- this.pkh = pkh;
- }
- public static async generate() {
- const privKey = ed.utils.randomPrivateKey(); // Secure random private key
- return await Ed25519Key.fromPrivateKey(privKey);
- }
-
- public static async fromPrivateKey(privKey: Uint8Array) {
- const pubKey = await ed.getPublicKeyAsync(privKey);
- const pkh = blake.blake2b(pubKey, undefined, KEYHASH_LENGTH);
- const key = new Ed25519Key(privKey, pubKey, pkh);
- console.log("loaded", "Ed25519Key", key.json());
- return key;
- }
- public static async fromPrivateKeyHex(privKey) {
- return await Ed25519Key.fromPrivateKey(
- Uint8Array.from(Buffer.from(privKey, "hex"))
- );
- }
-
- public bech32Pkh(prefix: string = "stake"): string {
- return bech32.encode(prefix, bech32.toWords(this.pkh));
- }
- public bech32PublicKey(prefix: string = "vk_"): string {
- return bech32.encode(prefix, bech32.toWords(this.public));
- }
- public bech32PrivateKey(prefix: string = "sk_"): string {
- return bech32.encode(prefix, bech32.toWords(this.private));
- }
- public async signRaw(message: Uint8Array) {
- return await ed.signAsync(message, this.private);
- }
- public async verify(message, signature) {
- return await ed.verifyAsync(signature, message, this.public);
- }
-
- public json() {
- return {
- private: Buffer.from(this.private).toString("hex"),
- public: Buffer.from(this.public).toString("hex"),
- pkh: Buffer.from(this.pkh).toString("hex"),
- };
- }
- public static fromJson(json: any): Ed25519Key {
- if (!json || typeof json !== "object") {
- throw new Error(
- "Invalid JSON format for Ed25519Key: Input must be a non-null object."
- );
- }
-
- if (!json.private || !json.public || !json.pkh) {
- throw new Error(
- "Invalid JSON format for Ed25519Key: Missing required fields (private, public, or pkh)."
- );
- }
-
- return new Ed25519Key(
- Uint8Array.from(Buffer.from(json.private, "hex")),
- Uint8Array.from(Buffer.from(json.public, "hex")),
- Uint8Array.from(Buffer.from(json.pkh, "hex"))
- );
- }
-}
-
-// Shelley Wallet has 2 ed25519 key pair
-// - one for payment purpose
-// - one for staking/governance purpose
-export class ShelleyWallet {
- paymentKey: Ed25519Key;
- stakeKey: Ed25519Key;
-
- public constructor(payment, stake) {
- this.paymentKey = payment;
- this.stakeKey = stake;
- }
-
- public static async generate() {
- const wallet = new ShelleyWallet(
- await Ed25519Key.generate(),
- await Ed25519Key.generate()
- );
- console.log("generated", "Ed25519Key", wallet);
- return wallet;
- }
-
- addressBech32(networkId: number): string {
- const prefix = networkId == 0 ? "addr_test" : "addr";
- return bech32.encode(
- prefix,
- bech32.toWords(Buffer.from(this.addressRawBytes(networkId))),
- 200
- );
- }
-
- addressRawBytes(networkId) {
- const concatenatedArray1 = new Uint8Array(ADDR_LENGTH);
- concatenatedArray1[0] = networkId;
- concatenatedArray1.set(this.paymentKey.pkh, 1);
- concatenatedArray1.set(this.stakeKey.pkh, KEYHASH_LENGTH + 1);
- return concatenatedArray1;
- }
- rewardAddressRawBytes(network: number) {
- const rewardAccountPrefix = 0xe0;
- const header = network | rewardAccountPrefix;
- const result = new Uint8Array(KEYHASH_LENGTH + 1);
- result[0] = header;
- result.set(this.stakeKey.pkh, 1);
- return result;
- }
-
- rewardAddressBech32(networkId: number): string {
- const prefix = networkId == 0 ? "stake_test" : "stake";
- return bech32.encode(
- prefix,
- bech32.toWords(Buffer.from(this.rewardAddressRawBytes(networkId))),
- 200
- );
- }
- public json() {
- return {
- payment: this.paymentKey.json(),
- stake: this.stakeKey.json(),
- };
- }
-
- public static fromJson(obj: {
- payment: object;
- stake: object;
- }): ShelleyWallet {
- if (!obj || typeof obj !== "object") {
- throw new Error("ShelleyWallet.fromJson: The input must be an object.");
- }
-
- const paymentKey = obj.payment;
- const stakeKey = obj.stake;
-
- if (!paymentKey || typeof paymentKey !== "object") {
- throw new Error(
- "ShelleyWallet.fromJson : Invalid payment key: It must be an object."
- );
- }
-
- if (!stakeKey || typeof stakeKey !== "object") {
- throw new Error(
- "ShelleyWallet.fromJson : Invalid stake key: It must be an object."
- );
- }
- return new ShelleyWallet(
- Ed25519Key.fromJson(paymentKey),
- Ed25519Key.fromJson(stakeKey)
- );
- }
-
- public static dummy(): ShelleyWallet {
- return ShelleyWallet.fromJson({
- payment: {
- pkh: "595ac9bbf256bae584f56a4b671baa4b14a18c8098b8e571834bc12c",
- private:
- "5a1380cd79ecaee48d66c14f7d92ddfc866490a3b59d44520e60f16309c8a17d",
- public:
- "8d2f4d49118eb1156048b66dd6372cdb1f82da0f8e208d9f8ea4b388c79c09ad",
- },
- stake: {
- pkh: "6706efab75778c2f08b9a5321ead8bfc982a5c08b51a0b2a713cac52",
- private:
- "24e8c012c7bef2f5823baef1c06dac253da860a43f0d1f43fc3c8349a4f719a1",
- public:
- "f7a1eaea2691ee80b6c0d6f27482145d7037055829b1b26224a5d8f0c2243f16",
- },
- });
- }
-}
-
-export interface Address {
- toBech32(): string;
- toRawBytes(): Uint8Array;
- toRawBytesHex(): string;
-}
-export class ShelleyWalletAddress implements Address {
- paymentKeyHash: Uint8Array;
- stakeKeyHash: Uint8Array;
- network: number;
-
- private constructor(
- network: number | "mainnet" | "testnet",
- pkh: Uint8Array,
- skh: Uint8Array
- ) {
- this.network =
- network == "mainnet" ? 1 : network == "testnet" ? 0 : network;
- this.paymentKeyHash = pkh;
- this.stakeKeyHash = skh;
- }
- public static fromRawBytes(bytea: Uint8Array | string | Buffer) {
- let bytebuffer: Buffer;
- if (bytea.length == ADDR_LENGTH * 2 && typeof bytea == "string") {
- bytebuffer = Buffer.from(bytea, "hex");
- } else {
- if (bytea.length !== ADDR_LENGTH) {
- throw Error(
- "ShelleyAddress.fromRawBytes: Invalid byte array length. expected: " +
- ADDR_LENGTH +
- " got: " +
- bytea.length
- );
- }
- bytebuffer = Buffer.from(bytea);
- }
-
- let paymentKeyHash = bytebuffer.subarray(1, 29);
- let stakeKeyHash = bytebuffer.subarray(29, ADDR_LENGTH);
-
- return new ShelleyWalletAddress(
- bytebuffer.at(0),
- paymentKeyHash,
- stakeKeyHash
- );
- }
- toBech32(): string {
- const prefix = this.network == 0 ? "addr_test" : "addr";
- return bech32.encode(
- prefix,
- bech32.toWords(Buffer.from(this.toRawBytes())),
- 200
- );
- }
- toRawBytes(): Uint8Array {
- const rawBytes = new Uint8Array(ADDR_LENGTH);
- rawBytes[0] = this.network;
- rawBytes.set(this.paymentKeyHash, 1);
- rawBytes.set(this.stakeKeyHash, KEYHASH_LENGTH + 1);
- return rawBytes;
- }
- toRawBytesHex(): string {
- return Buffer.from(this.toRawBytes()).toString("hex");
- }
-}
diff --git a/tests/govtool-frontend/cypress/lib/wallet/mockWallet.ts b/tests/govtool-frontend/cypress/lib/wallet/mockWallet.ts
deleted file mode 100644
index 7398399ac..000000000
--- a/tests/govtool-frontend/cypress/lib/wallet/mockWallet.ts
+++ /dev/null
@@ -1,102 +0,0 @@
-import { randomBytes } from "crypto";
-import { CIP30Provider, Cip95Instance, CipMethodOverride } from "./types";
-
-export const mockUserStakeKeys = [
- "012f5dc3125b8a07981e6e50f5a671e2c6fbb26c3ffde1cd1dcaf40a7fe8f160",
- "012f5dc3115b8a07981e6e50f5a671e2c6fbb26c3ffde1cd1dcaf40a7fe8f160",
-];
-export const mockUserDrepKey = randomBytes(32).toString("hex");
-export const mockUserAddress =
- "000fdc780023d8be7c9ff3a6bdc0d8d3b263bd0cc12448c40948efbf42e557890352095f1cf6fd2b7d1a28e3c3cb029f48cf34ff890a28d176";
-export let networkId: number = Cypress.env("networkId");
-networkId =
- (networkId as unknown as string).toLowerCase() == "testnet" || networkId == 0
- ? 0
- : 1;
-
-const walletInstance: Cip95Instance & {
- experimental: Record;
-} = {
- getBalance: async () => {
- return "10000000";
- },
- submitTx: async (tx) => {
- return;
- },
- getUtxos: async (amount, paginate) => {
- return [
- "8282582018BC892DF1A4CF0D1B388A684D287304A500D7EEDB4D35D5CAB7C8922503A6E0008258390036E0CF1E52E05EF92E52C7BC2A04493D6BAE481B8ACBAB12EC4300D7F9C9E87246D2F0373885896AD2804B7229673204CAC9208345C1EA5B1B00000002540BE400",
- ];
- },
- getUsedAddresses: async () => [mockUserAddress],
- getUnusedAddresses: async () => [],
- getChangeAddress: async () =>
- "000fdc780023d8be7c9ff3a6bdc0d8d3b263bd0cc12448c40948efbf42e557890352095f1cf6fd2b7d1a28e3c3cb029f48cf34ff890a28d176",
- getRewardAddresses: async () => [
- "e0e557890352095f1cf6fd2b7d1a28e3c3cb029f48cf34ff890a28d176",
- ],
- getNetworkId: async () => networkId,
- experimental: {
- on: (eventName, callback) => {
- return;
- },
- off: (eventName, callback) => {
- return;
- },
- getCollateral: () => {
- return "";
- },
- },
- // CIP-95 -----------------------------
- cip95: {
- getPubDRepKey: async () => mockUserDrepKey,
- getRegisteredPubStakeKeys: async () => mockUserStakeKeys,
- getUnregisteredPubStakeKeys: async () => mockUserStakeKeys,
- },
- getActivePubStakeKeys: async () => mockUserStakeKeys,
- // getUnregisteredPubStakeKeys: async () => mockUserStakeKeys,
- signTx: async (tx, partialSign) => {
- return "a10081825820b004cba76275ee90b44de0bee3edf2f69b77a3936c59879536bd0d3fcbc25e635840ae41c154e42fe3ad56ecc040f51e7488c5851b129194362a7d35c08f8c4ca86f7b8e1a4ba53ee59d6d4ee0a0b90816702f7af3877235e281fee122c4d21c7e04";
- },
- signData: async (address, payload) => {
- return "";
- },
- getExtensions: () => [{ cip: 95 }],
-};
-export function mkSingleStakeKeyWallet() {
- return mkWallet({ getUnregisteredPubStakeKeys: [mockUserStakeKeys[0]] });
-}
-
-export function mkWallet(overrides?: CipMethodOverride): CIP30Provider {
- let result = { ...walletInstance };
- if (overrides) {
- Object.keys(overrides).forEach((k) => {
- if (result[k]) {
- // console.log("Overriding", k, "to", typeof overrides[k], overrides[k]);
- result[k] = async () => overrides[k];
- }
- if (result.cip95 && result.cip95[k]) {
- result.cip95[k] = async () => overrides[k];
- }
- });
- }
- let enabled = false;
- return {
- apiVersion: "1.3.1",
- icon: "data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg viewBox='0 0 500 500' xmlns='http://www.w3.org/2000/svg'%3E%3Crect x='309.36' y='12.441' width='121.115' height='472.347' style='fill: rgb(128 177 211)%3B'/%3E%3Cellipse style='fill: rgb(128 177 211)%3B' cx='231.272' cy='320.966' rx='171.791' ry='137.051'/%3E%3C/svg%3E",
-
- enable: async function () {
- enabled = true;
- return result;
- },
- isEnabled: async function () {
- return enabled;
- },
- name: "Demos",
- supportedExtensions: [
- {
- cip: 95,
- },
- ],
- };
-}
diff --git a/tests/govtool-frontend/cypress/lib/wallet/setupWallet.ts b/tests/govtool-frontend/cypress/lib/wallet/setupWallet.ts
deleted file mode 100644
index cc731e466..000000000
--- a/tests/govtool-frontend/cypress/lib/wallet/setupWallet.ts
+++ /dev/null
@@ -1,67 +0,0 @@
-import { bootstrapWallet } from "../../constants/wallet";
-import { pollTxWithKuber } from "../../services/apiService";
-import kuberService from "../../services/kuberService";
-import { Logger } from "../logger/logger";
-import { ShelleyWallet } from "./crypto";
-
-export async function generateWallets(
- numWallets: number = 100
-): Promise {
- const wallets: ShelleyWallet[] = [];
-
- for (let i = 0; i < numWallets; i++) {
- const wallet = await ShelleyWallet.generate();
- wallets.push(wallet);
- }
-
- return wallets;
-}
-// check if the stake is registered
-
-export async function setupWallets(wallets: ShelleyWallet[]) {
- if (wallets.length === 0) {
- throw new Error("No wallets to load balance");
- }
-
- const signingKey = bootstrapWallet.payment.private;
- await kuberService.initializeMultipleWallets(
- bootstrapWallet.address,
- signingKey,
- wallets
- );
- Logger.success(`[Setup Wallet] Successfully setup ${wallets.length} wallets`);
-}
-
-export async function registerStake(wallet: ShelleyWallet) {
- const { stakeKey, paymentKey } = wallet;
- const hexPaymentObj = {
- pkh: Buffer.from(paymentKey.pkh).toString("hex"),
- private: Buffer.from(paymentKey.private).toString("hex"),
- public: Buffer.from(paymentKey.public).toString("hex"),
- };
- const hexStakeObj = {
- pkh: Buffer.from(stakeKey.pkh).toString("hex"),
- private: Buffer.from(stakeKey.private).toString("hex"),
- public: Buffer.from(stakeKey.public).toString("hex"),
- };
- const address = wallet.addressBech32(0);
-
- try {
- const { cbor, txId } = await kuberService
- .registerStake(
- hexStakeObj.private,
- hexStakeObj.pkh,
- hexPaymentObj.private,
- address
- )
- .catch((err) => {
- if (err.status === 400) {
- throw new Error("Stake already registered");
- }
- throw new Error(err);
- });
- await pollTxWithKuber(txId);
- } catch (err) {
- throw new Error(err);
- }
-}
diff --git a/tests/govtool-frontend/cypress/lib/wallet/types.ts b/tests/govtool-frontend/cypress/lib/wallet/types.ts
deleted file mode 100644
index 283141529..000000000
--- a/tests/govtool-frontend/cypress/lib/wallet/types.ts
+++ /dev/null
@@ -1,92 +0,0 @@
-import { ShelleyWallet } from "./crypto";
-
-export type HexString = string;
-export type StaticWallet = {
- type: string;
- payment: {
- private: string;
- public: string;
- pkh: string;
- };
- stake: {
- private: string;
- public: string;
- pkh: string;
- };
- dRepId: string;
- address: string;
-};
-
-export interface CIP30Provider {
- apiVersion: string;
- enable: () => Promise;
- icon: string;
- isEnabled: () => Promise;
- name: string;
- supportedExtensions: Record[];
-}
-
-export enum Network {
- Mainnet = 0,
- Testnet = 1,
-}
-
-export interface CIP30Instance {
- submitTx: (tx: string) => Promise;
- signTx: (tx: string, partial?: Boolean) => Promise;
- getChangeAddress: () => Promise;
- getNetworkId: () => Promise;
- getRewardAddresses: () => Promise;
- getUnusedAddresses: () => Promise;
- getUsedAddresses: () => Promise>;
- getUtxos: (amount?: object, paginate?: any) => Promise>;
- getCollateral?: () => Promise>;
- signData: (address: string, payload: HexString) => Promise;
- getBalance: () => Promise;
-}
-export interface Cip95Instance extends CIP30Instance {
- cip95: {
- getPubDRepKey: () => Promise;
- getUnregisteredPubStakeKeys: () => Promise;
- getRegisteredPubStakeKeys: () => Promise;
- };
- getActivePubStakeKeys: () => Promise;
- getExtensions: () => Record[];
-}
-
-export interface CipMethodOverride {
- submitTx?: HexString;
- signTx?: HexString;
- getChangeAddress?: HexString;
- getNetworkId?: number;
- getRewardAddresses?: HexString[];
- getUnusedAddresses?: HexString[];
- getUsedAddresses?: HexString[];
- getUtxos?: HexString[];
- getCollateral?: HexString[];
- signData?: HexString;
- getBalance?: string;
- getPubDRepKey?: HexString;
- // getUnregisteredPubStakeKeys?: HexString[];
- getExtensions?: Record[];
- getRegisteredPubStakeKeys?: HexString[];
- getUnregisteredPubStakeKeys?: HexString[];
-}
-
-export interface WalletParams {
- loadFundsAndRegister?: boolean;
- onTxSign?: (txId: string) => void;
- testTx?: any;
- withStakeSigning?: boolean;
- onWalletInitialized?: ({
- wallet,
- stakePkh,
- signingKey,
- address,
- }: {
- wallet?: ShelleyWallet;
- stakePkh: string;
- signingKey: string;
- address: string;
- }) => void;
-}
diff --git a/tests/govtool-frontend/cypress/models/types.ts b/tests/govtool-frontend/cypress/models/types.ts
deleted file mode 100644
index cf641989f..000000000
--- a/tests/govtool-frontend/cypress/models/types.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-export interface IDRepIdentity {
- id: string;
- key: string;
-}
-
-export interface KuberValue {
- [policyId: string]: Record | BigInt | number;
-}
-
-export interface KuberBalanceResponse {
- address: string;
- txin: string;
- value: KuberValue;
-}
diff --git a/tests/govtool-frontend/cypress/services/apiService.ts b/tests/govtool-frontend/cypress/services/apiService.ts
deleted file mode 100644
index 2d63eda6b..000000000
--- a/tests/govtool-frontend/cypress/services/apiService.ts
+++ /dev/null
@@ -1,151 +0,0 @@
-import { randomBytes } from "crypto";
-import { Logger } from "../lib/logger/logger";
-import blockfrostService from "./blockfrostService";
-import kuberService from "./kuberService";
-
-const apiUrl = (function () {
- let url: string = Cypress.env("apiUrl");
- return url.endsWith("/") ? url.substring(0, url.length - 1) : url;
-})();
-
-function getApi(url: string): Cypress.Chainable> {
- const normalizedUrl = url.startsWith("/") ? url : "/" + url;
- return cy.request(apiUrl + normalizedUrl);
-}
-function postApi(
- url: string,
- body?: Cypress.RequestBody
-): Cypress.Chainable> {
- const normalizedUrl = url.startsWith("/") ? url : "/" + url;
- return cy.request("POST", apiUrl + normalizedUrl, body);
-}
-
-export const pollTxWithKuber = async (
- txHash: string,
- maxRetries = 32
-): Promise => {
- const MAX_RETRIES = maxRetries;
- const RETRY_INTERVAL = 5000;
-
- if (txHash === undefined) return;
-
- function retry(tries, cb) {
- if (tries) {
- setTimeout(() => checkTransaction(tries - 1, cb), RETRY_INTERVAL);
- } else {
- cb(
- new Error(
- "[Kuber Tx] Wait timeout for tx:" +
- txHash +
- ", waited for " +
- (MAX_RETRIES * RETRY_INTERVAL) / 1000 +
- "secs"
- )
- );
- }
- }
-
- function checkTransaction(tries, cb) {
- return kuberService
- .getTransactionDetails(txHash)
- .then(async (res) => {
- if ((await res.json()).length > 0) {
- console.debug("[Kuber Poll Tx] Successful", res);
- cb();
- } else if (res.status === 500) {
- throw cb(new Error("Internal Server Error"));
- } else {
- Logger.fail(
- "[Kuber Poll Tx] Tx unsuccessful waiting for another " +
- RETRY_INTERVAL / 1000 +
- "secs..."
- );
-
- retry(tries, cb);
- }
- })
- .catch((e) => {
- if (e.status == 404) {
- retry(tries, cb);
- } else {
- throw cb(
- new Error(
- "[Kuber Poll Tx] Timeout for tx:" +
- txHash +
- ", waited for " +
- (MAX_RETRIES * RETRY_INTERVAL) / 1000 +
- "secs"
- )
- );
- }
- });
- }
-
- return new Promise((resolve, reject) => {
- setTimeout(() => {
- checkTransaction(MAX_RETRIES, (err) => {
- if (err) {
- reject(err);
- } else {
- resolve();
- }
- });
- });
- RETRY_INTERVAL;
- });
-};
-
-export const pollTx = async (txHash: string): Promise => {
- const MAX_RETRIES = 20;
- const RETRY_INTERVAL = 5000;
-
- function checkTransaction(tries, cb) {
- return blockfrostService
- .getTransactionDetails(txHash)
- .then((res) => {
- console.debug("[Blockfrost Poll Tx] successful", res);
- cb();
- })
- .catch((e) => {
- Logger.fail(
- "[Blockfrost Poll Tx] Unsuccessful waiting for another " +
- RETRY_INTERVAL / 1000 +
- "secs..."
- );
-
- if (e.status == 404) {
- if (tries) {
- setTimeout(() => checkTransaction(tries - 1, cb), RETRY_INTERVAL);
- } else {
- cb(
- new Error(
- "[Blockfrost Poll Tx] Timeout for tx:" +
- txHash +
- ", waited for " +
- (MAX_RETRIES * RETRY_INTERVAL) / 1000 +
- "secs"
- )
- );
- }
- } else {
- cy.then(async () => {
- expect(e.status).to.closeTo(200, 299);
- });
- throw cb(e);
- }
- });
- }
-
- return new Promise((resolve, reject) => {
- setTimeout(() => {
- checkTransaction(MAX_RETRIES, (err) => {
- if (err) {
- reject(err);
- } else {
- resolve();
- }
- });
- }),
- RETRY_INTERVAL;
- });
-};
diff --git a/tests/govtool-frontend/cypress/services/blockfrostService.ts b/tests/govtool-frontend/cypress/services/blockfrostService.ts
deleted file mode 100644
index bc9148d9c..000000000
--- a/tests/govtool-frontend/cypress/services/blockfrostService.ts
+++ /dev/null
@@ -1,106 +0,0 @@
-const config = {
- apiUrl: Cypress.env("blockfrostUrl"),
- apiKey: Cypress.env("blockfrostApiKey"),
-};
-
-const blockfrostService = {
- async addresses(addr: string) {
- return await callBlockfrost("/addresses/" + addr).catch((e) => {
- if (e.status == 404) {
- return "00";
- } else {
- throw e;
- }
- });
- },
- async addressesUtxos(addr: string) {
- return await callBlockfrost(
- "/addresses/" + addr + "/utxos?order=desc"
- ).catch((e) => {
- if (e.status == 404) {
- return [];
- } else {
- throw e;
- }
- });
- },
- async submitTransaction(tx: string) {
- return await callBlockfrost(
- "/tx/submit",
- "POST",
- Buffer.from(tx, "hex"),
- "application/cbor"
- );
- },
- async getAssetDetail(asset: string) {
- return await callBlockfrost("/assets/" + asset);
- },
-
- async getDatum(hash: string) {
- return await callBlockfrost("/scripts/datum/" + hash);
- },
- async getTransactionDetails(txHash: any) {
- return await callBlockfrost("/txs/" + txHash);
- },
- async getTransactionUtxos(txHash: any) {
- return await callBlockfrost("/txs/" + txHash + "/utxos");
- },
-
- async getTransactions(addr: any) {
- return await callBlockfrost("/addresses/" + addr + "/utxos");
- },
-};
-
-async function callBlockfrost(
- path: any,
- method: "GET" | "POST" = "GET",
- body?: BodyInit,
- contentType?: string
-) {
- const url = config.apiUrl + path;
-
- const headers: Record = {
- project_id: config.apiKey,
- };
- if (contentType) {
- headers["content-type"] = contentType;
- }
-
- const options: RequestInit = {
- method,
- headers,
- };
-
- if (method === "POST") {
- if (body) options.body = body;
- }
-
- return fetch(url, options).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return res.text().then((txt) => {
- let err;
- let json: any;
- try {
- json = JSON.parse(txt);
- if (json) {
- err = Error(
- `BlockfrostApi [Status ${res.status}] : ${
- json.message ? json.message : txt
- }`
- );
- } else {
- err = Error(`BlockfrostApi [Status ${res.status}] : ${txt}`);
- }
- } catch (e) {
- err = Error(`BlockfrostApi [Status ${res.status}] : ${txt}`);
- }
- err.status = res.status;
- throw err;
- });
- }
- });
-}
-
-export default blockfrostService;
diff --git a/tests/govtool-frontend/cypress/services/faucetService.ts b/tests/govtool-frontend/cypress/services/faucetService.ts
deleted file mode 100644
index 2a09c9fd6..000000000
--- a/tests/govtool-frontend/cypress/services/faucetService.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { IFaucetResponse } from "./types";
-
-const faucetApiKey = Cypress.env("faucetApiKey");
-const faucetApiUrl = Cypress.env("faucetApiUrl");
-
-const fetchClient = (url: string) => {
- return fetch(faucetApiUrl + url);
-};
-
-export const loadAmountFromFaucet = async (
- walletAddress: string
-): Promise => {
- try {
- const res = await fetchClient(
- `/send-money?type=default&action=funds&address=${walletAddress}&poolid=undefined&api_key=${faucetApiKey}`
- );
- const responseBody = await res.json();
- console.debug(`faucet response: ${JSON.stringify(responseBody)}`);
-
- if (responseBody.error) {
- throw new Error("Error in loadAmountFaucet:" + responseBody.error.tag);
- }
- return responseBody;
- } catch (error) {
- console.error("Error in loadAmountFromFaucet:", error);
- throw error;
- }
-};
diff --git a/tests/govtool-frontend/cypress/services/kuberService.ts b/tests/govtool-frontend/cypress/services/kuberService.ts
deleted file mode 100644
index b6073b88a..000000000
--- a/tests/govtool-frontend/cypress/services/kuberService.ts
+++ /dev/null
@@ -1,347 +0,0 @@
-import { Logger } from "../lib/logger/logger";
-import { ShelleyWallet } from "../lib/wallet/crypto";
-import {
- cborxDecoder,
- cborxEncoder,
- convertUint8ArrayToHex,
-} from "../support/utils";
-import * as blake from "blakejs";
-import { KuberBalanceResponse } from "../models/types";
-import { bootstrapWallet } from "../constants/wallet";
-
-type CertificateType = "registerstake" | "registerdrep" | "deregisterdrep";
-const config = {
- apiUrl: Cypress.env("kuberApiUrl"),
- apiKey: Cypress.env("kuberApiKey"),
-};
-class Kuber {
- walletAddr: string;
- signingKey: string;
- version: string;
-
- constructor(walletAddr: string, signingKey: string, version = "v1") {
- this.walletAddr = walletAddr;
- this.signingKey = signingKey;
- this.version = version;
- }
- static generateCert(type: CertificateType, key: string) {
- if (type === "registerstake" || type === "deregisterdrep") {
- return {
- type: type,
- key: key,
- };
- } else if (type === "registerdrep") {
- return {
- type: "registerdrep",
- key: key,
- anchor: {
- url: "https://bit.ly/3zCH2HL",
- dataHash:
- "1111111111111111111111111111111111111111111111111111111111111111",
- },
- };
- }
- }
- signTx(tx: any) {
- return {
- ...tx,
- selections: [
- ...(tx.selections || []),
- {
- type: "PaymentSigningKeyShelley_ed25519",
- description: "Payment Signing Key",
- cborHex: "5820" + this.signingKey,
- },
- this.walletAddr,
- ],
- changeAddress: this.walletAddr,
- };
- }
-
- async signAndSubmitTx(tx: any) {
- const signedTx = this.signTx(tx);
- const res = await callKuber(
- `/api/${this.version}/tx?submit=true`,
- "POST",
- JSON.stringify(signedTx)
- );
- Logger.success("[Kuber] Tx: " + JSON.stringify(res));
- let decodedTx = cborxDecoder.decode(Buffer.from(res.cborHex, "hex"));
- const submittedTxBody = Uint8Array.from(cborxEncoder.encode(decodedTx[0]));
- const submittedTxHash = Buffer.from(
- blake.blake2b(submittedTxBody, undefined, 32)
- ).toString("hex");
- return { cbor: res.cborHex, txId: submittedTxHash };
- }
-}
-
-const kuberService = {
- initializeMultipleWallets: (
- senderAddress: string,
- signingKey: string,
- wallets: ShelleyWallet[]
- ) => {
- const kuber = new Kuber(senderAddress, signingKey);
- const outputs = [];
- const stakes = [];
- const certificates = [];
- for (let i = 0; i < wallets.length; i++) {
- const wallet = wallets[i];
- const address = wallet.addressBech32(0);
- outputs.push({
- address: address,
- value: 0,
- });
- stakes.push({
- type: "PaymentSigningKeyShelley_ed25519",
- description: "Payment Signing Key",
- cborHex: "5820" + convertUint8ArrayToHex(wallet.stakeKey.private),
- });
- certificates.push(
- Kuber.generateCert(
- "registerstake",
- convertUint8ArrayToHex(wallet.stakeKey.pkh)
- )
- );
- }
- return kuber.signAndSubmitTx({
- selections: [...stakes],
- outputs,
- certificates,
- });
- },
-
- submitTransaction(tx: any) {
- return fetch(config.apiUrl + "/api/v1/tx/submit", {
- method: "POST",
- headers: {
- "Content-Type": "application/json",
- "api-key": config.apiKey,
- },
-
- body: JSON.stringify({
- tx: {
- description: "",
- type: "Tx ConwayEra",
- cborHex: tx,
- },
- }),
- redirect: "follow",
- });
- },
- transferADA: (
- senderAddress: string,
- receiverAddressList: string[],
- signingKey?: string, // private payment key
- ADA = 100
- ) => {
- const kuber = new Kuber(senderAddress, signingKey);
- const req = {
- outputs: receiverAddressList.map((addr) => {
- return {
- address: addr,
- value: `${ADA}A`,
- };
- }),
- };
- return kuber.signAndSubmitTx(req);
- },
- dRepRegistration: (addr: string, signingKey: string, pkh: string) => {
- const kuber = new Kuber(addr, signingKey);
- const req = {
- certificates: [Kuber.generateCert("registerdrep", pkh)],
- };
- return kuber.signAndSubmitTx(req);
- },
-
- // NOTE This is not supported yet
- dRepDeRegistration: (
- addr: string,
- signingKey: string,
- stakePrivateKey: string,
- pkh: string
- ) => {
- const kuber = new Kuber(addr, signingKey);
- const selections = [
- {
- type: "PaymentSigningKeyShelley_ed25519",
- description: "Payment Signing Key",
- cborHex: "5820" + stakePrivateKey,
- },
- ];
- const req = {
- selections,
- inputs: addr,
- certificates: [Kuber.generateCert("deregisterdrep", pkh)],
- };
- return kuber.signAndSubmitTx(req);
- },
- stakeDelegation: (
- addr: string,
- signingKey: string,
- stakePrivateKey: string,
- pkh: string,
- dRep: string | "abstain" | "noconfidence"
- ) => {
- const kuber = new Kuber(addr, signingKey);
- const selections = [
- {
- type: "PaymentSigningKeyShelley_ed25519",
- description: "Payment Signing Key",
- cborHex: "5820" + stakePrivateKey,
- },
- ];
- const req = {
- selections,
- certificates: [
- {
- type: "delegate",
- key: pkh,
- drep: dRep,
- },
- ],
- };
- return kuber.signAndSubmitTx(req);
- },
- registerStake: (
- stakePrivateKey: string,
- pkh: string,
- signingKey: string,
- addr: string
- ) => {
- const kuber = new Kuber(addr, signingKey);
- const selections = [
- {
- type: "PaymentSigningKeyShelley_ed25519",
- description: "Payment Signing Key",
- cborHex: "5820" + stakePrivateKey,
- },
- ];
- const req = {
- selections,
- certificates: [Kuber.generateCert("registerstake", pkh)],
- };
- return kuber.signAndSubmitTx(req);
- },
- createGovAction(proposalsCount = 2) {
- const kuber = new Kuber(
- bootstrapWallet.address,
- bootstrapWallet.payment.private
- );
- const infoProposal = {
- deposit: 1000000000,
- refundAccount: {
- network: "Testnet",
- credential: {
- "key hash":
- "db1bc3c3f99ce68977ceaf27ab4dd917123ef9e73f85c304236eab23",
- },
- },
- anchor: {
- url: "https://bit.ly/3zCH2HL",
- dataHash:
- "1111111111111111111111111111111111111111111111111111111111111111",
- },
- };
- const req = kuber.signTx({
- proposals: Array.from({ length: proposalsCount }, (_, i) => infoProposal),
- });
- return callKuber("/api/v1/tx?submit=true", "POST", JSON.stringify(req));
- },
-
- getTransactionDetails(txHash: string) {
- return fetch(config.apiUrl + "/api/v3/utxo?txin=" + txHash + "%230", {
- method: "GET",
- headers: {
- "Content-Type": "application/json",
- "api-key": config.apiKey,
- },
- });
- },
- queryUtxos(address: string): Promise<[KuberBalanceResponse]> {
- return callKuber("/api/v3/utxo?address=" + address);
- },
- voteOnProposal(
- addr: string,
- signingKey: string,
- voter: string, // dRepHash
- dRepStakePrivKey: string,
- proposal: string
- ) {
- const kuber = new Kuber(addr, signingKey);
- const req = {
- selections: [
- {
- type: "PaymentSigningKeyShelley_ed25519",
- description: "Payment Signing Key",
- cborHex: "5820" + dRepStakePrivKey,
- },
- ],
- vote: {
- voter,
- role: "drep",
- proposal,
- vote: true,
- anchor: {
- url: "https://bit.ly/3zCH2HL",
- dataHash:
- "1111111111111111111111111111111111111111111111111111111111111111",
- },
- },
- };
- return kuber.signAndSubmitTx(req);
- },
-};
-async function callKuber(
- path: any,
- method: "GET" | "POST" = "GET",
- body?: BodyInit,
- contentType = "application/json"
-) {
- const url = config.apiUrl + path;
-
- const headers: Record = {
- "api-key": config.apiKey,
- };
- if (contentType) {
- headers["content-type"] = contentType;
- }
-
- const options: RequestInit = {
- method,
- headers,
- };
-
- if (method === "POST") {
- if (body) options.body = body;
- }
-
- return fetch(url, options).then(async (res) => {
- if (res.status === 200) {
- return res.json();
- } else {
- return res.text().then((txt) => {
- let err;
- let json: any;
- try {
- json = JSON.parse(txt);
- if (json) {
- err = Error(
- `KuberApi [Status ${res.status}] : ${
- json.message ? json.message : txt
- }`
- );
- } else {
- err = Error(`KuberApi [Status ${res.status}] : ${txt}`);
- }
- } catch (e) {
- err = Error(`KuberApi [Status ${res.status}] : ${txt}`);
- }
- err.status = res.status;
- throw err;
- });
- }
- });
-}
-
-export default kuberService;
diff --git a/tests/govtool-frontend/cypress/services/types.ts b/tests/govtool-frontend/cypress/services/types.ts
deleted file mode 100644
index e7ff594e6..000000000
--- a/tests/govtool-frontend/cypress/services/types.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-export interface IFaucetResponse {
- amount: {
- lovelace: number;
- };
- txid: string;
- txin: string;
-}
diff --git a/tests/govtool-frontend/cypress/state/store.ts b/tests/govtool-frontend/cypress/state/store.ts
deleted file mode 100644
index 091d73772..000000000
--- a/tests/govtool-frontend/cypress/state/store.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const store = new Map();
diff --git a/tests/govtool-frontend/cypress/state/type.ts b/tests/govtool-frontend/cypress/state/type.ts
deleted file mode 100644
index 69f4805f1..000000000
--- a/tests/govtool-frontend/cypress/state/type.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-export interface IProposal {
- id: string;
- txHash: string;
- index: number;
- type: string;
- details: string;
- expiryDate: string;
- createdDate: string;
- url: string;
- metadataHash: string;
- yesVotes: number;
- noVote: number;
- abstainVotes: number;
-}
-
-export interface IVotedProposal {
- proposal: IProposal;
- vote: {
- proposalId: string;
- drepId: string;
- vote: string;
- url: string | null;
- metadataHash: string | null;
- };
-}
diff --git a/tests/govtool-frontend/cypress/state/walletState.ts b/tests/govtool-frontend/cypress/state/walletState.ts
deleted file mode 100644
index 12d418601..000000000
--- a/tests/govtool-frontend/cypress/state/walletState.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import { Logger } from "../lib/logger/logger";
-import { ShelleyWallet } from "../lib/wallet/crypto";
-import { store } from "./store";
-
-const walletState = {
- setTxHash: (txHash: string) => {
- store.set("txHash", txHash);
- Logger.info(`[Wallet State] Tx Hash Saved: ${txHash}.`);
- },
- setWallet: (wallet?: ShelleyWallet) => {
- store.set("wallet", wallet);
- },
- setStakePkh: (pkh: string) => {
- store.set("stakePkh", pkh);
- },
- setSigningKey: (key: string) => {
- store.set("signingKey", key);
- },
- setAddress: (addr: string) => {
- store.set("address", addr);
- },
- getWallet: (): ShelleyWallet => store.get("wallet"),
- getAddress: () => store.get("address"),
- getSigningKey: () => store.get("signingKey"),
- getStakePkh: () => store.get("stakePkh"),
- getTxHash: () => {
- const txHash = store.get("txHash");
- Logger.info(`[Wallet State] Getting txHash: ${txHash}.`);
- return txHash;
- },
-};
-
-export default walletState;
diff --git a/tests/govtool-frontend/cypress/support/command.d.ts b/tests/govtool-frontend/cypress/support/command.d.ts
deleted file mode 100644
index 45c4e2b78..000000000
--- a/tests/govtool-frontend/cypress/support/command.d.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-declare namespace Cypress {
- interface Chainable {
- getBySel(
- selector: string,
- options?: Partial<
- Cypress.Loggable &
- Cypress.Timeoutable &
- Cypress.Withinable &
- Cypress.Shadow
- >
- ): Chainable;
- runOneTimeWalletSetup(): any;
- getInputByPlaceholder(placeholder: string): Chainable;
- getButtonByText(text: string): Chainable;
- setGlobalState(key: string, value: any);
- getGlobalState(key: string): any;
- }
-}
diff --git a/tests/govtool-frontend/cypress/support/commands.ts b/tests/govtool-frontend/cypress/support/commands.ts
deleted file mode 100644
index 67d02f140..000000000
--- a/tests/govtool-frontend/cypress/support/commands.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import * as addCommands from "cypress-browser-extension-plugin/commands";
-
-Cypress.Commands.add("getBySel", (selector, ...args): void | any => {
- return cy.get(`[data-testid="${selector}"]`, ...args);
-});
-
-Cypress.Commands.add("getInputByPlaceholder", (placeholder): void | any => {
- return cy.get(`input[placeholder*="${placeholder}"]`);
-});
-
-Cypress.Commands.add("getButtonByText", (text): void | any => {
- return cy.get("button").filter(`:contains("${text}")`);
-});
-
-Cypress.Commands.add("setGlobalState", (key, value) => {
- cy.window().then((w: any) => {
- w.myGlobalState = w.myGlobalState || {};
- w.myGlobalState[key] = value;
- });
-});
-
-Cypress.Commands.add("getGlobalState", (key) => {
- return cy.window().then((w: any) => {
- return w.myGlobalState && w.myGlobalState[key];
- });
-});
-
-addCommands(Cypress);
diff --git a/tests/govtool-frontend/cypress/support/e2e.ts b/tests/govtool-frontend/cypress/support/e2e.ts
deleted file mode 100644
index 2078b3716..000000000
--- a/tests/govtool-frontend/cypress/support/e2e.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-// ***********************************************************
-// This example support/e2e.js is processed and
-// loaded automatically before your test files.
-//
-// This is a great place to put global configuration and
-// behavior that modifies Cypress.
-//
-// You can change the location of this file or turn off
-// automatically serving support files with the
-// 'supportFile' configuration option.
-//
-// You can read more here:
-// https://on.cypress.io/configuration
-// ***********************************************************
-
-// Import commands.js using ES2015 syntax:
-import "cypress-cloud/support";
-import "./commands";
-
-// Alternatively you can use CommonJS syntax:
-// require('./commands')
diff --git a/tests/govtool-frontend/cypress/support/utils.ts b/tests/govtool-frontend/cypress/support/utils.ts
deleted file mode 100644
index 277b893f8..000000000
--- a/tests/govtool-frontend/cypress/support/utils.ts
+++ /dev/null
@@ -1,164 +0,0 @@
-import { blake2b, blake2bHex } from "blakejs";
-import { randomBytes } from "crypto";
-import { bech32 } from "bech32";
-import { Ed25519Key, ShelleyWallet } from "../lib/wallet/crypto";
-import { Logger } from "../lib/logger/logger";
-import { CipMethodOverride, WalletParams } from "../lib/wallet/types";
-import { Decoder, Encoder } from "cbor-x";
-import walletState from "../state/walletState";
-
-export const cborxEncoder = new Encoder({
- mapsAsObjects: false,
- useRecords: false,
-});
-export const cborxDecoder = new Decoder({ mapsAsObjects: false });
-
-export function injectOpen() {
- let a = { args: [] };
- cy.window().then((w: any) => {
- w.open = (...args) => {
- a.args = args;
- };
- });
- return a;
-}
-
-export function convertUint8ArrayToHex(buffer: Uint8Array) {
- return Buffer.from(buffer).toString("hex");
-}
-export function random32BytesHex() {
- return randomBytes(32).toString("hex");
-}
-
-export function generateDRep() {
- const dRepKey = randomBytes(32);
- return loadDRepFromKey(dRepKey);
-}
-
-export function loadDRepFromKey(dRepKey?: any) {
- const dRepKeyHash = blake2b(dRepKey, undefined, 28);
- return {
- id: bech32.encode("drep", bech32.toWords(dRepKeyHash)),
- key: dRepKey.toString("hex"),
- };
-}
-
-export function getWebAppNetworkId(): number {
- const networkId: string = Cypress.env("networkId");
- //@ts-ignore
- return networkId.toLowerCase() == "testnet" || networkId == 0 ? 0 : 1;
-}
-
-export const isMobile = () => {
- return (
- Cypress.config("viewportWidth") <
- Cypress.env("mobileViewportWidthBreakpoint")
- );
-};
-
-export const removeWhiteSpaces = (str: string) => str.replace(/\s+/g, "");
-
-export const groupElements = (elements: any[], key?: string) => {
- const groupedElements = {};
-
- elements.forEach((element) => {
- const elementType = key ? element[`${key}`] : element.type;
-
- if (!groupedElements[elementType]) {
- groupedElements[elementType] = [];
- }
- groupedElements[elementType].push({
- ...element,
- txHash: element.txHash,
- });
- });
-
- return groupedElements;
-};
-
-// export const loadDRep = async (type: "dRep" | "adaHolder") => {
-// const stakePrivKeyHex =
-// type === "dRep"
-// ? dRepWalletDetails.stake.private
-// : adaHolderWalletDetails.stake.private;
-// const stakeKey = await Ed25519Key.fromPrivateKeyHex(stakePrivKeyHex);
-// const dRepKey = Buffer.from(stakeKey.pkh).toString("hex");
-// return loadDRepFromKey(dRepKey);
-// };
-
-export const getDRepIDHash = (dRepIdBech32: string) => {
- const decodedDRepId = bech32.decode(dRepIdBech32);
- const dRepIDHex = Buffer.from(bech32.fromWords(decodedDRepId.words)).toString(
- "hex"
- );
- Logger.success("Decoded DRepId Hex: " + dRepIDHex);
- return dRepIDHex;
-};
-
-export const getPubDRepIds = (dRepKey: string) => {
- const dRepKeyBytes = Buffer.from(dRepKey, "hex");
- const dRepID = blake2bHex(dRepKeyBytes, undefined, 28);
- const words = bech32.toWords(Buffer.from(dRepID, "hex"));
- const dRepIdBech32 = bech32.encode("drep", words);
- return { dRepID, dRepIdBech32 };
-};
-
-export function destructWalletArgs(args: CipMethodOverride & WalletParams) {
- args = {
- ...args,
- onTxSign: (txId) => {
- walletState.setTxHash(txId);
- },
- onWalletInitialized: ({ wallet, stakePkh, signingKey, address }) => {
- walletState.setWallet(wallet);
- walletState.setStakePkh(stakePkh);
- walletState.setSigningKey(signingKey);
- walletState.setAddress(address);
-
- Logger.success("[Wallet State] Wallet state saved.");
- },
- };
- const overrides: CipMethodOverride = {};
- const walletParams: WalletParams = {
- loadFundsAndRegister: null,
- onTxSign: null,
- withStakeSigning: false,
- onWalletInitialized: null,
- };
-
- args &&
- Object.keys(args).forEach((key) => {
- if (key in walletParams) {
- walletParams[key] = args[key];
- } else {
- overrides[key] = args[key];
- }
- });
- console.log("overrides: " + JSON.stringify(overrides));
- console.log("walletParams: " + JSON.stringify(walletParams));
- return { overrides, walletParams };
-}
-
-export function saveWallets(wallets: ShelleyWallet[]) {
- const jsonWallets = [];
- for (let i = 0; i < wallets.length; i++) {
- jsonWallets.push({
- ...wallets[i].json(),
- address: wallets[i].addressBech32(0),
- });
- }
- cy.writeFile("cypress/fixtures/wallets.json", jsonWallets, { flag: "a" });
-}
-
-export function getTxHash(tx: string) {
- let decodedTx = cborxDecoder.decode(Buffer.from(tx, "hex"));
- const txbody = Uint8Array.from(cborxEncoder.encode(decodedTx[0]));
- return blake2bHex(txbody, undefined, 32);
-}
-
-export const getShortenedGovActionId = (txHash: string, index: number) => {
- const firstPart = txHash.slice(0, 4);
- const lastPart = txHash.slice(-4);
-
- return `${firstPart}...${lastPart}#${index}`;
-};
diff --git a/tests/govtool-frontend/cypress/support/validations.ts b/tests/govtool-frontend/cypress/support/validations.ts
deleted file mode 100644
index 2dd36f9ec..000000000
--- a/tests/govtool-frontend/cypress/support/validations.ts
+++ /dev/null
@@ -1,61 +0,0 @@
-import { govActionEnums } from "../constants/governanceActions";
-import { getShortenedGovActionId } from "./utils";
-
-// Validates that the rendered data on the frontend matches the expected filtered data.
-export const validateFilter = (filterText: string) => {
- cy.getBySel(`govaction-${filterText.replace(/ /g, "")}-card`).each(
- ($slide) => {
- cy.wrap($slide).should("contain", filterText);
- }
- );
-};
-
-// Validates that the rendered data on the frontend matches the expected sorted order.
-export const validateSort = (sortedData: any) => {
- Object.keys(sortedData).forEach((type: string, type_index: number) => {
- cy.wrap(type_index).then(() => {
- cy.getBySel(
- `govaction-${govActionEnums[type].replace(/ /g, "")}-card`
- ).each(($slide, idx) => {
- if (idx > 5) return;
-
- cy.wrap({ idx, type }).then((context) => {
- cy.wrap($slide)
- .find(
- `[data-testid="${sortedData[context.type][context.idx].txHash}#${
- sortedData[context.type][context.idx].index
- }-id"]`
- )
- .should("have.length.greaterThan", 0);
- });
- });
- });
- });
- cy.contains("Clear", { matchCase: false }).click();
-};
-
-export const validateDRepURLInput = (value: string, invalid = true) => {
- cy.getBySel("url-input").type(value).blur();
- if (invalid) {
- cy.getBySel("invalid-url-format-error").should("be.visible");
- } else {
- cy.getBySel("invalid-url-format-error").should("not.exist");
- }
-
- cy.getBySel("url-input").clear();
-};
-
-export const validateDRepMetaHashInput = (value: string, invalid = true) => {
- cy.getBySel("hash-input").type(value).blur();
- if (invalid) {
- cy.getBySel("hash-must-be-exactly-64-characters-long-error").should(
- "be.visible"
- );
- } else {
- cy.getBySel("hash-must-be-exactly-64-characters-long-error").should(
- "not.exist"
- );
- }
-
- cy.getBySel("hash-input").clear();
-};
diff --git a/tests/govtool-frontend/package.json b/tests/govtool-frontend/package.json
deleted file mode 100644
index 89136b905..000000000
--- a/tests/govtool-frontend/package.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
- "name": "govtool-frontend-test",
- "version": "1.0.0",
- "main": "index.js",
- "license": "MIT",
- "scripts": {
- "cypress": "cypress",
- "cypress-cloud": "cypress-cloud",
- "cypress:run:mobile": "cypress run --config viewportWidth=375,viewportHeight=667",
- "cypress:open:mobile": "cypress open --config viewportWidth=375,viewportHeight=667",
- "cypress-cloud:run:mobile": "cypress run --config viewportWidth=375,viewportHeight=667",
- "test": "ts-node test.ts"
- },
- "dependencies": {
- "@noble/ed25519": "^2.0.0",
- "@types/node": "^20.5.0",
- "add": "^2.0.6",
- "axios": "^1.4.0",
- "bech32": "^2.0.0",
- "blakejs": "^1.2.1",
- "cbor-x": "^1.5.4",
- "cypress": "^13.6.0",
- "cypress-browser-extension-plugin": "^0.1.0",
- "cypress-cloud": "^1.9.3",
- "typescript": "^5.1.6"
- }
-}
diff --git a/tests/govtool-frontend/playwright/lib/_mock/index.ts b/tests/govtool-frontend/playwright/lib/_mock/index.ts
index c741473e9..23c200604 100644
--- a/tests/govtool-frontend/playwright/lib/_mock/index.ts
+++ b/tests/govtool-frontend/playwright/lib/_mock/index.ts
@@ -1,28 +1,33 @@
import { faker } from "@faker-js/faker";
+import { generateExactLengthText } from "@helpers/string";
export const invalid = {
- url: () => {
- const invalidSchemes = ["ftp", "unsupported", "unknown-scheme"];
- const invalidCharacters = "<>@!#$%^&*()";
- const invalidTlds = [".invalid", ".example", ".test"];
-
- const scheme =
- invalidSchemes[Math.floor(Math.random() * invalidSchemes.length)];
- const invalidChar =
- invalidCharacters[Math.floor(Math.random() * invalidCharacters.length)];
- const invalidTld =
- invalidTlds[Math.floor(Math.random() * invalidTlds.length)];
-
- const randomDomain = `example${invalidChar}domain${invalidTld}`;
- return `${scheme}://${randomDomain}`;
+ url: (isSupportedGreaterThan128Words = true) => {
+ const choice = isSupportedGreaterThan128Words
+ ? 1
+ : faker.number.int({ min: 1, max: 2 });
+ if (choice === 1) {
+ const invalidSchemes = ["ftp", "unsupported", "unknown-scheme"];
+ const invalidCharacters = "<>@!#$%^&*()";
+ const invalidTlds = [".invalid", ".example", ".test"];
+
+ const scheme =
+ invalidSchemes[Math.floor(Math.random() * invalidSchemes.length)];
+ const invalidChar =
+ invalidCharacters[Math.floor(Math.random() * invalidCharacters.length)];
+ const invalidTld =
+ invalidTlds[Math.floor(Math.random() * invalidTlds.length)];
+
+ const randomDomain = `example${invalidChar}domain${invalidTld}`;
+ return `${scheme}://${randomDomain}`;
+ }
+ // max 128 words invalid
+ return faker.internet.url() + faker.lorem.paragraphs(2).replace(/\s+/g, "");
},
name: () => {
- const choice = faker.number.int({ min: 1, max: 3 });
+ const choice = faker.number.int({ min: 1, max: 2 });
if (choice === 1) {
- // space invalid
- return faker.lorem.word() + " " + faker.lorem.word();
- } else if (choice === 2) {
// maximum 80 words invalid
return faker.lorem.paragraphs().replace(/\s+/g, "");
}
@@ -74,11 +79,10 @@ export const invalid = {
return " ";
},
- paragraph: () => {
+ paragraph: (maxCharacter: number) => {
const choice = faker.number.int({ min: 1, max: 2 });
if (choice === 1) {
- // maximum 500 words
- return faker.lorem.paragraphs(40);
+ return generateExactLengthText(maxCharacter);
}
// empty invalid
return " ";
@@ -90,6 +94,13 @@ export const invalid = {
};
export const valid = {
+ name: () => {
+ const choice = faker.number.int({ min: 1, max: 2 });
+ if (choice === 1) {
+ return faker.internet.displayName();
+ }
+ return faker.lorem.word() + " " + faker.lorem.word();
+ },
username: () => {
let timeStamp = Date.now();
let username = `${faker.internet.userName().toLowerCase()}_${timeStamp}`;
diff --git a/tests/govtool-frontend/playwright/lib/constants/docsUrl.ts b/tests/govtool-frontend/playwright/lib/constants/docsUrl.ts
index 9a589861a..b71d3b382 100644
--- a/tests/govtool-frontend/playwright/lib/constants/docsUrl.ts
+++ b/tests/govtool-frontend/playwright/lib/constants/docsUrl.ts
@@ -1,6 +1,6 @@
import environments from "./environments";
-export const DELEGATION_DOC_URL = `${environments.docsUrl}/using-govtool/govtool-functions/delegating`;
+export const DELEGATION_DOC_URL = `${environments.docsUrl}/about/what-is-cardano-govtool/govtool-functions/delegating`;
export const REGISTER_DREP_DOC_URL = `${environments.docsUrl}/using-govtool/govtool-functions/dreps/register-as-a-drep`;
export const DIRECT_VOTER_DOC_URL = `${environments.docsUrl}/using-govtool/govtool-functions/direct-voting`;
export const GOVERNANCE_ACTION_DOC_URL = `${environments.docsUrl}/using-govtool/govtool-functions/governance-actions/view-governance-actions`;
@@ -9,7 +9,7 @@ export const ABSTAIN_VOTE_DOC_URL = `${environments.docsUrl}/using-govtool/govto
export const SIGNAL_NO_CONFIDENCE_VOTE_DOC_URL = `${environments.docsUrl}/using-govtool/govtool-functions/delegating/signal-no-confidence-on-every-vote`;
export const FAQS_DOC_URL = `${environments.docsUrl}/faqs`;
export const GUIDES_DOC_URL = `${environments.docsUrl}`;
-export const PRIVACY_POLICY = `${environments.docsUrl}/legal/privacy-policy`;
-export const TERMS_AND_CONDITIONS = `${environments.docsUrl}/legal/terms-and-conditions`;
-export const HELP_DOC_URL = `${environments.docsUrl}/support/get-help-in-discord`;
+export const PRIVACY_POLICY = `https://docs.intersectmbo.org/legal/policies-and-conditions/privacy-policy`;
+export const TERMS_AND_CONDITIONS = `https://docs.intersectmbo.org/legal/policies-and-conditions/terms-of-use`;
+export const HELP_DOC_URL = `${environments.docsUrl}/support`;
export const BOOTSTRAP_DOC_URL = `${environments.docsUrl}/about/bootstrapping-phase`;
diff --git a/tests/govtool-frontend/playwright/lib/constants/environments.ts b/tests/govtool-frontend/playwright/lib/constants/environments.ts
index ed801fc0a..e0cdbf4cd 100644
--- a/tests/govtool-frontend/playwright/lib/constants/environments.ts
+++ b/tests/govtool-frontend/playwright/lib/constants/environments.ts
@@ -5,6 +5,7 @@ const CARDANO_API_METADATA_HOST_URL =
process.env.CARDANOAPI_METADATA_URL ||
"https://metadata-govtool.cardanoapi.io";
const SERVER_HOST_URL = process.env.HOST_URL || "http://localhost:8080";
+const NETWORK = process.env.NETWORK || "preview";
const environments = {
frontendUrl: SERVER_HOST_URL,
@@ -14,12 +15,20 @@ const environments = {
networkId: parseInt(process.env.NETWORK_ID) || 0,
faucet: {
apiUrl:
- process.env.FAUCET_API_URL ||
- "https://faucet.sanchonet.world.dev.cardano.org",
+ process.env.FAUCET_API_URL.replace("sanchonet", NETWORK) ||
+ "https://faucet.sanchonet.world.dev.cardano.org".replace(
+ "sanchonet",
+ NETWORK
+ ),
apiKey: process.env.FAUCET_API_KEY || "",
+ address:
+ process.env.FAUCET_ADDRESS ||
+ "addr_test1vz0ua2vyk7r4vufmpqh5v44awg8xff26hxlwyrt3uc67maqtql3kl",
},
kuber: {
- apiUrl: process.env.KUBER_API_URL || "https://kuber-govtool.cardanoapi.io",
+ apiUrl:
+ process.env.KUBER_API_URL.replace("sanchonet", NETWORK) ||
+ "https://sanchonet.kuber.cardanoapi.io".replace("sanchonet", NETWORK),
apiKey: process.env.KUBER_API_KEY || "",
},
txTimeOut: parseInt(process.env.TX_TIMEOUT) || 240000,
diff --git a/tests/govtool-frontend/playwright/lib/forms/dRepForm.ts b/tests/govtool-frontend/playwright/lib/forms/dRepForm.ts
index cc578b217..3985e96d3 100644
--- a/tests/govtool-frontend/playwright/lib/forms/dRepForm.ts
+++ b/tests/govtool-frontend/playwright/lib/forms/dRepForm.ts
@@ -12,7 +12,14 @@ const formErrors = {
],
linkDescription: "max-80-characters-error",
email: "invalid-email-address-error",
- link: "invalid-url-error",
+ links: {
+ url:"link-reference-description-1-error",
+ description: "link-reference-description-1-error",
+ },
+ identity: {
+ url: "identity-reference-url-1-error",
+ description: "identity-reference-description-1-error",
+ },
paymentAddress: "invalid-payment-address-error",
};
@@ -165,7 +172,8 @@ export default class DRepForm {
dRepInfo.qualifications
);
- await expect(this.form.getByTestId(formErrors.link)).toBeHidden();
+ await expect(this.form.getByTestId(formErrors.links.url)).toBeHidden();
+ await expect(this.form.getByTestId(formErrors.identity.url)).toBeHidden();
await expect(this.form.getByTestId(formErrors.paymentAddress)).toBeHidden();
await expect(this.continueBtn).toBeEnabled();
}
@@ -190,7 +198,7 @@ export default class DRepForm {
})
.all();
- expect(nameErrors.length).toBeGreaterThanOrEqual(1); // BUG duplicate test ids
+ expect(nameErrors.length).toBeGreaterThanOrEqual(1);
await expect(
this.form.getByTestId(formErrors.paymentAddress)
@@ -206,14 +214,14 @@ export default class DRepForm {
dRepInfo.qualifications
);
- await expect(this.form.getByTestId(formErrors.link).first()).toBeVisible(); // BUG duplicate test ids
+ await expect(this.form.getByTestId(formErrors.links.url)).toBeVisible();
await expect(
- this.form.getByTestId(formErrors.linkDescription).first()
- ).toBeVisible(); // BUG duplicate test ids
- await expect(this.form.getByTestId(formErrors.link).last()).toBeVisible(); // BUG duplicate test ids
+ this.form.getByTestId(formErrors.links.description)
+ ).toBeVisible();
+ await expect(this.form.getByTestId(formErrors.identity.url)).toBeVisible();
await expect(
- this.form.getByTestId(formErrors.linkDescription).last()
- ).toBeVisible(); // BUG duplicate test ids
+ this.form.getByTestId(formErrors.identity.description)
+ ).toBeVisible();
await expect(this.continueBtn).toBeDisabled();
}
diff --git a/tests/govtool-frontend/playwright/lib/helpers/string.ts b/tests/govtool-frontend/playwright/lib/helpers/string.ts
index 68c20208e..26ec9453c 100644
--- a/tests/govtool-frontend/playwright/lib/helpers/string.ts
+++ b/tests/govtool-frontend/playwright/lib/helpers/string.ts
@@ -1,3 +1,17 @@
+import { faker } from "@faker-js/faker";
+
export function extractProposalIdFromUrl(url: string) {
return parseInt(url.split("/").pop());
}
+
+export function generateExactLengthText(characterLength:number) {
+ let text = '';
+
+ // Keep generating paragraphs until we exceed the required length
+ while (text.length < characterLength) {
+ text += faker.lorem.paragraphs(10);
+ }
+
+ // Truncate to the exact number of characters needed
+ return text.substring(0, characterLength);
+}
\ No newline at end of file
diff --git a/tests/govtool-frontend/playwright/lib/helpers/transaction.ts b/tests/govtool-frontend/playwright/lib/helpers/transaction.ts
index e055d2549..087147351 100644
--- a/tests/govtool-frontend/playwright/lib/helpers/transaction.ts
+++ b/tests/govtool-frontend/playwright/lib/helpers/transaction.ts
@@ -2,11 +2,11 @@ import environments from "@constants/environments";
import { Page, expect } from "@playwright/test";
import kuberService from "@services/kuberService";
import { LockInterceptor, LockInterceptorInfo } from "lib/lockInterceptor";
-import { Logger } from "../../../cypress/lib/logger/logger";
import convertBufferToHex from "./convertBufferToHex";
import { ShelleyWallet } from "./crypto";
import { uploadMetadataAndGetJsonHash } from "./metadata";
import { WalletAndAnchorType } from "@types";
+import { Logger } from "@helpers/logger";
/**
* Polls the transaction status until it's resolved or times out.
diff --git a/tests/govtool-frontend/playwright/lib/pages/dRepDirectoryPage.ts b/tests/govtool-frontend/playwright/lib/pages/dRepDirectoryPage.ts
index 36e5cd9cd..9c4ccceb3 100644
--- a/tests/govtool-frontend/playwright/lib/pages/dRepDirectoryPage.ts
+++ b/tests/govtool-frontend/playwright/lib/pages/dRepDirectoryPage.ts
@@ -103,10 +103,7 @@ export default class DRepDirectoryPage {
async sortDRep(option: string) {}
- async sortAndValidate(
- option: string,
- validationFn: (p1: IDRep, p2: IDRep) => boolean
- ) {
+ async getDRepsResponseFromApi(option: string): Promise {
const responsePromise = this.page.waitForResponse((response) =>
response.url().includes(`&sort=${option}`)
);
@@ -114,7 +111,14 @@ export default class DRepDirectoryPage {
await this.page.getByTestId(`${option}-radio`).click();
const response = await responsePromise;
- const dRepList: IDRep[] = (await response.json()).elements;
+ return (await response.json()).elements;
+ }
+
+ async sortAndValidate(
+ option: string,
+ validationFn: (p1: IDRep, p2: IDRep) => boolean
+ ) {
+ const dRepList = await this.getDRepsResponseFromApi(option);
// API validation
for (let i = 0; i <= dRepList.length - 2; i++) {
diff --git a/tests/govtool-frontend/playwright/lib/pages/governanceActionDetailsPage.ts b/tests/govtool-frontend/playwright/lib/pages/governanceActionDetailsPage.ts
index bce6ece44..600d8818f 100644
--- a/tests/govtool-frontend/playwright/lib/pages/governanceActionDetailsPage.ts
+++ b/tests/govtool-frontend/playwright/lib/pages/governanceActionDetailsPage.ts
@@ -21,6 +21,9 @@ export default class GovernanceActionDetailsPage {
readonly governanceActionId = this.page.getByText("Governance Action ID:");
readonly contextBtn = this.page.getByTestId("provide-context-button");
+ readonly metadataDownloadBtn = this.page.getByTestId(
+ "metadata-download-button"
+ );
readonly viewOtherDetailsLink = this.page.getByTestId(
"view-other-details-button"
);
@@ -31,8 +34,31 @@ export default class GovernanceActionDetailsPage {
readonly externalLinkModal = this.page.getByTestId("external-link-modal");
readonly contextInput = this.page.getByTestId("provide-context-input");
+ readonly metadataUrlInput = this.page.getByTestId("metadata-url-input");
readonly cancelModalBtn = this.page.getByTestId("cancel-modal-button");
+ readonly dRepYesVotes = this.page.getByTestId("submitted-votes-dReps-yes");
+ readonly dRepNoVotes = this.page.getByTestId("submitted-votes-dReps-no");
+ readonly dRepAbstainVotes = this.page.getByTestId(
+ "submitted-votes-dReps-abstain"
+ );
+
+ readonly sPosYesVotes = this.page.getByTestId("submitted-votes-sPos-yes");
+ readonly sPosNoVotes = this.page.getByTestId("submitted-votes-sPos-no");
+ readonly sPosAbstainVotes = this.page.getByTestId(
+ "submitted-votes-sPos-abstain"
+ );
+
+ readonly ccCommitteeYesVotes = this.page.getByTestId(
+ "submitted-votes-ccCommittee-yes"
+ );
+ readonly ccCommitteeNoVotes = this.page.getByTestId(
+ "submitted-votes-ccCommittee-no"
+ );
+ readonly ccCommitteeAbstainVotes = this.page.getByTestId(
+ "submitted-votes-ccCommittee-abstain"
+ );
+
constructor(private readonly page: Page) {}
get currentPage(): Page {
@@ -56,16 +82,14 @@ export default class GovernanceActionDetailsPage {
await this.page.getByRole("checkbox").click();
await this.confirmModalBtn.click();
- this.page
- .getByRole("button", { name: "download Vote_Context.jsonld" })
- .click(); // BUG missing test id
+ this.metadataDownloadBtn.click();
const voteMetadata = await this.downloadVoteMetadata();
const url = await metadataBucketService.uploadMetadata(
voteMetadata.name,
voteMetadata.data
);
- await this.page.getByPlaceholder("URL").fill(url); // Bug showing data-testid="undefinedinput" on url
+ await this.metadataUrlInput.fill(url);
await this.confirmModalBtn.click();
await this.page.getByTestId("go-to-vote-modal-button").click();
}
diff --git a/tests/govtool-frontend/playwright/lib/pages/proposalSubmissionPage.ts b/tests/govtool-frontend/playwright/lib/pages/proposalSubmissionPage.ts
index 66ffa3d32..532b4c4ba 100644
--- a/tests/govtool-frontend/playwright/lib/pages/proposalSubmissionPage.ts
+++ b/tests/govtool-frontend/playwright/lib/pages/proposalSubmissionPage.ts
@@ -297,9 +297,9 @@ export default class ProposalSubmissionPage {
generateInValidProposalFormFields(proposalType: ProposalType) {
const proposal: ProposalCreateRequest = {
prop_name: invalid.proposalTitle(),
- prop_abstract: invalid.paragraph(),
- prop_motivation: invalid.paragraph(),
- prop_rationale: invalid.paragraph(),
+ prop_abstract: invalid.paragraph(2510),
+ prop_motivation: invalid.paragraph(12020),
+ prop_rationale: invalid.paragraph(12020),
proposal_links: [
{
diff --git a/tests/govtool-frontend/playwright/lib/services/kuberService.ts b/tests/govtool-frontend/playwright/lib/services/kuberService.ts
index 6ddc81a43..fe42fbf0e 100644
--- a/tests/govtool-frontend/playwright/lib/services/kuberService.ts
+++ b/tests/govtool-frontend/playwright/lib/services/kuberService.ts
@@ -10,7 +10,7 @@ import environments from "lib/constants/environments";
import { LockInterceptor, LockInterceptorInfo } from "lib/lockInterceptor";
import fetch, { BodyInit, RequestInit } from "node-fetch";
import { cborxDecoder, cborxEncoder } from "../helpers/cborEncodeDecode";
-import { Logger } from "./../../../cypress/lib/logger/logger";
+import { Logger } from "@helpers/logger";
type CertificateType = "registerstake" | "registerdrep" | "deregisterdrep";
@@ -248,6 +248,24 @@ const kuberService = {
return kuber.signAndSubmitTx(req);
},
+ multipleDRepDeRegistration: (wallets: StaticWallet[]) => {
+ const kuber = new Kuber(faucetWallet.address, faucetWallet.payment.private);
+ const req = {
+ certificates: wallets.map((wallet) =>
+ Kuber.generateCert("deregisterdrep", wallet.stake.pkh)
+ ),
+ selections: wallets.map((wallet) => {
+ return {
+ type: "PaymentSigningKeyShelley_ed25519",
+ description: "Stake Signing Key",
+ cborHex: `5820${wallet.stake.private}`,
+ };
+ }),
+ inputs: faucetWallet.address,
+ };
+ return kuber.signAndSubmitTx(req);
+ },
+
stakeDelegation: (
addr: string,
signingKey: string,
diff --git a/tests/govtool-frontend/playwright/lib/walletManager.ts b/tests/govtool-frontend/playwright/lib/walletManager.ts
index cd9183269..f9558e9e3 100644
--- a/tests/govtool-frontend/playwright/lib/walletManager.ts
+++ b/tests/govtool-frontend/playwright/lib/walletManager.ts
@@ -5,7 +5,12 @@ const path = require("path");
const baseFilePath = path.resolve(__dirname, "./_mock");
-export type Purpose = "registerDRep" | "registeredDRep" | "proposalSubmission";
+export type Purpose =
+ | "registerDRep"
+ | "registeredDRep"
+ | "proposalSubmission"
+ | "registerDRepCopy"
+ | "registeredDRepCopy";
/**
* WalletManager class is responsible for managing a list of temporary wallets.
@@ -37,7 +42,7 @@ class WalletManager {
);
}
- private async readWallets(purpose: Purpose): Promise {
+ async readWallets(purpose: Purpose): Promise {
const data: string = await new Promise((resolve, reject) =>
fs.readFile(
`${baseFilePath}/${purpose}Wallets.json`,
@@ -54,6 +59,14 @@ class WalletManager {
return JSON.parse(data);
}
+ async removeCopyWallet(walletToRemove: StaticWallet, purpose: Purpose) {
+ const currentWallets = await this.readWallets(purpose);
+ const updatedWallets = currentWallets.filter(
+ (wallet) => wallet.address !== walletToRemove.address
+ );
+ await this.writeWallets(updatedWallets, purpose);
+ }
+
async popWallet(purpose: Purpose): Promise {
const popCb = async () => {
const wallets = await this.readWallets(purpose);
diff --git a/tests/govtool-frontend/playwright/playwright.config.ts b/tests/govtool-frontend/playwright/playwright.config.ts
index de0939e99..c5a6404db 100644
--- a/tests/govtool-frontend/playwright/playwright.config.ts
+++ b/tests/govtool-frontend/playwright/playwright.config.ts
@@ -17,7 +17,7 @@ export default defineConfig({
/**TODO: Remove this timeout *
* It has been intentionally used to slow loading of govtool.
*/
- timeout: 90_000,
+ timeout: process.env.NETWORK === "preview" ? 180_000 : 90_000,
/* Fail the build on CI if you accidentally left test.only in the source code. */
forbidOnly: !!environments.ci,
/* Retry on CI only */
@@ -50,6 +50,7 @@ export default defineConfig({
{
name: "faucet setup",
testMatch: "**/faucet.setup.ts",
+ teardown: environments.ci && "cleanup faucet",
},
{
name: "dRep setup",
@@ -90,7 +91,10 @@ export default defineConfig({
name: "dRep",
use: { ...devices["Desktop Chrome"] },
testMatch: "**/*.dRep.spec.ts",
- dependencies: environments.ci ? ["auth setup", "dRep setup","wallet bootstrap"] : [],
+ dependencies: environments.ci
+ ? ["auth setup", "dRep setup", "wallet bootstrap"]
+ : [],
+ teardown: environments.ci && "cleanup dRep",
},
{
name: "delegation",
@@ -128,5 +132,13 @@ export default defineConfig({
name: "cleanup delegation",
testMatch: "delegation.teardown.ts",
},
+ {
+ name: "cleanup dRep",
+ testMatch: "dRep.teardown.ts",
+ },
+ {
+ name: "cleanup faucet",
+ testMatch: "faucet.teardown.ts",
+ },
],
});
diff --git a/tests/govtool-frontend/playwright/tests/2-delegation/delegation.spec.ts b/tests/govtool-frontend/playwright/tests/2-delegation/delegation.spec.ts
index e69693882..980081980 100644
--- a/tests/govtool-frontend/playwright/tests/2-delegation/delegation.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/2-delegation/delegation.spec.ts
@@ -2,22 +2,29 @@ import { setAllureEpic } from "@helpers/allure";
import { skipIfNotHardFork } from "@helpers/cardano";
import DRepDirectoryPage from "@pages/dRepDirectoryPage";
import { expect, test } from "@playwright/test";
-import { DRepStatus } from "@types";
+import { DRepStatus, IDRep } from "@types";
test.beforeEach(async () => {
await setAllureEpic("2. Delegation");
await skipIfNotHardFork();
});
+enum SortOption {
+ Random = "Random",
+ RegistrationDate = "RegistrationDate",
+ VotingPower = "VotingPower",
+ Status = "Status",
+}
+
+const statusRank: Record = {
+ Active: 1,
+ Inactive: 2,
+ Retired: 3,
+};
+
test("2K_2. Should sort DReps", async ({ page }) => {
test.slow();
- enum SortOption {
- RegistrationDate = "RegistrationDate",
- VotingPower = "VotingPower",
- Status = "Status",
- }
-
const dRepDirectory = new DRepDirectoryPage(page);
await dRepDirectory.goto();
@@ -35,10 +42,41 @@ test("2K_2. Should sort DReps", async ({ page }) => {
await dRepDirectory.sortAndValidate(
SortOption.Status,
- (d1, d2) => d1.status >= d2.status
+ (d1, d2) => statusRank[d1.status] <= statusRank[d2.status]
);
});
+test("2K_3. Should sort DReps randomly", async ({ page }) => {
+ const dRepDirectory = new DRepDirectoryPage(page);
+ await dRepDirectory.goto();
+
+ await dRepDirectory.sortBtn.click();
+
+ await page.getByTestId(`${SortOption.RegistrationDate}-radio`).click();
+
+ const dRepList1: IDRep[] = await dRepDirectory.getDRepsResponseFromApi(
+ SortOption.Random
+ );
+
+ await page.getByTestId(`${SortOption.RegistrationDate}-radio`).click();
+
+ const dRepList2: IDRep[] = await dRepDirectory.getDRepsResponseFromApi(
+ SortOption.Random
+ );
+
+ // Extract dRepIds from both lists
+ const dRepIdsList1 = dRepList1.map((dRep) => dRep.drepId);
+ const dRepIdsList2 = dRepList2.map((dRep) => dRep.drepId);
+
+ expect(dRepList1.length).toEqual(dRepList2.length);
+
+ const isOrderDifferent = dRepIdsList1.some(
+ (id, index) => id !== dRepIdsList2[index]
+ );
+
+ expect(isOrderDifferent).toBe(true);
+});
+
test("2O. Should load more DReps on show more", async ({ page }) => {
const dRepDirectory = new DRepDirectoryPage(page);
await dRepDirectory.goto();
diff --git a/tests/govtool-frontend/playwright/tests/2-delegation/delegationFunctionality.delegation.spec.ts b/tests/govtool-frontend/playwright/tests/2-delegation/delegationFunctionality.delegation.spec.ts
index e9eddf2d0..ed98314d0 100644
--- a/tests/govtool-frontend/playwright/tests/2-delegation/delegationFunctionality.delegation.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/2-delegation/delegationFunctionality.delegation.spec.ts
@@ -48,10 +48,15 @@ test.describe("Delegate to others", () => {
// Verify dRepId in dRep directory
await expect(
- page.getByTestId(`${dRepId}-delegate-button')`)
+ page.getByTestId(`${dRepId}-delegate-button`)
).not.toBeVisible();
- await expect(page.getByTestId(`${dRepId}-copy-id-button`)).toHaveCount(1, {
+ await expect(page.getByTestId(`${dRepId}-delegated-card`)).toBeVisible();
+ await expect(
+ page
+ .getByTestId(`${dRepId}-delegated-card`)
+ .getByTestId(`${dRepId}-copy-id-button`)
+ ).toHaveCount(1, {
timeout: 20_000,
});
@@ -104,16 +109,28 @@ test.describe("Change delegation", () => {
const dRepDirectoryPage = new DRepDirectoryPage(page);
await dRepDirectoryPage.goto();
await dRepDirectoryPage.delegateToDRep(dRepIdFirst);
- await expect(page.getByTestId(`${dRepIdFirst}-copy-id-button`)).toHaveText(
- dRepIdFirst,
- { timeout: 20_000 }
- ); // verify delegation
+ // verify delegation
+ await expect(
+ page.getByTestId(`${dRepIdFirst}-delegated-card`)
+ ).toBeVisible();
+
+ await expect(
+ page
+ .getByTestId(`${dRepIdFirst}-delegated-card`)
+ .getByTestId(`${dRepIdFirst}-copy-id-button`)
+ ).toHaveText(dRepIdFirst, { timeout: 20_000 });
+
+ // verify delegation
await dRepDirectoryPage.delegateToDRep(dRepIdSecond);
- await expect(page.getByTestId(`${dRepIdSecond}-copy-id-button`)).toHaveText(
- dRepIdSecond,
- { timeout: 20_000 }
- ); // verify delegation
+ await expect(
+ page.getByTestId(`${dRepIdSecond}-delegated-card`)
+ ).toBeVisible();
+ await expect(
+ page
+ .getByTestId(`${dRepIdSecond}-delegated-card`)
+ .getByTestId(`${dRepIdSecond}-copy-id-button`)
+ ).toHaveText(dRepIdSecond, { timeout: 20_000 });
});
});
@@ -123,6 +140,7 @@ test.describe("Register DRep state", () => {
test.beforeEach(async ({ page, browser }) => {
wallet = await walletManager.popWallet("registerDRep");
+ await walletManager.removeCopyWallet(wallet, "registerDRepCopy");
const dRepAuth = await createTempDRepAuth(page, wallet);
dRepPage = await createNewPageWithWallet(browser, {
diff --git a/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.dRep.spec.ts b/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.dRep.spec.ts
index 619befc5d..abdffbb05 100644
--- a/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.dRep.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.dRep.spec.ts
@@ -23,7 +23,7 @@ test.beforeEach(async () => {
test.describe("Logged in DReps", () => {
test.use({ storageState: ".auth/dRep01.json", wallet: dRep01Wallet });
- test("3A. Should show dRepId on dashboard after connecting registered dRep Wallet", async ({
+ test("3A. Should show dRepId on dashboard and enable voting on governance actions after connecting registered dRep Wallet", async ({
page,
}) => {
await page.goto("/");
@@ -37,6 +37,9 @@ test.describe("Logged in DReps", () => {
const governanceActionsPage = new GovernanceActionsPage(page);
await governanceActionsPage.goto();
+
+ await expect(page.getByText(/info action/i).first()).toBeVisible();
+
const governanceActionDetailsPage =
await governanceActionsPage.viewFirstProposalByGovernanceAction(
GrovernanceActionType.InfoAction
@@ -144,6 +147,7 @@ test.describe("Temporary DReps", () => {
test.slow(); // Due to queue in pop wallets
const wallet = await walletManager.popWallet("registeredDRep");
+ await walletManager.removeCopyWallet(wallet, "registeredDRepCopy");
const tempDRepAuth = await createTempDRepAuth(page, wallet);
const dRepPage = await createNewPageWithWallet(browser, {
@@ -168,6 +172,7 @@ test.describe("Temporary DReps", () => {
test.setTimeout(testInfo.timeout + environments.txTimeOut);
const wallet = await walletManager.popWallet("registeredDRep");
+ await walletManager.removeCopyWallet(wallet, "registeredDRepCopy");
const dRepAuth = await createTempDRepAuth(page, wallet);
const dRepPage = await createNewPageWithWallet(browser, {
diff --git a/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.loggedin.spec.ts b/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.loggedin.spec.ts
index a3da2b512..729b87568 100644
--- a/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.loggedin.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/3-drep-registration/dRepRegistration.loggedin.spec.ts
@@ -60,7 +60,7 @@ test.describe("Validation of dRep Registration Form", () => {
for (let i = 0; i < 100; i++) {
await dRepRegistrationPage.validateForm({
- name: faker.internet.displayName(),
+ name: mockValid.name(),
objectives: faker.lorem.paragraph(2),
motivations: faker.lorem.paragraph(2),
qualifications: faker.lorem.paragraph(2),
@@ -156,8 +156,16 @@ test.describe("Validation of dRep Registration Form", () => {
await dRepRegistrationPage.registerBtn.click();
for (let i = 0; i < 100; i++) {
- await dRepRegistrationPage.metadataUrlInput.fill(mockInvalid.url());
- await expect(page.getByTestId("invalid-url-error")).toBeVisible();
+ const invalidUrl = mockInvalid.url(false);
+
+ await dRepRegistrationPage.metadataUrlInput.fill(invalidUrl);
+ if (invalidUrl.length <= 128) {
+ await expect(page.getByTestId("invalid-url-error")).toBeVisible();
+ } else {
+ await expect(
+ page.getByTestId("url-must-be-less-than-128-bytes-error")
+ ).toBeVisible();
+ }
}
const sentenceWithoutSpace = faker.lorem
diff --git a/tests/govtool-frontend/playwright/tests/3-drep-registration/editDRep.dRep.spec.ts b/tests/govtool-frontend/playwright/tests/3-drep-registration/editDRep.dRep.spec.ts
index a2500d29b..656dc4714 100644
--- a/tests/govtool-frontend/playwright/tests/3-drep-registration/editDRep.dRep.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/3-drep-registration/editDRep.dRep.spec.ts
@@ -27,7 +27,7 @@ test.describe("Validation of edit dRep Form", () => {
for (let i = 0; i < 100; i++) {
await editDRepPage.validateForm({
- name: faker.internet.displayName(),
+ name: mockValid.name(),
objectives: faker.lorem.paragraph(2),
motivations: faker.lorem.paragraph(2),
qualifications: faker.lorem.paragraph(2),
@@ -127,8 +127,15 @@ test.describe("Validation of edit dRep Form", () => {
await editDRepPage.registerBtn.click();
for (let i = 0; i < 100; i++) {
- await editDRepPage.metadataUrlInput.fill(mockInvalid.url());
- await expect(page.getByTestId("invalid-url-error")).toBeVisible();
+ const invalidUrl = mockInvalid.url(false);
+ await editDRepPage.metadataUrlInput.fill(invalidUrl);
+ if (invalidUrl.length <= 128) {
+ await expect(page.getByTestId("invalid-url-error")).toBeVisible();
+ } else {
+ await expect(
+ page.getByTestId("url-must-be-less-than-128-bytes-error")
+ ).toBeVisible();
+ }
}
const sentenceWithoutSpace = faker.lorem
diff --git a/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.dRep.spec.ts b/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.dRep.spec.ts
index f897af4e7..6ac7a810b 100644
--- a/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.dRep.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.dRep.spec.ts
@@ -12,8 +12,14 @@ import {
import { createNewPageWithWallet } from "@helpers/page";
import GovernanceActionsPage from "@pages/governanceActionsPage";
import { Page, expect } from "@playwright/test";
-import { BootstrapGovernanceActionType, GrovernanceActionType, IProposal } from "@types";
+import { invalid as mockInvalid, valid as mockValid } from "@mock/index";
+import {
+ BootstrapGovernanceActionType,
+ GrovernanceActionType,
+ IProposal,
+} from "@types";
import walletManager from "lib/walletManager";
+import GovernanceActionDetailsPage from "@pages/governanceActionDetailsPage";
test.beforeEach(async () => {
await setAllureEpic("4. Proposal visibility");
@@ -37,6 +43,51 @@ test.describe("Logged in DRep", () => {
`₳ ${lovelaceToAda(votingPower)}`
);
});
+
+ test.describe("vote context metadata anchor validation", () => {
+ let govActionDetailsPage: GovernanceActionDetailsPage;
+ test.beforeEach(async ({ page }) => {
+ const govActionsPage = new GovernanceActionsPage(page);
+ await govActionsPage.goto();
+
+ govActionDetailsPage = (await isBootStrapingPhase())
+ ? await govActionsPage.viewFirstProposalByGovernanceAction(
+ GrovernanceActionType.InfoAction
+ )
+ : await govActionsPage.viewFirstProposal();
+
+ await govActionDetailsPage.contextBtn.click();
+ await govActionDetailsPage.contextInput.fill(faker.lorem.sentence(200));
+ await govActionDetailsPage.confirmModalBtn.click();
+ await page.getByRole("checkbox").click();
+ await govActionDetailsPage.confirmModalBtn.click();
+ });
+
+ test("4N. Should accept valid metadata anchor on vote context", async ({
+ page,
+ }) => {
+ for (let i = 0; i < 100; i++) {
+ await govActionDetailsPage.metadataUrlInput.fill(mockValid.url());
+ await expect(page.getByTestId("invalid-url-error")).toBeHidden();
+ }
+ });
+
+ test("4O. Should reject invalid metadata anchor on vote context", async ({
+ page,
+ }) => {
+ for (let i = 0; i < 100; i++) {
+ const invalidUrl = mockInvalid.url(false);
+ await govActionDetailsPage.metadataUrlInput.fill(invalidUrl);
+ if (invalidUrl.length <= 128) {
+ await expect(page.getByTestId("invalid-url-error")).toBeVisible();
+ } else {
+ await expect(
+ page.getByTestId("url-must-be-less-than-128-bytes-error")
+ ).toBeVisible();
+ }
+ }
+ });
+ });
});
test.describe("Temporary DReps", async () => {
@@ -108,60 +159,38 @@ test.describe("Check vote count", () => {
await governanceActionsPage.viewProposal(proposalToCheck);
await govActionDetailsPage.showVotesBtn.click();
- await expect(
- page
- .getByText("yes₳")
- .first()
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.dRepYesVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("abstain₳")
- .first()
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.dRepAbstainVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("no₳")
- .first()
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.dRepNoVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("yes₳")
- .nth(1)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.poolYesVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("abstain₳")
- .nth(1)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.poolAbstainVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("no₳")
- .nth(1)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.poolNoVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("yes₳")
- .nth(2)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.ccYesVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("abstain₳")
- .nth(2)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.ccAbstainVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("no₳")
- .nth(2)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.ccNoVotes)}`)
- ).toBeVisible();
+ // check dRep votes
+ await expect(govActionDetailsPage.dRepYesVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.dRepYesVotes)}`
+ );
+ await expect(govActionDetailsPage.dRepAbstainVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.dRepAbstainVotes)}`
+ );
+ await expect(govActionDetailsPage.dRepNoVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.dRepNoVotes)}`
+ );
+
+ // check sPos votes
+ await expect(govActionDetailsPage.sPosYesVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.poolYesVotes)}`
+ );
+ await expect(govActionDetailsPage.sPosAbstainVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.poolAbstainVotes)}`
+ );
+ await expect(govActionDetailsPage.sPosNoVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.poolNoVotes)}`
+ );
+
+ // check ccCommittee votes
+ await expect(govActionDetailsPage.ccCommitteeYesVotes).toHaveText(
+ `${proposalToCheck.ccYesVotes}`
+ );
+ await expect(govActionDetailsPage.ccCommitteeAbstainVotes).toHaveText(
+ `${proposalToCheck.ccAbstainVotes}`
+ );
+ await expect(govActionDetailsPage.ccCommitteeNoVotes).toHaveText(
+ `${proposalToCheck.ccNoVotes}`
+ );
});
});
diff --git a/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.spec.ts b/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.spec.ts
index bf8697df7..632760655 100644
--- a/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/4-proposal-visibility/proposalVisibility.spec.ts
@@ -52,60 +52,39 @@ test("4K. Should display correct vote counts on governance details page for disc
expect(proposals.length, "No proposals found!").toBeGreaterThan(0);
const proposalToCheck = proposals[0];
- await governanceActionsPage.viewProposal(proposalToCheck);
+ const govActionDetailsPage =
+ await governanceActionsPage.viewProposal(proposalToCheck);
- await expect(
- page
- .getByText("yes₳")
- .first()
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.dRepYesVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("abstain₳")
- .first()
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.dRepAbstainVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("no₳")
- .first()
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.dRepNoVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("yes₳")
- .nth(1)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.poolYesVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("abstain₳")
- .nth(1)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.poolAbstainVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("no₳")
- .nth(1)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.poolNoVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("yes₳")
- .nth(2)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.ccYesVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("abstain₳")
- .nth(2)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.ccAbstainVotes)}`)
- ).toBeVisible();
- await expect(
- page
- .getByText("no₳")
- .nth(2)
- .getByText(`₳ ${lovelaceToAda(proposalToCheck.ccNoVotes)}`)
- ).toBeVisible();
+ // check dRep votes
+ await expect(govActionDetailsPage.dRepYesVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.dRepYesVotes)}`
+ );
+ await expect(govActionDetailsPage.dRepAbstainVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.dRepAbstainVotes)}`
+ );
+ await expect(govActionDetailsPage.dRepNoVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.dRepNoVotes)}`
+ );
+
+ // check sPos votes
+ await expect(govActionDetailsPage.sPosYesVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.poolYesVotes)}`
+ );
+ await expect(govActionDetailsPage.sPosAbstainVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.poolAbstainVotes)}`
+ );
+ await expect(govActionDetailsPage.sPosNoVotes).toHaveText(
+ `₳ ${lovelaceToAda(proposalToCheck.poolNoVotes)}`
+ );
+
+ // check ccCommittee votes
+ await expect(govActionDetailsPage.ccCommitteeYesVotes).toHaveText(
+ `${proposalToCheck.ccYesVotes}`
+ );
+ await expect(govActionDetailsPage.ccCommitteeAbstainVotes).toHaveText(
+ `${proposalToCheck.ccAbstainVotes}`
+ );
+ await expect(govActionDetailsPage.ccCommitteeNoVotes).toHaveText(
+ `${proposalToCheck.ccNoVotes}`
+ );
});
diff --git a/tests/govtool-frontend/playwright/tests/5-proposal-functionality/proposalFunctionality.dRep.spec.ts b/tests/govtool-frontend/playwright/tests/5-proposal-functionality/proposalFunctionality.dRep.spec.ts
index 7c7282427..bafa8cfc1 100644
--- a/tests/govtool-frontend/playwright/tests/5-proposal-functionality/proposalFunctionality.dRep.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/5-proposal-functionality/proposalFunctionality.dRep.spec.ts
@@ -225,6 +225,7 @@ test.describe("Check voting power", () => {
test.setTimeout(testInfo.timeout + environments.txTimeOut);
const wallet = await walletManager.popWallet("registeredDRep");
+ await walletManager.removeCopyWallet(wallet, "registeredDRepCopy");
const tempDRepAuth = await createTempDRepAuth(page, wallet);
@@ -254,6 +255,20 @@ test.describe("Bootstrap phase", () => {
page,
context,
}) => {
+ await page.route("**/epoch/params", async (route) => {
+ // Fetch the original response from the server
+ const response = await route.fetch();
+ const json = await response.json();
+
+ // update protocol major version
+ json["protocol_major"] = 9;
+ await route.fulfill({
+ status: 200,
+ contentType: "application/json",
+ body: JSON.stringify(json),
+ });
+ });
+
const voteBlacklistOptions = Object.keys(GrovernanceActionType).filter(
(option) => option !== BootstrapGovernanceActionType.InfoAction
);
@@ -261,20 +276,10 @@ test.describe("Bootstrap phase", () => {
const govActionsPage = new GovernanceActionsPage(page);
await govActionsPage.goto();
- const protocolParameter = await page.evaluate(() => {
- return localStorage.getItem("protocol_params");
- });
- const parsedProtocolParameter = JSON.parse(protocolParameter);
- // update protocol_major version
- parsedProtocolParameter["protocol_major"] = 9;
-
- const updatedProtocolParameterString = JSON.stringify(
- parsedProtocolParameter
- );
- // add updated protocol parameter
- await context.addInitScript(`
- localStorage.setItem('protocol_params', '${updatedProtocolParameterString}');
- `);
+ // wait until the loading button is hidden
+ await expect(
+ page.getByRole("progressbar").getByRole("img")
+ ).not.toBeVisible({ timeout: 10_000 });
for (const voteBlacklistOption of voteBlacklistOptions) {
const governanceActionDetailsPage =
@@ -283,9 +288,30 @@ test.describe("Bootstrap phase", () => {
);
if (governanceActionDetailsPage !== null) {
- await expect(page.getByText("yes₳").first()).toBeVisible();
- await expect(page.getByText("abstain₳").first()).toBeVisible();
- await expect(page.getByText("no₳").first()).toBeVisible();
+ // dRep vote
+ await expect(governanceActionDetailsPage.dRepYesVotes).toBeVisible();
+ await expect(
+ governanceActionDetailsPage.dRepAbstainVotes
+ ).toBeVisible();
+ await expect(governanceActionDetailsPage.dRepNoVotes).toBeVisible();
+
+ // sPos vote
+ await expect(governanceActionDetailsPage.sPosYesVotes).toBeVisible();
+ await expect(
+ governanceActionDetailsPage.sPosAbstainVotes
+ ).toBeVisible();
+ await expect(governanceActionDetailsPage.sPosNoVotes).toBeVisible();
+
+ // ccCommittee vote
+ await expect(
+ governanceActionDetailsPage.ccCommitteeYesVotes
+ ).toBeVisible();
+ await expect(
+ governanceActionDetailsPage.ccCommitteeAbstainVotes
+ ).toBeVisible();
+ await expect(
+ governanceActionDetailsPage.ccCommitteeNoVotes
+ ).toBeVisible();
await expect(
governanceActionDetailsPage.yesVoteRadio
diff --git a/tests/govtool-frontend/playwright/tests/6-miscellaneous/miscellaneous.spec.ts b/tests/govtool-frontend/playwright/tests/6-miscellaneous/miscellaneous.spec.ts
index b0f5ae8a0..1389def75 100644
--- a/tests/govtool-frontend/playwright/tests/6-miscellaneous/miscellaneous.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/6-miscellaneous/miscellaneous.spec.ts
@@ -92,7 +92,7 @@ test("6M. Should navigate between footer links", async ({ page, context }) => {
const [termsAndConditions] = await Promise.all([
context.waitForEvent("page"),
- page.getByTestId("terms-and-conditions-footer-link").click(),
+ page.getByTestId("terms-of-use-footer-link").click(),
]);
await expect(termsAndConditions).toHaveURL(TERMS_AND_CONDITIONS);
@@ -284,5 +284,7 @@ test("6T. Should display proper network name", async ({ page }) => {
const response = await responsePromise;
const responseBody = await response.json();
- await expect((await page.getByTestId("system-network-name").innerText()).toLowerCase()).toBe(responseBody["networkName"].toLowerCase())
+ await expect(page.getByTestId("system-network-name")).toHaveText(
+ new RegExp(responseBody["networkName"], "i")
+ );
});
diff --git a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.loggedin.spec.ts b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.loggedin.spec.ts
index f95e01586..b96e5e2dc 100644
--- a/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.loggedin.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/7-proposal-submission/proposalSubmission.loggedin.spec.ts
@@ -39,7 +39,7 @@ test.describe("Proposal created logged state", () => {
}) => {
await skipIfTreasuryAndBootstrapping(type);
- test.slow(); // Brute-force testing with 100 random data
+ test.slow(); // Brute-force testing with 50 random data
const proposalSubmissionPage = new ProposalSubmissionPage(page);
@@ -79,7 +79,7 @@ test.describe("Proposal created logged state", () => {
}) => {
await skipIfTreasuryAndBootstrapping(type);
- test.slow(); // Brute-force testing with 100 random data
+ test.slow(); // Brute-force testing with 50 random data
const proposalSubmissionPage = new ProposalSubmissionPage(page);
await proposalSubmissionPage.goto();
@@ -261,7 +261,7 @@ test.describe("Proposal created logged state", () => {
}) => {
test.slow(); // Brute-force testing with 100 random data
for (let i = 0; i < 50; i++) {
- await proposalSubmissionPage.metadataUrlInput.fill(invalid.url());
+ await proposalSubmissionPage.metadataUrlInput.fill(invalid.url(false));
await expect(page.getByTestId("url-input-error-text")).toBeVisible();
}
diff --git a/tests/govtool-frontend/playwright/tests/8-proposal-discussion/proposalDiscussion.loggedin.spec.ts b/tests/govtool-frontend/playwright/tests/8-proposal-discussion/proposalDiscussion.loggedin.spec.ts
index a452b8101..fa9dbc999 100644
--- a/tests/govtool-frontend/playwright/tests/8-proposal-discussion/proposalDiscussion.loggedin.spec.ts
+++ b/tests/govtool-frontend/playwright/tests/8-proposal-discussion/proposalDiscussion.loggedin.spec.ts
@@ -12,6 +12,7 @@ import ProposalDiscussionDetailsPage from "@pages/proposalDiscussionDetailsPage"
import { Page, expect } from "@playwright/test";
import { setAllureEpic } from "@helpers/allure";
import { skipIfNotHardFork } from "@helpers/cardano";
+import ProposalSubmissionPage from "@pages/proposalSubmissionPage";
test.beforeEach(async () => {
await setAllureEpic("8. Proposal Discussion Forum");
@@ -154,9 +155,10 @@ test.describe("Proposal created with poll enabled (proposal auth)", () => {
});
let ownerProposalDiscussionDetailsPage: ProposalDiscussionDetailsPage;
+ let proposalPage: Page;
test.beforeEach(async ({ browser, proposalId }) => {
- const proposalPage = await createNewPageWithWallet(browser, {
+ proposalPage = await createNewPageWithWallet(browser, {
storageState: ".auth/proposal01.json",
wallet: proposal01Wallet,
});
@@ -187,4 +189,36 @@ test.describe("Proposal created with poll enabled (proposal auth)", () => {
await expect(userProposalDetailsPage.pollYesBtn).not.toBeVisible();
await expect(userProposalDetailsPage.pollNoBtn).not.toBeVisible();
});
+
+ test("8U. Should navigate to the edit proposal page when 'goto data edit screen' is selected if data does not match the anchor URL", async () => {
+ const invalidMetadataAnchorUrl = "https://www.google.com";
+ await ownerProposalDiscussionDetailsPage.submitAsGABtn.click();
+
+ const proposalSubmissionPage = new ProposalSubmissionPage(proposalPage);
+ await proposalPage.getByTestId("agree-checkbox").click();
+ await proposalSubmissionPage.continueBtn.click();
+ await proposalSubmissionPage.metadataUrlInput.fill(
+ invalidMetadataAnchorUrl
+ );
+ await proposalSubmissionPage.submitBtn.click();
+
+ await expect(
+ proposalPage.getByTestId("data-not-match-modal")
+ ).toBeVisible();
+ await expect(
+ proposalPage.getByTestId("data-not-match-modal-go-to-data-button")
+ ).toBeVisible();
+
+ await proposalPage
+ .getByTestId("data-not-match-modal-go-to-data-button")
+ .click();
+
+ await expect(
+ proposalPage.getByTestId("governance-action-type")
+ ).toBeVisible();
+ await expect(proposalPage.getByTestId("title-input")).toBeVisible();
+ await expect(proposalPage.getByTestId("abstract-input")).toBeVisible();
+ await expect(proposalPage.getByTestId("motivation-input")).toBeVisible();
+ await expect(proposalPage.getByTestId("rationale-input")).toBeVisible();
+ });
});
diff --git a/tests/govtool-frontend/playwright/tests/dRep.setup.ts b/tests/govtool-frontend/playwright/tests/dRep.setup.ts
index bba1f7dcb..319f00ec7 100644
--- a/tests/govtool-frontend/playwright/tests/dRep.setup.ts
+++ b/tests/govtool-frontend/playwright/tests/dRep.setup.ts
@@ -97,4 +97,6 @@ setup("Setup temporary DRep wallets", async () => {
// save to file
await walletManager.writeWallets(dRepWallets, "registeredDRep");
await walletManager.writeWallets(registerDRepWallets, "registerDRep");
+ await walletManager.writeWallets(dRepWallets, "registeredDRepCopy");
+ await walletManager.writeWallets(registerDRepWallets, "registerDRepCopy");
});
diff --git a/tests/govtool-frontend/playwright/tests/dRep.teardown.ts b/tests/govtool-frontend/playwright/tests/dRep.teardown.ts
new file mode 100644
index 000000000..402d9a48b
--- /dev/null
+++ b/tests/govtool-frontend/playwright/tests/dRep.teardown.ts
@@ -0,0 +1,40 @@
+import environments from "@constants/environments";
+import { dRepWallets } from "@constants/staticWallets";
+import { setAllureEpic, setAllureStory } from "@helpers/allure";
+import { pollTransaction } from "@helpers/transaction";
+import { test as cleanup, expect } from "@playwright/test";
+import kuberService from "@services/kuberService";
+import { StaticWallet } from "@types";
+import walletManager from "lib/walletManager";
+
+cleanup.describe.configure({ timeout: environments.txTimeOut });
+cleanup.beforeEach(async () => {
+ await setAllureEpic("Setup");
+ await setAllureStory("Cleanup");
+});
+
+cleanup("DRep de-registration", async () => {
+ const registerDRep: StaticWallet[] =
+ await walletManager.readWallets("registerDRepCopy");
+ const registeredDRep: StaticWallet[] =
+ await walletManager.readWallets("registeredDRepCopy");
+
+ const registeredDRepWallets = [
+ ...dRepWallets,
+ ...registerDRep,
+ ...registeredDRep,
+ ];
+ try {
+ const { txId, lockInfo } = await kuberService.multipleDRepDeRegistration(
+ registeredDRepWallets
+ );
+ await pollTransaction(txId, lockInfo);
+ } catch (err) {
+ console.log(err);
+ if (err.status === 400) {
+ expect(true, "DRep not registered").toBeTruthy();
+ } else {
+ throw Error(err);
+ }
+ }
+});
diff --git a/tests/govtool-frontend/playwright/tests/faucet.teardown.ts b/tests/govtool-frontend/playwright/tests/faucet.teardown.ts
new file mode 100644
index 000000000..b32425873
--- /dev/null
+++ b/tests/govtool-frontend/playwright/tests/faucet.teardown.ts
@@ -0,0 +1,34 @@
+import environments from "@constants/environments";
+import { faucetWallet } from "@constants/staticWallets";
+import { setAllureEpic, setAllureStory } from "@helpers/allure";
+import { pollTransaction } from "@helpers/transaction";
+import { test as cleanup, expect } from "@playwright/test";
+import kuberService from "@services/kuberService";
+
+cleanup.describe.configure({ timeout: environments.txTimeOut });
+cleanup.beforeEach(async () => {
+ await setAllureEpic("Setup");
+ await setAllureStory("Cleanup");
+});
+
+cleanup("Refund faucet", async () => {
+ try {
+ const faucetRemainingBalance = await kuberService.getBalance(
+ faucetWallet.address
+ );
+
+ const transferBalance = Math.floor(faucetRemainingBalance) - 3;
+ const { txId, lockInfo } = await kuberService.transferADA(
+ [environments.faucet.address],
+ transferBalance
+ );
+ await pollTransaction(txId, lockInfo);
+ } catch (err) {
+ console.log(err);
+ if (err.status === 400) {
+ expect(true, "Failed to trasfer Ada").toBeTruthy();
+ } else {
+ throw Error(err);
+ }
+ }
+});
diff --git a/tests/govtool-frontend/playwright/tests/governance-action.setup.ts b/tests/govtool-frontend/playwright/tests/governance-action.setup.ts
index 3a8aed8f4..634372c5c 100644
--- a/tests/govtool-frontend/playwright/tests/governance-action.setup.ts
+++ b/tests/govtool-frontend/playwright/tests/governance-action.setup.ts
@@ -36,7 +36,7 @@ setup("Setup temporary proposal wallets", async () => {
]);
await pollTransaction(initializeRes.txId, initializeRes.lockInfo);
- // transfer 51_000 ADA for dRep registration
+ // transfer 51_000 ADA for proposal submission
const amountOutputs = proposalSubmissionsWallets.map((wallet) => {
return { address: wallet.address, value: `${51_000}A` };
});
diff --git a/tests/govtool-frontend/tsconfig.json b/tests/govtool-frontend/tsconfig.json
deleted file mode 100644
index d9bd1f9bf..000000000
--- a/tests/govtool-frontend/tsconfig.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "compilerOptions": {
- "target": "es5",
- "lib": ["es5", "dom"],
- "types": ["cypress", "node"]
- },
- "include": ["**/*.ts", "**/*.d.ts"]
-}
diff --git a/tests/govtool-frontend/yarn.lock b/tests/govtool-frontend/yarn.lock
deleted file mode 100644
index 458f970b8..000000000
--- a/tests/govtool-frontend/yarn.lock
+++ /dev/null
@@ -1,3708 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/runtime@^7.15.4":
- version "7.23.4"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.4.tgz#36fa1d2b36db873d25ec631dcc4923fdc1cf2e2e"
- integrity sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==
- dependencies:
- regenerator-runtime "^0.14.0"
-
-"@cbor-extract/cbor-extract-darwin-arm64@2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-arm64/-/cbor-extract-darwin-arm64-2.1.1.tgz#5721f6dd3feae0b96d23122853ce977e0671b7a6"
- integrity sha512-blVBy5MXz6m36Vx0DfLd7PChOQKEs8lK2bD1WJn/vVgG4FXZiZmZb2GECHFvVPA5T7OnODd9xZiL3nMCv6QUhA==
-
-"@cbor-extract/cbor-extract-darwin-x64@2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-darwin-x64/-/cbor-extract-darwin-x64-2.1.1.tgz#c25e7d0133950d87d101d7b3afafea8d50d83f5f"
- integrity sha512-h6KFOzqk8jXTvkOftyRIWGrd7sKQzQv2jVdTL9nKSf3D2drCvQB/LHUxAOpPXo3pv2clDtKs3xnHalpEh3rDsw==
-
-"@cbor-extract/cbor-extract-linux-arm64@2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm64/-/cbor-extract-linux-arm64-2.1.1.tgz#48f78e7d8f0fcc84ed074b6bfa6d15dd83187c63"
- integrity sha512-SxAaRcYf8S0QHaMc7gvRSiTSr7nUYMqbUdErBEu+HYA4Q6UNydx1VwFE68hGcp1qvxcy9yT5U7gA+a5XikfwSQ==
-
-"@cbor-extract/cbor-extract-linux-arm@2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-arm/-/cbor-extract-linux-arm-2.1.1.tgz#7507d346389cb682e44fab8fae9534edd52e2e41"
- integrity sha512-ds0uikdcIGUjPyraV4oJqyVE5gl/qYBpa/Wnh6l6xLE2lj/hwnjT2XcZCChdXwW/YFZ1LUHs6waoYN8PmK0nKQ==
-
-"@cbor-extract/cbor-extract-linux-x64@2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-linux-x64/-/cbor-extract-linux-x64-2.1.1.tgz#b7c1d2be61c58ec18d58afbad52411ded63cd4cd"
- integrity sha512-GVK+8fNIE9lJQHAlhOROYiI0Yd4bAZ4u++C2ZjlkS3YmO6hi+FUxe6Dqm+OKWTcMpL/l71N6CQAmaRcb4zyJuA==
-
-"@cbor-extract/cbor-extract-win32-x64@2.1.1":
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/@cbor-extract/cbor-extract-win32-x64/-/cbor-extract-win32-x64-2.1.1.tgz#21b11a1a3f18c3e7d62fd5f87438b7ed2c64c1f7"
- integrity sha512-2Niq1C41dCRIDeD8LddiH+mxGlO7HJ612Ll3D/E73ZWBmycued+8ghTr/Ho3CMOWPUEr08XtyBMVXAjqF+TcKw==
-
-"@colors/colors@1.5.0":
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9"
- integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==
-
-"@cypress/commit-info@^2.2.0":
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/@cypress/commit-info/-/commit-info-2.2.0.tgz#6086d478975edb7ac7c9ffdd5cfd5be2b9fe44f2"
- integrity sha512-A7CYS0Iqp/u52JTnSWlDFjWMKx7rIfd+mk0Fdksrcs4Wdf5HXPsoZO475VJ+xL7LPhJrjKhgyl/TPKO3worZyQ==
- dependencies:
- bluebird "3.5.5"
- check-more-types "2.24.0"
- debug "4.1.1"
- execa "1.0.0"
- lazy-ass "1.6.0"
- ramda "0.26.1"
-
-"@cypress/request@^3.0.0":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@cypress/request/-/request-3.0.1.tgz#72d7d5425236a2413bd3d8bb66d02d9dc3168960"
- integrity sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==
- dependencies:
- aws-sign2 "~0.7.0"
- aws4 "^1.8.0"
- caseless "~0.12.0"
- combined-stream "~1.0.6"
- extend "~3.0.2"
- forever-agent "~0.6.1"
- form-data "~2.3.2"
- http-signature "~1.3.6"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.19"
- performance-now "^2.1.0"
- qs "6.10.4"
- safe-buffer "^5.1.2"
- tough-cookie "^4.1.3"
- tunnel-agent "^0.6.0"
- uuid "^8.3.2"
-
-"@cypress/xvfb@^1.2.4":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a"
- integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==
- dependencies:
- debug "^3.1.0"
- lodash.once "^4.1.1"
-
-"@noble/ed25519@^2.0.0":
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/@noble/ed25519/-/ed25519-2.0.0.tgz#5964c8190a4b4b804985717ca566113b93379e43"
- integrity sha512-/extjhkwFupyopDrt80OMWKdLgP429qLZj+z6sYJz90rF2Iz0gjZh2ArMKPImUl13Kx+0EXI2hN9T/KJV0/Zng==
-
-"@nodelib/fs.scandir@2.1.5":
- version "2.1.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
- integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
- dependencies:
- "@nodelib/fs.stat" "2.0.5"
- run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
- integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-
-"@nodelib/fs.walk@^1.2.3":
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
- integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
- dependencies:
- "@nodelib/fs.scandir" "2.1.5"
- fastq "^1.6.0"
-
-"@types/node@*", "@types/node@^20.5.0":
- version "20.9.4"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.9.4.tgz#cc8f970e869c26834bdb7ed480b30ede622d74c7"
- integrity sha512-wmyg8HUhcn6ACjsn8oKYjkN/zUzQeNtMy44weTJSM6p4MMzEOuKbA3OjJ267uPCOW7Xex9dyrNTful8XTQYoDA==
- dependencies:
- undici-types "~5.26.4"
-
-"@types/node@^18.17.5":
- version "18.18.12"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-18.18.12.tgz#0c40e52e5ff2569386b160f6f6bb019ff1361cb4"
- integrity sha512-G7slVfkwOm7g8VqcEF1/5SXiMjP3Tbt+pXDU3r/qhlM2KkGm786DUD4xyMA2QzEElFrv/KZV9gjygv4LnkpbMQ==
- dependencies:
- undici-types "~5.26.4"
-
-"@types/sinonjs__fake-timers@8.1.1":
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3"
- integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==
-
-"@types/sizzle@^2.3.2":
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.8.tgz#518609aefb797da19bf222feb199e8f653ff7627"
- integrity sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==
-
-"@types/yauzl@^2.9.1":
- version "2.10.3"
- resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.3.tgz#e9b2808b4f109504a03cda958259876f61017999"
- integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
- dependencies:
- "@types/node" "*"
-
-JSONStream@^1.0.3:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/JSONStream/-/JSONStream-1.3.5.tgz#3208c1f08d3a4d99261ab64f92302bc15e111ca0"
- integrity sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==
- dependencies:
- jsonparse "^1.2.0"
- through ">=2.2.7 <3"
-
-acorn-node@^1.2.0, acorn-node@^1.3.0, acorn-node@^1.5.2, acorn-node@^1.8.2:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/acorn-node/-/acorn-node-1.8.2.tgz#114c95d64539e53dede23de8b9d96df7c7ae2af8"
- integrity sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==
- dependencies:
- acorn "^7.0.0"
- acorn-walk "^7.0.0"
- xtend "^4.0.2"
-
-acorn-walk@^7.0.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc"
- integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
-
-acorn@^7.0.0:
- version "7.4.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
- integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-
-acorn@^8.8.0:
- version "8.11.2"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.11.2.tgz#ca0d78b51895be5390a5903c5b3bdcdaf78ae40b"
- integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
-
-add@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/add/-/add-2.0.6.tgz#248f0a9f6e5a528ef2295dbeec30532130ae2235"
- integrity sha512-j5QzrmsokwWWp6kUcJQySpbG+xfOBqqKnup3OIk1pz+kB/80SLorZ9V8zHFLO92Lcd+hbvq8bT+zOGoPkmBV0Q==
-
-aggregate-error@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a"
- integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==
- dependencies:
- clean-stack "^2.0.0"
- indent-string "^4.0.0"
-
-ajv@^8.0.1:
- version "8.12.0"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1"
- integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==
- dependencies:
- fast-deep-equal "^3.1.1"
- json-schema-traverse "^1.0.0"
- require-from-string "^2.0.2"
- uri-js "^4.2.2"
-
-ansi-colors@^4.1.1:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b"
- integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
-
-ansi-escapes@^4.3.0:
- version "4.3.2"
- resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e"
- integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
- dependencies:
- type-fest "^0.21.3"
-
-ansi-regex@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
- integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
-anymatch@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb"
- integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==
- dependencies:
- micromatch "^3.1.4"
- normalize-path "^2.1.1"
-
-arch@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11"
- integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==
-
-argparse@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
- integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
-
-arr-diff@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
- integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==
-
-arr-flatten@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
- integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
- integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==
-
-array-union@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d"
- integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
-
-array-unique@^0.3.2:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
- integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
-
-asn1.js@^5.2.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/asn1.js/-/asn1.js-5.4.1.tgz#11a980b84ebb91781ce35b0fdc2ee294e3783f07"
- integrity sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==
- dependencies:
- bn.js "^4.0.0"
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
- safer-buffer "^2.1.0"
-
-asn1@~0.2.3:
- version "0.2.6"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d"
- integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==
- dependencies:
- safer-buffer "~2.1.0"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
- integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==
-
-assert@^1.4.0:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/assert/-/assert-1.5.1.tgz#038ab248e4ff078e7bc2485ba6e6388466c78f76"
- integrity sha512-zzw1uCAgLbsKwBfFc8CX78DDg+xZeBksSO3vwVIDDN5i94eOrPsSSyiVhmsSABFDM/OcpE2aagCat9dnWQLG1A==
- dependencies:
- object.assign "^4.1.4"
- util "^0.10.4"
-
-assign-symbols@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
- integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
-
-astral-regex@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31"
- integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==
-
-async-each@^1.0.1:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77"
- integrity sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==
-
-async@^3.2.0:
- version "3.2.5"
- resolved "https://registry.yarnpkg.com/async/-/async-3.2.5.tgz#ebd52a8fdaf7a2289a24df399f8d8485c8a46b66"
- integrity sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
- integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
-
-at-least-node@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
- integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
-
-atob@^2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
- integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-aws-sign2@~0.7.0:
- version "0.7.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8"
- integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==
-
-aws4@^1.8.0:
- version "1.12.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3"
- integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==
-
-axios-retry@^3.4.0:
- version "3.9.1"
- resolved "https://registry.yarnpkg.com/axios-retry/-/axios-retry-3.9.1.tgz#c8924a8781c8e0a2c5244abf773deb7566b3830d"
- integrity sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==
- dependencies:
- "@babel/runtime" "^7.15.4"
- is-retry-allowed "^2.2.0"
-
-axios@^1.2.0, axios@^1.4.0:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.2.tgz#de67d42c755b571d3e698df1b6504cde9b0ee9f2"
- integrity sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==
- dependencies:
- follow-redirects "^1.15.0"
- form-data "^4.0.0"
- proxy-from-env "^1.1.0"
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-base64-js@^1.0.2, base64-js@^1.3.1:
- version "1.5.1"
- resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a"
- integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
-
-base@^0.11.1:
- version "0.11.2"
- resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
- integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
- dependencies:
- cache-base "^1.0.1"
- class-utils "^0.3.5"
- component-emitter "^1.2.1"
- define-property "^1.0.0"
- isobject "^3.0.1"
- mixin-deep "^1.2.0"
- pascalcase "^0.1.1"
-
-bcrypt-pbkdf@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
- integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==
- dependencies:
- tweetnacl "^0.14.3"
-
-bech32@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/bech32/-/bech32-2.0.0.tgz#078d3686535075c8c79709f054b1b226a133b355"
- integrity sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==
-
-binary-extensions@^1.0.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65"
- integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==
-
-bindings@^1.5.0:
- version "1.5.0"
- resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df"
- integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==
- dependencies:
- file-uri-to-path "1.0.0"
-
-blakejs@^1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814"
- integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==
-
-blob-util@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb"
- integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==
-
-bluebird@3.5.5:
- version "3.5.5"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f"
- integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==
-
-bluebird@^3.7.2:
- version "3.7.2"
- resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
- integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-
-bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.11.9:
- version "4.12.0"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88"
- integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==
-
-bn.js@^5.0.0, bn.js@^5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
- integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@^2.3.1, braces@^2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
- integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
- dependencies:
- arr-flatten "^1.1.0"
- array-unique "^0.3.2"
- extend-shallow "^2.0.1"
- fill-range "^4.0.0"
- isobject "^3.0.1"
- repeat-element "^1.1.2"
- snapdragon "^0.8.1"
- snapdragon-node "^2.0.1"
- split-string "^3.0.2"
- to-regex "^3.0.1"
-
-braces@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-brorand@^1.0.1, brorand@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f"
- integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==
-
-browser-pack@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/browser-pack/-/browser-pack-6.1.0.tgz#c34ba10d0b9ce162b5af227c7131c92c2ecd5774"
- integrity sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==
- dependencies:
- JSONStream "^1.0.3"
- combine-source-map "~0.8.0"
- defined "^1.0.0"
- safe-buffer "^5.1.1"
- through2 "^2.0.0"
- umd "^3.0.0"
-
-browser-resolve@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-2.0.0.tgz#99b7304cb392f8d73dba741bb2d7da28c6d7842b"
- integrity sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==
- dependencies:
- resolve "^1.17.0"
-
-browserify-aes@^1.0.0, browserify-aes@^1.0.4:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48"
- integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==
- dependencies:
- buffer-xor "^1.0.3"
- cipher-base "^1.0.0"
- create-hash "^1.1.0"
- evp_bytestokey "^1.0.3"
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-browserify-cipher@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/browserify-cipher/-/browserify-cipher-1.0.1.tgz#8d6474c1b870bfdabcd3bcfcc1934a10e94f15f0"
- integrity sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==
- dependencies:
- browserify-aes "^1.0.4"
- browserify-des "^1.0.0"
- evp_bytestokey "^1.0.0"
-
-browserify-des@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/browserify-des/-/browserify-des-1.0.2.tgz#3af4f1f59839403572f1c66204375f7a7f703e9c"
- integrity sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==
- dependencies:
- cipher-base "^1.0.1"
- des.js "^1.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
-browserify-rsa@^4.0.0, browserify-rsa@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.1.0.tgz#b2fd06b5b75ae297f7ce2dc651f918f5be158c8d"
- integrity sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==
- dependencies:
- bn.js "^5.0.0"
- randombytes "^2.0.1"
-
-browserify-sign@^4.0.0:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.2.tgz#e78d4b69816d6e3dd1c747e64e9947f9ad79bc7e"
- integrity sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==
- dependencies:
- bn.js "^5.2.1"
- browserify-rsa "^4.1.0"
- create-hash "^1.2.0"
- create-hmac "^1.1.7"
- elliptic "^6.5.4"
- inherits "^2.0.4"
- parse-asn1 "^5.1.6"
- readable-stream "^3.6.2"
- safe-buffer "^5.2.1"
-
-browserify-versionify@^1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/browserify-versionify/-/browserify-versionify-1.0.6.tgz#ab2dc61d6a119e627bec487598d1983b7fdb275e"
- integrity sha512-DhYuu4atLBdEZcJdEcoMTo0iKvW8B8nOlATEZMZhk/m4GJ67lHtwbjXuEsdz4cdBjngjLA+ftVY0VTGiZM1Fhw==
- dependencies:
- find-root "^0.1.1"
- through2 "0.6.3"
-
-browserify-zlib@~0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/browserify-zlib/-/browserify-zlib-0.2.0.tgz#2869459d9aa3be245fe8fe2ca1f46e2e7f54d73f"
- integrity sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==
- dependencies:
- pako "~1.0.5"
-
-browserify@^16.2.0:
- version "16.5.2"
- resolved "https://registry.yarnpkg.com/browserify/-/browserify-16.5.2.tgz#d926835e9280fa5fd57f5bc301f2ef24a972ddfe"
- integrity sha512-TkOR1cQGdmXU9zW4YukWzWVSJwrxmNdADFbqbE3HFgQWe5wqZmOawqZ7J/8MPCwk/W8yY7Y0h+7mOtcZxLP23g==
- dependencies:
- JSONStream "^1.0.3"
- assert "^1.4.0"
- browser-pack "^6.0.1"
- browser-resolve "^2.0.0"
- browserify-zlib "~0.2.0"
- buffer "~5.2.1"
- cached-path-relative "^1.0.0"
- concat-stream "^1.6.0"
- console-browserify "^1.1.0"
- constants-browserify "~1.0.0"
- crypto-browserify "^3.0.0"
- defined "^1.0.0"
- deps-sort "^2.0.0"
- domain-browser "^1.2.0"
- duplexer2 "~0.1.2"
- events "^2.0.0"
- glob "^7.1.0"
- has "^1.0.0"
- htmlescape "^1.1.0"
- https-browserify "^1.0.0"
- inherits "~2.0.1"
- insert-module-globals "^7.0.0"
- labeled-stream-splicer "^2.0.0"
- mkdirp-classic "^0.5.2"
- module-deps "^6.2.3"
- os-browserify "~0.3.0"
- parents "^1.0.1"
- path-browserify "~0.0.0"
- process "~0.11.0"
- punycode "^1.3.2"
- querystring-es3 "~0.2.0"
- read-only-stream "^2.0.0"
- readable-stream "^2.0.2"
- resolve "^1.1.4"
- shasum "^1.0.0"
- shell-quote "^1.6.1"
- stream-browserify "^2.0.0"
- stream-http "^3.0.0"
- string_decoder "^1.1.1"
- subarg "^1.0.0"
- syntax-error "^1.1.1"
- through2 "^2.0.0"
- timers-browserify "^1.0.1"
- tty-browserify "0.0.1"
- url "~0.11.0"
- util "~0.10.1"
- vm-browserify "^1.0.0"
- xtend "^4.0.0"
-
-buffer-crc32@~0.2.3:
- version "0.2.13"
- resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242"
- integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
-
-buffer-from@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
- integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
-
-buffer-xor@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9"
- integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==
-
-buffer@^5.6.0:
- version "5.7.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0"
- integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
- dependencies:
- base64-js "^1.3.1"
- ieee754 "^1.1.13"
-
-buffer@~5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.2.1.tgz#dd57fa0f109ac59c602479044dca7b8b3d0b71d6"
- integrity sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==
- dependencies:
- base64-js "^1.0.2"
- ieee754 "^1.1.4"
-
-builtin-status-codes@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz#85982878e21b98e1c66425e03d0174788f569ee8"
- integrity sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==
-
-cache-base@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
- integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
- dependencies:
- collection-visit "^1.0.0"
- component-emitter "^1.2.1"
- get-value "^2.0.6"
- has-value "^1.0.0"
- isobject "^3.0.1"
- set-value "^2.0.0"
- to-object-path "^0.3.0"
- union-value "^1.0.0"
- unset-value "^1.0.0"
-
-cached-path-relative@^1.0.0, cached-path-relative@^1.0.2:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/cached-path-relative/-/cached-path-relative-1.1.0.tgz#865576dfef39c0d6a7defde794d078f5308e3ef3"
- integrity sha512-WF0LihfemtesFcJgO7xfOoOcnWzY/QHR4qeDqV44jPU3HTI54+LnfXK3SA27AVVGCdZFgjjFFaqUA9Jx7dMJZA==
-
-cachedir@^2.3.0:
- version "2.4.0"
- resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.4.0.tgz#7fef9cf7367233d7c88068fe6e34ed0d355a610d"
- integrity sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==
-
-call-bind@^1.0.0, call-bind@^1.0.2:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.5.tgz#6fa2b7845ce0ea49bf4d8b9ef64727a2c2e2e513"
- integrity sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==
- dependencies:
- function-bind "^1.1.2"
- get-intrinsic "^1.2.1"
- set-function-length "^1.1.1"
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
- integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==
-
-cbor-extract@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/cbor-extract/-/cbor-extract-2.1.1.tgz#f154b31529fdb6b7c70fb3ca448f44eda96a1b42"
- integrity sha512-1UX977+L+zOJHsp0mWFG13GLwO6ucKgSmSW6JTl8B9GUvACvHeIVpFqhU92299Z6PfD09aTXDell5p+lp1rUFA==
- dependencies:
- node-gyp-build-optional-packages "5.0.3"
- optionalDependencies:
- "@cbor-extract/cbor-extract-darwin-arm64" "2.1.1"
- "@cbor-extract/cbor-extract-darwin-x64" "2.1.1"
- "@cbor-extract/cbor-extract-linux-arm" "2.1.1"
- "@cbor-extract/cbor-extract-linux-arm64" "2.1.1"
- "@cbor-extract/cbor-extract-linux-x64" "2.1.1"
- "@cbor-extract/cbor-extract-win32-x64" "2.1.1"
-
-cbor-x@^1.5.4:
- version "1.5.6"
- resolved "https://registry.yarnpkg.com/cbor-x/-/cbor-x-1.5.6.tgz#cbc5a8267bcd89a559d32339fe7ec442bc3b3862"
- integrity sha512-+TXdnDNdr8JH5GQRoAhjdT/5s5N+b71s2Nz8DpDRyuWx0uzMj8JTR3AqqMTBO/1HtUBHZpmK1enD2ViXFx0Nug==
- optionalDependencies:
- cbor-extract "^2.1.1"
-
-chalk@^4.1.0, chalk@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
- integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
-check-more-types@2.24.0, check-more-types@^2.24.0:
- version "2.24.0"
- resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600"
- integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==
-
-chokidar@^2.0.3:
- version "2.1.8"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917"
- integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==
- dependencies:
- anymatch "^2.0.0"
- async-each "^1.0.1"
- braces "^2.3.2"
- glob-parent "^3.1.0"
- inherits "^2.0.3"
- is-binary-path "^1.0.0"
- is-glob "^4.0.0"
- normalize-path "^3.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.2.1"
- upath "^1.1.1"
- optionalDependencies:
- fsevents "^1.2.7"
-
-ci-info@^3.2.0:
- version "3.9.0"
- resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4"
- integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==
-
-cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de"
- integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-class-utils@^0.3.5:
- version "0.3.6"
- resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
- integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
- dependencies:
- arr-union "^3.1.0"
- define-property "^0.2.5"
- isobject "^3.0.0"
- static-extend "^0.1.1"
-
-clean-stack@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b"
- integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==
-
-cli-cursor@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307"
- integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
- dependencies:
- restore-cursor "^3.1.0"
-
-cli-table3@~0.6.1:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2"
- integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==
- dependencies:
- string-width "^4.2.0"
- optionalDependencies:
- "@colors/colors" "1.5.0"
-
-cli-truncate@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7"
- integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==
- dependencies:
- slice-ansi "^3.0.0"
- string-width "^4.2.0"
-
-collection-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
- integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==
- dependencies:
- map-visit "^1.0.0"
- object-visit "^1.0.0"
-
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
-color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-colorette@^2.0.16:
- version "2.0.20"
- resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a"
- integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==
-
-combine-source-map@^0.8.0, combine-source-map@~0.8.0:
- version "0.8.0"
- resolved "https://registry.yarnpkg.com/combine-source-map/-/combine-source-map-0.8.0.tgz#a58d0df042c186fcf822a8e8015f5450d2d79a8b"
- integrity sha512-UlxQ9Vw0b/Bt/KYwCFqdEwsQ1eL8d1gibiFb7lxQJFdvTgc2hIZi6ugsg+kyhzhPV+QEpUiEIwInIAIrgoEkrg==
- dependencies:
- convert-source-map "~1.1.0"
- inline-source-map "~0.6.0"
- lodash.memoize "~3.0.3"
- source-map "~0.5.3"
-
-combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6:
- version "1.0.8"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
- integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
- dependencies:
- delayed-stream "~1.0.0"
-
-commander@^10.0.0:
- version "10.0.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
- integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
-
-commander@^2.9.0:
- version "2.20.3"
- resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
- integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
-
-commander@^6.2.1:
- version "6.2.1"
- resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c"
- integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==
-
-common-path-prefix@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/common-path-prefix/-/common-path-prefix-3.0.0.tgz#7d007a7e07c58c4b4d5f433131a19141b29f11e0"
- integrity sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==
-
-common-tags@^1.8.0:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6"
- integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==
-
-component-emitter@^1.2.1:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17"
- integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-
-concat-stream@^1.6.0, concat-stream@^1.6.1, concat-stream@~1.6.0:
- version "1.6.2"
- resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34"
- integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==
- dependencies:
- buffer-from "^1.0.0"
- inherits "^2.0.3"
- readable-stream "^2.2.2"
- typedarray "^0.0.6"
-
-console-browserify@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336"
- integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==
-
-constants-browserify@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75"
- integrity sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==
-
-convert-source-map@~1.1.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.1.3.tgz#4829c877e9fe49b3161f3bf3673888e204699860"
- integrity sha512-Y8L5rp6jo+g9VEPgvqNfEopjTR4OTYct8lXlS8iVQdmnjDvbdbzYe9rjtFCB9egC86JoNCU61WRY+ScjkZpnIg==
-
-copy-descriptor@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
- integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
-
-core-util-is@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7"
- integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==
-
-core-util-is@~1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
- integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
-
-create-ecdh@^4.0.0:
- version "4.0.4"
- resolved "https://registry.yarnpkg.com/create-ecdh/-/create-ecdh-4.0.4.tgz#d6e7f4bffa66736085a0762fd3a632684dabcc4e"
- integrity sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==
- dependencies:
- bn.js "^4.1.0"
- elliptic "^6.5.3"
-
-create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196"
- integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==
- dependencies:
- cipher-base "^1.0.1"
- inherits "^2.0.1"
- md5.js "^1.3.4"
- ripemd160 "^2.0.1"
- sha.js "^2.4.0"
-
-create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff"
- integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==
- dependencies:
- cipher-base "^1.0.3"
- create-hash "^1.1.0"
- inherits "^2.0.1"
- ripemd160 "^2.0.0"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
-cross-spawn@^6.0.0:
- version "6.0.5"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
- integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==
- dependencies:
- nice-try "^1.0.4"
- path-key "^2.0.1"
- semver "^5.5.0"
- shebang-command "^1.2.0"
- which "^1.2.9"
-
-cross-spawn@^7.0.0, cross-spawn@^7.0.3:
- version "7.0.3"
- resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
- integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
- dependencies:
- path-key "^3.1.0"
- shebang-command "^2.0.0"
- which "^2.0.1"
-
-crypto-browserify@^3.0.0:
- version "3.12.0"
- resolved "https://registry.yarnpkg.com/crypto-browserify/-/crypto-browserify-3.12.0.tgz#396cf9f3137f03e4b8e532c58f698254e00f80ec"
- integrity sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==
- dependencies:
- browserify-cipher "^1.0.0"
- browserify-sign "^4.0.0"
- create-ecdh "^4.0.0"
- create-hash "^1.1.0"
- create-hmac "^1.1.0"
- diffie-hellman "^5.0.0"
- inherits "^2.0.1"
- pbkdf2 "^3.0.3"
- public-encrypt "^4.0.0"
- randombytes "^2.0.0"
- randomfill "^1.0.3"
-
-cy2@^3.4.2:
- version "3.4.3"
- resolved "https://registry.yarnpkg.com/cy2/-/cy2-3.4.3.tgz#c61665a953256e22399804f69067bb407ca922da"
- integrity sha512-I1yfJWJTRy2ROti1TlLM5Qk86WSeKMrtZbY/G6VD2tjm3VKTu6pDkpcV56C2HhN+txK5p6MMsmzKXJM2W9JlxA==
- dependencies:
- acorn "^8.8.0"
- debug "^4.3.2"
- escodegen "^2.0.0"
- estraverse "^5.3.0"
- js-yaml "^4.1.0"
- npm-which "^3.0.1"
- slash "3.0.0"
-
-cypress-browser-extension-plugin@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/cypress-browser-extension-plugin/-/cypress-browser-extension-plugin-0.1.0.tgz#c7cfddfac62cf563be55f0db98199902e7b22870"
- integrity sha512-YbF5SneqoMrAN9XEz2I+okmCzK2RJPnl9+yBV5d2r/ayEia+bRTI0X+H+cOwlIgZ3XVQTOHeRX5s2sg1XPdTUw==
- dependencies:
- browserify "^16.2.0"
- browserify-versionify "^1.0.6"
- chokidar "^2.0.3"
- fs-extra "^5.0.0"
- nanoid "^1.0.2"
- unzip-crx "^0.2.0"
-
-cypress-cloud@^1.9.3:
- version "1.9.6"
- resolved "https://registry.yarnpkg.com/cypress-cloud/-/cypress-cloud-1.9.6.tgz#a2a8335621bce30a575e2f293a7e63193bda6b17"
- integrity sha512-cF1+Eqpscm9H0CkHdRxgleW+sSBCL3e614KeEKaghROLYrTTvep8vSouSBqWAsJ6tzaNJK4ybVIfDFswNP1bHQ==
- dependencies:
- "@cypress/commit-info" "^2.2.0"
- axios "^1.2.0"
- axios-retry "^3.4.0"
- bluebird "^3.7.2"
- chalk "^4.1.2"
- commander "^10.0.0"
- common-path-prefix "^3.0.0"
- cy2 "^3.4.2"
- debug "^4.3.4"
- execa "^5.1.1"
- getos "^3.2.1"
- globby "^11.1.0"
- is-absolute "^1.0.0"
- lil-http-terminator "^1.2.3"
- lodash "^4.17.21"
- nanoid "^3.3.4"
- plur "^4.0.0"
- pretty-ms "^7.0.1"
- source-map-support "^0.5.21"
- table "^6.8.1"
- tmp-promise "^3.0.3"
- ts-pattern "^4.3.0"
- ws "^8.13.0"
-
-cypress@^13.6.0:
- version "13.6.0"
- resolved "https://registry.yarnpkg.com/cypress/-/cypress-13.6.0.tgz#b98b7b837679012ed09c7ecee5565bf7b31d4982"
- integrity sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw==
- dependencies:
- "@cypress/request" "^3.0.0"
- "@cypress/xvfb" "^1.2.4"
- "@types/node" "^18.17.5"
- "@types/sinonjs__fake-timers" "8.1.1"
- "@types/sizzle" "^2.3.2"
- arch "^2.2.0"
- blob-util "^2.0.2"
- bluebird "^3.7.2"
- buffer "^5.6.0"
- cachedir "^2.3.0"
- chalk "^4.1.0"
- check-more-types "^2.24.0"
- cli-cursor "^3.1.0"
- cli-table3 "~0.6.1"
- commander "^6.2.1"
- common-tags "^1.8.0"
- dayjs "^1.10.4"
- debug "^4.3.4"
- enquirer "^2.3.6"
- eventemitter2 "6.4.7"
- execa "4.1.0"
- executable "^4.1.1"
- extract-zip "2.0.1"
- figures "^3.2.0"
- fs-extra "^9.1.0"
- getos "^3.2.1"
- is-ci "^3.0.0"
- is-installed-globally "~0.4.0"
- lazy-ass "^1.6.0"
- listr2 "^3.8.3"
- lodash "^4.17.21"
- log-symbols "^4.0.0"
- minimist "^1.2.8"
- ospath "^1.2.2"
- pretty-bytes "^5.6.0"
- process "^0.11.10"
- proxy-from-env "1.0.0"
- request-progress "^3.0.0"
- semver "^7.5.3"
- supports-color "^8.1.1"
- tmp "~0.2.1"
- untildify "^4.0.0"
- yauzl "^2.10.0"
-
-dash-ast@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/dash-ast/-/dash-ast-1.0.0.tgz#12029ba5fb2f8aa6f0a861795b23c1b4b6c27d37"
- integrity sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==
- dependencies:
- assert-plus "^1.0.0"
-
-dayjs@^1.10.4:
- version "1.11.10"
- resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.10.tgz#68acea85317a6e164457d6d6947564029a6a16a0"
- integrity sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==
-
-debug@4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791"
- integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==
- dependencies:
- ms "^2.1.1"
-
-debug@^2.2.0, debug@^2.3.3:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@^3.1.0:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
- integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
- dependencies:
- ms "^2.1.1"
-
-debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
- version "4.3.4"
- resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
- integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
- dependencies:
- ms "2.1.2"
-
-decode-uri-component@^0.2.0:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
- integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
-
-define-data-property@^1.0.1, define-data-property@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.1.tgz#c35f7cd0ab09883480d12ac5cb213715587800b3"
- integrity sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==
- dependencies:
- get-intrinsic "^1.2.1"
- gopd "^1.0.1"
- has-property-descriptors "^1.0.0"
-
-define-properties@^1.1.4:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
- integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
- dependencies:
- define-data-property "^1.0.1"
- has-property-descriptors "^1.0.0"
- object-keys "^1.1.1"
-
-define-property@^0.2.5:
- version "0.2.5"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
- integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==
- dependencies:
- is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
- integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==
- dependencies:
- is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
- integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
- dependencies:
- is-descriptor "^1.0.2"
- isobject "^3.0.1"
-
-defined@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.1.tgz#c0b9db27bfaffd95d6f61399419b893df0f91ebf"
- integrity sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
- integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-
-deps-sort@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/deps-sort/-/deps-sort-2.0.1.tgz#9dfdc876d2bcec3386b6829ac52162cda9fa208d"
- integrity sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==
- dependencies:
- JSONStream "^1.0.3"
- shasum-object "^1.0.0"
- subarg "^1.0.0"
- through2 "^2.0.0"
-
-des.js@^1.0.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.1.0.tgz#1d37f5766f3bbff4ee9638e871a8768c173b81da"
- integrity sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==
- dependencies:
- inherits "^2.0.1"
- minimalistic-assert "^1.0.0"
-
-detective@^5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/detective/-/detective-5.2.1.tgz#6af01eeda11015acb0e73f933242b70f24f91034"
- integrity sha512-v9XE1zRnz1wRtgurGu0Bs8uHKFSTdteYZNbIPFVhUZ39L/S79ppMpdmVOZAnoz1jfEFodc48n6MX483Xo3t1yw==
- dependencies:
- acorn-node "^1.8.2"
- defined "^1.0.0"
- minimist "^1.2.6"
-
-diffie-hellman@^5.0.0:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/diffie-hellman/-/diffie-hellman-5.0.3.tgz#40e8ee98f55a2149607146921c63e1ae5f3d2875"
- integrity sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==
- dependencies:
- bn.js "^4.1.0"
- miller-rabin "^4.0.0"
- randombytes "^2.0.0"
-
-dir-glob@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f"
- integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
- dependencies:
- path-type "^4.0.0"
-
-domain-browser@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda"
- integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==
-
-duplexer2@^0.1.2, duplexer2@~0.1.0, duplexer2@~0.1.2:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1"
- integrity sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==
- dependencies:
- readable-stream "^2.0.2"
-
-ecc-jsbn@~0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9"
- integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==
- dependencies:
- jsbn "~0.1.0"
- safer-buffer "^2.1.0"
-
-elliptic@^6.5.3, elliptic@^6.5.4:
- version "6.5.4"
- resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb"
- integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==
- dependencies:
- bn.js "^4.11.9"
- brorand "^1.1.0"
- hash.js "^1.0.0"
- hmac-drbg "^1.0.1"
- inherits "^2.0.4"
- minimalistic-assert "^1.0.1"
- minimalistic-crypto-utils "^1.0.1"
-
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-end-of-stream@^1.1.0:
- version "1.4.4"
- resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0"
- integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
- dependencies:
- once "^1.4.0"
-
-enquirer@^2.3.6:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56"
- integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==
- dependencies:
- ansi-colors "^4.1.1"
- strip-ansi "^6.0.1"
-
-escape-string-regexp@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
- integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-
-escodegen@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17"
- integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
- dependencies:
- esprima "^4.0.1"
- estraverse "^5.2.0"
- esutils "^2.0.2"
- optionalDependencies:
- source-map "~0.6.1"
-
-esprima@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71"
- integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
-
-estraverse@^5.2.0, estraverse@^5.3.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
- integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
-
-esutils@^2.0.2:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
- integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
-
-eventemitter2@6.4.7:
- version "6.4.7"
- resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d"
- integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==
-
-events@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/events/-/events-2.1.0.tgz#2a9a1e18e6106e0e812aa9ebd4a819b3c29c0ba5"
- integrity sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==
-
-evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02"
- integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==
- dependencies:
- md5.js "^1.3.4"
- safe-buffer "^5.1.1"
-
-execa@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-1.0.0.tgz#c6236a5bb4df6d6f15e88e7f017798216749ddd8"
- integrity sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==
- dependencies:
- cross-spawn "^6.0.0"
- get-stream "^4.0.0"
- is-stream "^1.1.0"
- npm-run-path "^2.0.0"
- p-finally "^1.0.0"
- signal-exit "^3.0.0"
- strip-eof "^1.0.0"
-
-execa@4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a"
- integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==
- dependencies:
- cross-spawn "^7.0.0"
- get-stream "^5.0.0"
- human-signals "^1.1.1"
- is-stream "^2.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^4.0.0"
- onetime "^5.1.0"
- signal-exit "^3.0.2"
- strip-final-newline "^2.0.0"
-
-execa@^5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
- integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
- dependencies:
- cross-spawn "^7.0.3"
- get-stream "^6.0.0"
- human-signals "^2.1.0"
- is-stream "^2.0.0"
- merge-stream "^2.0.0"
- npm-run-path "^4.0.1"
- onetime "^5.1.2"
- signal-exit "^3.0.3"
- strip-final-newline "^2.0.0"
-
-executable@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c"
- integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==
- dependencies:
- pify "^2.2.0"
-
-expand-brackets@^2.1.4:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
- integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==
- dependencies:
- debug "^2.3.3"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- posix-character-classes "^0.1.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-extend-shallow@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
- integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
- dependencies:
- is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
- integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
- dependencies:
- assign-symbols "^1.0.0"
- is-extendable "^1.0.1"
-
-extend@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
- integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-extglob@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
- integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
- dependencies:
- array-unique "^0.3.2"
- define-property "^1.0.0"
- expand-brackets "^2.1.4"
- extend-shallow "^2.0.1"
- fragment-cache "^0.2.1"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-extract-zip@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a"
- integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
- dependencies:
- debug "^4.1.1"
- get-stream "^5.1.0"
- yauzl "^2.10.0"
- optionalDependencies:
- "@types/yauzl" "^2.9.1"
-
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
- integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==
-
-extsprintf@^1.2.0:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07"
- integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==
-
-fast-deep-equal@^3.1.1:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
- integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
-
-fast-glob@^3.2.9:
- version "3.3.2"
- resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129"
- integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
- dependencies:
- "@nodelib/fs.stat" "^2.0.2"
- "@nodelib/fs.walk" "^1.2.3"
- glob-parent "^5.1.2"
- merge2 "^1.3.0"
- micromatch "^4.0.4"
-
-fast-safe-stringify@^2.0.7:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz#c406a83b6e70d9e35ce3b30a81141df30aeba884"
- integrity sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==
-
-fastq@^1.6.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.15.0.tgz#d04d07c6a2a68fe4599fea8d2e103a937fae6b3a"
- integrity sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==
- dependencies:
- reusify "^1.0.4"
-
-fd-slicer@~1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e"
- integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
- dependencies:
- pend "~1.2.0"
-
-figures@^3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af"
- integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==
- dependencies:
- escape-string-regexp "^1.0.5"
-
-file-uri-to-path@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
- integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==
-
-fill-range@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
- integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==
- dependencies:
- extend-shallow "^2.0.1"
- is-number "^3.0.0"
- repeat-string "^1.6.1"
- to-regex-range "^2.1.0"
-
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-find-root@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/find-root/-/find-root-0.1.2.tgz#98d2267cff1916ccaf2743b3a0eea81d79d7dcd1"
- integrity sha512-GyDxVgA61TZcrgDJPqOqGBpi80Uf2yIstubgizi7AjC9yPdRrqBR+Y0MvK4kXnYlaoz3d+SGxDHMYVkwI/yd2w==
-
-follow-redirects@^1.15.0:
- version "1.15.3"
- resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.3.tgz#fe2f3ef2690afce7e82ed0b44db08165b207123a"
- integrity sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==
-
-for-in@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
- integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
- integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==
-
-form-data@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452"
- integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.8"
- mime-types "^2.1.12"
-
-form-data@~2.3.2:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6"
- integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.6"
- mime-types "^2.1.12"
-
-fragment-cache@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
- integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==
- dependencies:
- map-cache "^0.2.2"
-
-fs-extra@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-5.0.0.tgz#414d0110cdd06705734d055652c5411260c31abd"
- integrity sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==
- dependencies:
- graceful-fs "^4.1.2"
- jsonfile "^4.0.0"
- universalify "^0.1.0"
-
-fs-extra@^9.1.0:
- version "9.1.0"
- resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d"
- integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==
- dependencies:
- at-least-node "^1.0.0"
- graceful-fs "^4.2.0"
- jsonfile "^6.0.1"
- universalify "^2.0.0"
-
-fs.realpath@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
- integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
-
-fsevents@^1.2.7:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38"
- integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==
- dependencies:
- bindings "^1.5.0"
- nan "^2.12.1"
-
-function-bind@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
- integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-
-get-assigned-identifiers@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1"
- integrity sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==
-
-get-intrinsic@^1.0.2, get-intrinsic@^1.1.3, get-intrinsic@^1.2.1, get-intrinsic@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.2.tgz#281b7622971123e1ef4b3c90fd7539306da93f3b"
- integrity sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==
- dependencies:
- function-bind "^1.1.2"
- has-proto "^1.0.1"
- has-symbols "^1.0.3"
- hasown "^2.0.0"
-
-get-stream@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5"
- integrity sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==
- dependencies:
- pump "^3.0.0"
-
-get-stream@^5.0.0, get-stream@^5.1.0:
- version "5.2.0"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3"
- integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
- dependencies:
- pump "^3.0.0"
-
-get-stream@^6.0.0:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
- integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
-
-get-value@^2.0.3, get-value@^2.0.6:
- version "2.0.6"
- resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
- integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
-
-getos@^3.2.1:
- version "3.2.1"
- resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5"
- integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==
- dependencies:
- async "^3.2.0"
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==
- dependencies:
- assert-plus "^1.0.0"
-
-glob-parent@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae"
- integrity sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==
- dependencies:
- is-glob "^3.1.0"
- path-dirname "^1.0.0"
-
-glob-parent@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
- integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
- dependencies:
- is-glob "^4.0.1"
-
-glob@^7.1.0, glob@^7.1.3:
- version "7.2.3"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
- integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
- dependencies:
- fs.realpath "^1.0.0"
- inflight "^1.0.4"
- inherits "2"
- minimatch "^3.1.1"
- once "^1.3.0"
- path-is-absolute "^1.0.0"
-
-global-dirs@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/global-dirs/-/global-dirs-3.0.1.tgz#0c488971f066baceda21447aecb1a8b911d22485"
- integrity sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==
- dependencies:
- ini "2.0.0"
-
-globby@^11.1.0:
- version "11.1.0"
- resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b"
- integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
- dependencies:
- array-union "^2.1.0"
- dir-glob "^3.0.1"
- fast-glob "^3.2.9"
- ignore "^5.2.0"
- merge2 "^1.4.1"
- slash "^3.0.0"
-
-gopd@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
- integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
- dependencies:
- get-intrinsic "^1.1.3"
-
-graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0:
- version "4.2.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
- integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
-
-has-flag@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-property-descriptors@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz#52ba30b6c5ec87fd89fa574bc1c39125c6f65340"
- integrity sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==
- dependencies:
- get-intrinsic "^1.2.2"
-
-has-proto@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
- integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
-
-has-symbols@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-
-has-value@^0.3.1:
- version "0.3.1"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
- integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==
- dependencies:
- get-value "^2.0.3"
- has-values "^0.1.4"
- isobject "^2.0.0"
-
-has-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
- integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==
- dependencies:
- get-value "^2.0.6"
- has-values "^1.0.0"
- isobject "^3.0.0"
-
-has-values@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
- integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==
-
-has-values@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
- integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-has@^1.0.0:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.4.tgz#2eb2860e000011dae4f1406a86fe80e530fb2ec6"
- integrity sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==
-
-hash-base@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33"
- integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==
- dependencies:
- inherits "^2.0.4"
- readable-stream "^3.6.0"
- safe-buffer "^5.2.0"
-
-hash.js@^1.0.0, hash.js@^1.0.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42"
- integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==
- dependencies:
- inherits "^2.0.3"
- minimalistic-assert "^1.0.1"
-
-hasown@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.0.tgz#f4c513d454a57b7c7e1650778de226b11700546c"
- integrity sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==
- dependencies:
- function-bind "^1.1.2"
-
-hmac-drbg@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1"
- integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==
- dependencies:
- hash.js "^1.0.3"
- minimalistic-assert "^1.0.0"
- minimalistic-crypto-utils "^1.0.1"
-
-htmlescape@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/htmlescape/-/htmlescape-1.1.1.tgz#3a03edc2214bca3b66424a3e7959349509cb0351"
- integrity sha512-eVcrzgbR4tim7c7soKQKtxa/kQM4TzjnlU83rcZ9bHU6t31ehfV7SktN6McWgwPWg+JYMA/O3qpGxBvFq1z2Jg==
-
-http-signature@~1.3.6:
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9"
- integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==
- dependencies:
- assert-plus "^1.0.0"
- jsprim "^2.0.2"
- sshpk "^1.14.1"
-
-https-browserify@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73"
- integrity sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==
-
-human-signals@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
- integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
-
-human-signals@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
- integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
-
-ieee754@^1.1.13, ieee754@^1.1.4:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
- integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
-
-ignore@^5.2.0:
- version "5.3.0"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.0.tgz#67418ae40d34d6999c95ff56016759c718c82f78"
- integrity sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==
-
-immediate@~3.0.5:
- version "3.0.6"
- resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b"
- integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
-
-indent-string@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251"
- integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==
-
-inflight@^1.0.4:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
- integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
- dependencies:
- once "^1.3.0"
- wrappy "1"
-
-inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.1, inherits@~2.0.3:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-inherits@2.0.3:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
- integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==
-
-ini@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ini/-/ini-2.0.0.tgz#e5fd556ecdd5726be978fa1001862eacb0a94bc5"
- integrity sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==
-
-inline-source-map@~0.6.0:
- version "0.6.2"
- resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5"
- integrity sha512-0mVWSSbNDvedDWIN4wxLsdPM4a7cIPcpyMxj3QZ406QRwQ6ePGB1YIHxVPjqpcUGbWQ5C+nHTwGNWAGvt7ggVA==
- dependencies:
- source-map "~0.5.3"
-
-insert-module-globals@^7.0.0:
- version "7.2.1"
- resolved "https://registry.yarnpkg.com/insert-module-globals/-/insert-module-globals-7.2.1.tgz#d5e33185181a4e1f33b15f7bf100ee91890d5cb3"
- integrity sha512-ufS5Qq9RZN+Bu899eA9QCAYThY+gGW7oRkmb0vC93Vlyu/CFGcH0OYPEjVkDXA5FEbTt1+VWzdoOD3Ny9N+8tg==
- dependencies:
- JSONStream "^1.0.3"
- acorn-node "^1.5.2"
- combine-source-map "^0.8.0"
- concat-stream "^1.6.1"
- is-buffer "^1.1.0"
- path-is-absolute "^1.0.1"
- process "~0.11.0"
- through2 "^2.0.0"
- undeclared-identifiers "^1.1.2"
- xtend "^4.0.0"
-
-irregular-plurals@^3.2.0:
- version "3.5.0"
- resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.5.0.tgz#0835e6639aa8425bdc8b0d33d0dc4e89d9c01d2b"
- integrity sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==
-
-is-absolute@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576"
- integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==
- dependencies:
- is-relative "^1.0.0"
- is-windows "^1.0.1"
-
-is-accessor-descriptor@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4"
- integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==
- dependencies:
- hasown "^2.0.0"
-
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
- integrity sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==
- dependencies:
- binary-extensions "^1.0.0"
-
-is-buffer@^1.1.0, is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
- integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-ci@^3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867"
- integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==
- dependencies:
- ci-info "^3.2.0"
-
-is-core-module@^2.13.0:
- version "2.13.1"
- resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.13.1.tgz#ad0d7532c6fea9da1ebdc82742d74525c6273384"
- integrity sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==
- dependencies:
- hasown "^2.0.0"
-
-is-data-descriptor@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb"
- integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==
- dependencies:
- hasown "^2.0.0"
-
-is-descriptor@^0.1.0:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.7.tgz#2727eb61fd789dcd5bdf0ed4569f551d2fe3be33"
- integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==
- dependencies:
- is-accessor-descriptor "^1.0.1"
- is-data-descriptor "^1.0.1"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.3.tgz#92d27cb3cd311c4977a4db47df457234a13cb306"
- integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==
- dependencies:
- is-accessor-descriptor "^1.0.1"
- is-data-descriptor "^1.0.1"
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
- integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
-
-is-extendable@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
- integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
- dependencies:
- is-plain-object "^2.0.4"
-
-is-extglob@^2.1.0, is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-glob@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a"
- integrity sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==
- dependencies:
- is-extglob "^2.1.0"
-
-is-glob@^4.0.0, is-glob@^4.0.1:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
- integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-installed-globally@~0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520"
- integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==
- dependencies:
- global-dirs "^3.0.0"
- is-path-inside "^3.0.2"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-path-inside@^3.0.2:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
- integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
-
-is-plain-object@^2.0.3, is-plain-object@^2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
- integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
- dependencies:
- isobject "^3.0.1"
-
-is-relative@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d"
- integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==
- dependencies:
- is-unc-path "^1.0.0"
-
-is-retry-allowed@^2.2.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz#88f34cbd236e043e71b6932d09b0c65fb7b4d71d"
- integrity sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==
-
-is-stream@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44"
- integrity sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==
-
-is-stream@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
- integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
-
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
- integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==
-
-is-unc-path@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d"
- integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==
- dependencies:
- unc-path-regex "^0.1.2"
-
-is-unicode-supported@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7"
- integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
-
-is-windows@^1.0.1, is-windows@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
- integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-isarray@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
- integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==
-
-isarray@1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
- integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
-
-isexe@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
- integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==
- dependencies:
- isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
- integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
-
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
- integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==
-
-js-yaml@^4.1.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
- integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
- dependencies:
- argparse "^2.0.1"
-
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
- integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==
-
-json-schema-traverse@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
- integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==
-
-json-schema@0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5"
- integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==
-
-json-stable-stringify@~0.0.0:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz#611c23e814db375527df851193db59dd2af27f45"
- integrity sha512-nKtD/Qxm7tWdZqJoldEC7fF0S41v0mWbeaXG3637stOWfyGxTgWTYE2wtfKmjzpvxv2MA2xzxsXOIiwUpkX6Qw==
- dependencies:
- jsonify "~0.0.0"
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
- integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==
-
-jsonfile@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb"
- integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonfile@^6.0.1:
- version "6.1.0"
- resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
- integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
- dependencies:
- universalify "^2.0.0"
- optionalDependencies:
- graceful-fs "^4.1.6"
-
-jsonify@~0.0.0:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.1.tgz#2aa3111dae3d34a0f151c63f3a45d995d9420978"
- integrity sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==
-
-jsonparse@^1.2.0:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280"
- integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==
-
-jsprim@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d"
- integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.4.0"
- verror "1.10.0"
-
-jszip@^3.1.0:
- version "3.10.1"
- resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2"
- integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
- dependencies:
- lie "~3.3.0"
- pako "~1.0.2"
- readable-stream "~2.3.6"
- setimmediate "^1.0.5"
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^6.0.2:
- version "6.0.3"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
- integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-labeled-stream-splicer@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz#42a41a16abcd46fd046306cf4f2c3576fffb1c21"
- integrity sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==
- dependencies:
- inherits "^2.0.1"
- stream-splicer "^2.0.0"
-
-lazy-ass@1.6.0, lazy-ass@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513"
- integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==
-
-lie@~3.3.0:
- version "3.3.0"
- resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a"
- integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
- dependencies:
- immediate "~3.0.5"
-
-lil-http-terminator@^1.2.3:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/lil-http-terminator/-/lil-http-terminator-1.2.3.tgz#594ef0f3c2b2f7d43a8f2989b2b3de611bf507eb"
- integrity sha512-vQcHSwAFq/kTR2cG6peOVS7SjgksGgSPeH0G2lkw+buue33thE/FCHdn10wJXXshc5RswFy0Iaz48qA2Busw5Q==
-
-listr2@^3.8.3:
- version "3.14.0"
- resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e"
- integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==
- dependencies:
- cli-truncate "^2.1.0"
- colorette "^2.0.16"
- log-update "^4.0.0"
- p-map "^4.0.0"
- rfdc "^1.3.0"
- rxjs "^7.5.1"
- through "^2.3.8"
- wrap-ansi "^7.0.0"
-
-lodash.memoize@~3.0.3:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-3.0.4.tgz#2dcbd2c287cbc0a55cc42328bd0c736150d53e3f"
- integrity sha512-eDn9kqrAmVUC1wmZvlQ6Uhde44n+tXpqPrN8olQJbttgh0oKclk+SF54P47VEGE9CEiMeRwAP8BaM7UHvBkz2A==
-
-lodash.once@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac"
- integrity sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==
-
-lodash.truncate@^4.4.2:
- version "4.4.2"
- resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193"
- integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==
-
-lodash@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-
-log-symbols@^4.0.0:
- version "4.1.0"
- resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503"
- integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
- dependencies:
- chalk "^4.1.0"
- is-unicode-supported "^0.1.0"
-
-log-update@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1"
- integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==
- dependencies:
- ansi-escapes "^4.3.0"
- cli-cursor "^3.1.0"
- slice-ansi "^4.0.0"
- wrap-ansi "^6.2.0"
-
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
- dependencies:
- yallist "^4.0.0"
-
-map-cache@^0.2.2:
- version "0.2.2"
- resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
- integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==
-
-map-visit@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
- integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==
- dependencies:
- object-visit "^1.0.0"
-
-md5.js@^1.3.4:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
- integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
- safe-buffer "^5.1.2"
-
-merge-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
- integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
-
-merge2@^1.3.0, merge2@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
- integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
-micromatch@^3.1.10, micromatch@^3.1.4:
- version "3.1.10"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23"
- integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- braces "^2.3.1"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- extglob "^2.0.4"
- fragment-cache "^0.2.1"
- kind-of "^6.0.2"
- nanomatch "^1.2.9"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.2"
-
-micromatch@^4.0.4:
- version "4.0.5"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
- integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
- dependencies:
- braces "^3.0.2"
- picomatch "^2.3.1"
-
-miller-rabin@^4.0.0:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d"
- integrity sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==
- dependencies:
- bn.js "^4.0.0"
- brorand "^1.0.1"
-
-mime-db@1.52.0:
- version "1.52.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
- integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-
-mime-types@^2.1.12, mime-types@~2.1.19:
- version "2.1.35"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
- integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
- dependencies:
- mime-db "1.52.0"
-
-mimic-fn@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
- integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
-
-minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
- integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==
-
-minimalistic-crypto-utils@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
- integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==
-
-minimatch@^3.1.1:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
- dependencies:
- brace-expansion "^1.1.7"
-
-minimist@^1.1.0, minimist@^1.2.6, minimist@^1.2.8:
- version "1.2.8"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
- integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-
-mixin-deep@^1.2.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
- integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
- dependencies:
- for-in "^1.0.2"
- is-extendable "^1.0.1"
-
-mkdirp-classic@^0.5.2:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113"
- integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==
-
-mkdirp@^0.5.1:
- version "0.5.6"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6"
- integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==
- dependencies:
- minimist "^1.2.6"
-
-module-deps@^6.2.3:
- version "6.2.3"
- resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-6.2.3.tgz#15490bc02af4b56cf62299c7c17cba32d71a96ee"
- integrity sha512-fg7OZaQBcL4/L+AK5f4iVqf9OMbCclXfy/znXRxTVhJSeW5AIlS9AwheYwDaXM3lVW7OBeaeUEY3gbaC6cLlSA==
- dependencies:
- JSONStream "^1.0.3"
- browser-resolve "^2.0.0"
- cached-path-relative "^1.0.2"
- concat-stream "~1.6.0"
- defined "^1.0.0"
- detective "^5.2.0"
- duplexer2 "^0.1.2"
- inherits "^2.0.1"
- parents "^1.0.0"
- readable-stream "^2.0.2"
- resolve "^1.4.0"
- stream-combiner2 "^1.1.1"
- subarg "^1.0.0"
- through2 "^2.0.0"
- xtend "^4.0.0"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
-
-ms@2.1.2:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
- integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
-
-ms@^2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-nan@^2.12.1:
- version "2.18.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.18.0.tgz#26a6faae7ffbeb293a39660e88a76b82e30b7554"
- integrity sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==
-
-nanoid@^1.0.2:
- version "1.3.4"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-1.3.4.tgz#ad89f62c9d1f4fd69710d4a90953d2893d2d31f4"
- integrity sha512-4ug4BsuHxiVHoRUe1ud6rUFT3WUMmjXt1W0quL0CviZQANdan7D8kqN5/maw53hmAApY/jfzMRkC57BNNs60ZQ==
-
-nanoid@^3.3.4:
- version "3.3.7"
- resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8"
- integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==
-
-nanomatch@^1.2.9:
- version "1.2.13"
- resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
- integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
- dependencies:
- arr-diff "^4.0.0"
- array-unique "^0.3.2"
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- fragment-cache "^0.2.1"
- is-windows "^1.0.2"
- kind-of "^6.0.2"
- object.pick "^1.3.0"
- regex-not "^1.0.0"
- snapdragon "^0.8.1"
- to-regex "^3.0.1"
-
-nice-try@^1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
- integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
-
-node-gyp-build-optional-packages@5.0.3:
- version "5.0.3"
- resolved "https://registry.yarnpkg.com/node-gyp-build-optional-packages/-/node-gyp-build-optional-packages-5.0.3.tgz#92a89d400352c44ad3975010368072b41ad66c17"
- integrity sha512-k75jcVzk5wnnc/FMxsf4udAoTEUv2jY3ycfdSd3yWu6Cnd1oee6/CfZJApyscA4FJOmdoixWwiwOyf16RzD5JA==
-
-normalize-path@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- integrity sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-normalize-path@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-npm-path@^2.0.2:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/npm-path/-/npm-path-2.0.4.tgz#c641347a5ff9d6a09e4d9bce5580c4f505278e64"
- integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
- dependencies:
- which "^1.2.10"
-
-npm-run-path@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f"
- integrity sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==
- dependencies:
- path-key "^2.0.0"
-
-npm-run-path@^4.0.0, npm-run-path@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
- integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
- dependencies:
- path-key "^3.0.0"
-
-npm-which@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/npm-which/-/npm-which-3.0.1.tgz#9225f26ec3a285c209cae67c3b11a6b4ab7140aa"
- integrity sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==
- dependencies:
- commander "^2.9.0"
- npm-path "^2.0.2"
- which "^1.2.10"
-
-object-copy@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
- integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==
- dependencies:
- copy-descriptor "^0.1.0"
- define-property "^0.2.5"
- kind-of "^3.0.3"
-
-object-inspect@^1.9.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
- integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
-
-object-keys@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
- integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object-visit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
- integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==
- dependencies:
- isobject "^3.0.0"
-
-object.assign@^4.1.4:
- version "4.1.4"
- resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.4.tgz#9673c7c7c351ab8c4d0b516f4343ebf4dfb7799f"
- integrity sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==
- dependencies:
- call-bind "^1.0.2"
- define-properties "^1.1.4"
- has-symbols "^1.0.3"
- object-keys "^1.1.1"
-
-object.pick@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
- integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
- dependencies:
- isobject "^3.0.1"
-
-once@^1.3.0, once@^1.3.1, once@^1.4.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
- integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
- dependencies:
- wrappy "1"
-
-onetime@^5.1.0, onetime@^5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
- integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
- dependencies:
- mimic-fn "^2.1.0"
-
-os-browserify@~0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27"
- integrity sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==
-
-ospath@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b"
- integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==
-
-p-finally@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae"
- integrity sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==
-
-p-map@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b"
- integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==
- dependencies:
- aggregate-error "^3.0.0"
-
-pako@~1.0.2, pako@~1.0.5:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf"
- integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
-
-parents@^1.0.0, parents@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/parents/-/parents-1.0.1.tgz#fedd4d2bf193a77745fe71e371d73c3307d9c751"
- integrity sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==
- dependencies:
- path-platform "~0.11.15"
-
-parse-asn1@^5.0.0, parse-asn1@^5.1.6:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.6.tgz#385080a3ec13cb62a62d39409cb3e88844cdaed4"
- integrity sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==
- dependencies:
- asn1.js "^5.2.0"
- browserify-aes "^1.0.0"
- evp_bytestokey "^1.0.0"
- pbkdf2 "^3.0.3"
- safe-buffer "^5.1.1"
-
-parse-ms@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d"
- integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==
-
-pascalcase@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
- integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==
-
-path-browserify@~0.0.0:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a"
- integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==
-
-path-dirname@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0"
- integrity sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==
-
-path-is-absolute@^1.0.0, path-is-absolute@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
- integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
-
-path-key@^2.0.0, path-key@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40"
- integrity sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==
-
-path-key@^3.0.0, path-key@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
- integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-parse@^1.0.7:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
- integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
-
-path-platform@~0.11.15:
- version "0.11.15"
- resolved "https://registry.yarnpkg.com/path-platform/-/path-platform-0.11.15.tgz#e864217f74c36850f0852b78dc7bf7d4a5721bf2"
- integrity sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==
-
-path-type@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b"
- integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
-
-pbkdf2@^3.0.3:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075"
- integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==
- dependencies:
- create-hash "^1.1.2"
- create-hmac "^1.1.4"
- ripemd160 "^2.0.1"
- safe-buffer "^5.0.1"
- sha.js "^2.4.8"
-
-pend@~1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50"
- integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
-
-performance-now@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b"
- integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==
-
-picomatch@^2.3.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-pify@^2.2.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c"
- integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==
-
-plur@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/plur/-/plur-4.0.0.tgz#729aedb08f452645fe8c58ef115bf16b0a73ef84"
- integrity sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==
- dependencies:
- irregular-plurals "^3.2.0"
-
-posix-character-classes@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
- integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==
-
-pretty-bytes@^5.6.0:
- version "5.6.0"
- resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb"
- integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==
-
-pretty-ms@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8"
- integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==
- dependencies:
- parse-ms "^2.1.0"
-
-process-nextick-args@~2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
- integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
-
-process@^0.11.10, process@~0.11.0:
- version "0.11.10"
- resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
- integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==
-
-proxy-from-env@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee"
- integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==
-
-proxy-from-env@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
- integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-
-psl@^1.1.33:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/psl/-/psl-1.9.0.tgz#d0df2a137f00794565fcaf3b2c00cd09f8d5a5a7"
- integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
-
-public-encrypt@^4.0.0:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0"
- integrity sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==
- dependencies:
- bn.js "^4.1.0"
- browserify-rsa "^4.0.0"
- create-hash "^1.1.0"
- parse-asn1 "^5.0.0"
- randombytes "^2.0.1"
- safe-buffer "^5.1.2"
-
-pump@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"
- integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==
- dependencies:
- end-of-stream "^1.1.0"
- once "^1.3.1"
-
-punycode@^1.3.2, punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
- integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==
-
-punycode@^2.1.0, punycode@^2.1.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5"
- integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
-
-qs@6.10.4:
- version "6.10.4"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.4.tgz#6a3003755add91c0ec9eacdc5f878b034e73f9e7"
- integrity sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==
- dependencies:
- side-channel "^1.0.4"
-
-qs@^6.11.2:
- version "6.11.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9"
- integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
- dependencies:
- side-channel "^1.0.4"
-
-querystring-es3@~0.2.0:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73"
- integrity sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==
-
-querystringify@^2.1.1:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6"
- integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
-
-queue-microtask@^1.2.2:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
- integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-
-ramda@0.26.1:
- version "0.26.1"
- resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.26.1.tgz#8d41351eb8111c55353617fc3bbffad8e4d35d06"
- integrity sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==
-
-randombytes@^2.0.0, randombytes@^2.0.1, randombytes@^2.0.5:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
- integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
- dependencies:
- safe-buffer "^5.1.0"
-
-randomfill@^1.0.3:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/randomfill/-/randomfill-1.0.4.tgz#c92196fc86ab42be983f1bf31778224931d61458"
- integrity sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==
- dependencies:
- randombytes "^2.0.5"
- safe-buffer "^5.1.0"
-
-read-only-stream@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/read-only-stream/-/read-only-stream-2.0.0.tgz#2724fd6a8113d73764ac288d4386270c1dbf17f0"
- integrity sha512-3ALe0bjBVZtkdWKIcThYpQCLbBMd/+Tbh2CDSrAIDO3UsZ4Xs+tnyjv2MjCOMMgBG+AsUOeuP1cgtY1INISc8w==
- dependencies:
- readable-stream "^2.0.2"
-
-"readable-stream@>=1.0.33-1 <1.1.0-0":
- version "1.0.34"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
- integrity sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.1"
- isarray "0.0.1"
- string_decoder "~0.10.x"
-
-readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@~2.3.6:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b"
- integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~2.0.0"
- safe-buffer "~5.1.1"
- string_decoder "~1.1.1"
- util-deprecate "~1.0.1"
-
-readable-stream@^3.6.0, readable-stream@^3.6.2:
- version "3.6.2"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
- integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
- dependencies:
- inherits "^2.0.3"
- string_decoder "^1.1.1"
- util-deprecate "^1.0.1"
-
-readdirp@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525"
- integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==
- dependencies:
- graceful-fs "^4.1.11"
- micromatch "^3.1.10"
- readable-stream "^2.0.2"
-
-regenerator-runtime@^0.14.0:
- version "0.14.0"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45"
- integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==
-
-regex-not@^1.0.0, regex-not@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
- integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
- dependencies:
- extend-shallow "^3.0.2"
- safe-regex "^1.1.0"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
- integrity sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==
-
-repeat-element@^1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
- integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
-
-repeat-string@^1.6.1:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
- integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
-
-request-progress@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe"
- integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==
- dependencies:
- throttleit "^1.0.0"
-
-require-from-string@^2.0.2:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
- integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==
-
-requires-port@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
- integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
-
-resolve-url@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
- integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
-
-resolve@^1.1.4, resolve@^1.17.0, resolve@^1.4.0:
- version "1.22.8"
- resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d"
- integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==
- dependencies:
- is-core-module "^2.13.0"
- path-parse "^1.0.7"
- supports-preserve-symlinks-flag "^1.0.0"
-
-restore-cursor@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e"
- integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
- dependencies:
- onetime "^5.1.0"
- signal-exit "^3.0.2"
-
-ret@~0.1.10:
- version "0.1.15"
- resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
- integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-reusify@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76"
- integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
-
-rfdc@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.0.tgz#d0b7c441ab2720d05dc4cf26e01c89631d9da08b"
- integrity sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==
-
-rimraf@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
- integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
- dependencies:
- glob "^7.1.3"
-
-ripemd160@^2.0.0, ripemd160@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c"
- integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==
- dependencies:
- hash-base "^3.0.0"
- inherits "^2.0.1"
-
-run-parallel@^1.1.9:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
- integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
- dependencies:
- queue-microtask "^1.2.2"
-
-rxjs@^7.5.1:
- version "7.8.1"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
- integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
- dependencies:
- tslib "^2.1.0"
-
-safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
- integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
-
-safe-regex@^1.1.0:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
- integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==
- dependencies:
- ret "~0.1.10"
-
-safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0:
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-semver@^5.5.0:
- version "5.7.2"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
- integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
-
-semver@^7.5.3:
- version "7.5.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
- integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
- dependencies:
- lru-cache "^6.0.0"
-
-set-function-length@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.1.1.tgz#4bc39fafb0307224a33e106a7d35ca1218d659ed"
- integrity sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==
- dependencies:
- define-data-property "^1.1.1"
- get-intrinsic "^1.2.1"
- gopd "^1.0.1"
- has-property-descriptors "^1.0.0"
-
-set-value@^2.0.0, set-value@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
- integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
- dependencies:
- extend-shallow "^2.0.1"
- is-extendable "^0.1.1"
- is-plain-object "^2.0.3"
- split-string "^3.0.1"
-
-setimmediate@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"
- integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
-
-sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4:
- version "2.4.11"
- resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7"
- integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==
- dependencies:
- inherits "^2.0.1"
- safe-buffer "^5.0.1"
-
-shasum-object@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shasum-object/-/shasum-object-1.0.0.tgz#0b7b74ff5b66ecf9035475522fa05090ac47e29e"
- integrity sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==
- dependencies:
- fast-safe-stringify "^2.0.7"
-
-shasum@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/shasum/-/shasum-1.0.2.tgz#e7012310d8f417f4deb5712150e5678b87ae565f"
- integrity sha512-UTzHm/+AzKfO9RgPgRpDIuMSNie1ubXRaljjlhFMNGYoG7z+rm9AHLPMf70R7887xboDH9Q+5YQbWKObFHEAtw==
- dependencies:
- json-stable-stringify "~0.0.0"
- sha.js "~2.4.4"
-
-shebang-command@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea"
- integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==
- dependencies:
- shebang-regex "^1.0.0"
-
-shebang-command@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
- integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
- dependencies:
- shebang-regex "^3.0.0"
-
-shebang-regex@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3"
- integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==
-
-shebang-regex@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
- integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-shell-quote@^1.6.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
- integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
-
-side-channel@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
- dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
-
-signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
- version "3.0.7"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
- integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
-
-simple-concat@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f"
- integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==
-
-slash@3.0.0, slash@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634"
- integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
-
-slice-ansi@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787"
- integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==
- dependencies:
- ansi-styles "^4.0.0"
- astral-regex "^2.0.0"
- is-fullwidth-code-point "^3.0.0"
-
-slice-ansi@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b"
- integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==
- dependencies:
- ansi-styles "^4.0.0"
- astral-regex "^2.0.0"
- is-fullwidth-code-point "^3.0.0"
-
-snapdragon-node@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
- integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
- dependencies:
- define-property "^1.0.0"
- isobject "^3.0.0"
- snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
- integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
- dependencies:
- kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
- integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
- dependencies:
- base "^0.11.1"
- debug "^2.2.0"
- define-property "^0.2.5"
- extend-shallow "^2.0.1"
- map-cache "^0.2.2"
- source-map "^0.5.6"
- source-map-resolve "^0.5.0"
- use "^3.1.0"
-
-source-map-resolve@^0.5.0:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
- integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
- dependencies:
- atob "^2.1.2"
- decode-uri-component "^0.2.0"
- resolve-url "^0.2.1"
- source-map-url "^0.4.0"
- urix "^0.1.0"
-
-source-map-support@^0.5.21:
- version "0.5.21"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
- integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
- dependencies:
- buffer-from "^1.0.0"
- source-map "^0.6.0"
-
-source-map-url@^0.4.0:
- version "0.4.1"
- resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
- integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
-
-source-map@^0.5.6, source-map@~0.5.3:
- version "0.5.7"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
- integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
-
-source-map@^0.6.0, source-map@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
- integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-split-string@^3.0.1, split-string@^3.0.2:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
- integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
- dependencies:
- extend-shallow "^3.0.0"
-
-sshpk@^1.14.1:
- version "1.18.0"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028"
- integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- bcrypt-pbkdf "^1.0.0"
- dashdash "^1.12.0"
- ecc-jsbn "~0.1.1"
- getpass "^0.1.1"
- jsbn "~0.1.0"
- safer-buffer "^2.0.2"
- tweetnacl "~0.14.0"
-
-static-extend@^0.1.1:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
- integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==
- dependencies:
- define-property "^0.2.5"
- object-copy "^0.1.0"
-
-stream-browserify@^2.0.0:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/stream-browserify/-/stream-browserify-2.0.2.tgz#87521d38a44aa7ee91ce1cd2a47df0cb49dd660b"
- integrity sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==
- dependencies:
- inherits "~2.0.1"
- readable-stream "^2.0.2"
-
-stream-combiner2@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/stream-combiner2/-/stream-combiner2-1.1.1.tgz#fb4d8a1420ea362764e21ad4780397bebcb41cbe"
- integrity sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==
- dependencies:
- duplexer2 "~0.1.0"
- readable-stream "^2.0.2"
-
-stream-http@^3.0.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/stream-http/-/stream-http-3.2.0.tgz#1872dfcf24cb15752677e40e5c3f9cc1926028b5"
- integrity sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==
- dependencies:
- builtin-status-codes "^3.0.0"
- inherits "^2.0.4"
- readable-stream "^3.6.0"
- xtend "^4.0.2"
-
-stream-splicer@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/stream-splicer/-/stream-splicer-2.0.1.tgz#0b13b7ee2b5ac7e0609a7463d83899589a363fcd"
- integrity sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==
- dependencies:
- inherits "^2.0.1"
- readable-stream "^2.0.2"
-
-string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-string_decoder@^1.1.1:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
- integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
- dependencies:
- safe-buffer "~5.2.0"
-
-string_decoder@~0.10.x:
- version "0.10.31"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
- integrity sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==
-
-string_decoder@~1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
- integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
- dependencies:
- safe-buffer "~5.1.0"
-
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-strip-eof@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf"
- integrity sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==
-
-strip-final-newline@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
- integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
-
-subarg@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
- integrity sha512-RIrIdRY0X1xojthNcVtgT9sjpOGagEUKpZdgBUi054OEPFo282yg+zE+t1Rj3+RqKq2xStL7uUHhY+AjbC4BXg==
- dependencies:
- minimist "^1.1.0"
-
-supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
-supports-color@^8.1.1:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
- integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
- dependencies:
- has-flag "^4.0.0"
-
-supports-preserve-symlinks-flag@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
- integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
-
-syntax-error@^1.1.1:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/syntax-error/-/syntax-error-1.4.0.tgz#2d9d4ff5c064acb711594a3e3b95054ad51d907c"
- integrity sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==
- dependencies:
- acorn-node "^1.2.0"
-
-table@^6.8.1:
- version "6.8.1"
- resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
- integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==
- dependencies:
- ajv "^8.0.1"
- lodash.truncate "^4.4.2"
- slice-ansi "^4.0.0"
- string-width "^4.2.3"
- strip-ansi "^6.0.1"
-
-throttleit@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.1.tgz#304ec51631c3b770c65c6c6f76938b384000f4d5"
- integrity sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==
-
-through2@0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.3.tgz#795292fde9f254c2a368b38f9cc5d1bd4663afb6"
- integrity sha512-6UXIsO0fTTYMgxeQ9pisMOIqF/uL6Ebva+4HxihtLLR2gscWEu+OTMwar/0TYZaeDSNS1msIJAXJRis+GojL8g==
- dependencies:
- readable-stream ">=1.0.33-1 <1.1.0-0"
- xtend ">=4.0.0 <4.1.0-0"
-
-through2@^2.0.0:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
- integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==
- dependencies:
- readable-stream "~2.3.6"
- xtend "~4.0.1"
-
-"through@>=2.2.7 <3", through@^2.3.8:
- version "2.3.8"
- resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5"
- integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==
-
-timers-browserify@^1.0.1:
- version "1.4.2"
- resolved "https://registry.yarnpkg.com/timers-browserify/-/timers-browserify-1.4.2.tgz#c9c58b575be8407375cb5e2462dacee74359f41d"
- integrity sha512-PIxwAupJZiYU4JmVZYwXp9FKsHMXb5h0ZEFyuXTAn8WLHOlcij+FEcbrvDsom1o5dr1YggEtFbECvGCW2sT53Q==
- dependencies:
- process "~0.11.0"
-
-tmp-promise@^3.0.3:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/tmp-promise/-/tmp-promise-3.0.3.tgz#60a1a1cc98c988674fcbfd23b6e3367bdeac4ce7"
- integrity sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==
- dependencies:
- tmp "^0.2.0"
-
-tmp@^0.2.0, tmp@~0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14"
- integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==
- dependencies:
- rimraf "^3.0.0"
-
-to-object-path@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
- integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==
- dependencies:
- kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
- integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==
- dependencies:
- is-number "^3.0.0"
- repeat-string "^1.6.1"
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-to-regex@^3.0.1, to-regex@^3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
- integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
- dependencies:
- define-property "^2.0.2"
- extend-shallow "^3.0.2"
- regex-not "^1.0.2"
- safe-regex "^1.1.0"
-
-tough-cookie@^4.1.3:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.3.tgz#97b9adb0728b42280aa3d814b6b999b2ff0318bf"
- integrity sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==
- dependencies:
- psl "^1.1.33"
- punycode "^2.1.1"
- universalify "^0.2.0"
- url-parse "^1.5.3"
-
-ts-pattern@^4.3.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ts-pattern/-/ts-pattern-4.3.0.tgz#7a995b39342f1b00d1507c2d2f3b90ea16e178a6"
- integrity sha512-pefrkcd4lmIVR0LA49Imjf9DYLK8vtWhqBPA3Ya1ir8xCW0O2yjL9dsCVvI7pCodLC5q7smNpEtDR2yVulQxOg==
-
-tslib@^2.1.0:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.2.tgz#703ac29425e7b37cd6fd456e92404d46d1f3e4ae"
- integrity sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==
-
-tty-browserify@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811"
- integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==
- dependencies:
- safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
- integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==
-
-type-fest@^0.21.3:
- version "0.21.3"
- resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37"
- integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
-
-typedarray@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777"
- integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==
-
-typescript@^5.1.6:
- version "5.3.2"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.3.2.tgz#00d1c7c1c46928c5845c1ee8d0cc2791031d4c43"
- integrity sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==
-
-umd@^3.0.0:
- version "3.0.3"
- resolved "https://registry.yarnpkg.com/umd/-/umd-3.0.3.tgz#aa9fe653c42b9097678489c01000acb69f0b26cf"
- integrity sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==
-
-unc-path-regex@^0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa"
- integrity sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==
-
-undeclared-identifiers@^1.1.2:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz#9254c1d37bdac0ac2b52de4b6722792d2a91e30f"
- integrity sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==
- dependencies:
- acorn-node "^1.3.0"
- dash-ast "^1.0.0"
- get-assigned-identifiers "^1.2.0"
- simple-concat "^1.0.0"
- xtend "^4.0.1"
-
-undici-types@~5.26.4:
- version "5.26.5"
- resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-5.26.5.tgz#bcd539893d00b56e964fd2657a4866b221a65617"
- integrity sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==
-
-union-value@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
- integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
- dependencies:
- arr-union "^3.1.0"
- get-value "^2.0.6"
- is-extendable "^0.1.1"
- set-value "^2.0.1"
-
-universalify@^0.1.0:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66"
- integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
-
-universalify@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0"
- integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
-
-universalify@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
- integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-
-unset-value@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
- integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==
- dependencies:
- has-value "^0.3.1"
- isobject "^3.0.0"
-
-untildify@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b"
- integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==
-
-unzip-crx@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/unzip-crx/-/unzip-crx-0.2.0.tgz#4c0baa8bdac756256754beca7843c13d7b858c18"
- integrity sha512-6LGdnpdnX5mkTdjdsZVuKRC63ht8pgOUGYYYK/wsDtgw81+W7WUBXLHzhhAcc/lxUvK7ByqZAzlwaa9U6CMSCQ==
- dependencies:
- jszip "^3.1.0"
- mkdirp "^0.5.1"
- yaku "^0.16.6"
-
-upath@^1.1.1:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894"
- integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==
-
-uri-js@^4.2.2:
- version "4.4.1"
- resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
- integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
- dependencies:
- punycode "^2.1.0"
-
-urix@^0.1.0:
- version "0.1.0"
- resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
- integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==
-
-url-parse@^1.5.3:
- version "1.5.10"
- resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1"
- integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
- dependencies:
- querystringify "^2.1.1"
- requires-port "^1.0.0"
-
-url@~0.11.0:
- version "0.11.3"
- resolved "https://registry.yarnpkg.com/url/-/url-0.11.3.tgz#6f495f4b935de40ce4a0a52faee8954244f3d3ad"
- integrity sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==
- dependencies:
- punycode "^1.4.1"
- qs "^6.11.2"
-
-use@^3.1.0:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
- integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-util-deprecate@^1.0.1, util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
- integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-
-util@^0.10.4, util@~0.10.1:
- version "0.10.4"
- resolved "https://registry.yarnpkg.com/util/-/util-0.10.4.tgz#3aa0125bfe668a4672de58857d3ace27ecb76901"
- integrity sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==
- dependencies:
- inherits "2.0.3"
-
-uuid@^8.3.2:
- version "8.3.2"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
- integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
-vm-browserify@^1.0.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0"
- integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==
-
-which@^1.2.10, which@^1.2.9:
- version "1.3.1"
- resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a"
- integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
- dependencies:
- isexe "^2.0.0"
-
-which@^2.0.1:
- version "2.0.2"
- resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
- integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
- dependencies:
- isexe "^2.0.0"
-
-wrap-ansi@^6.2.0:
- version "6.2.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53"
- integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
-wrappy@1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
- integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
-
-ws@^8.13.0:
- version "8.14.2"
- resolved "https://registry.yarnpkg.com/ws/-/ws-8.14.2.tgz#6c249a806eb2db7a20d26d51e7709eab7b2e6c7f"
- integrity sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==
-
-"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
-yaku@^0.16.6:
- version "0.16.7"
- resolved "https://registry.yarnpkg.com/yaku/-/yaku-0.16.7.tgz#1d195c78aa9b5bf8479c895b9504fd4f0847984e"
- integrity sha512-Syu3IB3rZvKvYk7yTiyl1bo/jiEFaaStrgv1V2TIJTqYPStSMQVO8EQjg/z+DRzLq/4LIIharNT3iH1hylEIRw==
-
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yauzl@^2.10.0:
- version "2.10.0"
- resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9"
- integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
- dependencies:
- buffer-crc32 "~0.2.3"
- fd-slicer "~1.1.0"
diff --git a/tests/load-testing/pom.xml b/tests/load-testing/pom.xml
index f79842b88..d918aa230 100644
--- a/tests/load-testing/pom.xml
+++ b/tests/load-testing/pom.xml
@@ -42,8 +42,8 @@
org.bouncycastle
- bcprov-jdk15on
- 1.69
+ bcprov-jdk18on
+ 1.78
diff --git a/tests/test-metadata-api/yarn.lock b/tests/test-metadata-api/yarn.lock
index cf7a4ed22..053a47bea 100644
--- a/tests/test-metadata-api/yarn.lock
+++ b/tests/test-metadata-api/yarn.lock
@@ -67,10 +67,10 @@ balanced-match@^1.0.0:
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-body-parser@1.20.2:
- version "1.20.2"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
- integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
+body-parser@1.20.3:
+ version "1.20.3"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
+ integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
dependencies:
bytes "3.1.2"
content-type "~1.0.5"
@@ -80,7 +80,7 @@ body-parser@1.20.2:
http-errors "2.0.0"
iconv-lite "0.4.24"
on-finished "2.4.1"
- qs "6.11.0"
+ qs "6.13.0"
raw-body "2.5.2"
type-is "~1.6.18"
unpipe "1.0.0"
@@ -146,10 +146,10 @@ cookie-signature@1.0.6:
resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
-cookie@0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.6.0.tgz#2798b04b071b0ecbff0dbb62a505a8efa4e19051"
- integrity sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==
+cookie@0.7.1:
+ version "0.7.1"
+ resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9"
+ integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==
debug@2.6.9:
version "2.6.9"
@@ -194,6 +194,11 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+encodeurl@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
+ integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+
es-define-property@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
@@ -222,49 +227,49 @@ etag@~1.8.1:
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
express@^4.19.2:
- version "4.19.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
- integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
+ version "4.21.1"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281"
+ integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "1.20.2"
+ body-parser "1.20.3"
content-disposition "0.5.4"
content-type "~1.0.4"
- cookie "0.6.0"
+ cookie "0.7.1"
cookie-signature "1.0.6"
debug "2.6.9"
depd "2.0.0"
- encodeurl "~1.0.2"
+ encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
- finalhandler "1.2.0"
+ finalhandler "1.3.1"
fresh "0.5.2"
http-errors "2.0.0"
- merge-descriptors "1.0.1"
+ merge-descriptors "1.0.3"
methods "~1.1.2"
on-finished "2.4.1"
parseurl "~1.3.3"
- path-to-regexp "0.1.7"
+ path-to-regexp "0.1.10"
proxy-addr "~2.0.7"
- qs "6.11.0"
+ qs "6.13.0"
range-parser "~1.2.1"
safe-buffer "5.2.1"
- send "0.18.0"
- serve-static "1.15.0"
+ send "0.19.0"
+ serve-static "1.16.2"
setprototypeof "1.2.0"
statuses "2.0.1"
type-is "~1.6.18"
utils-merge "1.0.1"
vary "~1.1.2"
-finalhandler@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
- integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
+finalhandler@1.3.1:
+ version "1.3.1"
+ resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019"
+ integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==
dependencies:
debug "2.6.9"
- encodeurl "~1.0.2"
+ encodeurl "~2.0.0"
escape-html "~1.0.3"
on-finished "2.4.1"
parseurl "~1.3.3"
@@ -408,10 +413,10 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+merge-descriptors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
+ integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
methods@~1.1.2:
version "1.1.2"
@@ -458,9 +463,9 @@ negotiator@0.6.3:
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
object-inspect@^1.13.1:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.1.tgz#b96c6109324ccfef6b12216a956ca4dc2ff94bc2"
- integrity sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==
+ version "1.13.2"
+ resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
+ integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
on-finished@2.4.1:
version "2.4.1"
@@ -486,10 +491,10 @@ path-is-absolute@^1.0.0:
resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+path-to-regexp@0.1.10:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
+ integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
proxy-addr@~2.0.7:
version "2.0.7"
@@ -499,12 +504,12 @@ proxy-addr@~2.0.7:
forwarded "0.2.0"
ipaddr.js "1.9.1"
-qs@6.11.0:
- version "6.11.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
- integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
+qs@6.13.0:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
+ integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
dependencies:
- side-channel "^1.0.4"
+ side-channel "^1.0.6"
range-parser@~1.2.1:
version "1.2.1"
@@ -531,10 +536,10 @@ safe-buffer@5.2.1:
resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-send@0.18.0:
- version "0.18.0"
- resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
- integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
+send@0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
+ integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
dependencies:
debug "2.6.9"
depd "2.0.0"
@@ -550,15 +555,15 @@ send@0.18.0:
range-parser "~1.2.1"
statuses "2.0.1"
-serve-static@1.15.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
- integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+serve-static@1.16.2:
+ version "1.16.2"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296"
+ integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==
dependencies:
- encodeurl "~1.0.2"
+ encodeurl "~2.0.0"
escape-html "~1.0.3"
parseurl "~1.3.3"
- send "0.18.0"
+ send "0.19.0"
set-function-length@^1.2.1:
version "1.2.2"
@@ -577,7 +582,7 @@ setprototypeof@1.2.0:
resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
-side-channel@^1.0.4:
+side-channel@^1.0.6:
version "1.0.6"
resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
@@ -612,14 +617,14 @@ swagger-parser@^10.0.3:
"@apidevtools/swagger-parser" "10.0.3"
swagger-ui-dist@>=5.0.0:
- version "5.17.2"
- resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.17.2.tgz#de31813b18ff34e9a428cd6b9ede521164621996"
- integrity sha512-V/NqUw6QoTrjSpctp2oLQvxrl3vW29UsUtZyq7B1CF0v870KOFbYGDQw8rpKaKm0JxTwHpWnW1SN9YuKZdiCyw==
+ version "5.17.14"
+ resolved "https://registry.yarnpkg.com/swagger-ui-dist/-/swagger-ui-dist-5.17.14.tgz#e2c222e5bf9e15ccf80ec4bc08b4aaac09792fd6"
+ integrity sha512-CVbSfaLpstV65OnSjbXfVd6Sta3q3F7Cj/yYuvHMp1P90LztOLs6PfUnKEVAeiIVQt9u2SaPwv0LiH/OyMjHRw==
swagger-ui-express@^5.0.0:
- version "5.0.0"
- resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-5.0.0.tgz#7a00a18dd909574cb0d628574a299b9ba53d4d49"
- integrity sha512-tsU9tODVvhyfkNSvf03E6FAk+z+5cU3lXAzMy6Pv4av2Gt2xA0++fogwC4qo19XuFf6hdxevPuVCSKFuMHJhFA==
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/swagger-ui-express/-/swagger-ui-express-5.0.1.tgz#fb8c1b781d2793a6bd2f8a205a3f4bd6fa020dd8"
+ integrity sha512-SrNU3RiBGTLLmFU8GIJdOdanJTl4TOmT27tt3bWWHppqYmAZ6IDuEuBvMU6nZq0zLEe6b/1rACXCgLZqO6ZfrA==
dependencies:
swagger-ui-dist ">=5.0.0"
@@ -652,9 +657,9 @@ uuid@^9.0.1:
integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==
validator@^13.7.0:
- version "13.11.0"
- resolved "https://registry.yarnpkg.com/validator/-/validator-13.11.0.tgz#23ab3fd59290c61248364eabf4067f04955fbb1b"
- integrity sha512-Ii+sehpSfZy+At5nPdnyMhx78fEoPDkR2XW/zimHEL3MyGJQOCQ7WeP20jPYRz7ZCpcKLB21NxuXHF3bxjStBQ==
+ version "13.12.0"
+ resolved "https://registry.yarnpkg.com/validator/-/validator-13.12.0.tgz#7d78e76ba85504da3fee4fd1922b385914d4b35f"
+ integrity sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==
vary@~1.1.2:
version "1.1.2"
diff --git a/tests/test-metrics-api/.env.example b/tests/test-metrics-api/.env.example
deleted file mode 100644
index ab6a5e93d..000000000
--- a/tests/test-metrics-api/.env.example
+++ /dev/null
@@ -1,6 +0,0 @@
-PGHOST='office.sireto.dev'
-PGPORT=8080
-PGDATABASE='govtool'
-PGUSER='postgres'
-PGPASSWORD='your password'
-API_SECRET_TOKEN='some-token'
diff --git a/tests/test-metrics-api/.gitignore b/tests/test-metrics-api/.gitignore
deleted file mode 100644
index e75fc9993..000000000
--- a/tests/test-metrics-api/.gitignore
+++ /dev/null
@@ -1,159 +0,0 @@
-run/
-### Node ###
-# Logs
-logs
-*.log
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-lerna-debug.log*
-.pnpm-debug.log*
-
-# Diagnostic reports (https://nodejs.org/api/report.html)
-report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
-
-# Runtime data
-pids
-*.pid
-*.seed
-*.pid.lock
-
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
-
-# Coverage directory used by tools like istanbul
-coverage
-*.lcov
-
-# nyc test coverage
-.nyc_output
-
-# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
-
-# Bower dependency directory (https://bower.io/)
-bower_components
-
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (https://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directories
-node_modules/
-jspm_packages/
-
-# Snowpack dependency directory (https://snowpack.dev/)
-web_modules/
-
-# TypeScript cache
-*.tsbuildinfo
-
-# Optional npm cache directory
-.npm
-
-# Optional eslint cache
-.eslintcache
-
-# Optional stylelint cache
-.stylelintcache
-
-# Microbundle cache
-.rpt2_cache/
-.rts2_cache_cjs/
-.rts2_cache_es/
-.rts2_cache_umd/
-
-# Optional REPL history
-.node_repl_history
-
-# Output of 'npm pack'
-*.tgz
-
-# Yarn Integrity file
-.yarn-integrity
-
-# dotenv environment variable files
-.env
-.env.development.local
-.env.test.local
-.env.production.local
-.env.local
-
-# parcel-bundler cache (https://parceljs.org/)
-.cache
-.parcel-cache
-
-# Next.js build output
-.next
-out
-
-# Nuxt.js build / generate output
-.nuxt
-dist
-
-# Gatsby files
-.cache/
-# Comment in the public line in if your project uses Gatsby and not Next.js
-# https://nextjs.org/blog/next-9-1#public-directory-support
-# public
-
-# vuepress build output
-.vuepress/dist
-
-# vuepress v2.x temp and cache directory
-.temp
-
-# Docusaurus cache and generated files
-.docusaurus
-
-# Serverless directories
-.serverless/
-
-# FuseBox cache
-.fusebox/
-
-# DynamoDB Local files
-.dynamodb/
-
-# TernJS port file
-.tern-port
-
-# Stores VSCode versions used for testing VSCode extensions
-.vscode-test
-
-# yarn v2
-.yarn/cache
-.yarn/unplugged
-.yarn/build-state.yml
-.yarn/install-state.gz
-.pnp.*
-
-### Node Patch ###
-# Serverless Webpack directories
-.webpack/
-
-# Optional stylelint cache
-
-# SvelteKit build / generate output
-.svelte-kit
-
-### VisualStudioCode ###
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-!.vscode/*.code-snippets
-
-# Local History for Visual Studio Code
-.history/
-
-# Built Visual Studio Code Extensions
-*.vsix
-
-### VisualStudioCode Patch ###
-# Ignore all local history of files
-.history
-.ionide
diff --git a/tests/test-metrics-api/.prettierrc.yaml b/tests/test-metrics-api/.prettierrc.yaml
deleted file mode 100644
index a3f5bb1c7..000000000
--- a/tests/test-metrics-api/.prettierrc.yaml
+++ /dev/null
@@ -1,6 +0,0 @@
-# .prettierrc or .prettierrc.yaml
-trailingComma: 'es5'
-tabWidth: 2
-printWidth: 130
-semi: false
-singleQuote: true
diff --git a/tests/test-metrics-api/Dockerfile b/tests/test-metrics-api/Dockerfile
deleted file mode 100644
index fd39b64e9..000000000
--- a/tests/test-metrics-api/Dockerfile
+++ /dev/null
@@ -1,22 +0,0 @@
-FROM node:19 as prod
-USER node
-WORKDIR /home/node
-COPY --chown=node:node package.json yarn.lock ./
-RUN yarn install --prod --frozen-lockfile
-
-FROM prod as builder
-RUN yarn install --frozen-lockfile
-COPY ./src ./src
-COPY ./tsconfig.json .
-RUN yarn build
-
-FROM prod
-COPY --from=builder /home/node/dist/ ./
-ENV PGHOST=postgres \
- PGPORT=5432 \
- PGUSER=postgres \
- NODE_OPTIONS="--max-old-space-size=2048" \
- PORT=8080 \
- NODE_ENV=production
-EXPOSE 8080
-CMD node index.js
diff --git a/tests/test-metrics-api/README.md b/tests/test-metrics-api/README.md
deleted file mode 100644
index 5526d0adb..000000000
--- a/tests/test-metrics-api/README.md
+++ /dev/null
@@ -1,161 +0,0 @@
-# Test Metrics API
-
-This api is intended to be called by Github Action whenever a new commit to GovTool app has been made and new metrics are obtained. The api expects a POST request with a JSON file of the metrics which will then update the database with the new metrics.
-
-## Prerequisite
-
-- **PostgresSql** Database
-
-### Table Structure
-
-Database tables are automatically created upon startup
-
-#### `test_metrics` Table
-
-| Column Name | Data Type | Constraints |
-| ----------- | --------- | ----------- |
-| id | SERIAL | PRIMARY KEY |
-| outcome | TEXT | NOT NULL |
-| start_date | BIGINT | NOT NULL |
-| end_date | BIGINT | NOT NULL |
-| build_id | TEXT | NOT NULL |
-| test_name | TEXT | NOT NULL |
-| commit_hash | TEXT | NOT NULL |
-
-#### `endpoint_metrics` Table
-
-| Column Name | Data Type | Constraints |
-| ------------- | --------- | ----------- |
-| id | SERIAL | PRIMARY KEY |
-| build_id | TEXT | NOT NULL |
-| method | TEXT | NOT NULL |
-| endpoint | TEXT | NOT NULL |
-| path_param | TEXT | |
-| json | text | |
-| status_code | INTEGER | NOT NULL |
-| response_json | text | |
-| response_time | BIGINT | NOT NULL |
-| start_date | BIGINT | NOT NULL |
-
-### How to run
-
-To run it in develop mode, you can use `npm run make` command in the terminal
-To compile it, you can use `npm run build` command in the terminal
-To run the compiled version, you can use `npm run start` command in the terminal
-
-| Environment Variable | Description |
-| -------------------- | ---------------------------------------------------------------------------------- |
-| API_SECRET_TOKEN | A secret token that must be provided in each API call in the header `secret-token` |
-| PGHOST | Hostname for the database server |
-| PGPORT | Port number for the database server |
-| PGDATABASE | Database name |
-| PGUSER | Database username |
-| PGPASSWORD | Database password |
-| PORT | Port number for the API |
-
-### Posting metrics to the server
-
-```
-curl -X POST http://localhost:8080 \
- -d "@metrics.json" \
- -H "commitHash: abc" \
- -H "secret-token: token"
- -H 'Content-Type: application/json'
-```
-
-# Metrics API Reference
-
-## Authentication
-
-Each API request must include a secret token in the request headers for authentication.
-
-- Headers:
- - `secret-token`: The secret token used to authenticate requests.
-
-If the provided `secret-token` is missing or invalid, the server will return a `403 Forbidden` status code, and the request will not be processed further.
-
----
-
-# Metrics API Reference
-
-## Test Result Metrics
-
-### **POST** `/metrics/test-results`
-
-Stores test execution results into the database.
-
-#### Request
-
-- Headers:
-
- - `secret-token`: The secret token used to authenticate requests.
-
-- Body (application/json):
-
- ```json
- {
- "outcome": "passed",
- "start_date": 1625072400000,
- "end_date": 1625076000000,
- "build_id": "build-12345",
- "test_name": "Unit Tests",
- "commit_hash": "abc123def456"
- }
- ```
-
- - `TestMetricsJson` object structure.
-
-#### Response
-
-- **200 OK**: Metrics have been successfully uploaded.
-- **400 Bad Request**: Metrics upload not successful.
-- **403 Forbidden**: Secret Token missing or invalid.
-
----
-
-## API Endpoint Metrics
-
-### **POST** `/metrics/api-endpoints`
-
-Stores metrics related to API endpoint performance into the database.
-
-#### Request
-
-- Headers:
-
- - `secret-token`: The secret token used to authenticate requests.
-
-- Body (application/json):
-
- ```json
- {
- "build_id": "build-67890",
- "method": "GET",
- "endpoint": "/users/{userId}",
- "path_param": "userId",
- "json": {},
- "status_code": 200,
- "response_json": { "name": "John Doe" },
- "response_time": 120,
- "start_date": 1625079600000
- }
- ```
-
- - Replace any placeholder `{userId}` in the endpoint with actual path parameters.
- - The `json` key should contain the JSON payload sent to the server or empty object if none.
- - `EndpointMetricsJson` object structure.
-
-#### Response
-
-- **200 OK**: Metrics have been successfully uploaded.
-- **400 Bad Request**: Metrics upload not successful.
-- **403 Forbidden**: Secret Token missing or invalid.
-
----
-
-
-## Packaging
-Project used Docker for packaging. Build docker image with
-```
-docker build -t voltaire-era/test-metrics-api .
-```
diff --git a/tests/test-metrics-api/package.json b/tests/test-metrics-api/package.json
deleted file mode 100644
index eea1827d7..000000000
--- a/tests/test-metrics-api/package.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
- "name": "metrics-api",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "build": "npx tsc",
- "start": "node dist/index.js",
- "dev": "concurrently \"npx tsc --watch\" \"nodemon -q dist/index.js\"",
- "make": "ts-node ./src/index.ts",
- "format": "prettier . --write"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "dotenv": "^16.3.1",
- "express": "^4.18.2",
- "pg": "^8.11.1",
- "typescript": "^5.1.6"
- },
- "devDependencies": {
- "prettier": "^3.1.0",
- "@types/express": "^4.17.17",
- "@types/multer": "^1.4.7",
- "@types/node": "^20.4.5",
- "@types/pg": "^8.10.2",
- "concurrently": "^8.2.0",
- "nodemon": "^3.0.1",
- "ts-node": "^10.9.1"
- }
-}
diff --git a/tests/test-metrics-api/src/config.ts b/tests/test-metrics-api/src/config.ts
deleted file mode 100644
index 3d4f8d520..000000000
--- a/tests/test-metrics-api/src/config.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import * as dotenv from 'dotenv'
-import * as fs from 'fs'
-import * as path from 'path'
-
-dotenv.config()
-
-interface Config {
- PGPASSWORD: string | undefined
- PGUSER: string | undefined
- API_SECRET_TOKEN: string | undefined
- PGPORT: string | undefined
- PGDATABASE: string | undefined
- PGHOST: string | undefined
-}
-
-const readSecretFromFile = (envVar: string): string | undefined => {
- if (process.env[envVar]) {
- return process.env[envVar]
- }
- const filePath = process.env[envVar + '_FILE'] || '/run/secrets/' + envVar.toLowerCase()
-
- try {
- return fs.readFileSync(filePath, 'utf8').trim()
- } catch (error) {
- console.error(`Error reading secret from file ${filePath}:`, error)
- process.exit(1)
- }
-}
-const readFromEnv = (envVar: string, defaultVal: string): string => {
- return process.env[envVar] || defaultVal
-}
-
-const config: Config = {
- PGPASSWORD: readSecretFromFile('PGPASSWORD'),
- PGUSER: readSecretFromFile('PGUSER'),
- API_SECRET_TOKEN: readSecretFromFile('API_SECRET_TOKEN'),
- PGPORT: readFromEnv('PGPORT', '5432'),
- PGDATABASE: readSecretFromFile('PGDATABASE'),
- PGHOST: readFromEnv('PGHOST', '/run/secrets/host'),
-}
-
-export default config
diff --git a/tests/test-metrics-api/src/db.ts b/tests/test-metrics-api/src/db.ts
deleted file mode 100644
index 2ab7ff6fe..000000000
--- a/tests/test-metrics-api/src/db.ts
+++ /dev/null
@@ -1,64 +0,0 @@
-import pg from 'pg'
-import config from './config'
-import { EndpointMetricsJson, LighthouseMetricsJson, TestMetricsJson } from './types'
-
-export const pool = new pg.Pool({
- host: config.PGHOST,
- port: parseInt(config.PGPORT as string),
- database: config.PGDATABASE,
- user: config.PGUSER,
- password: config.PGPASSWORD,
-})
-
-export async function migrate() {
- let createTableQuery = `
- CREATE TABLE IF NOT EXISTS test_metrics (
- id SERIAL PRIMARY KEY,
- outcome TEXT NOT NULL,
- start_date BIGINT NOT NULL,
- end_date BIGINT NOT NULL,
- build_id TEXT NOT NULL,
- test_name TEXT NOT NULL,
- commit_hash TEXT NOT NULL
-
- )`
- await pool.query(createTableQuery)
- createTableQuery = `
- CREATE TABLE IF NOT EXISTS endpoint_metrics (
- id SERIAL PRIMARY KEY,
- build_id TEXT NOT NULL,
- method TEXT NOT NULL,
- endpoint TEXT NOT NULL,
- path_param TEXT,
- json TEXT,
- status_code INTEGER NOT NULL,
- response_json TEXT ,
- response_time BIGINT NOT NULL,
- start_date BIGINT NOT NULL
- )`
- await pool.query(createTableQuery)
-}
-
-export async function testMetricsToDb(json: TestMetricsJson) {
- const insertQuery = `
- INSERT INTO test_metrics (outcome, start_date, end_date, build_id, test_name, commit_hash)
- VALUES ($1, $2, $3, $4, $5, $6)`
- await pool.query(insertQuery, [json.outcome, json.start_date, json.end_date, json.build_id, json.test_name, json.commit_hash])
-}
-
-export async function endpointMetricsToDb(json: EndpointMetricsJson) {
- const insertQuery = `
- INSERT INTO endpoint_metrics (build_id, method, endpoint, path_param, json, status_code, response_json, response_time, start_date)
- VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)`
- await pool.query(insertQuery, [
- json.build_id,
- json.method,
- json.endpoint,
- json.path_param,
- json.json,
- json.status_code,
- json.response_json,
- json.response_time,
- json.start_date,
- ])
-}
diff --git a/tests/test-metrics-api/src/index.ts b/tests/test-metrics-api/src/index.ts
deleted file mode 100644
index f7ed04fce..000000000
--- a/tests/test-metrics-api/src/index.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import express, { Express, NextFunction, Request, Response } from 'express'
-import config from './config'
-import { endpointMetricsToDb, migrate, pool, testMetricsToDb } from './db'
-
-const app: Express = express()
-const port = process.env.server_PORT || 8080
-app.use(express.json({ limit: '200mb' }))
-app.use(express.urlencoded({ extended: true }))
-migrate()
-
-const checkSecretToken = (req: Request, res: Response, next: NextFunction) => {
- const key = req.get('secret-token')
-
- if (key !== config.API_SECRET_TOKEN) {
- res.status(403).json({ message: 'Secret Token missing or invalid' })
- return
- }
- next() // Call next to proceed to the next middleware or route handler
-}
-
-app.use(checkSecretToken)
-
-
-async function uploadMetrics(req: Request, res: Response, uploadFunction: (file: any) => Promise) {
- try {
- const file = req.body
- if (!file) {
- throw 'File not uploaded'
- }
- await uploadFunction(file)
- res.send('Metrics have been successfully uploaded to database')
- } catch (e) {
- console.log('Error: ', e)
- res.status(400).send('Metrics upload not successful')
- }
-}
-
-app.post('/metrics/test-results', async (req: Request, res: Response) => {
- uploadMetrics(req, res, testMetricsToDb)
-})
-
-app.post('/metrics/api-endpoints', async (req: Request, res: Response) => {
- uploadMetrics(req, res, endpointMetricsToDb)
-})
-pool.connect().then(() =>
- app.listen(port, () => {
- console.log(`⚡️[server]: Server is running at http://localhost:${port}`)
- })
-)
diff --git a/tests/test-metrics-api/src/types.ts b/tests/test-metrics-api/src/types.ts
deleted file mode 100644
index 8eab9e6e8..000000000
--- a/tests/test-metrics-api/src/types.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-// Define TypeScript types for the various JSON structures
-export interface TestMetricsJson {
- outcome: string
- start_date: number
- end_date: number
- build_id: string
- test_name: string
- commit_hash: string
-}
-
-export interface EndpointMetricsJson {
- build_id: string
- method: string
- endpoint: string
- path_param?: string
- json?: any // Replace 'any' with a more specific type if possible
- status_code: number
- response_json?: any // Replace 'any' with a more specific type if possible
- response_time: number
- start_date: number
-}
-
-export interface LighthouseAuditMetric {
- numericValue: number
- numericUnit: 'ms' | 's'
-}
-
-// Complete Lighthouse Metrics JSON Type
-export interface LighthouseMetricsJson {
- audits: {
- interactive: LighthouseAuditMetric
- 'first-contentful-paint': LighthouseAuditMetric
- 'speed-index': LighthouseAuditMetric
- 'total-blocking-time': LighthouseAuditMetric
- 'largest-contentful-paint': LighthouseAuditMetric
- 'cumulative-layout-shift': LighthouseAuditMetric
- [auditName: string]: LighthouseAuditMetric // In case there are more metrics that follow the same pattern
- }
- fetchTime: string
-}
diff --git a/tests/test-metrics-api/tsconfig.json b/tests/test-metrics-api/tsconfig.json
deleted file mode 100644
index c4dab6be2..000000000
--- a/tests/test-metrics-api/tsconfig.json
+++ /dev/null
@@ -1,110 +0,0 @@
-{
- "compilerOptions": {
- /* Visit https://aka.ms/tsconfig to read more about this file */
-
- /* Projects */
- // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */
- // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */
- // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */
- // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */
- // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */
- // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */
-
- /* Language and Environment */
- "target": "es2016" /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */,
- // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */
- // "jsx": "preserve", /* Specify what JSX code is generated. */
- // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */
- // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */
- // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */
- // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */
- // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */
- // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */
- // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */
- // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */
- // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */
-
- /* Modules */
- "module": "commonjs" /* Specify what module code is generated. */,
- // "rootDir": "./", /* Specify the root folder within your source files. */
- // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */
- // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
- // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
- // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
- // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */
- // "types": [], /* Specify type package names to be included without being referenced in a source file. */
- // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
- // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
- // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */
- // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */
- // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */
- // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */
- // "resolveJsonModule": true, /* Enable importing .json files. */
- // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */
- // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */
-
- /* JavaScript Support */
- // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */
- // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */
- // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */
-
- /* Emit */
- // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */
- // "declarationMap": true, /* Create sourcemaps for d.ts files. */
- // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */
- // "sourceMap": true, /* Create source map files for emitted JavaScript files. */
- // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */
- // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */
- // "outDir": "./", /* Specify an output folder for all emitted files. */
- // "removeComments": true, /* Disable emitting comments. */
- // "noEmit": true, /* Disable emitting files from a compilation. */
- // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */
- // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */
- // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */
- // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */
- // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
- // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */
- // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */
- // "newLine": "crlf", /* Set the newline character for emitting files. */
- // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */
- // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */
- // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */
- // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */
- // "declarationDir": "./", /* Specify the output directory for generated declaration files. */
- // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
-
- /* Interop Constraints */
- // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */
- // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */
- // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
- "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
- // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
- "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */,
-
- "outDir": "./dist",
- /* Type Checking */
- "strict": true /* Enable all strict type-checking options. */,
- // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */
- // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */
- // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */
- // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */
- // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */
- // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */
- // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */
- // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */
- // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */
- // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */
- // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */
- // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */
- // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */
- // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */
- // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */
- // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */
- // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */
- // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */
-
- /* Completeness */
- // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */
- "skipLibCheck": true /* Skip type checking all .d.ts files. */
- }
-}
diff --git a/tests/test-metrics-api/yarn.lock b/tests/test-metrics-api/yarn.lock
deleted file mode 100644
index b4a4d8343..000000000
--- a/tests/test-metrics-api/yarn.lock
+++ /dev/null
@@ -1,1199 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@babel/runtime@^7.21.0":
- version "7.22.6"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.6.tgz#57d64b9ae3cff1d67eb067ae117dac087f5bd438"
- integrity sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==
- dependencies:
- regenerator-runtime "^0.13.11"
-
-"@cspotcode/source-map-support@^0.8.0":
- version "0.8.1"
- resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1"
- integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
- dependencies:
- "@jridgewell/trace-mapping" "0.3.9"
-
-"@jridgewell/resolve-uri@^3.0.3":
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721"
- integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==
-
-"@jridgewell/sourcemap-codec@^1.4.10":
- version "1.4.15"
- resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32"
- integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==
-
-"@jridgewell/trace-mapping@0.3.9":
- version "0.3.9"
- resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
- integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
- dependencies:
- "@jridgewell/resolve-uri" "^3.0.3"
- "@jridgewell/sourcemap-codec" "^1.4.10"
-
-"@tsconfig/node10@^1.0.7":
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2"
- integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
-
-"@tsconfig/node12@^1.0.7":
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d"
- integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
-
-"@tsconfig/node14@^1.0.0":
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1"
- integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
-
-"@tsconfig/node16@^1.0.2":
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9"
- integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==
-
-"@types/body-parser@*":
- version "1.19.2"
- resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
- integrity sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==
- dependencies:
- "@types/connect" "*"
- "@types/node" "*"
-
-"@types/connect@*":
- version "3.4.35"
- resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
- integrity sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==
- dependencies:
- "@types/node" "*"
-
-"@types/express-serve-static-core@^4.17.33":
- version "4.17.35"
- resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.35.tgz#c95dd4424f0d32e525d23812aa8ab8e4d3906c4f"
- integrity sha512-wALWQwrgiB2AWTT91CB62b6Yt0sNHpznUXeZEcnPU3DRdlDIz74x8Qg1UUYKSVFi+va5vKOLYRBI1bRKiLLKIg==
- dependencies:
- "@types/node" "*"
- "@types/qs" "*"
- "@types/range-parser" "*"
- "@types/send" "*"
-
-"@types/express@*", "@types/express@^4.17.17":
- version "4.17.17"
- resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.17.tgz#01d5437f6ef9cfa8668e616e13c2f2ac9a491ae4"
- integrity sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==
- dependencies:
- "@types/body-parser" "*"
- "@types/express-serve-static-core" "^4.17.33"
- "@types/qs" "*"
- "@types/serve-static" "*"
-
-"@types/http-errors@*":
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.1.tgz#20172f9578b225f6c7da63446f56d4ce108d5a65"
- integrity sha512-/K3ds8TRAfBvi5vfjuz8y6+GiAYBZ0x4tXv1Av6CWBWn0IlADc+ZX9pMq7oU0fNQPnBwIZl3rmeLp6SBApbxSQ==
-
-"@types/mime@*":
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10"
- integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==
-
-"@types/mime@^1":
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.2.tgz#93e25bf9ee75fe0fd80b594bc4feb0e862111b5a"
- integrity sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==
-
-"@types/multer@^1.4.7":
- version "1.4.7"
- resolved "https://registry.yarnpkg.com/@types/multer/-/multer-1.4.7.tgz#89cf03547c28c7bbcc726f029e2a76a7232cc79e"
- integrity sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==
- dependencies:
- "@types/express" "*"
-
-"@types/node@*", "@types/node@^20.4.5":
- version "20.4.5"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.5.tgz#9dc0a5cb1ccce4f7a731660935ab70b9c00a5d69"
- integrity sha512-rt40Nk13II9JwQBdeYqmbn2Q6IVTA5uPhvSO+JVqdXw/6/4glI6oR9ezty/A9Hg5u7JH4OmYmuQ+XvjKm0Datg==
-
-"@types/pg@^8.10.2":
- version "8.10.2"
- resolved "https://registry.yarnpkg.com/@types/pg/-/pg-8.10.2.tgz#7814d1ca02c8071f4d0864c1b17c589b061dba43"
- integrity sha512-MKFs9P6nJ+LAeHLU3V0cODEOgyThJ3OAnmOlsZsxux6sfQs3HRXR5bBn7xG5DjckEFhTAxsXi7k7cd0pCMxpJw==
- dependencies:
- "@types/node" "*"
- pg-protocol "*"
- pg-types "^4.0.1"
-
-"@types/qs@*":
- version "6.9.7"
- resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
- integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==
-
-"@types/range-parser@*":
- version "1.2.4"
- resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
- integrity sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==
-
-"@types/send@*":
- version "0.17.1"
- resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.1.tgz#ed4932b8a2a805f1fe362a70f4e62d0ac994e301"
- integrity sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==
- dependencies:
- "@types/mime" "^1"
- "@types/node" "*"
-
-"@types/serve-static@*":
- version "1.15.2"
- resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.2.tgz#3e5419ecd1e40e7405d34093f10befb43f63381a"
- integrity sha512-J2LqtvFYCzaj8pVYKw8klQXrLLk7TBZmQ4ShlcdkELFKGwGMfevMLneMMRkMgZxotOD9wg497LpC7O8PcvAmfw==
- dependencies:
- "@types/http-errors" "*"
- "@types/mime" "*"
- "@types/node" "*"
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
- integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==
-
-accepts@~1.3.8:
- version "1.3.8"
- resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
- integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
- dependencies:
- mime-types "~2.1.34"
- negotiator "0.6.3"
-
-acorn-walk@^8.1.1:
- version "8.2.0"
- resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1"
- integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
-
-acorn@^8.4.1:
- version "8.10.0"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5"
- integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==
-
-ansi-regex@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
- integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
- version "4.3.0"
- resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
- integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
- dependencies:
- color-convert "^2.0.1"
-
-anymatch@~3.1.2:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e"
- integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
- dependencies:
- normalize-path "^3.0.0"
- picomatch "^2.0.4"
-
-arg@^4.1.0:
- version "4.1.3"
- resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089"
- integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
-
-array-flatten@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
- integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==
-
-balanced-match@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
- integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-binary-extensions@^2.0.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
- integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==
-
-body-parser@1.20.1:
- version "1.20.1"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.1.tgz#b1812a8912c195cd371a3ee5e66faa2338a5c668"
- integrity sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==
- dependencies:
- bytes "3.1.2"
- content-type "~1.0.4"
- debug "2.6.9"
- depd "2.0.0"
- destroy "1.2.0"
- http-errors "2.0.0"
- iconv-lite "0.4.24"
- on-finished "2.4.1"
- qs "6.11.0"
- raw-body "2.5.1"
- type-is "~1.6.18"
- unpipe "1.0.0"
-
-brace-expansion@^1.1.7:
- version "1.1.11"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
- integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
- dependencies:
- balanced-match "^1.0.0"
- concat-map "0.0.1"
-
-braces@~3.0.2:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
- integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==
- dependencies:
- fill-range "^7.0.1"
-
-buffer-writer@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/buffer-writer/-/buffer-writer-2.0.0.tgz#ce7eb81a38f7829db09c873f2fbb792c0c98ec04"
- integrity sha512-a7ZpuTZU1TRtnwyCNW3I5dc0wWNC3VR9S++Ewyk2HHZdrO3CQJqSpd+95Us590V6AL7JqUAH2IwZ/398PmNFgw==
-
-bytes@3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
- integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
-
-call-bind@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
- integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==
- dependencies:
- function-bind "^1.1.1"
- get-intrinsic "^1.0.2"
-
-chalk@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
- integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
- dependencies:
- ansi-styles "^4.1.0"
- supports-color "^7.1.0"
-
-chokidar@^3.5.2:
- version "3.5.3"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
- integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
- dependencies:
- anymatch "~3.1.2"
- braces "~3.0.2"
- glob-parent "~5.1.2"
- is-binary-path "~2.1.0"
- is-glob "~4.0.1"
- normalize-path "~3.0.0"
- readdirp "~3.6.0"
- optionalDependencies:
- fsevents "~2.3.2"
-
-cliui@^8.0.1:
- version "8.0.1"
- resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa"
- integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
- dependencies:
- string-width "^4.2.0"
- strip-ansi "^6.0.1"
- wrap-ansi "^7.0.0"
-
-color-convert@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
- integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
- dependencies:
- color-name "~1.1.4"
-
-color-name@~1.1.4:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
- integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-concat-map@0.0.1:
- version "0.0.1"
- resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
- integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
-
-concurrently@^8.2.0:
- version "8.2.0"
- resolved "https://registry.yarnpkg.com/concurrently/-/concurrently-8.2.0.tgz#cdc9f621a4d913366600355d68254df2c5e782f3"
- integrity sha512-nnLMxO2LU492mTUj9qX/az/lESonSZu81UznYDoXtz1IQf996ixVqPAgHXwvHiHCAef/7S8HIK+fTFK7Ifk8YA==
- dependencies:
- chalk "^4.1.2"
- date-fns "^2.30.0"
- lodash "^4.17.21"
- rxjs "^7.8.1"
- shell-quote "^1.8.1"
- spawn-command "0.0.2"
- supports-color "^8.1.1"
- tree-kill "^1.2.2"
- yargs "^17.7.2"
-
-content-disposition@0.5.4:
- version "0.5.4"
- resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
- integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
- dependencies:
- safe-buffer "5.2.1"
-
-content-type@~1.0.4:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918"
- integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
-
-cookie-signature@1.0.6:
- version "1.0.6"
- resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
- integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==
-
-cookie@0.5.0:
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
- integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
-
-create-require@^1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333"
- integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
-
-date-fns@^2.30.0:
- version "2.30.0"
- resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0"
- integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
- dependencies:
- "@babel/runtime" "^7.21.0"
-
-debug@2.6.9:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
- dependencies:
- ms "2.0.0"
-
-debug@^3.2.7:
- version "3.2.7"
- resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a"
- integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==
- dependencies:
- ms "^2.1.1"
-
-depd@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
- integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
-
-destroy@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
- integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
-
-diff@^4.0.1:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d"
- integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
-
-dotenv@^16.3.1:
- version "16.3.1"
- resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e"
- integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==
-
-ee-first@1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
- integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
-
-emoji-regex@^8.0.0:
- version "8.0.0"
- resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
- integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-encodeurl@~1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
- integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
-
-escalade@^3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
- integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==
-
-escape-html@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
- integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
-
-etag@~1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
- integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
-
-express@^4.18.2:
- version "4.18.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.18.2.tgz#3fabe08296e930c796c19e3c516979386ba9fd59"
- integrity sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==
- dependencies:
- accepts "~1.3.8"
- array-flatten "1.1.1"
- body-parser "1.20.1"
- content-disposition "0.5.4"
- content-type "~1.0.4"
- cookie "0.5.0"
- cookie-signature "1.0.6"
- debug "2.6.9"
- depd "2.0.0"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- finalhandler "1.2.0"
- fresh "0.5.2"
- http-errors "2.0.0"
- merge-descriptors "1.0.1"
- methods "~1.1.2"
- on-finished "2.4.1"
- parseurl "~1.3.3"
- path-to-regexp "0.1.7"
- proxy-addr "~2.0.7"
- qs "6.11.0"
- range-parser "~1.2.1"
- safe-buffer "5.2.1"
- send "0.18.0"
- serve-static "1.15.0"
- setprototypeof "1.2.0"
- statuses "2.0.1"
- type-is "~1.6.18"
- utils-merge "1.0.1"
- vary "~1.1.2"
-
-fill-range@^7.0.1:
- version "7.0.1"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
- integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==
- dependencies:
- to-regex-range "^5.0.1"
-
-finalhandler@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
- integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
- dependencies:
- debug "2.6.9"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- on-finished "2.4.1"
- parseurl "~1.3.3"
- statuses "2.0.1"
- unpipe "~1.0.0"
-
-forwarded@0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
- integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
-
-fresh@0.5.2:
- version "0.5.2"
- resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
- integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==
-
-fsevents@~2.3.2:
- version "2.3.2"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
- integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
-
-function-bind@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
- integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
-
-get-caller-file@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e"
- integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
-
-get-intrinsic@^1.0.2:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82"
- integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==
- dependencies:
- function-bind "^1.1.1"
- has "^1.0.3"
- has-proto "^1.0.1"
- has-symbols "^1.0.3"
-
-glob-parent@~5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
- integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
- dependencies:
- is-glob "^4.0.1"
-
-has-flag@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd"
- integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
-
-has-flag@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
- integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-proto@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0"
- integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==
-
-has-symbols@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
- integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
-
-has@^1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
- integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
- dependencies:
- function-bind "^1.1.1"
-
-http-errors@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
- integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
- dependencies:
- depd "2.0.0"
- inherits "2.0.4"
- setprototypeof "1.2.0"
- statuses "2.0.1"
- toidentifier "1.0.1"
-
-iconv-lite@0.4.24:
- version "0.4.24"
- resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
- integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
- dependencies:
- safer-buffer ">= 2.1.2 < 3"
-
-ignore-by-default@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/ignore-by-default/-/ignore-by-default-1.0.1.tgz#48ca6d72f6c6a3af00a9ad4ae6876be3889e2b09"
- integrity sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==
-
-inherits@2.0.4:
- version "2.0.4"
- resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
- integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-ipaddr.js@1.9.1:
- version "1.9.1"
- resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
- integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
-
-is-binary-path@~2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
- integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
- dependencies:
- binary-extensions "^2.0.0"
-
-is-extglob@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
- integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-
-is-fullwidth-code-point@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
- integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-glob@^4.0.1, is-glob@~4.0.1:
- version "4.0.3"
- resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
- integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
- dependencies:
- is-extglob "^2.1.1"
-
-is-number@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
- integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-lodash@^4.17.21:
- version "4.17.21"
- resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
- integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-
-lru-cache@^6.0.0:
- version "6.0.0"
- resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
- integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
- dependencies:
- yallist "^4.0.0"
-
-make-error@^1.1.1:
- version "1.3.6"
- resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2"
- integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
-
-media-typer@0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
- integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
-
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
-
-methods@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
- integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==
-
-mime-db@1.52.0:
- version "1.52.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
- integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-
-mime-types@~2.1.24, mime-types@~2.1.34:
- version "2.1.35"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
- integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
- dependencies:
- mime-db "1.52.0"
-
-mime@1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
- integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
-
-minimatch@^3.1.2:
- version "3.1.2"
- resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
- integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
- dependencies:
- brace-expansion "^1.1.7"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
- integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
-
-ms@2.1.3, ms@^2.1.1:
- version "2.1.3"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
- integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-negotiator@0.6.3:
- version "0.6.3"
- resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
- integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
-
-nodemon@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/nodemon/-/nodemon-3.0.1.tgz#affe822a2c5f21354466b2fc8ae83277d27dadc7"
- integrity sha512-g9AZ7HmkhQkqXkRc20w+ZfQ73cHLbE8hnPbtaFbFtCumZsjyMhKk9LajQ07U5Ux28lvFjZ5X7HvWR1xzU8jHVw==
- dependencies:
- chokidar "^3.5.2"
- debug "^3.2.7"
- ignore-by-default "^1.0.1"
- minimatch "^3.1.2"
- pstree.remy "^1.1.8"
- semver "^7.5.3"
- simple-update-notifier "^2.0.0"
- supports-color "^5.5.0"
- touch "^3.1.0"
- undefsafe "^2.0.5"
-
-nopt@~1.0.10:
- version "1.0.10"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-1.0.10.tgz#6ddd21bd2a31417b92727dd585f8a6f37608ebee"
- integrity sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==
- dependencies:
- abbrev "1"
-
-normalize-path@^3.0.0, normalize-path@~3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
- integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
-
-object-inspect@^1.9.0:
- version "1.12.3"
- resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9"
- integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==
-
-obuf@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
- integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==
-
-on-finished@2.4.1:
- version "2.4.1"
- resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
- integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
- dependencies:
- ee-first "1.1.1"
-
-packet-reader@1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/packet-reader/-/packet-reader-1.0.0.tgz#9238e5480dedabacfe1fe3f2771063f164157d74"
- integrity sha512-HAKu/fG3HpHFO0AA8WE8q2g+gBJaZ9MG7fcKk+IJPLTGAD6Psw4443l+9DGRbOIh3/aXr7Phy0TjilYivJo5XQ==
-
-parseurl@~1.3.3:
- version "1.3.3"
- resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
- integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
-
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
-
-pg-cloudflare@^1.1.1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/pg-cloudflare/-/pg-cloudflare-1.1.1.tgz#e6d5833015b170e23ae819e8c5d7eaedb472ca98"
- integrity sha512-xWPagP/4B6BgFO+EKz3JONXv3YDgvkbVrGw2mTo3D6tVDQRh1e7cqVGvyR3BE+eQgAvx1XhW/iEASj4/jCWl3Q==
-
-pg-connection-string@^2.6.2:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/pg-connection-string/-/pg-connection-string-2.6.2.tgz#713d82053de4e2bd166fab70cd4f26ad36aab475"
- integrity sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==
-
-pg-int8@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/pg-int8/-/pg-int8-1.0.1.tgz#943bd463bf5b71b4170115f80f8efc9a0c0eb78c"
- integrity sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==
-
-pg-numeric@1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/pg-numeric/-/pg-numeric-1.0.2.tgz#816d9a44026086ae8ae74839acd6a09b0636aa3a"
- integrity sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==
-
-pg-pool@^3.6.1:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/pg-pool/-/pg-pool-3.6.1.tgz#5a902eda79a8d7e3c928b77abf776b3cb7d351f7"
- integrity sha512-jizsIzhkIitxCGfPRzJn1ZdcosIt3pz9Sh3V01fm1vZnbnCMgmGl5wvGGdNN2EL9Rmb0EcFoCkixH4Pu+sP9Og==
-
-pg-protocol@*, pg-protocol@^1.6.0:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/pg-protocol/-/pg-protocol-1.6.0.tgz#4c91613c0315349363af2084608db843502f8833"
- integrity sha512-M+PDm637OY5WM307051+bsDia5Xej6d9IR4GwJse1qA1DIhiKlksvrneZOYQq42OM+spubpcNYEo2FcKQrDk+Q==
-
-pg-types@^2.1.0:
- version "2.2.0"
- resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-2.2.0.tgz#2d0250d636454f7cfa3b6ae0382fdfa8063254a3"
- integrity sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==
- dependencies:
- pg-int8 "1.0.1"
- postgres-array "~2.0.0"
- postgres-bytea "~1.0.0"
- postgres-date "~1.0.4"
- postgres-interval "^1.1.0"
-
-pg-types@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/pg-types/-/pg-types-4.0.1.tgz#31857e89d00a6c66b06a14e907c3deec03889542"
- integrity sha512-hRCSDuLII9/LE3smys1hRHcu5QGcLs9ggT7I/TCs0IE+2Eesxi9+9RWAAwZ0yaGjxoWICF/YHLOEjydGujoJ+g==
- dependencies:
- pg-int8 "1.0.1"
- pg-numeric "1.0.2"
- postgres-array "~3.0.1"
- postgres-bytea "~3.0.0"
- postgres-date "~2.0.1"
- postgres-interval "^3.0.0"
- postgres-range "^1.1.1"
-
-pg@^8.11.1:
- version "8.11.2"
- resolved "https://registry.yarnpkg.com/pg/-/pg-8.11.2.tgz#1a23f6de7bfb65ba56e4dd15df96668d319900c4"
- integrity sha512-l4rmVeV8qTIrrPrIR3kZQqBgSN93331s9i6wiUiLOSk0Q7PmUxZD/m1rQI622l3NfqBby9Ar5PABfS/SulfieQ==
- dependencies:
- buffer-writer "2.0.0"
- packet-reader "1.0.0"
- pg-connection-string "^2.6.2"
- pg-pool "^3.6.1"
- pg-protocol "^1.6.0"
- pg-types "^2.1.0"
- pgpass "1.x"
- optionalDependencies:
- pg-cloudflare "^1.1.1"
-
-pgpass@1.x:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/pgpass/-/pgpass-1.0.5.tgz#9b873e4a564bb10fa7a7dbd55312728d422a223d"
- integrity sha512-FdW9r/jQZhSeohs1Z3sI1yxFQNFvMcnmfuj4WBMUTxOrAyLMaTcE1aAMBiTlbMNaXvBCQuVi0R7hd8udDSP7ug==
- dependencies:
- split2 "^4.1.0"
-
-picomatch@^2.0.4, picomatch@^2.2.1:
- version "2.3.1"
- resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
- integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-postgres-array@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-2.0.0.tgz#48f8fce054fbc69671999329b8834b772652d82e"
- integrity sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==
-
-postgres-array@~3.0.1:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/postgres-array/-/postgres-array-3.0.2.tgz#68d6182cb0f7f152a7e60dc6a6889ed74b0a5f98"
- integrity sha512-6faShkdFugNQCLwucjPcY5ARoW1SlbnrZjmGl0IrrqewpvxvhSLHimCVzqeuULCbG0fQv7Dtk1yDbG3xv7Veog==
-
-postgres-bytea@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-1.0.0.tgz#027b533c0aa890e26d172d47cf9ccecc521acd35"
- integrity sha512-xy3pmLuQqRBZBXDULy7KbaitYqLcmxigw14Q5sj8QBVLqEwXfeybIKVWiqAXTlcvdvb0+xkOtDbfQMOf4lST1w==
-
-postgres-bytea@~3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postgres-bytea/-/postgres-bytea-3.0.0.tgz#9048dc461ac7ba70a6a42d109221619ecd1cb089"
- integrity sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==
- dependencies:
- obuf "~1.1.2"
-
-postgres-date@~1.0.4:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-1.0.7.tgz#51bc086006005e5061c591cee727f2531bf641a8"
- integrity sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==
-
-postgres-date@~2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/postgres-date/-/postgres-date-2.0.1.tgz#638b62e5c33764c292d37b08f5257ecb09231457"
- integrity sha512-YtMKdsDt5Ojv1wQRvUhnyDJNSr2dGIC96mQVKz7xufp07nfuFONzdaowrMHjlAzY6GDLd4f+LUHHAAM1h4MdUw==
-
-postgres-interval@^1.1.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-1.2.0.tgz#b460c82cb1587507788819a06aa0fffdb3544695"
- integrity sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==
- dependencies:
- xtend "^4.0.0"
-
-postgres-interval@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/postgres-interval/-/postgres-interval-3.0.0.tgz#baf7a8b3ebab19b7f38f07566c7aab0962f0c86a"
- integrity sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==
-
-postgres-range@^1.1.1:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/postgres-range/-/postgres-range-1.1.3.tgz#9ccd7b01ca2789eb3c2e0888b3184225fa859f76"
- integrity sha512-VdlZoocy5lCP0c/t66xAfclglEapXPCIVhqqJRncYpvbCgImF0w67aPKfbqUMr72tO2k5q0TdTZwCLjPTI6C9g==
-
-prettier@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.1.0.tgz#c6d16474a5f764ea1a4a373c593b779697744d5e"
- integrity sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==
-
-proxy-addr@~2.0.7:
- version "2.0.7"
- resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
- integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
- dependencies:
- forwarded "0.2.0"
- ipaddr.js "1.9.1"
-
-pstree.remy@^1.1.8:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/pstree.remy/-/pstree.remy-1.1.8.tgz#c242224f4a67c21f686839bbdb4ac282b8373d3a"
- integrity sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==
-
-qs@6.11.0:
- version "6.11.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a"
- integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==
- dependencies:
- side-channel "^1.0.4"
-
-range-parser@~1.2.1:
- version "1.2.1"
- resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
- integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
-
-raw-body@2.5.1:
- version "2.5.1"
- resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
- integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
- dependencies:
- bytes "3.1.2"
- http-errors "2.0.0"
- iconv-lite "0.4.24"
- unpipe "1.0.0"
-
-readdirp@~3.6.0:
- version "3.6.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
- integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
- dependencies:
- picomatch "^2.2.1"
-
-regenerator-runtime@^0.13.11:
- version "0.13.11"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9"
- integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
-
-require-directory@^2.1.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42"
- integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
-
-rxjs@^7.8.1:
- version "7.8.1"
- resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.1.tgz#6f6f3d99ea8044291efd92e7c7fcf562c4057543"
- integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
- dependencies:
- tslib "^2.1.0"
-
-safe-buffer@5.2.1:
- version "5.2.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
- integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-"safer-buffer@>= 2.1.2 < 3":
- version "2.1.2"
- resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
- integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
-
-semver@^7.5.3:
- version "7.5.4"
- resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
- integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
- dependencies:
- lru-cache "^6.0.0"
-
-send@0.18.0:
- version "0.18.0"
- resolved "https://registry.yarnpkg.com/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
- integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
- dependencies:
- debug "2.6.9"
- depd "2.0.0"
- destroy "1.2.0"
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- etag "~1.8.1"
- fresh "0.5.2"
- http-errors "2.0.0"
- mime "1.6.0"
- ms "2.1.3"
- on-finished "2.4.1"
- range-parser "~1.2.1"
- statuses "2.0.1"
-
-serve-static@1.15.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
- integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
- dependencies:
- encodeurl "~1.0.2"
- escape-html "~1.0.3"
- parseurl "~1.3.3"
- send "0.18.0"
-
-setprototypeof@1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
- integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
-
-shell-quote@^1.8.1:
- version "1.8.1"
- resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.8.1.tgz#6dbf4db75515ad5bac63b4f1894c3a154c766680"
- integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
-
-side-channel@^1.0.4:
- version "1.0.4"
- resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
- integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==
- dependencies:
- call-bind "^1.0.0"
- get-intrinsic "^1.0.2"
- object-inspect "^1.9.0"
-
-simple-update-notifier@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz#d70b92bdab7d6d90dfd73931195a30b6e3d7cebb"
- integrity sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==
- dependencies:
- semver "^7.5.3"
-
-spawn-command@0.0.2:
- version "0.0.2"
- resolved "https://registry.yarnpkg.com/spawn-command/-/spawn-command-0.0.2.tgz#9544e1a43ca045f8531aac1a48cb29bdae62338e"
- integrity sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==
-
-split2@^4.1.0:
- version "4.2.0"
- resolved "https://registry.yarnpkg.com/split2/-/split2-4.2.0.tgz#c9c5920904d148bab0b9f67145f245a86aadbfa4"
- integrity sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==
-
-statuses@2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
- integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
-
-string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
- version "4.2.3"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
- integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
- dependencies:
- emoji-regex "^8.0.0"
- is-fullwidth-code-point "^3.0.0"
- strip-ansi "^6.0.1"
-
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
- version "6.0.1"
- resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
- integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
- dependencies:
- ansi-regex "^5.0.1"
-
-supports-color@^5.5.0:
- version "5.5.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
- integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
- dependencies:
- has-flag "^3.0.0"
-
-supports-color@^7.1.0:
- version "7.2.0"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
- integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
- dependencies:
- has-flag "^4.0.0"
-
-supports-color@^8.1.1:
- version "8.1.1"
- resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
- integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
- dependencies:
- has-flag "^4.0.0"
-
-to-regex-range@^5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
- integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
- dependencies:
- is-number "^7.0.0"
-
-toidentifier@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
- integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
-
-touch@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/touch/-/touch-3.1.0.tgz#fe365f5f75ec9ed4e56825e0bb76d24ab74af83b"
- integrity sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==
- dependencies:
- nopt "~1.0.10"
-
-tree-kill@^1.2.2:
- version "1.2.2"
- resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc"
- integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
-
-ts-node@^10.9.1:
- version "10.9.1"
- resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b"
- integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==
- dependencies:
- "@cspotcode/source-map-support" "^0.8.0"
- "@tsconfig/node10" "^1.0.7"
- "@tsconfig/node12" "^1.0.7"
- "@tsconfig/node14" "^1.0.0"
- "@tsconfig/node16" "^1.0.2"
- acorn "^8.4.1"
- acorn-walk "^8.1.1"
- arg "^4.1.0"
- create-require "^1.1.0"
- diff "^4.0.1"
- make-error "^1.1.1"
- v8-compile-cache-lib "^3.0.1"
- yn "3.1.1"
-
-tslib@^2.1.0:
- version "2.6.1"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.1.tgz#fd8c9a0ff42590b25703c0acb3de3d3f4ede0410"
- integrity sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==
-
-type-is@~1.6.18:
- version "1.6.18"
- resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
- integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
- dependencies:
- media-typer "0.3.0"
- mime-types "~2.1.24"
-
-typescript@^5.1.6:
- version "5.1.6"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.1.6.tgz#02f8ac202b6dad2c0dd5e0913745b47a37998274"
- integrity sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==
-
-undefsafe@^2.0.5:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/undefsafe/-/undefsafe-2.0.5.tgz#38733b9327bdcd226db889fb723a6efd162e6e2c"
- integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==
-
-unpipe@1.0.0, unpipe@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
- integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
-
-utils-merge@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
- integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==
-
-v8-compile-cache-lib@^3.0.1:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf"
- integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
-
-vary@~1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
- integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
-
-wrap-ansi@^7.0.0:
- version "7.0.0"
- resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
- integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
- dependencies:
- ansi-styles "^4.0.0"
- string-width "^4.1.0"
- strip-ansi "^6.0.0"
-
-xtend@^4.0.0:
- version "4.0.2"
- resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
- integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
-
-y18n@^5.0.5:
- version "5.0.8"
- resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55"
- integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
-
-yallist@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
- integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-
-yargs-parser@^21.1.1:
- version "21.1.1"
- resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35"
- integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
-
-yargs@^17.7.2:
- version "17.7.2"
- resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269"
- integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
- dependencies:
- cliui "^8.0.1"
- escalade "^3.1.1"
- get-caller-file "^2.0.5"
- require-directory "^2.1.1"
- string-width "^4.2.3"
- y18n "^5.0.5"
- yargs-parser "^21.1.1"
-
-yn@3.1.1:
- version "3.1.1"
- resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50"
- integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==