diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1f968e0cf..6d35f7c14 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -21,7 +21,7 @@ jobs: - name: Node 16 uses: actions/setup-node@v1 with: - node-version: 16.x + node-version: 18.x - name: Prepare run: npm ci diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index bd6421dff..b38584c42 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -20,7 +20,7 @@ jobs: - name: Node 16 uses: actions/setup-node@v1 with: - node-version: 16.x + node-version: 18.x - name: Prepare run: npm ci diff --git a/.github/workflows/dev-demo-deploy.yml b/.github/workflows/dev-demo-deploy.yml index b6eb8f293..1562c4f6e 100644 --- a/.github/workflows/dev-demo-deploy.yml +++ b/.github/workflows/dev-demo-deploy.yml @@ -20,7 +20,7 @@ jobs: - name: Node 16 uses: actions/setup-node@v1 with: - node-version: 16.x + node-version: 18.x - name: Prepare run: npm ci diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 174686c59..678306196 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -69,7 +69,7 @@ publish_beta: stage: publish when: manual script: - - docker run --env NPM_AUTH_TOKEN --rm $GOOGLE_TAG ./npm-ci-publish-beta-only.sh + - docker run --env NPM_AUTH_TOKEN --rm $GOOGLE_TAG ./npm-ci-publish-beta-and-alpha-only.sh tags: - docker diff --git a/.prettierignore b/.prettierignore index 686cd9caa..9f80ce41b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -9,5 +9,5 @@ coverage dist node_modules -npm-ci-publish-beta-only.sh +npm-ci-publish-beta-and-alpha-only.sh npm-ci-publish.sh \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 5821b57de..c17cd8cc0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -15,7 +15,7 @@ RUN export NODE_ENV=production # install dependencies RUN npm install -RUN chmod +x ./npm-ci-publish-beta-only.sh +RUN chmod +x ./npm-ci-publish-beta-and-alpha-only.sh RUN chmod +x ./npm-ci-publish.sh CMD ["npm", "run", "test"] \ No newline at end of file diff --git a/clean.sh b/clean.sh index bddd4cde5..3b86d6937 100755 --- a/clean.sh +++ b/clean.sh @@ -21,6 +21,7 @@ rm -rf ./packages/beacon-core/node_modules rm -rf ./packages/beacon-dapp/node_modules rm -rf ./packages/beacon-sdk/node_modules rm -rf ./packages/beacon-transport-matrix/node_modules +rm -rf ./packages/beacon-transport-libp2p/node_modules rm -rf ./packages/beacon-transport-postmessage/node_modules rm -rf ./packages/beacon-types/node_modules rm -rf ./packages/beacon-ui/node_modules diff --git a/lerna.json b/lerna.json index fbd1321c7..637aeb780 100644 --- a/lerna.json +++ b/lerna.json @@ -1,4 +1,4 @@ { - "version": "4.2.2", + "version": "4.2.3-alpha.1", "$schema": "node_modules/lerna/schemas/lerna-schema.json" } diff --git a/npm-ci-publish-beta-and-alpha-only.sh b/npm-ci-publish-beta-and-alpha-only.sh new file mode 100644 index 000000000..fc5608dd3 --- /dev/null +++ b/npm-ci-publish-beta-and-alpha-only.sh @@ -0,0 +1,25 @@ +#!/bin/bash +echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" > .npmrc + +git update-index --assume-unchanged npm-ci-publish.sh +git update-index --assume-unchanged npm-ci-publish-beta-and-alpha-only.sh + +VERSION=$(node -pe 'const version = JSON.parse(process.argv[1]).version; version.includes("beta") || version.includes("alpha") ? version : ""' "$(cat lerna.json)") + +if [ -z "$VERSION" ] +then + echo "cannot publish non-beta/non-alpha version" +else + if [[ "$VERSION" == *"beta"* ]] + then + TAG="next" + echo "version is beta, using --tag $TAG" + elif [[ "$VERSION" == *"alpha"* ]] + then + TAG="alpha" + echo "version is alpha, using --tag $TAG" + fi + npx lerna publish from-package --contents ./ --dist-tag $TAG --yes +fi + +rm .npmrc diff --git a/npm-ci-publish-beta-only.sh b/npm-ci-publish-beta-only.sh deleted file mode 100644 index 53d72cfe9..000000000 --- a/npm-ci-publish-beta-only.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" > .npmrc - -git update-index --assume-unchanged npm-ci-publish.sh -git update-index --assume-unchanged npm-ci-publish-beta-only.sh - -VERSION=$(node -pe 'JSON.parse(process.argv[1]).version.indexOf("beta")' "$(cat lerna.json)") - -if [ "$VERSION" = "-1" ] -then - echo "cannot publish non-beta version" -else - echo "version is beta, using --tag next" - npx lerna publish from-package --contents ./ --dist-tag next --yes -fi - -rm .npmrc \ No newline at end of file diff --git a/npm-ci-publish.sh b/npm-ci-publish.sh index 055904335..39ca35c15 100755 --- a/npm-ci-publish.sh +++ b/npm-ci-publish.sh @@ -2,17 +2,26 @@ echo "//registry.npmjs.org/:_authToken=$NPM_AUTH_TOKEN" > .npmrc git update-index --assume-unchanged npm-ci-publish.sh -git update-index --assume-unchanged npm-ci-publish-beta-only.sh +git update-index --assume-unchanged npm-ci-publish-beta-and-alpha-only.sh -VERSION=$(node -pe 'JSON.parse(process.argv[1]).version.indexOf("beta")' "$(cat lerna.json)") +VERSION=$(node -pe 'const version = JSON.parse(process.argv[1]).version; version.includes("beta") || version.includes("alpha") ? version : ""' "$(cat lerna.json)") -if [ "$VERSION" = "-1" ] +if [ -z "$VERSION" ] then + echo "version is not beta or alpha, proceeding with standard publish" npx lerna publish from-package --contents ./ --yes - # lerna exec -- "npm publish || exit 0" # If some packages fail to be published, this command ignores already published ones and publishes the missing ones + # lerna exec -- "npm publish || exit 0" # Uncomment if you need to handle already published packages separately else - echo "version is beta, using --tag next" - npx lerna publish from-package --contents ./ --dist-tag next --yes + if [[ "$VERSION" == *"beta"* ]] + then + TAG="next" + echo "version is beta, using --tag $TAG" + elif [[ "$VERSION" == *"alpha"* ]] + then + TAG="alpha" + echo "version is alpha, using --tag $TAG" + fi + npx lerna publish from-package --contents ./ --dist-tag $TAG --yes fi -rm .npmrc \ No newline at end of file +rm .npmrc diff --git a/package-lock.json b/package-lock.json index e45ebcc8b..9f7552240 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "@airgap/beacon-blockchain-tezos-sapling": "file:packages/beacon-blockchain-tezos-sapling", "@airgap/beacon-core": "file:packages/beacon-core", "@airgap/beacon-dapp": "file:packages/beacon-dapp", + "@airgap/beacon-transport-libp2p": "file:packages/beacon-transport-libp2p", "@airgap/beacon-transport-matrix": "file:packages/beacon-transport-matrix", "@airgap/beacon-transport-postmessage": "file:packages/beacon-transport-postmessage", "@airgap/beacon-transport-walletconnect": "file:packages/beacon-transport-walletconnect", @@ -79,6 +80,62 @@ "npm": ">=7.0.0" } }, + "node_modules/@acurast/dapp": { + "version": "1.0.1-beta.6", + "resolved": "https://registry.npmjs.org/@acurast/dapp/-/dapp-1.0.1-beta.6.tgz", + "integrity": "sha512-5Y9XRhx7toPt/M0qOqM/Y4VbszjWn9AFJWO14K0ByT8tvo3JxnIdQbZ3Wr3s1kev8yzJdouvmo9OPBGezqtYvQ==", + "dependencies": { + "@acurast/transport-websocket": "^1.0.1-beta.6", + "buffer": "^6.0.3" + } + }, + "node_modules/@acurast/dapp/node_modules/@acurast/transport-websocket": { + "version": "1.0.1-beta.6", + "resolved": "https://registry.npmjs.org/@acurast/transport-websocket/-/transport-websocket-1.0.1-beta.6.tgz", + "integrity": "sha512-yS0RLVexVofEUWutI1j8ZmbMi7//zsIrTfdQ5r+IoqzTKuajnONv6HCzxeHiHmulfhbYyT5bQDWaxLzayR/ptA==", + "dependencies": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "^1.0.1", + "buffer": "^6.0.3", + "elliptic": "^6.5.4", + "tslib": "^2.6.1" + }, + "peerDependencies": { + "ws": "^8.13.0" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + } + } + }, + "node_modules/@acurast/dapp/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/@acurast/dapp/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@airgap/beacon-blockchain-substrate": { "resolved": "packages/beacon-blockchain-substrate", "link": true @@ -103,6 +160,10 @@ "resolved": "packages/beacon-sdk", "link": true }, + "node_modules/@airgap/beacon-transport-libp2p": { + "resolved": "packages/beacon-transport-libp2p", + "link": true + }, "node_modules/@airgap/beacon-transport-matrix": { "resolved": "packages/beacon-transport-matrix", "link": true @@ -187,30 +248,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.8.tgz", - "integrity": "sha512-c4IM7OTg6k1Q+AJ153e2mc2QVTezTwnb4VzquwcyiEzGnW0Kedv4do/TrkU98qPeC5LNiMt/QXwIjzYXLBpyZg==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.8.tgz", - "integrity": "sha512-6AWcmZC/MZCO0yKys4uhg5NlxL0ESF3K6IAaoQ+xSXvPyPyxNWRafP+GDbI88Oh68O7QkJgmEtedWPM9U0pZNg==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.8", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helpers": "^7.24.8", - "@babel/parser": "^7.24.8", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -226,12 +287,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.8.tgz", - "integrity": "sha512-47DG+6F5SzOi0uEvK4wMShmn5yY0mVjVJoWTphdY2B4Rx9wHgjK7Yhtr0ru6nE+sn0v38mzrWOlah0p/YlHHOQ==", + "version": "7.25.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.5.tgz", + "integrity": "sha512-abd43wyLfbWoxC6ahM8xTkqLpGB2iWBVyuKC9/srhFunCd1SDNrV1s72bBpK4hLj8KLzHBBcOblvLQZBNw9r3w==", "dev": true, "dependencies": { - "@babel/types": "^7.24.8", + "@babel/types": "^7.25.4", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" @@ -266,12 +327,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", - "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.24.8", + "@babel/compat-data": "^7.25.2", "@babel/helper-validator-option": "^7.24.8", "browserslist": "^4.23.1", "lru-cache": "^5.1.1", @@ -282,19 +343,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", - "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", + "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==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", "@babel/helper-member-expression-to-functions": "^7.24.8", "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/traverse": "^7.25.4", "semver": "^6.3.1" }, "engines": { @@ -305,9 +364,9 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", - "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", @@ -337,43 +396,6 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", - "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", - "dev": true, - "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", - "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", @@ -401,16 +423,15 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.8.tgz", - "integrity": "sha512-m4vWKVqvkVAWLXfHCCfff2luJj86U+J0/x+0N3ArG/tP0Fq7zky2dYwMbtPmkc/oulkkbjdL3uWzuoBwQ8R00Q==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", "@babel/helper-module-imports": "^7.24.7", "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" }, "engines": { "node": ">=6.9.0" @@ -441,14 +462,14 @@ } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", - "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-wrap-function": "^7.24.7" + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -458,14 +479,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", - "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.7", - "@babel/helper-optimise-call-expression": "^7.24.7" + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -500,18 +521,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", - "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", @@ -540,28 +549,27 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", - "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.24.7", - "@babel/template": "^7.24.7", - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.8.tgz", - "integrity": "sha512-gV2265Nkcz7weJJfvDoAEVzC1e2OTDpkGbEsebse8koXUJUXPsCMi7sRo/+SPMuMZ9MtUPnGwITTnQnU5YjyaQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", "dev": true, "dependencies": { - "@babel/template": "^7.24.7", - "@babel/types": "^7.24.8" + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -583,10 +591,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", - "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", "dev": true, + "dependencies": { + "@babel/types": "^7.25.4" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -595,13 +606,28 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", - "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.3.tgz", + "integrity": "sha512-wUrcsxZg6rqBXG05HG1FPYgsP6EvwF4WpBbxIpWIIYnH8wG0gzx3yZY3dtEHas4sTAOGkbTsc9EGPxwff8lRoA==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.0.tgz", + "integrity": "sha512-Bm4bH2qsX880b/3ziJ8KD711LT7z4u8CFudmjqle65AZj/HNUFhEf90dqYv6O86buWvSBmeQDjv0Tn2aF/bIBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -611,12 +637,12 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", - "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -643,13 +669,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", - "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.0.tgz", + "integrity": "sha512-tggFrk1AIShG/RUQbEwt2Tr/E+ObkfwrPjR6BjbRvsx24+PSjK8zrq0GWPNCjo8qpRx4DuJzlcvWJqlm+0h3kw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -905,12 +931,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -951,15 +977,15 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", - "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-remap-async-to-generator": "^7.24.7", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" }, "engines": { "node": ">=6.9.0" @@ -1001,12 +1027,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", - "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1016,13 +1042,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", - "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1049,18 +1075,16 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", - "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", "globals": "^11.1.0" }, "engines": { @@ -1132,6 +1156,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.0.tgz", + "integrity": "sha512-YLpb4LlYSc3sCUa35un84poXoraOiQucUTTu8X1j18JV+gNa8E0nyUf/CjZ171IRGr4jEguF+vzJU66QZhn29g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", @@ -1197,14 +1237,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", - "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" }, "engines": { "node": ">=6.9.0" @@ -1230,12 +1270,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", - "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1309,15 +1349,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", - "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-module-transforms": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7" + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" }, "engines": { "node": ">=6.9.0" @@ -1488,13 +1528,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", - "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1644,14 +1684,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.8.tgz", - "integrity": "sha512-CgFgtN61BbdOGCP4fLaAMOPkzWUh6yQZNMr5YSt8uz2cZSSiQONCQFWqsE4NeVfOIhqDOlS9CR3WD91FzMeB2Q==", + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", + "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.24.8", + "@babel/helper-create-class-features-plugin": "^7.25.0", "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-typescript": "^7.24.7" }, "engines": { @@ -1709,13 +1750,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", - "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -1725,19 +1766,20 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", - "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.4.tgz", + "integrity": "sha512-W9Gyo+KmcxjGahtt3t9fb14vFRWvPpu5pT6GBlovAK6BTBcxgjfVMSQCfJl4oi35ODrxP6xx2Wr8LNST57Mraw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.24.8", - "@babel/helper-compilation-targets": "^7.24.8", + "@babel/compat-data": "^7.25.4", + "@babel/helper-compilation-targets": "^7.25.2", "@babel/helper-plugin-utils": "^7.24.8", "@babel/helper-validator-option": "^7.24.8", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.3", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.0", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.0", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.0", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", @@ -1758,29 +1800,30 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", "@babel/plugin-transform-async-to-generator": "^7.24.7", "@babel/plugin-transform-block-scoped-functions": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.24.7", - "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", "@babel/plugin-transform-class-static-block": "^7.24.7", - "@babel/plugin-transform-classes": "^7.24.8", + "@babel/plugin-transform-classes": "^7.25.4", "@babel/plugin-transform-computed-properties": "^7.24.7", "@babel/plugin-transform-destructuring": "^7.24.8", "@babel/plugin-transform-dotall-regex": "^7.24.7", "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.0", "@babel/plugin-transform-dynamic-import": "^7.24.7", "@babel/plugin-transform-exponentiation-operator": "^7.24.7", "@babel/plugin-transform-export-namespace-from": "^7.24.7", "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", "@babel/plugin-transform-json-strings": "^7.24.7", - "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-literals": "^7.25.2", "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", "@babel/plugin-transform-member-expression-literals": "^7.24.7", "@babel/plugin-transform-modules-amd": "^7.24.7", "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.0", "@babel/plugin-transform-modules-umd": "^7.24.7", "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", "@babel/plugin-transform-new-target": "^7.24.7", @@ -1791,7 +1834,7 @@ "@babel/plugin-transform-optional-catch-binding": "^7.24.7", "@babel/plugin-transform-optional-chaining": "^7.24.8", "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.25.4", "@babel/plugin-transform-private-property-in-object": "^7.24.7", "@babel/plugin-transform-property-literals": "^7.24.7", "@babel/plugin-transform-regenerator": "^7.24.7", @@ -1804,10 +1847,10 @@ "@babel/plugin-transform-unicode-escapes": "^7.24.7", "@babel/plugin-transform-unicode-property-regex": "^7.24.7", "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.4", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "core-js-compat": "^3.37.1", "semver": "^6.3.1" @@ -1859,9 +1902,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.8.tgz", - "integrity": "sha512-5F7SDGs1T72ZczbRwbGO9lQi0NLjQxzl6i4lJxLxfW9U5UluCSyEJeniWvnhl3/euNiqQVbo8zruhsDfid0esA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.4.tgz", + "integrity": "sha512-DSgLeL/FNcpXuzav5wfYvHCGvynXkJbn3Zvc3823AEe9nPwW9IK4UoCSS5yGymmQzN0pCPvivtgS6/8U2kkm1w==", "dev": true, "dependencies": { "regenerator-runtime": "^0.14.0" @@ -1871,33 +1914,30 @@ } }, "node_modules/@babel/template": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", - "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", "dev": true, "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", - "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.24.8", - "@babel/helper-environment-visitor": "^7.24.7", - "@babel/helper-function-name": "^7.24.7", - "@babel/helper-hoist-variables": "^7.24.7", - "@babel/helper-split-export-declaration": "^7.24.7", - "@babel/parser": "^7.24.8", - "@babel/types": "^7.24.8", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -1906,9 +1946,9 @@ } }, "node_modules/@babel/types": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.8.tgz", - "integrity": "sha512-SkSBEHwwJRU52QEVZBmMBnE5Ux2/6WU1grdYyOhpbCNxbmJrDuDCphBzKZSO3taf0zztp+qkWlymE5tVL5l0TA==", + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", "dev": true, "dependencies": { "@babel/helper-string-parser": "^7.24.8", @@ -3609,9 +3649,9 @@ } }, "node_modules/@lerna/create/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3664,9 +3704,9 @@ } }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.0.tgz", - "integrity": "sha512-yWJKmpGE6lUURKAaIltoPIE/wrbY3TEkqQt+X0m+7fQNnAv0keydnYvbiJFP1PnMhizmIWRWOG5KLhYyc/xl+g==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz", + "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==" }, "node_modules/@lit/reactive-element": { "version": "1.6.3", @@ -3688,9 +3728,9 @@ } }, "node_modules/@motionone/animation/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@motionone/dom": { "version": "10.18.0", @@ -3706,9 +3746,9 @@ } }, "node_modules/@motionone/dom/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@motionone/easing": { "version": "10.18.0", @@ -3720,9 +3760,9 @@ } }, "node_modules/@motionone/easing/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@motionone/generators": { "version": "10.18.0", @@ -3735,9 +3775,9 @@ } }, "node_modules/@motionone/generators/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@motionone/svelte": { "version": "10.16.4", @@ -3749,9 +3789,9 @@ } }, "node_modules/@motionone/svelte/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@motionone/types": { "version": "10.17.1", @@ -3769,9 +3809,9 @@ } }, "node_modules/@motionone/utils/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@motionone/vue": { "version": "10.16.4", @@ -3784,9 +3824,9 @@ } }, "node_modules/@motionone/vue/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" }, "node_modules/@nicolo-ribaudo/chokidar-2": { "version": "2.1.8-no-fsevents.3", @@ -3844,9 +3884,9 @@ } }, "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -3884,9 +3924,9 @@ } }, "node_modules/@npmcli/git/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -4051,9 +4091,9 @@ } }, "node_modules/@nrwl/tao/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/@nx/devkit": { @@ -4102,9 +4142,9 @@ } }, "node_modules/@nx/devkit/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/@nx/devkit/node_modules/yallist": { @@ -5065,9 +5105,9 @@ } }, "node_modules/@sigstore/sign/node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -5216,9 +5256,9 @@ } }, "node_modules/@sigstore/sign/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -5312,6 +5352,15 @@ "type-detect": "4.0.8" } }, + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", @@ -5341,10 +5390,19 @@ "type-detect": "4.0.8" } }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "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==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", "dev": true }, "node_modules/@stablelib/aead": { @@ -5687,6 +5745,15 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/bn.js": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", + "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/bs58check": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@types/bs58check/-/bs58check-2.1.0.tgz", @@ -5697,9 +5764,9 @@ } }, "node_modules/@types/chai": { - "version": "4.3.16", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.16.tgz", - "integrity": "sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==", + "version": "4.3.19", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.19.tgz", + "integrity": "sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==", "dev": true }, "node_modules/@types/chai-as-promised": { @@ -5720,24 +5787,13 @@ "@types/har-format": "*" } }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/@types/elliptic": { + "version": "6.4.18", + "resolved": "https://registry.npmjs.org/@types/elliptic/-/elliptic-6.4.18.tgz", + "integrity": "sha512-UseG6H5vjRiNpQvrhy4VF/JXdA3V/Fp5amvveaL+fs28BZ6xIKJBPnUPRlEaZpysD9MbpfaLi8lbl7PGUAkpWw==", "dev": true, "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@types/bn.js": "*" } }, "node_modules/@types/estree": { @@ -5841,9 +5897,9 @@ "dev": true }, "node_modules/@types/qrcode-svg": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@types/qrcode-svg/-/qrcode-svg-1.1.4.tgz", - "integrity": "sha512-gh+atEBHXpU5iO72Tg4q03YdGKoY0zH1Yr4mGl+NSzFpyPuJcgurs8F3aRpH0Gs93GFuB1rDoQj6U4Xshn72PA==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@types/qrcode-svg/-/qrcode-svg-1.1.5.tgz", + "integrity": "sha512-GjkD+HB8S1wrIsf3skHDtcYBjzNhTxocMbX+wG166xDkaVOnLiMUla7bLjbwxo6mMvqqWQNP0Dk8nkIeizSmnw==", "dev": true }, "node_modules/@types/resolve": { @@ -5885,9 +5941,9 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "dependencies": { "@types/yargs-parser": "*" @@ -5966,9 +6022,9 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6090,9 +6146,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6127,9 +6183,9 @@ } }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -6274,9 +6330,9 @@ } }, "node_modules/@walletconnect/relay-api": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.10.tgz", - "integrity": "sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.11.tgz", + "integrity": "sha512-tLPErkze/HmC9aCmdZOhtVmYZq1wKfWTJtygQHoWtgg722Jd4homo54Cs4ak2RUFUZIGO2RsOpIcWipaua5D5Q==", "dependencies": { "@walletconnect/jsonrpc-types": "^1.0.2" } @@ -6657,9 +6713,9 @@ "dev": true }, "node_modules/@yarnpkg/parsers/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/@zkochan/js-yaml": { @@ -7159,15 +7215,15 @@ } }, "node_modules/ast-types/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", "dev": true }, "node_modules/asynckit": { @@ -7199,9 +7255,9 @@ } }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.5.tgz", + "integrity": "sha512-fZu86yCo+svH3uqJ/yTdQ0QHpQu5oL+/QE+QPSv6BZSkDAoky9vytxp7u5qk83OJFS3kEBcesWni9WTZAv3tSw==", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -7228,9 +7284,9 @@ "dev": true }, "node_modules/babel-plugin-jsx-dom-expressions": { - "version": "0.37.23", - "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.37.23.tgz", - "integrity": "sha512-Y/r8LyLi/njnwPTaDuPEReWk30FJ1KplloYvcFUhHmiH1F7yVVj5mWojD7mbO/IruKyvOs9OIPUoeMi3Z++J4w==", + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/babel-plugin-jsx-dom-expressions/-/babel-plugin-jsx-dom-expressions-0.38.5.tgz", + "integrity": "sha512-JfjHYKOKGwoiOYQ56Oo8gbZPb9wNMpPuEEUhSCjMpnuHM9K21HFIUBm83TZPB40Av4caCIW4Tfjzpkp/MtFpMw==", "dev": true, "dependencies": { "@babel/helper-module-imports": "7.18.6", @@ -7270,13 +7326,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -7295,12 +7351,12 @@ } }, "node_modules/babel-preset-solid": { - "version": "1.8.18", - "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.18.tgz", - "integrity": "sha512-ky0FA4cCS9dk+xYBBItHoxtbRnaDIOGpmHLFqKPaR81hpMbJBOiLOZia2hT0JBwx4zn/D2OjMRvRr6kqtRMoUw==", + "version": "1.8.22", + "resolved": "https://registry.npmjs.org/babel-preset-solid/-/babel-preset-solid-1.8.22.tgz", + "integrity": "sha512-nKwisb//lZsiRF2NErlRP64zVTJqa1OSZiDnSl0YbcTiCZoMt52CY2Pg+9fsYAPtjYMT7RHBmzU41pxK6hFOcg==", "dev": true, "dependencies": { - "babel-plugin-jsx-dom-expressions": "^0.37.23" + "babel-plugin-jsx-dom-expressions": "^0.38.5" }, "peerDependencies": { "@babel/core": "^7.0.0" @@ -7488,8 +7544,7 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "dev": true + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, "node_modules/browser-pack": { "version": "6.1.0", @@ -7673,9 +7728,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", - "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "dev": true, "funding": [ { @@ -7692,9 +7747,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001640", - "electron-to-chromium": "^1.4.820", - "node-releases": "^2.0.14", + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", "update-browserslist-db": "^1.1.0" }, "bin": { @@ -7800,9 +7855,9 @@ } }, "node_modules/builtins/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -8019,9 +8074,9 @@ "dev": true }, "node_modules/caniuse-lite": { - "version": "1.0.30001641", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001641.tgz", - "integrity": "sha512-Phv5thgl67bHYo1TtMY/MurjkHhV4EDaCosezRXgZ8jzA/Ub+wjxAvbGvjoFENStinwi5kCyOYV3mi5tOGykwA==", + "version": "1.0.30001653", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001653.tgz", + "integrity": "sha512-XGWQVB8wFQ2+9NZwZ10GxTYC5hk0Fa+q8cSkr0tgvMhYhMHP/QC+WTgrePMDBWiWc/pV+1ik82Al20XOK25Gcw==", "dev": true, "funding": [ { @@ -8736,9 +8791,9 @@ } }, "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -8835,9 +8890,9 @@ "dev": true }, "node_modules/cookie-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.1.0.tgz", - "integrity": "sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==" + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.2.2.tgz", + "integrity": "sha512-+W7VmiVINB+ywl1HGXJXmrqkOhpKrIiVZV6tQuV54ZyQC7MMuBt81Vc336GMLoHBq5hV/F9eXgt5Mnx0Rha5Fg==" }, "node_modules/core-js": { "version": "2.6.12", @@ -8848,12 +8903,12 @@ "hasInstallScript": true }, "node_modules/core-js-compat": { - "version": "3.37.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", - "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", @@ -9275,9 +9330,9 @@ } }, "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -9818,16 +9873,15 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.827", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.827.tgz", - "integrity": "sha512-VY+J0e4SFcNfQy19MEoMdaIcZLmDCprqvBtkii1WTCTQHpRvf5N8+3kTYCgL/PcntvwQvmMJWTuDPsq+IlhWKQ==", + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", "dev": true }, "node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", - "dev": true, + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -9841,8 +9895,7 @@ "node_modules/elliptic/node_modules/bn.js": { "version": "4.12.0", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -9884,9 +9937,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.17.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", - "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -10594,9 +10647,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.2.tgz", + "integrity": "sha512-3XnC5fDyc8M4J2E8pt8pmSVRX2M+5yWMCfI/kDZwauQeFgzQOuhcRBFKjTeJagqgk4sFKxe1mvNVnaWwImx/Tg==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -11700,9 +11753,9 @@ } }, "node_modules/git-semver-tags/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -12045,7 +12098,6 @@ "version": "1.1.7", "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, "dependencies": { "inherits": "^2.0.3", "minimalistic-assert": "^1.0.1" @@ -12106,7 +12158,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "dev": true, "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", @@ -12312,9 +12363,9 @@ ] }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "engines": { "node": ">= 4" @@ -12522,9 +12573,9 @@ } }, "node_modules/init-package-json/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -12861,9 +12912,9 @@ } }, "node_modules/is-core-module": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.14.0.tgz", - "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { "hasown": "^2.0.2" @@ -13431,9 +13482,9 @@ } }, "node_modules/istanbul-lib-report/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -13506,9 +13557,9 @@ } }, "node_modules/jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, "dependencies": { "async": "^3.2.3", @@ -14539,9 +14590,9 @@ } }, "node_modules/lerna/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -14656,9 +14707,9 @@ } }, "node_modules/libnpmaccess/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -14747,9 +14798,9 @@ } }, "node_modules/libnpmpublish/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -14850,12 +14901,9 @@ } }, "node_modules/listhen/node_modules/node-addon-api": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", - "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", - "engines": { - "node": "^16 || ^18 || >= 20" - } + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==" }, "node_modules/lit": { "version": "2.6.1", @@ -15152,12 +15200,12 @@ "dev": true }, "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", "dev": true, "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { @@ -15469,9 +15517,9 @@ } }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -15569,14 +15617,12 @@ "node_modules/minimalistic-assert": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "node_modules/minimalistic-crypto-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "dev": true + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" }, "node_modules/minimatch": { "version": "3.1.2", @@ -15667,9 +15713,9 @@ } }, "node_modules/minipass-json-stream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", - "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", "dev": true, "dependencies": { "jsonparse": "^1.3.1", @@ -16115,12 +16161,12 @@ } }, "node_modules/nise/node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.3.1.tgz", + "integrity": "sha512-EVJO7nW5M/F5Tur0Rf2z/QoMo+1Ia963RiMtapiQrEWvY0iBUvADo8Beegwjpnle5BHkyHuoxSTW3jF43H1XRA==", "dev": true, "dependencies": { - "@sinonjs/commons": "^3.0.0" + "@sinonjs/commons": "^3.0.1" } }, "node_modules/node-addon-api": { @@ -16217,9 +16263,9 @@ } }, "node_modules/node-gyp/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -16247,9 +16293,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", "dev": true }, "node_modules/nopt": { @@ -16283,9 +16329,9 @@ } }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -16336,9 +16382,9 @@ } }, "node_modules/npm-install-checks/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -16398,9 +16444,9 @@ } }, "node_modules/npm-package-arg/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -16544,9 +16590,9 @@ } }, "node_modules/npm-pick-manifest/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -16627,9 +16673,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -16805,9 +16851,9 @@ } }, "node_modules/npm-registry-fetch/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -17142,9 +17188,9 @@ } }, "node_modules/nx/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/nx/node_modules/yallist": { @@ -17998,9 +18044,9 @@ } }, "node_modules/pacote/node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -18148,9 +18194,9 @@ } }, "node_modules/pacote/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -18660,9 +18706,9 @@ } }, "node_modules/pkg-types": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", - "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.2.0.tgz", + "integrity": "sha512-+ifYuSSqOQ8CqP4MbZA5hDpb97n3E8SVWdJe+Wms9kj745lmd3b7EZJiqvmLwAlmRfjrI7Hi5z3kdBJ93lFNPA==", "dependencies": { "confbox": "^0.1.7", "mlly": "^1.7.1", @@ -18687,9 +18733,9 @@ } }, "node_modules/postcss": { - "version": "8.4.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", - "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "version": "8.4.41", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", + "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", "dev": true, "funding": [ { @@ -19196,9 +19242,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz", - "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==", + "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==", "dev": true, "dependencies": { "cssesc": "^3.0.0", @@ -19780,7 +19826,7 @@ "version": "21.2.1", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-21.2.1.tgz", "integrity": "sha512-bgY/lYBH3rR+m5EP1FxzY2MRMrau7Pyq+N5YlspA63sF+cBkUiTn5WZXwXm7mEHwkkOSVi5LiS74T5QIgrSklg==", - "deprecated": "< 22.6.4 is no longer supported", + "deprecated": "< 22.8.2 is no longer supported", "dev": true, "hasInstallScript": true, "dependencies": { @@ -20005,9 +20051,9 @@ } }, "node_modules/qs": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", - "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "dev": true, "dependencies": { "side-channel": "^1.0.6" @@ -20220,9 +20266,9 @@ } }, "node_modules/read-package-json/node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -20334,9 +20380,9 @@ } }, "node_modules/read-package-json/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -20872,9 +20918,9 @@ } }, "node_modules/rollup-plugin-import-css": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.5.0.tgz", - "integrity": "sha512-JOVow6n00qt2C/NnsqPmIjFOfxIAudwWqC5SaC84CodMGiMFaP1gPAdgnJ8g8hcG+P85TCYp2kI98grYCEt5pg==", + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-import-css/-/rollup-plugin-import-css-3.5.1.tgz", + "integrity": "sha512-cXgMPCUoDu64A2OFme4Is3eHmLiA54qTzxfvCbsORzro3C1adSe1fMMKUqfOUKTXROAPpW9PNDjpaGgPloGJOQ==", "dev": true, "dependencies": { "@rollup/pluginutils": "^5.0.4" @@ -21053,9 +21099,9 @@ } }, "node_modules/rollup-plugin-typescript2/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -21065,9 +21111,9 @@ } }, "node_modules/rollup-plugin-typescript2/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/rollup-pluginutils": { @@ -21166,9 +21212,9 @@ } }, "node_modules/rxjs/node_modules/tslib": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", "dev": true }, "node_modules/safe-array-concat": { @@ -21238,9 +21284,9 @@ } }, "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz", + "integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==", "engines": { "node": ">=10" } @@ -21306,17 +21352,17 @@ } }, "node_modules/seroval": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.0.7.tgz", - "integrity": "sha512-n6ZMQX5q0Vn19Zq7CIKNIo7E75gPkGCFUEqDpa8jgwpYr/vScjqnQ6H09t1uIiZ0ZSK0ypEGvrYK2bhBGWsGdw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.1.1.tgz", + "integrity": "sha512-rqEO6FZk8mv7Hyv4UCj3FD3b6Waqft605TLfsCe/BiaylRpyyMC0b+uA5TJKawX3KzMrdi3wsLbCaLplrQmBvQ==", "engines": { "node": ">=10" } }, "node_modules/seroval-plugins": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.0.7.tgz", - "integrity": "sha512-GO7TkWvodGp6buMEX9p7tNyIkbwlyuAWbI6G9Ec5bhcm7mQdu3JOK1IXbEUwb3FVzSc363GraG/wLW23NSavIw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.1.1.tgz", + "integrity": "sha512-qNSy1+nUj7hsCOon7AO4wdAIo9P0jrzAMp18XhiOzA6/uO5TKtP7ScozVJ8T293oRIvi5wyCHSM4TrJo/c/GJA==", "engines": { "node": ">=10" }, @@ -21531,9 +21577,9 @@ } }, "node_modules/sigstore/node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -21682,9 +21728,9 @@ } }, "node_modules/sigstore/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -21867,13 +21913,13 @@ } }, "node_modules/solid-js": { - "version": "1.8.18", - "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.18.tgz", - "integrity": "sha512-cpkxDPvO/AuKBugVv6xKFd1C9VC0XZMu4VtF56IlHoux8HgyW44uqNSWbozMnVcpIzHIhS3vVXPAVZYM26jpWw==", + "version": "1.8.22", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.8.22.tgz", + "integrity": "sha512-VBzN5j+9Y4rqIKEnK301aBk+S7fvFSTs9ljg+YEdFxjNjH0hkjXPiQRcws9tE5fUzMznSS6KToL5hwMfHDgpLA==", "dependencies": { "csstype": "^3.1.0", - "seroval": "^1.0.4", - "seroval-plugins": "^1.0.3" + "seroval": "^1.1.0", + "seroval-plugins": "^1.1.0" } }, "node_modules/solid-refresh": { @@ -22016,9 +22062,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "dev": true }, "node_modules/split": { @@ -22275,9 +22321,9 @@ } }, "node_modules/streamx": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.18.0.tgz", - "integrity": "sha512-LLUC1TWdjVdn1weXGcSxyTR3T4+acB6tVGXT95y0nGbca4t4o/ng1wKAGTljm9VicuCVLvRlqFYXYy5GwgM7sQ==", + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.19.0.tgz", + "integrity": "sha512-5z6CNR4gtkPbwlxyEqoDGDmWIzoNJqCBt4Eac1ICP9YaIT08ct712cFj0u1rx4F8luAuL+3Qc+RFIdI4OX00kg==", "dev": true, "dependencies": { "fast-fifo": "^1.3.2", @@ -22675,9 +22721,9 @@ } }, "node_modules/terser": { - "version": "5.31.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.2.tgz", - "integrity": "sha512-LGyRZVFm/QElZHy/CPr/O4eNZOZIzsrQ92y4v9UJe/pFJjypje2yI3C2FmPtvUEnhadlSbmG2nXtdcjHOjCfxw==", + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", "dev": true, "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -23214,9 +23260,9 @@ } }, "node_modules/tuf-js/node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, "dependencies": { "cross-spawn": "^7.0.0", @@ -23365,9 +23411,9 @@ } }, "node_modules/tuf-js/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -23446,9 +23492,9 @@ } }, "node_modules/type-detect": { - "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==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "engines": { "node": ">=4" @@ -23622,9 +23668,9 @@ } }, "node_modules/ufo": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", - "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==" + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==" }, "node_modules/uglify-js": { "version": "3.17.4", @@ -23726,15 +23772,15 @@ } }, "node_modules/unenv": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz", - "integrity": "sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==", + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.10.0.tgz", + "integrity": "sha512-wY5bskBQFL9n3Eca5XnhH6KbUo/tfvkwm9OpcdCvLaeA7piBNbavbOKJySEwQ1V0RH6HvNlSAFRTpvTqgKRQXQ==", "dependencies": { "consola": "^3.2.3", - "defu": "^6.1.3", + "defu": "^6.1.4", "mime": "^3.0.0", - "node-fetch-native": "^1.6.1", - "pathe": "^1.1.1" + "node-fetch-native": "^1.6.4", + "pathe": "^1.1.2" } }, "node_modules/unenv/node_modules/mime": { @@ -23995,13 +24041,16 @@ } }, "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "dev": true, "dependencies": { "punycode": "^1.4.1", - "qs": "^6.11.2" + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/url-parse": { @@ -24315,9 +24364,9 @@ } }, "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, "dependencies": { "glob-to-regexp": "^0.4.1", @@ -24346,12 +24395,11 @@ } }, "node_modules/webpack": { - "version": "5.93.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.93.0.tgz", - "integrity": "sha512-Y0m5oEY1LRuwly578VqluorkXbvXKh7U3rLoQCEO04M97ScRr44afGVkI0FQFsXzysk5OgFAxjZAb9rsGQVihA==", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "dependencies": { - "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.5", "@webassemblyjs/ast": "^1.12.1", "@webassemblyjs/wasm-edit": "^1.12.1", @@ -24360,7 +24408,7 @@ "acorn-import-attributes": "^1.9.5", "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.17.0", + "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", @@ -25088,38 +25136,38 @@ }, "packages/beacon-blockchain-substrate": { "name": "@airgap/beacon-blockchain-substrate", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2" + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1" } }, "packages/beacon-blockchain-tezos": { "name": "@airgap/beacon-blockchain-tezos", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2" + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1" } }, "packages/beacon-blockchain-tezos-sapling": { "name": "@airgap/beacon-blockchain-tezos-sapling", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2" + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1" } }, "packages/beacon-core": { "name": "@airgap/beacon-core", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "@stablelib/ed25519": "^1.0.3", "@stablelib/nacl": "^1.0.4", "@stablelib/utf8": "^1.0.1", @@ -25129,68 +25177,129 @@ }, "packages/beacon-dapp": { "name": "@airgap/beacon-dapp", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-transport-matrix": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2", - "@airgap/beacon-transport-walletconnect": "4.2.2", - "@airgap/beacon-ui": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-transport-libp2p": "4.2.3-alpha.1", + "@airgap/beacon-transport-matrix": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1", + "@airgap/beacon-transport-walletconnect": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1", "broadcast-channel": "^7.0.0" } }, "packages/beacon-sdk": { "name": "@airgap/beacon-sdk", - "version": "4.2.2", + "version": "4.2.3-alpha.1", + "license": "ISC", + "dependencies": { + "@airgap/beacon-blockchain-substrate": "4.2.3-alpha.1", + "@airgap/beacon-blockchain-tezos": "4.2.3-alpha.1", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-dapp": "4.2.3-alpha.1", + "@airgap/beacon-transport-libp2p": "4.2.3-alpha.1", + "@airgap/beacon-transport-matrix": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", + "@airgap/beacon-wallet": "4.2.3-alpha.1" + } + }, + "packages/beacon-transport-libp2p": { + "name": "@airgap/beacon-transport-libp2p", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-blockchain-substrate": "4.2.2", - "@airgap/beacon-blockchain-tezos": "4.2.2", - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-dapp": "4.2.2", - "@airgap/beacon-transport-matrix": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2", - "@airgap/beacon-utils": "4.2.2", - "@airgap/beacon-wallet": "4.2.2" + "@acurast/dapp": "^1.0.1-beta.6", + "@acurast/transport-websocket": "^1.0.1-beta.6", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", + "elliptic": "6.5.7" + }, + "devDependencies": { + "@types/elliptic": "^6.4.18" + } + }, + "packages/beacon-transport-libp2p/node_modules/@acurast/transport-websocket": { + "version": "1.0.1-beta.6", + "license": "ISC", + "dependencies": { + "@stablelib/random": "^1.0.2", + "@stablelib/sha256": "^1.0.1", + "buffer": "^6.0.3", + "elliptic": "^6.5.4", + "tslib": "^2.6.1" + }, + "peerDependencies": { + "ws": "^8.13.0" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + } + } + }, + "packages/beacon-transport-libp2p/node_modules/tslib": { + "version": "2.6.3", + "license": "0BSD" + }, + "packages/beacon-transport-libp2p/node_modules/ws": { + "version": "8.18.0", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, "packages/beacon-transport-matrix": { "name": "@airgap/beacon-transport-matrix", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "axios": "^1.6.2" } }, "packages/beacon-transport-postmessage": { "name": "@airgap/beacon-transport-postmessage", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2" + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1" } }, "packages/beacon-transport-walletconnect": { "name": "@airgap/beacon-transport-walletconnect", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "@walletconnect/sign-client": "2.11.2" } }, "packages/beacon-types": { "name": "@airgap/beacon-types", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { "@types/chrome": "0.0.246" @@ -25198,13 +25307,13 @@ }, "packages/beacon-ui": { "name": "@airgap/beacon-ui", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "@walletconnect/utils": "2.11.2", "qrcode-svg": "^1.1.0", "solid-js": "^1.7.11" @@ -25227,7 +25336,7 @@ }, "packages/beacon-utils": { "name": "@airgap/beacon-utils", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { "@stablelib/ed25519": "^1.0.3", @@ -25239,13 +25348,17 @@ }, "packages/beacon-wallet": { "name": "@airgap/beacon-wallet", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "license": "ISC", "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-transport-matrix": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2" + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-transport-libp2p": "4.2.3-alpha.1", + "@airgap/beacon-transport-matrix": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1" } + }, + "packages/beacon-wallet/packages/beacon-transport-libp2p": { + "extraneous": true } } } diff --git a/package.json b/package.json index 0077f7882..b90b6bd4b 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,8 @@ "bump:major": "lerna version --no-git-tag-version major --exact --yes", "bump:minor": "lerna version --no-git-tag-version minor --exact --yes", "bump:patch": "lerna version --no-git-tag-version patch --exact --yes", - "bump:beta": "lerna version --no-git-tag-version prerelease --preid beta --exact --yes" + "bump:beta": "lerna version --no-git-tag-version prerelease --preid beta --exact --yes", + "bump:alpha": "lerna version --no-git-tag-version prerelease --preid alpha --exact --yes" }, "author": "Papers AG (https://papers.ch)", "dependencies": { @@ -66,6 +67,7 @@ "@airgap/beacon-core": "file:packages/beacon-core", "@airgap/beacon-dapp": "file:packages/beacon-dapp", "@airgap/beacon-transport-matrix": "file:packages/beacon-transport-matrix", + "@airgap/beacon-transport-libp2p": "file:packages/beacon-transport-libp2p", "@airgap/beacon-transport-postmessage": "file:packages/beacon-transport-postmessage", "@airgap/beacon-transport-walletconnect": "file:packages/beacon-transport-walletconnect", "@airgap/beacon-types": "file:packages/beacon-types", diff --git a/packages/beacon-blockchain-substrate/package.json b/packages/beacon-blockchain-substrate/package.json index ea72f9a92..b6cce0a93 100644 --- a/packages/beacon-blockchain-substrate/package.json +++ b/packages/beacon-blockchain-substrate/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-blockchain-substrate", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package adds support for `substrate` based blockchains. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,7 +34,7 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2" + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1" } } diff --git a/packages/beacon-blockchain-tezos-sapling/package.json b/packages/beacon-blockchain-tezos-sapling/package.json index 7c681836d..ad899fc76 100644 --- a/packages/beacon-blockchain-tezos-sapling/package.json +++ b/packages/beacon-blockchain-tezos-sapling/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-blockchain-tezos-sapling", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package adds support for `tezos-sapling`, the sapling integration on the Tezos blockchain. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,7 +34,7 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2" + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1" } } diff --git a/packages/beacon-blockchain-tezos/package.json b/packages/beacon-blockchain-tezos/package.json index 4c10ef3e5..316f3db22 100644 --- a/packages/beacon-blockchain-tezos/package.json +++ b/packages/beacon-blockchain-tezos/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-blockchain-tezos", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package adds support for the `tezos` blockchain. It can be used in combination with the `@airgap/beacon-dapp` or `@airgap/beacon-wallet` packages.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,7 +34,7 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2" + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1" } } diff --git a/packages/beacon-core/package.json b/packages/beacon-core/package.json index c4bcd8b1b..b2b5704c0 100644 --- a/packages/beacon-core/package.json +++ b/packages/beacon-core/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-core", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package contains internal methods that are used by both the dApp and wallet client.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,8 +34,8 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "@stablelib/ed25519": "^1.0.3", "@stablelib/nacl": "^1.0.4", "@stablelib/utf8": "^1.0.1", diff --git a/packages/beacon-core/src/clients/client/Client.ts b/packages/beacon-core/src/clients/client/Client.ts index 60ad83a1a..b1262cbbf 100644 --- a/packages/beacon-core/src/clients/client/Client.ts +++ b/packages/beacon-core/src/clients/client/Client.ts @@ -51,6 +51,7 @@ export abstract class Client extends BeaconClient { protected requestCounter: number[] = [] protected readonly matrixNodes: NodeDistributions + protected readonly libp2pNodes?: NodeDistributions private transportListeners: Map< TransportType, @@ -81,6 +82,7 @@ export abstract class Client extends BeaconClient { this.accountManager = new AccountManager(config.storage) this.matrixNodes = config.matrixNodes ?? {} + this.libp2pNodes = config.libp2pNodes this.handleResponse = ( message: BeaconBaseMessage | BeaconMessageWrapper, diff --git a/packages/beacon-core/src/clients/client/ClientOptions.ts b/packages/beacon-core/src/clients/client/ClientOptions.ts index 94ceacd39..010c53160 100644 --- a/packages/beacon-core/src/clients/client/ClientOptions.ts +++ b/packages/beacon-core/src/clients/client/ClientOptions.ts @@ -38,6 +38,15 @@ export interface ClientOptions { */ matrixNodes?: NodeDistributions + + /** + * A list of ws proxy nodes to connect to. If a non-empty array is passed, the default options will be overwritten. + * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down. + * + * Only provide the hostname, no wss:// prefix. Eg. { [Regions.EUROPE_WEST]: ['example.com'] } + */ + libp2pNodes?: NodeDistributions + /** * Automatically switch between apps on Mobile Devices (Enabled by Default) */ diff --git a/packages/beacon-core/src/constants.ts b/packages/beacon-core/src/constants.ts index 8aef4d515..76c72a010 100644 --- a/packages/beacon-core/src/constants.ts +++ b/packages/beacon-core/src/constants.ts @@ -1,4 +1,4 @@ -export const SDK_VERSION: string = '4.2.2' +export const SDK_VERSION: string = '4.2.3-alpha.1' export const BEACON_VERSION: string = '3' export const NOTIFICATION_ORACLE_URL: string = diff --git a/packages/beacon-core/src/managers/PeerManager.ts b/packages/beacon-core/src/managers/PeerManager.ts index 45cb49a26..34b669471 100644 --- a/packages/beacon-core/src/managers/PeerManager.ts +++ b/packages/beacon-core/src/managers/PeerManager.ts @@ -10,6 +10,8 @@ export class PeerManager< T extends | StorageKey.TRANSPORT_P2P_PEERS_DAPP | StorageKey.TRANSPORT_P2P_PEERS_WALLET + | StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP + | StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET | StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP diff --git a/packages/beacon-core/src/managers/StorageManager.ts b/packages/beacon-core/src/managers/StorageManager.ts index a1890fdcd..d23431f1e 100644 --- a/packages/beacon-core/src/managers/StorageManager.ts +++ b/packages/beacon-core/src/managers/StorageManager.ts @@ -22,6 +22,8 @@ export class StorageManager< | StorageKey.PERMISSION_LIST | StorageKey.TRANSPORT_P2P_PEERS_DAPP | StorageKey.TRANSPORT_P2P_PEERS_WALLET + | StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP + | StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET | StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP diff --git a/packages/beacon-core/src/transports/Transport.ts b/packages/beacon-core/src/transports/Transport.ts index 56fb84210..f419bab7e 100644 --- a/packages/beacon-core/src/transports/Transport.ts +++ b/packages/beacon-core/src/transports/Transport.ts @@ -24,6 +24,8 @@ export abstract class Transport< K extends | StorageKey.TRANSPORT_P2P_PEERS_DAPP | StorageKey.TRANSPORT_P2P_PEERS_WALLET + | StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP + | StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP | StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET | StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP = any, diff --git a/packages/beacon-dapp/package.json b/packages/beacon-dapp/package.json index e3eb2710c..bb9ef7004 100644 --- a/packages/beacon-dapp/package.json +++ b/packages/beacon-dapp/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-dapp", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "Use this package on your dApp to instanciate a DAppClient object and communicate to wallets.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -35,11 +35,12 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-transport-matrix": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2", - "@airgap/beacon-transport-walletconnect": "4.2.2", - "@airgap/beacon-ui": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-transport-libp2p": "4.2.3-alpha.1", + "@airgap/beacon-transport-matrix": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1", + "@airgap/beacon-transport-walletconnect": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1", "broadcast-channel": "^7.0.0" } } diff --git a/packages/beacon-dapp/src/dapp-client/DAppClient.ts b/packages/beacon-dapp/src/dapp-client/DAppClient.ts index ef6067219..28b1b7ff9 100644 --- a/packages/beacon-dapp/src/dapp-client/DAppClient.ts +++ b/packages/beacon-dapp/src/dapp-client/DAppClient.ts @@ -133,6 +133,7 @@ import { currentOS } from '@airgap/beacon-ui' import { WalletConnectTransport } from '@airgap/beacon-transport-walletconnect' +import { DappLibP2PTransport } from '../transports/DappLibP2PTransport' const logger = new Logger('DAppClient') @@ -174,6 +175,7 @@ export class DAppClient extends Client { protected postMessageTransport: DappPostMessageTransport | undefined protected p2pTransport: DappP2PTransport | undefined protected walletConnectTransport: DappWalletConnectTransport | undefined + protected libp2pTransport: DappLibP2PTransport | undefined protected wcProjectId?: string protected wcRelayUrl?: string @@ -338,12 +340,7 @@ export class DAppClient extends Client { const handleDisconnect = async (): Promise => { this.analytics.track('event', 'DAppClient', 'Disconnect received from Wallet') - const relevantTransport = - connectionInfo.origin === Origin.P2P - ? this.p2pTransport - : connectionInfo.origin === Origin.WALLETCONNECT - ? this.walletConnectTransport - : this.postMessageTransport ?? (await this.transport) + const relevantTransport = await this.transport if (relevantTransport) { const peers: ExtendedPeerInfo[] = await relevantTransport.getPeers() @@ -553,7 +550,12 @@ export class DAppClient extends Client { public async initInternalTransports(): Promise { const keyPair = await this.keyPair - if (this.postMessageTransport || this.p2pTransport || this.walletConnectTransport) { + if ( + this.postMessageTransport || + this.p2pTransport || + this.walletConnectTransport || + this.libp2pTransport + ) { return } @@ -596,6 +598,10 @@ export class DAppClient extends Client { this.initEvents() await this.addListener(this.walletConnectTransport) + + this.libp2pTransport = new DappLibP2PTransport(this.name, this.storage, this.libp2pNodes) + + await this.addListener(this.libp2pTransport) } private initEvents() { @@ -696,11 +702,19 @@ export class DAppClient extends Client { if (this.walletConnectTransport) { this.walletConnectTransport.stopListeningForNewPeers().catch(console.error) } + if (this.libp2pTransport) { + // todo? + } } await this.initInternalTransports() - if (!this.postMessageTransport || !this.p2pTransport || !this.walletConnectTransport) { + if ( + !this.postMessageTransport || + !this.p2pTransport || + !this.walletConnectTransport || + !this.libp2pTransport + ) { return } @@ -715,11 +729,14 @@ export class DAppClient extends Client { resolve(await super.init(this.p2pTransport)) } else if (origin === Origin.WALLETCONNECT) { resolve(await super.init(this.walletConnectTransport)) + } else if (origin === Origin.LIBP2P) { + resolve(await super.init(this.libp2pTransport)) } } else { const p2pTransport = this.p2pTransport const postMessageTransport = this.postMessageTransport const walletConnectTransport = this.walletConnectTransport + const libp2pTransport = this.libp2pTransport postMessageTransport .listenForNewPeer((peer) => { @@ -772,6 +789,23 @@ export class DAppClient extends Client { }) .catch(console.error) + libp2pTransport + .listenForNewPeer((peer) => { + logger.log('init', 'libp2p transport peer connected', peer) + this.analytics.track('event', 'DAppClient', 'Beacon Wallet connected', { + peerName: peer.name + }) + this.events + .emit(BeaconEvent.PAIR_SUCCESS, peer) + .catch((emitError) => console.warn(emitError)) + + this.setActivePeer(peer).catch(console.error) + this.setTransport(this.libp2pTransport).catch(console.error) + stopListening() + resolve(TransportType.LIBP2P) + }) + .catch(console.error) + PostMessageTransport.getAvailableExtensions() .then(async (extensions) => { this.analytics.track('event', 'DAppClient', 'Extensions detected', { extensions }) @@ -787,6 +821,10 @@ export class DAppClient extends Client { p2pTransport.connect().then().catch(console.error) return p2pTransport.getPairingRequestInfo() }, + libp2pPeerInfo: async () => { + await libp2pTransport.connect() + return await libp2pTransport.getPairingRequestInfo() + }, postmessagePeerInfo: () => postMessageTransport.getPairingRequestInfo(), walletConnectPeerInfo: () => walletConnectTransport.getPairingRequestInfo(), networkType: this.network.type, @@ -804,6 +842,7 @@ export class DAppClient extends Client { this.postMessageTransport = this.walletConnectTransport = this.p2pTransport = + this.libp2pTransport = undefined this._activeAccount.isResolved() && this.clearActiveAccount() this._initPromise = undefined @@ -844,7 +883,11 @@ export class DAppClient extends Client { this.postMessageTransport?.disconnect(), this.walletConnectTransport?.disconnect() ]) - this.postMessageTransport = this.p2pTransport = this.walletConnectTransport = undefined + this.postMessageTransport = + this.p2pTransport = + this.walletConnectTransport = + this.libp2pTransport = + undefined await this.setActivePeer(undefined) await this.setTransport(undefined) this._initPromise = undefined @@ -884,7 +927,11 @@ export class DAppClient extends Client { if (!this.debounceSetActiveAccount && transport instanceof WalletConnectTransport) { this.debounceSetActiveAccount = true this._initPromise = undefined - this.postMessageTransport = this.p2pTransport = this.walletConnectTransport = undefined + this.postMessageTransport = + this.p2pTransport = + this.walletConnectTransport = + this.libp2pTransport = + undefined if (this.multiTabChannel.isLeader()) { await transport.disconnect() this.openRequestsOtherTabs.clear() @@ -936,6 +983,8 @@ export class DAppClient extends Client { await this.setTransport(this.p2pTransport) } else if (origin === Origin.WALLETCONNECT) { await this.setTransport(this.walletConnectTransport) + } else if (origin === Origin.LIBP2P) { + await this.setTransport(this.libp2pTransport) } if (this._transport.isResolved()) { const transport = await this.transport @@ -2015,6 +2064,7 @@ export class DAppClient extends Client { this.postMessageTransport = undefined this.p2pTransport = undefined this.walletConnectTransport = undefined + this.libp2pTransport = undefined await this.setTransport() await this.setActivePeer() } @@ -2219,7 +2269,10 @@ export class DAppClient extends Client { const p2pPeers: ExtendedP2PPairingResponse[] = (await this.p2pTransport?.getPeers()) ?? [] const walletConnectPeers: ExtendedWalletConnectPairingResponse[] = (await this.walletConnectTransport?.getPeers()) ?? [] - const peers = [...postMessagePeers, ...p2pPeers, ...walletConnectPeers] + + // todo libp2p transport + const libp2pPeers: ExtendedP2PPairingResponse[] = [] + const peers = [...postMessagePeers, ...p2pPeers, ...walletConnectPeers, ...libp2pPeers] logger.log('getPeer', 'Found peers', peers, account) @@ -2269,7 +2322,8 @@ export class DAppClient extends Client { if (this._initPromise && this.isInitPending) { await Promise.all([ this.postMessageTransport?.disconnect(), - this.walletConnectTransport?.disconnect() + this.walletConnectTransport?.disconnect(), + this.libp2pTransport?.disconnect() ]) this._initPromise = undefined this.hideUI(['toast']) @@ -2395,7 +2449,8 @@ export class DAppClient extends Client { if (this._initPromise && this.isInitPending) { await Promise.all([ this.postMessageTransport?.disconnect(), - this.walletConnectTransport?.disconnect() + this.walletConnectTransport?.disconnect(), + this.libp2pTransport?.disconnect() ]) this._initPromise = undefined this.hideUI(['toast']) @@ -2559,6 +2614,7 @@ export class DAppClient extends Client { this.postMessageTransport = undefined this.p2pTransport = undefined this.walletConnectTransport = undefined + this.libp2pTransport = undefined this.sendMetrics('performance-metrics/save', await this.buildPayload('disconnect', 'success')) } diff --git a/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts b/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts index 62584b1b4..bb2469f28 100644 --- a/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts +++ b/packages/beacon-dapp/src/dapp-client/DAppClientOptions.ts @@ -74,6 +74,14 @@ export interface DAppClientOptions { */ matrixNodes?: NodeDistributions + /** + * A list of ws proxy nodes to connect to. If a non-empty array is passed, the default options will be overwritten. + * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down. + * + * Only provide the hostname, no wss:// prefix. Eg. { [Regions.EUROPE_WEST]: ['example.com'] } + */ + libp2pNodes?: NodeDistributions + /** * The block explorer used by the SDK */ diff --git a/packages/beacon-dapp/src/events.ts b/packages/beacon-dapp/src/events.ts index 295ced685..6635a60fe 100644 --- a/packages/beacon-dapp/src/events.ts +++ b/packages/beacon-dapp/src/events.ts @@ -200,6 +200,7 @@ export interface BeaconEventType { [BeaconEvent.HIDE_UI]: ('alert' | 'toast')[] | undefined [BeaconEvent.PAIR_INIT]: { p2pPeerInfo: () => Promise + libp2pPeerInfo: () => Promise postmessagePeerInfo: () => Promise walletConnectPeerInfo: () => Promise networkType: NetworkType @@ -460,6 +461,7 @@ const showPairAlert = async (data: BeaconEventType[BeaconEvent.PAIR_INIT]): Prom body: `

`, pairingPayload: { p2pSyncCode: data.p2pPeerInfo, + libp2pPeerInfo: data.libp2pPeerInfo, walletConnectSyncCode: data.walletConnectPeerInfo, postmessageSyncCode: data.postmessagePeerInfo, networkType: data.networkType diff --git a/packages/beacon-dapp/src/transports/DappLibP2PTransport.ts b/packages/beacon-dapp/src/transports/DappLibP2PTransport.ts new file mode 100644 index 000000000..00e4a4e07 --- /dev/null +++ b/packages/beacon-dapp/src/transports/DappLibP2PTransport.ts @@ -0,0 +1,51 @@ +import { + ExtendedP2PPairingResponse, + NodeDistributions, + Storage, + StorageKey, + TransportStatus +} from '@airgap/beacon-types' +import { WebSocketP2PTransport } from '@airgap/beacon-transport-libp2p' +import { Logger } from '@airgap/beacon-core' + +const logger = new Logger('DappLibP2PTransport') + +export class DappLibP2PTransport extends WebSocketP2PTransport< + ExtendedP2PPairingResponse, + StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP +> { + constructor( + name: string, + storage: Storage, + urls?: NodeDistributions + ) { + super(name, storage, StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP, urls) + } + + public async startOpenChannelListener(): Promise { + return this.client.listenForChannelOpening(async (peer) => { + logger.log('listenForNewPeer', `new publicKey`, peer.publicKey) + + await this.addPeer(peer) + + this._isConnected = TransportStatus.CONNECTED + + if (this.newPeerListener) { + this.newPeerListener(peer) + this.newPeerListener = undefined // TODO: Remove this once we use the id + } + }) + } + + public async listenForNewPeer( + newPeerListener: (peer: ExtendedP2PPairingResponse) => void + ): Promise { + logger.log('listenForNewPeer') + this.newPeerListener = newPeerListener + } + + public async stopListeningForNewPeers(): Promise { + logger.log('stopListeningForNewPeers') + this.newPeerListener = undefined + } +} diff --git a/packages/beacon-sdk/package.json b/packages/beacon-sdk/package.json index 5dfe31337..1ff86191e 100644 --- a/packages/beacon-sdk/package.json +++ b/packages/beacon-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-sdk", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "The `beacon-sdk` simplifies and abstracts the communication between dApps and wallets over different transport layers.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -35,15 +35,16 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-blockchain-substrate": "4.2.2", - "@airgap/beacon-blockchain-tezos": "4.2.2", - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-dapp": "4.2.2", - "@airgap/beacon-transport-matrix": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-ui": "4.2.2", - "@airgap/beacon-utils": "4.2.2", - "@airgap/beacon-wallet": "4.2.2" + "@airgap/beacon-blockchain-substrate": "4.2.3-alpha.1", + "@airgap/beacon-blockchain-tezos": "4.2.3-alpha.1", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-dapp": "4.2.3-alpha.1", + "@airgap/beacon-transport-libp2p": "4.2.3-alpha.1", + "@airgap/beacon-transport-matrix": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-ui": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", + "@airgap/beacon-wallet": "4.2.3-alpha.1" } } diff --git a/packages/beacon-transport-libp2p/README.md b/packages/beacon-transport-libp2p/README.md new file mode 100644 index 000000000..2715057fb --- /dev/null +++ b/packages/beacon-transport-libp2p/README.md @@ -0,0 +1,11 @@ +# `@airgap/beacon-transport-libp2p` + +This package is part of the `@airgap/beacon-sdk` project. [Read more](https://github.com/airgap-it/beacon-sdk) + +## Introduction + +This package contains methods to facilitate communication over the Beacon network, a decentralised P2P network that is based on the ipfs protocol. + +Unless you need to import types from this package, you probably don't need to add it to your project. + +Check our documentation for more information. [Documentation](https://docs.walletbeacon.io) diff --git a/packages/beacon-transport-libp2p/__tests__/tests/WebSocketP2PCommunicationClient.spec.ts b/packages/beacon-transport-libp2p/__tests__/tests/WebSocketP2PCommunicationClient.spec.ts new file mode 100644 index 000000000..49a76f52e --- /dev/null +++ b/packages/beacon-transport-libp2p/__tests__/tests/WebSocketP2PCommunicationClient.spec.ts @@ -0,0 +1 @@ +// Tests are located in the other packages, this package simply combines some of the other packages without adding any logic. diff --git a/packages/beacon-transport-libp2p/package.json b/packages/beacon-transport-libp2p/package.json new file mode 100644 index 000000000..9329acf31 --- /dev/null +++ b/packages/beacon-transport-libp2p/package.json @@ -0,0 +1,46 @@ +{ + "name": "@airgap/beacon-transport-libp2p", + "version": "4.2.3-alpha.1", + "description": "This package contains methods to facilitate communication over the Beacon network, a decentralised P2P network that is based on the matrix protocol.", + "author": "Andreas Gassmann ", + "homepage": "https://walletbeacon.io", + "license": "ISC", + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "types": "dist/esm/index.d.ts", + "exports": { + "require": "./dist/cjs/index.js", + "import": "./dist/esm/index.js" + }, + "directories": { + "lib": "dist/esm", + "test": "__tests__" + }, + "files": [ + "dist" + ], + "publishConfig": { + "access": "public" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/airgap-it/beacon-sdk.git" + }, + "scripts": { + "tsc": "tsc -p tsconfig.json && tsc -p tsconfig-cjs.json", + "test": "TS_NODE_PROJECT='tsconfig-cjs.json' nyc mocha --require ts-node/register --require source-map-support/register --full-trace --timeout 40000 ./__tests__/**/**.spec.ts" + }, + "bugs": { + "url": "https://github.com/airgap-it/beacon-sdk/issues" + }, + "dependencies": { + "@acurast/dapp": "^1.0.1-beta.6", + "@acurast/transport-websocket": "^1.0.1-beta.6", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", + "elliptic": "6.5.7" + }, + "devDependencies": { + "@types/elliptic": "^6.4.18" + } +} diff --git a/packages/beacon-transport-libp2p/src/WebSocketP2PTransport.ts b/packages/beacon-transport-libp2p/src/WebSocketP2PTransport.ts new file mode 100644 index 000000000..2d62927ac --- /dev/null +++ b/packages/beacon-transport-libp2p/src/WebSocketP2PTransport.ts @@ -0,0 +1,84 @@ +import { Logger, PeerManager, Transport } from '@airgap/beacon-core' +import { WebSocketP2PCommunicationClient } from './communication-client/WebSocketP2PCommunicationClient' +import { + P2PPairingRequest, + ExtendedP2PPairingResponse, + Storage, + StorageKey, + Origin, + TransportType, + PeerInfo, + NodeDistributions, +} from '@airgap/beacon-types' + +const logger = new Logger('P2PTransport') + +export abstract class WebSocketP2PTransport< + T extends P2PPairingRequest | ExtendedP2PPairingResponse, + K extends StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP | StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET +> extends Transport { + public readonly type: TransportType = TransportType.LIBP2P + constructor( + name: string, + storage: Storage, + storageKey: K, + urls?: NodeDistributions + ) { + super( + name, + new WebSocketP2PCommunicationClient(name, urls), + new PeerManager(storage, storageKey) + ) + } + + async connect() { + await this.client.connect() + + const knownPeers = await this.getPeers() + + if (knownPeers.length > 0) { + logger.log('connect', `connecting to ${knownPeers.length} peers`) + const connectionPromises = knownPeers.map(async (peer) => this.listen(peer.publicKey)) + Promise.all(connectionPromises).catch((error) => logger.error('connect', error)) + } + + await this.startOpenChannelListener() + return super.connect() + } + + async send(message: string, peer?: PeerInfo): Promise { + if (peer) { + return this.client.sendRequest(peer.publicKey, message) + } else { + const knownPeers = await this.getPeers() + // A broadcast request has to be sent everywhere. + const promises = knownPeers.map((peerEl) => + this.client.sendRequest(peerEl.publicKey, message) + ) + + return (await Promise.all(promises))[0] + } + } + + async startOpenChannelListener() { + return + } + + async disconnect(): Promise { + await this.client.close() + return super.disconnect() + } + + public getPairingRequestInfo(): Promise { + return this.client.getPairingRequestInfo() + } + + async listen(publicKey: string): Promise { + this.client.listenForEncryptedMessage(publicKey, (message) => + this.notifyListeners(message, { + origin: Origin.LIBP2P, + id: publicKey + }) + ) + } +} diff --git a/packages/beacon-transport-libp2p/src/communication-client/WebSocketP2PCommunicationClient.ts b/packages/beacon-transport-libp2p/src/communication-client/WebSocketP2PCommunicationClient.ts new file mode 100644 index 000000000..90da4eb6a --- /dev/null +++ b/packages/beacon-transport-libp2p/src/communication-client/WebSocketP2PCommunicationClient.ts @@ -0,0 +1,179 @@ +import { SDK_VERSION, CommunicationClient } from '@airgap/beacon-core' +import { + ExtendedP2PPairingResponse, + NodeDistributions, + P2PPairingRequest, + P2PPairingResponse, + PeerInfoType, + Regions +} from '@airgap/beacon-types' +import { AcurastClient } from '@acurast/dapp' +import { KeyPair } from '@stablelib/ed25519' +import { generateGUID } from '@airgap/beacon-utils' +import { ec } from 'elliptic' + +const DEFAULT_NODES: NodeDistributions = { + [Regions.EUROPE_WEST]: ['websocket-proxy-1.prod.gke.acurast.com'], + [Regions.NORTH_AMERICA_EAST]: ['websocket-proxy-2.prod.gke.acurast.com'] +} + +export class WebSocketP2PCommunicationClient extends CommunicationClient { + private client: AcurastClient + private readonly channelOpeningListeners: Map< + 'channelOpening', + (pairingResponse: ExtendedP2PPairingResponse) => void + > = new Map() + private listeners: Map void> = new Map() + private selectedNode: string + private senderId: string = '' + protected override keyPair: KeyPair | undefined = undefined + + constructor( + private name: string, + private nodes: NodeDistributions = DEFAULT_NODES + ) { + super() + this.selectedNode = this.getNode() + this.client = this.initClient([this.selectedNode]) + } + + private getSeed(): string { + const key = Object.keys(localStorage).find((_key) => _key.includes('sdk-secret-seed')) + if (!key) { + throw new Error('Seed is missing.') + } + return localStorage.getItem(key)! + } + + // TODO implement discovery algorithm + private getNode(): string { + const regions = Object.keys(this.nodes) + const randomRegion = regions[Math.floor(Math.random() * regions.length)] + const urls = this.nodes[randomRegion] + const randomUrl = urls[Math.floor(Math.random() * urls.length)] + return randomUrl + } + + private async initKeyPair() { + const ecdsa = new ec('p256') // Using the P-256 curve + + // Generate key pair from seed + const seedBuffer = Buffer.from(this.getSeed(), 'utf-8') + + // Use Web Crypto API to create a SHA-256 hash + const hashBuffer = await crypto.subtle.digest('SHA-256', seedBuffer) + const privateKeyHex = Buffer.from(hashBuffer).toString('hex') + + const keyPair = ecdsa.keyFromPrivate(privateKeyHex) + + const privateKeyRaw = Buffer.from(keyPair.getPrivate().toString('hex'), 'hex') + const publicKeyRaw = Buffer.from(keyPair.getPublic().encode('array', false)) + + const publicKeyCompressedSize = (publicKeyRaw.length - 1) / 2 + const publicKeyCompressed = Buffer.concat([ + new Uint8Array([publicKeyRaw[2 * publicKeyCompressedSize] % 2 ? 3 : 2]), + publicKeyRaw.subarray(1, publicKeyCompressedSize + 1) + ]) + + const publicKeyHash = await crypto.subtle.digest('SHA-256', publicKeyCompressed) + const senderId = Buffer.from(publicKeyHash.slice(0, 16)).toString('hex') + + return { + publicKey: publicKeyRaw, + secretKey: privateKeyRaw, + senderId + } + } + + private initClient(urls: string[]): AcurastClient { + const client = new AcurastClient(urls.map((url) => `wss://${url}`)) + client.onMessage(async (message) => { + let parsed: any = Buffer.from(message.payload).toString('utf-8') + try { + parsed = JSON.parse(parsed) + } catch {} + + if (this.channelOpeningListeners.size) { + this.channelOpeningListeners.get('channelOpening')!(parsed) + this.channelOpeningListeners.delete('channelOpening') + } else { + this.listeners.forEach((fun) => fun(parsed)) + } + }) + + return client + } + + async unsubscribeFromEncryptedMessages(): Promise { + this.listeners.clear() + this.channelOpeningListeners.clear() + } + + /** + * Unsubscribe from the specified listener + * @param senderPublicKey + */ + async unsubscribeFromEncryptedMessage(senderId: string): Promise { + this.listeners.delete(senderId) + this.channelOpeningListeners.delete('channelOpening') + } + + async connect() { + const { publicKey, secretKey, senderId } = await this.initKeyPair() + this.keyPair = { + publicKey, + secretKey + } + this.senderId = senderId + await this.client.start(this.keyPair) + } + + close() { + return this.client.close() + } + + public async listenForChannelOpening( + messageCallback: (pairingResponse: ExtendedP2PPairingResponse) => void + ): Promise { + const callbackFunction = async (pairingResponse: ExtendedP2PPairingResponse): Promise => { + messageCallback(pairingResponse) + } + this.channelOpeningListeners.set('channelOpening', callbackFunction) + } + + async listenForEncryptedMessage(senderId: string, messageCallback: (message: any) => void) { + this.listeners.set(senderId, messageCallback) + } + + public async getPairingRequestInfo(): Promise { + return new P2PPairingRequest( + await generateGUID(), + this.name, + this.senderId, + SDK_VERSION, + this.selectedNode + ) + } + + public async getPairingResponseInfo(request: P2PPairingRequest): Promise { + return new P2PPairingResponse(request.id, this.name, this.senderId, '4', this.selectedNode) + } + + public async sendPairingResponse(pairingRequest: P2PPairingRequest): Promise { + this.sendRequest( + pairingRequest.publicKey, + JSON.stringify(await this.getPairingResponseInfo(pairingRequest)) + ) + } + + async sendRequest(senderId: string, message: string) { + this.client.send(senderId, message) + } + + /** + * @deprecated The method should not be used. Use `sendRequest` instead. + */ + async sendMessage(message: string, { publicKey }: PeerInfoType): Promise { + this.client.send(this.client.idFromPublicKey(publicKey), message) + } +} diff --git a/packages/beacon-transport-libp2p/src/index.ts b/packages/beacon-transport-libp2p/src/index.ts new file mode 100644 index 000000000..f3a53c1e8 --- /dev/null +++ b/packages/beacon-transport-libp2p/src/index.ts @@ -0,0 +1,3 @@ +export { WebSocketP2PCommunicationClient } from './communication-client/WebSocketP2PCommunicationClient' + +export { WebSocketP2PTransport } from './WebSocketP2PTransport' diff --git a/packages/beacon-transport-libp2p/src/utils/bytes.ts b/packages/beacon-transport-libp2p/src/utils/bytes.ts new file mode 100644 index 000000000..c9a50f510 --- /dev/null +++ b/packages/beacon-transport-libp2p/src/utils/bytes.ts @@ -0,0 +1,8 @@ +export function hexFrom(value: ArrayBuffer | Uint8Array | Buffer): string { + const buffer: Buffer = Buffer.isBuffer(value) ? value : Buffer.from(value) + return buffer.toString('hex') +} + +export function hexTo(value: string): Uint8Array { + return Uint8Array.from(Buffer.from(value, 'hex')) +} diff --git a/packages/beacon-transport-libp2p/tsconfig-cjs.json b/packages/beacon-transport-libp2p/tsconfig-cjs.json new file mode 100644 index 000000000..859eb380f --- /dev/null +++ b/packages/beacon-transport-libp2p/tsconfig-cjs.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "target": "es6", + "module": "commonjs", + "outDir": "./dist/cjs" + } +} diff --git a/packages/beacon-transport-libp2p/tsconfig.json b/packages/beacon-transport-libp2p/tsconfig.json new file mode 100644 index 000000000..7a3e9f222 --- /dev/null +++ b/packages/beacon-transport-libp2p/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "outDir": "./dist/esm", + "baseUrl": ".", + "paths": { + "@airgap/beacon-transport-matrix": ["./src"] + } + }, + "include": ["./src"] +} diff --git a/packages/beacon-transport-libp2p/typedoc.json b/packages/beacon-transport-libp2p/typedoc.json new file mode 100644 index 000000000..3b23b4103 --- /dev/null +++ b/packages/beacon-transport-libp2p/typedoc.json @@ -0,0 +1,5 @@ +{ + "extends": ["../../typedoc.base.json"], + "entryPoints": ["src/index.ts"], + "exclude": ["__tests__", "dist"] +} diff --git a/packages/beacon-transport-matrix/package.json b/packages/beacon-transport-matrix/package.json index 31799b77e..bae363781 100644 --- a/packages/beacon-transport-matrix/package.json +++ b/packages/beacon-transport-matrix/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-transport-matrix", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package contains methods to facilitate communication over the Beacon network, a decentralised P2P network that is based on the matrix protocol.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,8 +34,8 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "axios": "^1.6.2" } } diff --git a/packages/beacon-transport-postmessage/package.json b/packages/beacon-transport-postmessage/package.json index 1d110c278..71f95c78b 100644 --- a/packages/beacon-transport-postmessage/package.json +++ b/packages/beacon-transport-postmessage/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-transport-postmessage", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package contains methods to facilitate communication over the postmessage interface of the browser to talk to browser extensions.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,8 +34,8 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2" + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1" } } diff --git a/packages/beacon-transport-walletconnect/package.json b/packages/beacon-transport-walletconnect/package.json index f2e0293f5..83f289c88 100644 --- a/packages/beacon-transport-walletconnect/package.json +++ b/packages/beacon-transport-walletconnect/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-transport-walletconnect", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package contains methods to facilitate communication over the WalletConnect network.", "author": "Papers AG", "homepage": "https://walletbeacon.io", @@ -34,9 +34,9 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "@walletconnect/sign-client": "2.11.2" } } diff --git a/packages/beacon-types/package.json b/packages/beacon-types/package.json index a32e9656f..23a9440d4 100644 --- a/packages/beacon-types/package.json +++ b/packages/beacon-types/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-types", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package contains types that are used throughout the Beacon SDK.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", diff --git a/packages/beacon-types/src/types/Origin.ts b/packages/beacon-types/src/types/Origin.ts index 9a50b0b99..4a304f76e 100644 --- a/packages/beacon-types/src/types/Origin.ts +++ b/packages/beacon-types/src/types/Origin.ts @@ -5,5 +5,6 @@ export enum Origin { WEBSITE = 'website', EXTENSION = 'extension', P2P = 'p2p', + LIBP2P = 'libp2p', WALLETCONNECT = 'walletconnect' } diff --git a/packages/beacon-types/src/types/storage/StorageKey.ts b/packages/beacon-types/src/types/storage/StorageKey.ts index 183076188..7b5538826 100644 --- a/packages/beacon-types/src/types/storage/StorageKey.ts +++ b/packages/beacon-types/src/types/storage/StorageKey.ts @@ -4,6 +4,8 @@ export enum StorageKey { TRANSPORT_P2P_PEERS_DAPP = 'beacon:communication-peers-dapp', TRANSPORT_P2P_PEERS_WALLET = 'beacon:communication-peers-wallet', + TRANSPORT_LIBP2P_PEERS_DAPP = 'beacon:libp2p-peers-dapp', + TRANSPORT_LIBP2P_PEERS_WALLET = 'beacon:libp2p-peers-wallet', TRANSPORT_POSTMESSAGE_PEERS_DAPP = 'beacon:postmessage-peers-dapp', TRANSPORT_POSTMESSAGE_PEERS_WALLET = 'beacon:postmessage-peers-wallet', TRANSPORT_WALLETCONNECT_PEERS_DAPP = 'beacon:walletconnect-peers-dapp', diff --git a/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts b/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts index 6a79a409c..1046c174a 100644 --- a/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts +++ b/packages/beacon-types/src/types/storage/StorageKeyReturnDefaults.ts @@ -11,6 +11,8 @@ export type StorageKeyReturnDefaults = { [key in StorageKey]: StorageKeyReturnTy export const defaultValues: StorageKeyReturnDefaults = { [StorageKey.TRANSPORT_P2P_PEERS_DAPP]: [], [StorageKey.TRANSPORT_P2P_PEERS_WALLET]: [], + [StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP]: [], + [StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET]: [], [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: [], [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: [], [StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: [], diff --git a/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts b/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts index 54e59ad42..cf749b93b 100644 --- a/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts +++ b/packages/beacon-types/src/types/storage/StorageKeyReturnType.ts @@ -20,6 +20,8 @@ import { PushToken } from '../PushToken' export interface StorageKeyReturnType { [StorageKey.TRANSPORT_P2P_PEERS_DAPP]: P2PPairingRequest[] [StorageKey.TRANSPORT_P2P_PEERS_WALLET]: ExtendedP2PPairingResponse[] + [StorageKey.TRANSPORT_LIBP2P_PEERS_DAPP]: P2PPairingRequest[] + [StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET]: ExtendedP2PPairingResponse[] [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: PostMessagePairingRequest[] [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: ExtendedPostMessagePairingResponse[] [StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: ExtendedWalletConnectPairingResponse[] diff --git a/packages/beacon-types/src/types/transport/TransportType.ts b/packages/beacon-types/src/types/transport/TransportType.ts index 9c52aeca2..ff26e6a3f 100644 --- a/packages/beacon-types/src/types/transport/TransportType.ts +++ b/packages/beacon-types/src/types/transport/TransportType.ts @@ -6,5 +6,6 @@ export enum TransportType { WALLETCONNECT = 'walletconnect', POST_MESSAGE = 'post_message', LEDGER = 'ledger', - P2P = 'p2p' + P2P = 'p2p', + LIBP2P = 'libp2p' } diff --git a/packages/beacon-types/src/types/ui.ts b/packages/beacon-types/src/types/ui.ts index 5e3b064eb..514e1eb4a 100644 --- a/packages/beacon-types/src/types/ui.ts +++ b/packages/beacon-types/src/types/ui.ts @@ -6,7 +6,7 @@ export interface AppBase { shortName: string color: string logo: string - supportedInteractionStandards?: ('wallet_connect' | 'beacon')[] // 'wallet_connect' or 'beacon' + supportedInteractionStandards?: ('wallet_connect' | 'beacon' | 'beaconLibp2p')[] // 'wallet_connect' or 'beacon' } export interface ExtensionApp extends AppBase { diff --git a/packages/beacon-ui/package.json b/packages/beacon-ui/package.json index 60b32bf56..67e770a76 100644 --- a/packages/beacon-ui/package.json +++ b/packages/beacon-ui/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-ui", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package contains the UI part (alerts and toasts) of the Beacon SDK.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -34,10 +34,10 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2", - "@airgap/beacon-types": "4.2.2", - "@airgap/beacon-utils": "4.2.2", + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1", + "@airgap/beacon-types": "4.2.3-alpha.1", + "@airgap/beacon-utils": "4.2.3-alpha.1", "@walletconnect/utils": "2.11.2", "qrcode-svg": "^1.1.0", "solid-js": "^1.7.11" diff --git a/packages/beacon-ui/src/ui/alert/index.tsx b/packages/beacon-ui/src/ui/alert/index.tsx index f9d84f6a9..e6815a217 100644 --- a/packages/beacon-ui/src/ui/alert/index.tsx +++ b/packages/beacon-ui/src/ui/alert/index.tsx @@ -63,6 +63,7 @@ export interface AlertConfig { buttons?: AlertButton[] pairingPayload?: { p2pSyncCode: () => Promise + libp2pPeerInfo: () => Promise postmessageSyncCode: () => Promise walletConnectSyncCode: () => Promise networkType: NetworkType @@ -152,6 +153,7 @@ const closeAlerts = async (): Promise => { const openAlert = async (config: AlertConfig): Promise => { setIsLoading(false) const p2pPayload = config.pairingPayload?.p2pSyncCode() + const libp2pPayload = config.pairingPayload?.libp2pPeerInfo() const wcPayload = config.pairingPayload?.walletConnectSyncCode() const isOnline = navigator.onLine const areMetricsEnabled = localStorage @@ -178,11 +180,16 @@ const openAlert = async (config: AlertConfig): Promise => { windowRef.addEventListener('message', extensionsUpdatedFn) - const setDefaultPayload = async () => { + const setDefaultPayload = async (wallet: MergedWallet) => { if (config.pairingPayload) { const serializer = new Serializer() try { - const codeQR = await serializer.serialize(await p2pPayload) + const codeQR = await serializer.serialize( + wallet.supportedInteractionStandards && + wallet.supportedInteractionStandards.includes('beaconLibp2p') + ? await libp2pPayload + : await p2pPayload + ) setCodeQR(codeQR) } catch (error: any) { console.error('Cannot connect to network: ', error.message) @@ -499,7 +506,11 @@ const openAlert = async (config: AlertConfig): Promise => { link = `${wallet.links[OSLink.WEB]}/wc?uri=${encodeURIComponent(uri)}` } else { const serializer = new Serializer() - const code = await serializer.serialize(await p2pPayload) + const code = await serializer.serialize( + wallet.supportedInteractionStandards?.includes('beaconLibp2p') + ? await libp2pPayload + : await p2pPayload + ) link = getTzip10Link(wallet.links[OSLink.WEB], code) } @@ -533,7 +544,11 @@ const openAlert = async (config: AlertConfig): Promise => { if (!wallet.links[OSLink.IOS].length) { const syncCode = currentWallet()?.supportedInteractionStandards?.includes('wallet_connect') ? (await wcPayload)?.uri ?? '' - : await new Serializer().serialize(await p2pPayload) + : await new Serializer().serialize( + wallet.supportedInteractionStandards?.includes('beaconLibp2p') + ? await libp2pPayload + : await p2pPayload + ) if (!syncCode.length) { handleCloseAlert() @@ -608,7 +623,11 @@ const openAlert = async (config: AlertConfig): Promise => { if (config.pairingPayload) { const serializer = new Serializer() - const code = await serializer.serialize(await p2pPayload) + const code = await serializer.serialize( + wallet.supportedInteractionStandards?.includes('beaconLibp2p') + ? await libp2pPayload + : await p2pPayload + ) const link = getTzip10Link( isIOS(window) && wallet.deepLink @@ -636,7 +655,7 @@ const openAlert = async (config: AlertConfig): Promise => { } else { setIsLoading(false) setInstallState(wallet) - await setDefaultPayload() + wallet && (await setDefaultPayload(wallet)) } } @@ -705,9 +724,13 @@ const openAlert = async (config: AlertConfig): Promise => { setShowMoreContent(false) analytics()?.track('click', 'ui', 'open desktop', { key: currentWallet()?.key }) - if (await p2pPayload) { + if ((await libp2pPayload) || undefined) { const serializer = new Serializer() - const code = await serializer.serialize(await p2pPayload) + const code = await serializer.serialize( + currentWallet()?.supportedInteractionStandards?.includes('beaconLibp2p') + ? await libp2pPayload + : await p2pPayload + ) const link = getTzip10Link(currentWallet()?.deepLink || '', code) window.open(link, '_blank', 'noopener') } @@ -900,7 +923,11 @@ const openAlert = async (config: AlertConfig): Promise => { ) { syncCode = (await wcPayload)?.uri ?? '' } else { - syncCode = await new Serializer().serialize(await p2pPayload) + syncCode = await new Serializer().serialize( + wallet.supportedInteractionStandards?.includes('beaconLibp2p') + ? await libp2pPayload + : undefined + ) } handleDeepLinking(wallet, syncCode) } @@ -915,14 +942,17 @@ const openAlert = async (config: AlertConfig): Promise => { : undefined } onShowQRCodeClick={async () => { + const wallet = currentWallet() const syncCode = currentWallet()?.supportedInteractionStandards?.includes( 'wallet_connect' ) ? (await wcPayload)?.uri ?? '' - : await new Serializer().serialize(await p2pPayload) - - const wallet = currentWallet() + : await new Serializer().serialize( + wallet?.supportedInteractionStandards?.includes('beaconLibp2p') + ? await libp2pPayload + : await p2pPayload + ) if (!syncCode.length || !wallet) { handleCloseAlert() @@ -976,7 +1006,11 @@ const openAlert = async (config: AlertConfig): Promise => { ) : ( diff --git a/packages/beacon-ui/src/utils/wallets.ts b/packages/beacon-ui/src/utils/wallets.ts index 3ddaba8b1..7fe0c478e 100644 --- a/packages/beacon-ui/src/utils/wallets.ts +++ b/packages/beacon-ui/src/utils/wallets.ts @@ -6,7 +6,7 @@ export interface Wallet { description: string type: string link: string - supportedInteractionStandards?: ('wallet_connect' | 'beacon')[] // 'wallet_connect' or 'beacon' + supportedInteractionStandards?: ('wallet_connect' | 'beacon' | 'beaconLibp2p')[] // 'wallet_connect' or 'beacon' deepLink?: string } @@ -19,7 +19,7 @@ export interface MergedWallet { descriptions: string[] types: string[] links: string[] - supportedInteractionStandards?: ('wallet_connect' | 'beacon')[] // 'wallet_connect' or 'beacon', + supportedInteractionStandards?: ('wallet_connect' | 'beacon' | 'beaconLibp2p')[] // 'wallet_connect' or 'beacon', tags?: string[] deepLink?: string } diff --git a/packages/beacon-utils/package.json b/packages/beacon-utils/package.json index 77dd85924..2fb33653d 100644 --- a/packages/beacon-utils/package.json +++ b/packages/beacon-utils/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-utils", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "This package contains utility functions that are used throughout the beacon-sdk", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", diff --git a/packages/beacon-wallet/package.json b/packages/beacon-wallet/package.json index 1bd6c1285..29ac4cfe3 100644 --- a/packages/beacon-wallet/package.json +++ b/packages/beacon-wallet/package.json @@ -1,6 +1,6 @@ { "name": "@airgap/beacon-wallet", - "version": "4.2.2", + "version": "4.2.3-alpha.1", "description": "Use this package in your wallet to instanciate a WalletClient object and communicate to dApps.", "author": "Andreas Gassmann ", "homepage": "https://walletbeacon.io", @@ -35,8 +35,9 @@ "url": "https://github.com/airgap-it/beacon-sdk/issues" }, "dependencies": { - "@airgap/beacon-core": "4.2.2", - "@airgap/beacon-transport-matrix": "4.2.2", - "@airgap/beacon-transport-postmessage": "4.2.2" + "@airgap/beacon-core": "4.2.3-alpha.1", + "@airgap/beacon-transport-libp2p": "4.2.3-alpha.1", + "@airgap/beacon-transport-matrix": "4.2.3-alpha.1", + "@airgap/beacon-transport-postmessage": "4.2.3-alpha.1" } } diff --git a/packages/beacon-wallet/src/client/WalletClient.ts b/packages/beacon-wallet/src/client/WalletClient.ts index b34e9622c..561f1df00 100644 --- a/packages/beacon-wallet/src/client/WalletClient.ts +++ b/packages/beacon-wallet/src/client/WalletClient.ts @@ -42,6 +42,7 @@ import { WalletClientOptions } from './WalletClientOptions' import { WalletP2PTransport } from '../transports/WalletP2PTransport' import { IncomingRequestInterceptor } from '../interceptors/IncomingRequestInterceptor' import { OutgoingResponseInterceptor } from '../interceptors/OutgoingResponseInterceptor' +import { WalletWebSocketP2PTransport } from '../transports/WalletWebSocketP2PTransport' const logger = new Logger('WalletClient') @@ -64,6 +65,7 @@ export class WalletClient extends Client { private readonly permissionManager: PermissionManager private readonly appMetadataManager: AppMetadataManager + private readonly enableWSP: boolean /** * This array stores pending requests, meaning requests we received and have not yet handled / sent a response. @@ -80,18 +82,21 @@ export class WalletClient extends Client { }) this.permissionManager = new PermissionManager(this.storage) this.appMetadataManager = new AppMetadataManager(this.storage) + this.enableWSP = config.enableWSP ?? false } public async init(): Promise { const keyPair = await this.keyPair // We wait for keypair here so the P2P Transport creation is not delayed and causing issues - const p2pTransport = new WalletP2PTransport( - this.name, - keyPair, - this.storage, - this.matrixNodes, - this.iconUrl, - this.appUrl - ) + const p2pTransport = this.enableWSP + ? new WalletWebSocketP2PTransport(this.name, this.storage, this.libp2pNodes) + : new WalletP2PTransport( + this.name, + keyPair, + this.storage, + this.matrixNodes, + this.iconUrl, + this.appUrl + ) return super.init(p2pTransport) } diff --git a/packages/beacon-wallet/src/client/WalletClientOptions.ts b/packages/beacon-wallet/src/client/WalletClientOptions.ts index 9bf2e8ab2..7154521da 100644 --- a/packages/beacon-wallet/src/client/WalletClientOptions.ts +++ b/packages/beacon-wallet/src/client/WalletClientOptions.ts @@ -31,4 +31,6 @@ export interface WalletClientOptions { * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] } */ matrixNodes?: NodeDistributions + + enableWSP?: boolean } diff --git a/packages/beacon-wallet/src/transports/WalletWebSocketP2PTransport.ts b/packages/beacon-wallet/src/transports/WalletWebSocketP2PTransport.ts new file mode 100644 index 000000000..e5acb40b4 --- /dev/null +++ b/packages/beacon-wallet/src/transports/WalletWebSocketP2PTransport.ts @@ -0,0 +1,21 @@ +import { WebSocketP2PTransport } from '@airgap/beacon-transport-libp2p' +import { P2PPairingRequest, StorageKey, Storage, NodeDistributions } from '@airgap/beacon-types' + +export class WalletWebSocketP2PTransport extends WebSocketP2PTransport< + P2PPairingRequest, + StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET +> { + constructor(name: string, storage: Storage, nodes?: NodeDistributions) { + super(name, storage, StorageKey.TRANSPORT_LIBP2P_PEERS_WALLET, nodes) + } + + public async addPeer( + newPeer: P2PPairingRequest, + sendPairingResponse: boolean = true + ): Promise { + await super.addPeer(newPeer) + if (sendPairingResponse) { + await this.client.sendPairingResponse(newPeer) // TODO: Should we have a confirmation here? + } + } +} diff --git a/scripts/blockchains/tezos.ts b/scripts/blockchains/tezos.ts index 2980ef7d9..ee7eb8869 100644 --- a/scripts/blockchains/tezos.ts +++ b/scripts/blockchains/tezos.ts @@ -182,7 +182,8 @@ export const tezosIosList: App[] = [ color: 'rgb(4, 235, 204)', logo: 'ios-airgap.png', universalLink: 'https://wallet.airgap.it', - deepLink: 'airgap-wallet://' + deepLink: 'airgap-wallet://', + supportedInteractionStandards: ['beaconLibp2p'] }, { key: 'plenty_wallet_ios', diff --git a/tsconfig.json b/tsconfig.json index ace8cef76..f47ae9806 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -45,6 +45,10 @@ "packages/beacon-transport-matrix/lib/beacon-transport-matrix", "packages/beacon-transport-matrix/lib" ], + "beacon-transport-libp2p": [ + "packages/beacon-transport-libp2p/lib/beacon-transport-libp2p", + "packages/beacon-transport-libp2p/lib" + ], "beacon-transport-postmessage": [ "packages/beacon-transport-postmessage/lib/beacon-transport-postmessage", "packages/beacon-transport-postmessage/lib"