diff --git a/.firebaserc b/.firebaserc index 1f21c258..3c4254eb 100644 --- a/.firebaserc +++ b/.firebaserc @@ -2,8 +2,8 @@ "targets": { "hexaonelabs": { "hosting": { - "hexa-lite": [ - "hexa-lite" + "app-hexa-lite": [ + "app-hexa-lite" ] } } diff --git a/.github/workflows/firebase-hosting-merge.yml b/.github/workflows/firebase-hosting-merge.yml index 3383b286..4289a6d6 100644 --- a/.github/workflows/firebase-hosting-merge.yml +++ b/.github/workflows/firebase-hosting-merge.yml @@ -29,6 +29,7 @@ jobs: touch .env.local echo NEXT_PUBLIC_APP_ONBOARD_APIKEY=${{ secrets.NEXT_PUBLIC_APP_ONBOARD_APIKEY }} >> .env.local echo NEXT_PUBLIC_APP_ANKR_APIKEY=${{ secrets.NEXT_PUBLIC_APP_ANKR_APIKEY }} >> .env.local + echo NEXT_PUBLIC_APP_COINGECKO_APIKEY=${{ secrets.NEXT_PUBLIC_APP_COINGECKO_APIKEY }} >> .env.local echo NEXT_PUBLIC_APP_VERSION=${{ steps.extract_version.outputs.version }} >> .env.local echo NEXT_PUBLIC_APP_BUILD_DATE=${{ steps.version.outputs.builddate }} >> .env.local echo NEXT_PUBLIC_APP_IS_PROD=true >> .env.local diff --git a/.github/workflows/firebase-hosting-pull-request.yml b/.github/workflows/firebase-hosting-pull-request.yml index 250f5e0e..72b4442a 100644 --- a/.github/workflows/firebase-hosting-pull-request.yml +++ b/.github/workflows/firebase-hosting-pull-request.yml @@ -24,6 +24,7 @@ jobs: touch .env.local echo NEXT_PUBLIC_APP_ONBOARD_APIKEY=${{ secrets.NEXT_PUBLIC_APP_ONBOARD_APIKEY }} >> .env.local echo NEXT_PUBLIC_APP_ANKR_APIKEY=${{ secrets.NEXT_PUBLIC_APP_ANKR_APIKEY }} >> .env.local + echo NEXT_PUBLIC_APP_COINGECKO_APIKEY=${{ secrets.NEXT_PUBLIC_APP_COINGECKO_APIKEY }} >> .env.local echo NEXT_PUBLIC_APP_VERSION=${{ steps.extract_version.outputs.version }} >> .env.local echo NEXT_PUBLIC_APP_BUILD_DATE=${{ steps.version.outputs.builddate }} >> .env.local echo NEXT_PUBLIC_APP_IS_PROD=true >> .env.local diff --git a/.gitignore b/.gitignore index 9924dc0c..183fed5c 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ yarn-error.log* press-paper rfp .firebase/ +*.log diff --git a/README.md b/README.md index 97c9899a..701312c0 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,6 @@ Hexa Lite is frictionless, secure, and reliable for everyone to use and enjoy th - [Ethers.js](https://docs.ethers.io/v5/) - [Ankr](https://ankr.com/) - [LiFi](https://li.fi/) -- [Magic](https://magic.link/) - [Chain Link](https://chain.link/) - [Lido](https://lido.fi/) - [Aave](https://aave.com/) @@ -59,10 +58,7 @@ Hexa Lite is a web-based platform that can be accessed from any device with a we Hexa Lite is deployed automatically using Github Actions. The deployment process is triggered when a new push is made to the master branch. The deployment process is managed by [Firebase Hosting](https://firebase.google.com/docs/hosting) and the project is available on [IPFS](https://ipfs.io/) using [Fleek](https://fleek.co/). ## Environment Variables -Hexa Lite uses environment variables to store sensitive data and API keys. The environment variables are stored in a .env file at the root of the project. The .env file is not commited to the repository and is ignored by Git. The .env file must be created manually and the environment variables must be provided by the user. The .env file must contain the following environment variables: - -- `REACT_APP_ONBOARD_APIKEY`: Onboard API key -- `REACT_APP_ANKR_APIKEY`: Ankr API key +Hexa Lite uses environment variables to store sensitive data and API keys. The environment variables are stored in a .env file at the root of the project. The .env file is not commited to the repository and is ignored by Git. The .env file must be created manually and the environment variables must be provided by the user. Checkout `./example.env` file for more information about the environment variables that are required. ## Contributing Contributions are welcome and appreciated. To contribute to Hexa Lite, please fork the repository, create a new branch and submit a pull request. For major changes, please open an issue first to discuss what you would like to change. diff --git a/environment.d.ts b/environment.d.ts index 8f15ab61..dd53706f 100644 --- a/environment.d.ts +++ b/environment.d.ts @@ -1,13 +1,71 @@ declare namespace NodeJS { export interface ProcessEnv { + /** + * API Key for the Onboard API + * @deprecated + */ readonly NEXT_PUBLIC_APP_ONBOARD_APIKEY: string; + /** + * API Key for the Ankr API + * @description Use this key to access the Ankr API + * to get user EVM Assets List + */ readonly NEXT_PUBLIC_APP_ANKR_APIKEY: string; + /** + * APP Version + */ readonly NEXT_PUBLIC_APP_VERSION: string; + /** + * APP Build Date + */ readonly NEXT_PUBLIC_APP_BUILD_DATE: string; + /** + * APP Environment Production enabled + */ readonly NEXT_PUBLIC_APP_IS_PROD: string; + + /** + * APP Environment is Offline. + * @description This is used for development purposes. + * If this is enabled, the app will not make any API calls and + * will use the mock data instead. + */ + readonly NEXT_PUBLIC_APP_IS_LOCAL: string; + + /** + * API Key for the Zerion API + * @description Use this key to access the Zerion API + * to get User EVM Wallet History transactions + */ + readonly NEXT_PUBLIC_APP_ZERION_APIKEY: string; + + /** + * API Key for the Coingecko API + * @description Use this key to access the Coingecko API + * to get the latest token prices + */ + readonly NEXT_PUBLIC_APP_COINGECKO_APIKEY: string; + + /** + * Enable/Disable Emulator for Firebase + */ + readonly NEXT_PUBLIC_ENABLE_EMULATORS: string; + + /** + * FIREBASE Configurations for the Firebase SDK + * @description Following are the configurations required for the Firebase SDK + */ + readonly NEXT_PUBLIC_APP_FIREBASE_APIKEY: string; + readonly NEXT_PUBLIC_APP_FIREBASE_AUTHDOMAIN: string; + readonly NEXT_PUBLIC_APP_FIREBASE_PROJECTID: string; + readonly NEXT_PUBLIC_APP_FIREBASE_STORAGEBUCKET: string; + readonly NEXT_PUBLIC_APP_FIREBASE_MESSAGINGSENDERID: string; + readonly NEXT_PUBLIC_APP_FIREBASE_APPID: string; + readonly NEXT_PUBLIC_APP_FIREBASE_DATABASEURL: string; + } } \ No newline at end of file diff --git a/example.env b/example.env new file mode 100644 index 00000000..a43fa608 --- /dev/null +++ b/example.env @@ -0,0 +1,18 @@ +NEXT_PUBLIC_APP_ONBOARD_APIKEY= +NEXT_PUBLIC_APP_ANKR_APIKEY= +NEXT_PUBLIC_APP_ZERION_APIKEY= +NEXT_PUBLIC_APP_COINGECKO_APIKEY= +NEXT_PUBLIC_APP_VERSION= +NEXT_PUBLIC_APP_BUILD_DATE= +NEXT_PUBLIC_APP_IS_PROD= +NEXT_PUBLIC_APP_IS_LOCAL= +NEXT_PUBLIC_ENABLE_EMULATORS= + +NEXT_PUBLIC_APP_FIREBASE_APIKEY= +NEXT_PUBLIC_APP_FIREBASE_AUTHDOMAIN= +NEXT_PUBLIC_APP_FIREBASE_PROJECTID= +NEXT_PUBLIC_APP_FIREBASE_STORAGEBUCKET= +NEXT_PUBLIC_APP_FIREBASE_MESSAGINGSENDERID= +NEXT_PUBLIC_APP_FIREBASE_APPID= +NEXT_PUBLIC_APP_FIREBASE_DATABASEURL= + diff --git a/firebase.config.ts b/firebase.config.ts index dcef6cbf..2c3c7338 100644 --- a/firebase.config.ts +++ b/firebase.config.ts @@ -1,6 +1,16 @@ // Import the functions you need from the SDKs you need -import { initializeApp } from "firebase/app"; -import { getDatabase } from "firebase/database"; +import { FirebaseApp, getApps, initializeApp } from "firebase/app"; +import { + Auth, + browserPopupRedirectResolver, + indexedDBLocalPersistence, + initializeAuth, + browserLocalPersistence, + browserSessionPersistence, + getAuth, + connectAuthEmulator, +} from "firebase/auth"; +import { Database, connectDatabaseEmulator, getDatabase } from "firebase/database"; // TODO: Add SDKs for Firebase products that you want to use // https://firebase.google.com/docs/web/setup#available-libraries @@ -15,10 +25,23 @@ const firebaseConfig = { databaseURL: process.env.NEXT_PUBLIC_APP_FIREBASE_DATABASEURL, }; -// Initialize Firebase -const app = initializeApp(firebaseConfig); +let _app!: FirebaseApp; +let _auth!: Auth; +let _database!: Database; -// Initialize Realtime Database and get a reference to the service -const database = getDatabase(app); +if (!getApps().length) { + // Initialize Firebase + _app = initializeApp(firebaseConfig, 'hexa-lite'); + // Initialize Realtime Database and get a reference to the service + _database = getDatabase(_app); + // Initialize Auth + _auth = getAuth(_app); + // Emulator setup + if (process.env.NEXT_PUBLIC_ENABLE_EMULATORS === 'true') { + connectDatabaseEmulator(_database, 'localhost', 9000); + connectAuthEmulator(_auth, 'http://127.0.0.1:9099'); + } +} -export { database } \ No newline at end of file +export const database = _database; +export const auth = _auth; diff --git a/firebase.json b/firebase.json index 65640fd3..c6fb8a92 100644 --- a/firebase.json +++ b/firebase.json @@ -1,6 +1,6 @@ { "hosting": { - "target": "hexa-lite", + "target": "app-hexa-lite", "public": "build", "ignore": [ "firebase.json", @@ -13,5 +13,18 @@ "destination": "/index.html" } ] + }, + "emulators": { + "auth": { + "port": 9099 + }, + "database": { + "port": 9000 + }, + "ui": { + "enabled": true, + "port": 9001 + }, + "singleProjectMode": true } } diff --git a/next.config.js b/next.config.js index 9d235408..1748821b 100755 --- a/next.config.js +++ b/next.config.js @@ -12,4 +12,8 @@ module.exports = { '@lifi/wallet-management', '@0xsquid/widget' ], + compiler: { + // Remove console logs only in production, excluding error logs + removeConsole: process.env.NODE_ENV === "production" ? { exclude: ["error"] } : false + } } diff --git a/package-lock.json b/package-lock.json index bae2d402..b2e683c7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@aave/math-utils": "^1.21.1", "@avalabs/avalanchejs": "^3.17.0", "@bgd-labs/aave-address-book": "^2.19.0", + "@bitcoinerlab/secp256k1": "^1.1.1", "@capacitor-community/barcode-scanner": "^4.0.1", "@capacitor/android": "^5.0.0", "@capacitor/core": "^5.0.0", @@ -21,10 +22,12 @@ "@capacitor/ios": "^5.0.0", "@capacitor/status-bar": "^5.0.0", "@cosmjs/stargate": "^0.32.1", + "@hexaonelabs/firebase-web3connect": "^0.0.9-alpha.10", "@ionic/react": "latest", "@ionic/react-router": "latest", + "@ionic/storage": "^4.0.0", "@khmyznikov/pwa-install": "^0.2.7", - "@lifi/widget": "^2.10.1", + "@lifi/widget": "^2.10.2", "@magic-ext/avalanche": "^16.4.0", "@magic-ext/bitcoin": "^16.4.0", "@magic-ext/cosmos": "^16.4.0", @@ -33,7 +36,8 @@ "@moonpay/moonpay-js": "^0.5.0", "@moonpay/moonpay-react": "^1.6.1", "@next/third-parties": "^14.1.4", - "@solana/web3.js": "^1.87.6", + "@solana/spl-token": "^0.4.6", + "@solana/web3.js": "^1.93.0", "@solendprotocol/solend-sdk": "^0.7.6", "@types/jest": "^26.0.20", "@types/node": "^12.19.15", @@ -41,9 +45,13 @@ "@types/react-dom": "^18.0.6", "@types/react-router": "^5.1.11", "@types/react-router-dom": "^5.1.7", - "bitcoinjs-lib": "^6.1.5", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.6", + "bs58": "^5.0.0", "cors": "^2.8.5", "dayjs": "^1.11.10", + "ed25519-hd-key": "^1.3.0", "ethereum-blockies-base64": "^1.0.2", "ethers": "^5.7.2", "firebase": "^10.7.1", @@ -60,7 +68,9 @@ "react-router": "^5.3.4", "react-router-dom": "^5.3.4", "react-use-gesture": "^9.1.3", + "reflect-metadata": "^0.1.14", "reselect": "^5.0.0", + "stream-browserify": "^3.0.0", "swagger-ui-react": "^5.10.5", "swr": "^2.2.4", "uuid": "^9.0.1" @@ -75,6 +85,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/bs58": "^4.0.4", "@types/cors": "^2.8.17", "@types/jest": "^27.5.2", "@types/node": "^16.18.36", @@ -138,7 +149,6 @@ }, "node_modules/@0xsquid/widget": { "version": "1.6.27", - "resolved": "https://registry.npmjs.org/@0xsquid/widget/-/widget-1.6.27.tgz", "integrity": "sha512-W6+xAiOSz3BS1vKGXzcriVzYvgh/QqMJTOpEwPwJesf+JGuLeq/CzF5Ycljt4AdRy7gOep2Z453+EJ50El2Utw==", "dependencies": { "@0xsquid/sdk": "1.14.8", @@ -201,6 +211,15 @@ "xstream": "^11.14.0" } }, + "node_modules/@0xsquid/widget/node_modules/cosmjs-types": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.8.0.tgz", + "integrity": "sha512-Q2Mj95Fl0PYMWEhA2LuGEIhipF7mQwd9gTQ85DdP9jjjopeoGaDxvmPa5nakNzsq7FnO1DMTatXTAx6bxMH7Lg==", + "dependencies": { + "long": "^4.0.0", + "protobufjs": "~6.11.2" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -212,7 +231,6 @@ }, "node_modules/@aave/contract-helpers": { "version": "1.21.1", - "resolved": "https://registry.npmjs.org/@aave/contract-helpers/-/contract-helpers-1.21.1.tgz", "integrity": "sha512-sp5m0KZ0lInlBfTfZnbR7yh0jG1Q+5wvM42H7JBMOdjxb1jWKWkAWg0DFQJzXlDsBo+bk6BS/sBHa4Eql0IA8A==", "dependencies": { "isomorphic-unfetch": "^3.1.0" @@ -226,7 +244,6 @@ }, "node_modules/@aave/math-utils": { "version": "1.21.1", - "resolved": "https://registry.npmjs.org/@aave/math-utils/-/math-utils-1.21.1.tgz", "integrity": "sha512-oFZafJ5MeNtiqgJBEsmvvGlFtdFauWX0wI9B+wikqT//LVc0PYS0IX49UItv6yoTcd0I7IDq3Zv8V47e3lhBOw==", "peerDependencies": { "bignumber.js": "^9.x", @@ -258,7 +275,6 @@ }, "node_modules/@avalabs/avalanchejs": { "version": "3.17.0", - "resolved": "https://registry.npmjs.org/@avalabs/avalanchejs/-/avalanchejs-3.17.0.tgz", "integrity": "sha512-Fv5Vu5hwzPNN4e7ER9TFIFU9msOZa+C28BcZUVW5TnabpglOpL46hA3iihRGTDRx1Y95cra29uctPqDRnVTMpQ==", "dependencies": { "assert": "2.0.0", @@ -315,6 +331,25 @@ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.3.tgz", "integrity": "sha512-/xJX0/VTPcbc5xQE2VUP91y1xN8q/rDfhEzLm+vLc3hYvb5+qHCnpJRuFcrKn63zumK/sCwYYzhG8HP78JYSTA==" }, + "node_modules/@avalabs/avalanchejs/node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/@avalabs/avalanchejs/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==" + }, "node_modules/@avalabs/avalanchejs/node_modules/ethers": { "version": "6.0.8", "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.0.8.tgz", @@ -367,774 +402,782 @@ "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" }, "node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-3.0.0.tgz", - "integrity": "sha512-IzSgsrxUcsrejQbPVilIKy16kAT52EwB6zSaI+M3xxIhKh5+aldEyvI+z6erM7TCLB2BJsFrtHjp6/4/sr+3dA==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/crc32/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/crc32c": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-3.0.0.tgz", - "integrity": "sha512-ENNPPManmnVJ4BTXlOjAgD7URidbAznURqD0KvfREyc4o20DPYdEldU1f5cQ7Jbj0CJJSPaMIk/9ZshdB3210w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "node_modules/@aws-crypto/crc32c/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, - "node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", - "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", - "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/sha1-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-3.0.0.tgz", - "integrity": "sha512-NJth5c997GLHs6nOYTzFKTbYdMNA6/1XlKVgnZoaZcQ7z7UJlOgj2JdbHE8tiYLS3fzXNCguct77SPGat2raSw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha1-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", - "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", - "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dependencies": { - "@aws-crypto/util": "^3.0.0", + "@aws-crypto/util": "^5.2.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", - "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dependencies": { - "tslib": "^1.11.1" + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@aws-crypto/util": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", - "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dependencies": { "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@aws-crypto/util/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@aws-sdk/client-s3": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.504.0.tgz", - "integrity": "sha512-J8xPsnk7EDwalFSaDxPFNT2+x99nG2uQTpsLXAV3bWbT1nD/JZ+fase9GqxM11v6WngzqRvTQg26ljMn5hQSKA==", - "dependencies": { - "@aws-crypto/sha1-browser": "3.0.0", - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.504.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/credential-provider-node": "3.504.0", - "@aws-sdk/middleware-bucket-endpoint": "3.502.0", - "@aws-sdk/middleware-expect-continue": "3.502.0", - "@aws-sdk/middleware-flexible-checksums": "3.502.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-location-constraint": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-sdk-s3": "3.502.0", - "@aws-sdk/middleware-signing": "3.502.0", - "@aws-sdk/middleware-ssec": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/signature-v4-multi-region": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@aws-sdk/xml-builder": "3.496.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/eventstream-serde-browser": "^2.1.1", - "@smithy/eventstream-serde-config-resolver": "^2.1.1", - "@smithy/eventstream-serde-node": "^2.1.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-blob-browser": "^2.1.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/hash-stream-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/md5-js": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-stream": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "@smithy/util-waiter": "^2.1.1", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.598.0.tgz", + "integrity": "sha512-UMxftsgF6j1vzm4Qd9vQJHs2he1NQCWWV8esZfmNFq23OpUC2BPMxkqi13ZQ9tnTAZUNs7yFT/x4Zsi/wpRZEw==", + "dependencies": { + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.598.0", + "@aws-sdk/client-sts": "3.598.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.598.0", + "@aws-sdk/middleware-bucket-endpoint": "3.598.0", + "@aws-sdk/middleware-expect-continue": "3.598.0", + "@aws-sdk/middleware-flexible-checksums": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-location-constraint": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-sdk-s3": "3.598.0", + "@aws-sdk/middleware-signing": "3.598.0", + "@aws-sdk/middleware-ssec": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/signature-v4-multi-region": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@aws-sdk/xml-builder": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/eventstream-serde-browser": "^3.0.2", + "@smithy/eventstream-serde-config-resolver": "^3.0.1", + "@smithy/eventstream-serde-node": "^3.0.2", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-blob-browser": "^3.1.0", + "@smithy/hash-node": "^3.0.1", + "@smithy/hash-stream-node": "^3.1.0", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/md5-js": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-stream": "^3.0.2", + "@smithy/util-utf8": "^3.0.0", + "@smithy/util-waiter": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-sso": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.502.0.tgz", - "integrity": "sha512-OZAYal1+PQgUUtWiHhRayDtX0OD+XpXHKAhjYgEIPbyhQaCMp3/Bq1xDX151piWXvXqXLJHFKb8DUEqzwGO9QA==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.598.0.tgz", + "integrity": "sha512-nOI5lqPYa+YZlrrzwAJywJSw3MKVjvu6Ge2fCqQUNYMfxFB0NAaDFnl0EPjXi+sEbtCuz/uWE77poHbqiZ+7Iw==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.504.0.tgz", - "integrity": "sha512-ODA33/nm2srhV08EW0KZAP577UgV0qjyr7Xp2yEo8MXWL4ZqQZprk1c+QKBhjr4Djesrm0VPmSD/np0mtYP68A==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.504.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-signing": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.598.0.tgz", + "integrity": "sha512-jfdH1pAO9Tt8Nkta/JJLoUnwl7jaRdxToQTJfUtE+o3+0JP5sA4LfC2rBkJSWcU5BdAA+kyOs5Lv776DlN04Vg==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sts": "3.598.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.504.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/client-sts": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.504.0.tgz", - "integrity": "sha512-IESs8FkL7B/uY+ml4wgoRkrr6xYo4PizcNw6JX17eveq1gRBCPKeGMjE6HTDOcIYZZ8rqz/UeuH3JD4UhrMOnA==", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.496.0", - "@aws-sdk/middleware-host-header": "3.502.0", - "@aws-sdk/middleware-logger": "3.502.0", - "@aws-sdk/middleware-recursion-detection": "3.502.0", - "@aws-sdk/middleware-user-agent": "3.502.0", - "@aws-sdk/region-config-resolver": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@aws-sdk/util-user-agent-browser": "3.502.0", - "@aws-sdk/util-user-agent-node": "3.502.0", - "@smithy/config-resolver": "^2.1.1", - "@smithy/core": "^1.3.1", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/hash-node": "^2.1.1", - "@smithy/invalid-dependency": "^2.1.1", - "@smithy/middleware-content-length": "^2.1.1", - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-body-length-browser": "^2.1.1", - "@smithy/util-body-length-node": "^2.2.1", - "@smithy/util-defaults-mode-browser": "^2.1.1", - "@smithy/util-defaults-mode-node": "^2.1.1", - "@smithy/util-endpoints": "^1.1.1", - "@smithy/util-middleware": "^2.1.1", - "@smithy/util-retry": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.598.0.tgz", + "integrity": "sha512-bXhz/cHL0iB9UH9IFtMaJJf4F8mV+HzncETCRFzZ9SyUMt5rP9j8A7VZknqGYSx/6mI8SsB1XJQkWSbhn6FiSQ==", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.598.0", + "@aws-sdk/core": "3.598.0", + "@aws-sdk/credential-provider-node": "3.598.0", + "@aws-sdk/middleware-host-header": "3.598.0", + "@aws-sdk/middleware-logger": "3.598.0", + "@aws-sdk/middleware-recursion-detection": "3.598.0", + "@aws-sdk/middleware-user-agent": "3.598.0", + "@aws-sdk/region-config-resolver": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@aws-sdk/util-user-agent-browser": "3.598.0", + "@aws-sdk/util-user-agent-node": "3.598.0", + "@smithy/config-resolver": "^3.0.2", + "@smithy/core": "^2.2.1", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/hash-node": "^3.0.1", + "@smithy/invalid-dependency": "^3.0.1", + "@smithy/middleware-content-length": "^3.0.1", + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.4", + "@smithy/util-defaults-mode-node": "^3.0.4", + "@smithy/util-endpoints": "^2.0.2", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/credential-provider-node": "^3.504.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/core": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.496.0.tgz", - "integrity": "sha512-yT+ug7Cw/3eJi7x2es0+46x12+cIJm5Xv+GPWsrTFD1TKgqO/VPEgfDtHFagDNbFmjNQA65Ygc/kEdIX9ICX/A==", - "dependencies": { - "@smithy/core": "^1.3.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.598.0.tgz", + "integrity": "sha512-HaSjt7puO5Cc7cOlrXFCW0rtA0BM9lvzjl56x0A20Pt+0wxXGeTOZZOkXQIepbrFkV2e/HYukuT9e99vXDm59g==", + "dependencies": { + "@smithy/core": "^2.2.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "fast-xml-parser": "4.2.5", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.502.0.tgz", - "integrity": "sha512-KIB8Ae1Z7domMU/jU4KiIgK4tmYgvuXlhR54ehwlVHxnEoFPoPuGHFZU7oFn79jhhSLUFQ1lRYMxP0cEwb7XeQ==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.598.0.tgz", + "integrity": "sha512-vi1khgn7yXzLCcgSIzQrrtd2ilUM0dWodxj3PQ6BLfP0O+q1imO3hG1nq7DVyJtq7rFHs6+9N8G4mYvTkxby2w==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.503.1", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.503.1.tgz", - "integrity": "sha512-rTdlFFGoPPFMF2YjtlfRuSgKI+XsF49u7d98255hySwhsbwd3Xp+utTTPquxP+CwDxMHbDlI7NxDzFiFdsoZug==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.598.0.tgz", + "integrity": "sha512-N7cIafi4HVlQvEgvZSo1G4T9qb/JMLGMdBsDCT5XkeJrF0aptQWzTFH0jIdZcLrMYvzPcuEyO3yCBe6cy/ba0g==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/util-stream": "^3.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.504.0.tgz", - "integrity": "sha512-ODICLXfr8xTUd3wweprH32Ge41yuBa+u3j0JUcLdTUO1N9ldczSMdo8zOPlP0z4doqD3xbnqMkjNQWgN/Q+5oQ==", - "dependencies": { - "@aws-sdk/client-sts": "3.504.0", - "@aws-sdk/credential-provider-env": "3.502.0", - "@aws-sdk/credential-provider-process": "3.502.0", - "@aws-sdk/credential-provider-sso": "3.504.0", - "@aws-sdk/credential-provider-web-identity": "3.504.0", - "@aws-sdk/types": "3.502.0", - "@smithy/credential-provider-imds": "^2.2.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.598.0.tgz", + "integrity": "sha512-/ppcIVUbRwDIwJDoYfp90X3+AuJo2mvE52Y1t2VSrvUovYn6N4v95/vXj6LS8CNDhz2jvEJYmu+0cTMHdhI6eA==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.598.0", + "@aws-sdk/credential-provider-http": "3.598.0", + "@aws-sdk/credential-provider-process": "3.598.0", + "@aws-sdk/credential-provider-sso": "3.598.0", + "@aws-sdk/credential-provider-web-identity": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.598.0" } }, "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.504.0.tgz", - "integrity": "sha512-6+V5hIh+tILmUjf2ZQWQINR3atxQVgH/bFrGdSR/sHSp/tEgw3m0xWL3IRslWU1e4/GtXrfg1iYnMknXy68Ikw==", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.502.0", - "@aws-sdk/credential-provider-http": "3.503.1", - "@aws-sdk/credential-provider-ini": "3.504.0", - "@aws-sdk/credential-provider-process": "3.502.0", - "@aws-sdk/credential-provider-sso": "3.504.0", - "@aws-sdk/credential-provider-web-identity": "3.504.0", - "@aws-sdk/types": "3.502.0", - "@smithy/credential-provider-imds": "^2.2.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.598.0.tgz", + "integrity": "sha512-sXTlqL5I/awlF9Dg2MQ17SfrEaABVnsj2mf4jF5qQrIRhfbvQOIYdEqdy8Rn1AWlJMz/N450SGzc0XJ5owxxqw==", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.598.0", + "@aws-sdk/credential-provider-http": "3.598.0", + "@aws-sdk/credential-provider-ini": "3.598.0", + "@aws-sdk/credential-provider-process": "3.598.0", + "@aws-sdk/credential-provider-sso": "3.598.0", + "@aws-sdk/credential-provider-web-identity": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.502.0.tgz", - "integrity": "sha512-fJJowOjQ4infYQX0E1J3xFVlmuwEYJAFk0Mo1qwafWmEthsBJs+6BR2RiWDELHKrSK35u4Pf3fu3RkYuCtmQFw==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.598.0.tgz", + "integrity": "sha512-rM707XbLW8huMk722AgjVyxu2tMZee++fNA8TJVNgs1Ma02Wx6bBrfIvlyK0rCcIRb0WdQYP6fe3Xhiu4e8IBA==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.504.0.tgz", - "integrity": "sha512-4MgH2or2SjPzaxM08DCW+BjaX4DSsEGJlicHKmz6fh+w9JmLh750oXcTnbvgUeVz075jcs6qTKjvUcsdGM/t8Q==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.598.0.tgz", + "integrity": "sha512-5InwUmrAuqQdOOgxTccRayMMkSmekdLk6s+az9tmikq0QFAHUCtofI+/fllMXSR9iL6JbGYi1940+EUmS4pHJA==", "dependencies": { - "@aws-sdk/client-sso": "3.502.0", - "@aws-sdk/token-providers": "3.504.0", - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/client-sso": "3.598.0", + "@aws-sdk/token-providers": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.504.0.tgz", - "integrity": "sha512-L1ljCvGpIEFdJk087ijf2ohg7HBclOeB1UgBxUBBzf4iPRZTQzd2chGaKj0hm2VVaXz7nglswJeURH5PFcS5oA==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.598.0.tgz", + "integrity": "sha512-GV5GdiMbz5Tz9JO4NJtRoFXjW0GPEujA0j+5J/B723rTN+REHthJu48HdBKouHGhdzkDWkkh1bu52V02Wprw8w==", "dependencies": { - "@aws-sdk/client-sts": "3.504.0", - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.598.0" } }, "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.502.0.tgz", - "integrity": "sha512-mUSP2DUcjhO5zM2b21CvZ9AqwI8DaAeZA6NYHOxWGTV9BUxHcdGWXEjDkcVj9CQ0gvNwTtw6B5L/q52rVAnZbw==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.598.0.tgz", + "integrity": "sha512-PM7BcFfGUSkmkT6+LU9TyJiB4S8yI7dfuKQDwK5ZR3P7MKaK4Uj4yyDiv0oe5xvkF6+O2+rShj+eh8YuWkOZ/Q==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-arn-parser": "3.495.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-config-provider": "^2.2.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.502.0.tgz", - "integrity": "sha512-DxfAuBVuPSt8as9xP57o8ks6ySVSjwO2NNNAdpLwk4KhEAPYEpHlf2yWYorYLrS+dDmwfYgOhRNoguuBdCu6ow==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.598.0.tgz", + "integrity": "sha512-ZuHW18kaeHR8TQyhEOYMr8VwiIh0bMvF7J1OTqXHxDteQIavJWA3CbfZ9sgS4XGtrBZDyHJhjZKeCfLhN2rq3w==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.502.0.tgz", - "integrity": "sha512-kCt2zQDFumz/LnJJJOSd2GW4dr8oT8YMJKgxC/pph3aRXoSHXRwhrMbFnQ8swEE9vjywxtcED8sym0b0tNhhoA==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.598.0.tgz", + "integrity": "sha512-xukAzds0GQXvMEY9G6qt+CzwVzTx8NyKKh04O2Q+nOch6QQ8Rs+2kTRy3Z4wQmXq2pK9hlOWb5nXA7HWpmz6Ng==", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.502.0", - "@smithy/is-array-buffer": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-sdk/types": "3.598.0", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.502.0.tgz", - "integrity": "sha512-EjnG0GTYXT/wJBmm5/mTjDcAkzU8L7wQjOzd3FTXuTCNNyvAvwrszbOj5FlarEw5XJBbQiZtBs+I5u9+zy560w==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.598.0.tgz", + "integrity": "sha512-WiaG059YBQwQraNejLIi0gMNkX7dfPZ8hDIhvMr5aVPRbaHH8AYF3iNSsXYCHvA2Cfa1O9haYXsuMF9flXnCmA==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.502.0.tgz", - "integrity": "sha512-fLRwPuTZvEWQkPjys03m3D6tYN4kf7zU6+c8mJxwvEg+yfBuv2RBsbd+Vn2bTisUjXvIg1kyBzONlpHoIyFneg==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.598.0.tgz", + "integrity": "sha512-8oybQxN3F1ISOMULk7JKJz5DuAm5hCUcxMW9noWShbxTJuStNvuHf/WLUzXrf8oSITyYzIHPtf8VPlKR7I3orQ==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-logger": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.502.0.tgz", - "integrity": "sha512-FDyv6K4nCoHxbjLGS2H8ex8I0KDIiu4FJgVRPs140ZJy6gE5Pwxzv6YTzZGLMrnqcIs9gh065Lf6DjwMelZqaw==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.598.0.tgz", + "integrity": "sha512-bxBjf/VYiu3zfu8SYM2S9dQQc3tz5uBAOcPz/Bt8DyyK3GgOpjhschH/2XuUErsoUO1gDJqZSdGOmuHGZQn00Q==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.502.0.tgz", - "integrity": "sha512-hvbyGJbxeuezxOu8VfFmcV4ql1hKXLxHTe5FNYfEBat2KaZXVhc1Hg+4TvB06/53p+E8J99Afmumkqbxs2esUA==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.598.0.tgz", + "integrity": "sha512-vjT9BeFY9FeN0f8hm2l6F53tI0N5bUq6RcDkQXKNabXBnQxKptJRad6oP2X5y3FoVfBLOuDkQgiC2940GIPxtQ==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.502.0.tgz", - "integrity": "sha512-GbGugrfyL5bNA/zw8iQll92yXBONfWSC8Ns00DtkOU1saPXp4/7WHtyyZGYdvPa73T1IsuZy9egpoYRBmRcd5Q==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.598.0.tgz", + "integrity": "sha512-5AGtLAh9wyK6ANPYfaKTqJY1IFJyePIxsEbxa7zS6REheAqyVmgJFaGu3oQ5XlxfGr5Uq59tFTRkyx26G1HkHA==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-arn-parser": "3.495.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/util-config-provider": "^2.2.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-arn-parser": "3.568.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-signing": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.502.0.tgz", - "integrity": "sha512-4hF08vSzJ7L6sB+393gOFj3s2N6nLusYS0XrMW6wYNFU10IDdbf8Z3TZ7gysDJJHEGQPmTAesPEDBsasGWcMxg==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.598.0.tgz", + "integrity": "sha512-XKb05DYx/aBPqz6iCapsCbIl8aD8EihTuPCs51p75QsVfbQoVr4TlFfIl5AooMSITzojdAQqxt021YtvxjtxIQ==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-middleware": "^2.1.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/types": "^3.1.0", + "@smithy/util-middleware": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.502.0.tgz", - "integrity": "sha512-1nidVTIba6/aVjjzD/WNqWdzSyTrXOHO3Ddz2MGD8S1yGSrYz4iYaq4Bm/uosfdr8B1L0Ws0pjdRXrNfzSw/DQ==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.598.0.tgz", + "integrity": "sha512-f0p2xP8IC1uJ5e/tND1l81QxRtRFywEdnbtKCE0H6RSn4UIt2W3Dohe1qQDbnh27okF0PkNW6BJGdSAz3p7qbA==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.502.0.tgz", - "integrity": "sha512-TxbBZbRiXPH0AUxegqiNd9aM9zNSbfjtBs5MEfcBsweeT/B2O7K1EjP9+CkB8Xmk/5FLKhAKLr19b1TNoE27rw==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.598.0.tgz", + "integrity": "sha512-4tjESlHG5B5MdjUaLK7tQs/miUtHbb6deauQx8ryqSBYOhfHVgb1ZnzvQR0bTrhpqUg0WlybSkDaZAICf9xctg==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@aws-sdk/util-endpoints": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@aws-sdk/util-endpoints": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.502.0.tgz", - "integrity": "sha512-mxmsX2AGgnSM+Sah7mcQCIneOsJQNiLX0COwEttuf8eO+6cLMAZvVudH3BnWTfea4/A9nuri9DLCqBvEmPrilg==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.598.0.tgz", + "integrity": "sha512-oYXhmTokSav4ytmWleCr3rs/1nyvZW/S0tdi6X7u+dLNL5Jee+uMxWGzgOrWK6wrQOzucLVjS4E/wA11Kv2GTw==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/types": "^2.9.1", - "@smithy/util-config-provider": "^2.2.1", - "@smithy/util-middleware": "^2.1.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.502.0.tgz", - "integrity": "sha512-NpOXtUXH0ZAgnyI3Y3s2fPrgwbsWoNMwdoXdFZvH0eDzzX80tim7Yuy6dzVA5zrxSzOYs1xjcOhM+4CmM0QZiw==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.598.0.tgz", + "integrity": "sha512-1r/EyTrO1gSa1FirnR8V7mabr7gk+l+HkyTI0fcTSr8ucB7gmYyW6WjkY8JCz13VYHFK62usCEDS7yoJoJOzTA==", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "3.502.0", - "@aws-sdk/types": "3.502.0", - "@smithy/protocol-http": "^3.1.1", - "@smithy/signature-v4": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/middleware-sdk-s3": "3.598.0", + "@aws-sdk/types": "3.598.0", + "@smithy/protocol-http": "^4.0.1", + "@smithy/signature-v4": "^3.1.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/token-providers": { - "version": "3.504.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.504.0.tgz", - "integrity": "sha512-YIJWWsZi2ClUiILS1uh5L6VjmCUSTI6KKMuL9DkGjYqJ0aI6M8bd8fT9Wm7QmXCyjcArTgr/Atkhia4T7oKvzQ==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.598.0.tgz", + "integrity": "sha512-TKY1EVdHVBnZqpyxyTHdpZpa1tUpb6nxVeRNn1zWG8QB5MvH4ALLd/jR+gtmWDNQbIG4cVuBOZFVL8hIYicKTA==", "dependencies": { - "@aws-sdk/client-sso-oidc": "3.504.0", - "@aws-sdk/types": "3.502.0", - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.598.0" } }, "node_modules/@aws-sdk/types": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.502.0.tgz", - "integrity": "sha512-M0DSPYe/gXhwD2QHgoukaZv5oDxhW3FfvYIrJptyqUq3OnPJBcDbihHjrE0PBtfh/9kgMZT60/fQ2NVFANfa2g==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.598.0.tgz", + "integrity": "sha512-742uRl6z7u0LFmZwDrFP6r1wlZcgVPw+/TilluDJmCAR8BgRw3IR+743kUXKBGd8QZDRW2n6v/PYsi/AWCDDMQ==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.495.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.495.0.tgz", - "integrity": "sha512-hwdA3XAippSEUxs7jpznwD63YYFR+LtQvlEcebPTgWR9oQgG9TfS+39PUfbnEeje1ICuOrN3lrFqFbmP9uzbMg==", + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.568.0.tgz", + "integrity": "sha512-XUKJWWo+KOB7fbnPP0+g/o5Ulku/X53t7i/h+sPHr5xxYTJJ9CYnbToo95mzxe7xWvkLrsNtJ8L+MnNn9INs2w==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-endpoints": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.502.0.tgz", - "integrity": "sha512-6LKFlJPp2J24r1Kpfoz5ESQn+1v5fEjDB3mtUKRdpwarhm3syu7HbKlHCF3KbcCOyahobvLvhoedT78rJFEeeg==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.598.0.tgz", + "integrity": "sha512-Qo9UoiVVZxcOEdiOMZg3xb1mzkTxrhd4qSlg5QQrfWPJVx/QOg+Iy0NtGxPtHtVZNHZxohYwDwV/tfsnDSE2gQ==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", - "@smithy/util-endpoints": "^1.1.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", + "@smithy/util-endpoints": "^2.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-locate-window": { - "version": "3.495.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.495.0.tgz", - "integrity": "sha512-MfaPXT0kLX2tQaR90saBT9fWQq2DHqSSJRzW+MZWsmF+y5LGCOhO22ac/2o6TKSQm7h0HRc2GaADqYYYor62yg==", + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.502.0.tgz", - "integrity": "sha512-v8gKyCs2obXoIkLETAeEQ3AM+QmhHhst9xbM1cJtKUGsRlVIak/XyyD+kVE6kmMm1cjfudHpHKABWk9apQcIZQ==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.598.0.tgz", + "integrity": "sha512-36Sxo6F+ykElaL1mWzWjlg+1epMpSe8obwhCN1yGE7Js9ywy5U6k6l+A3q3YM9YRbm740sNxncbwLklMvuhTKw==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/types": "^2.9.1", + "@aws-sdk/types": "3.598.0", + "@smithy/types": "^3.1.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.502.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.502.0.tgz", - "integrity": "sha512-9RjxpkGZKbTdl96tIJvAo+vZoz4P/cQh36SBUt9xfRfW0BtsaLyvSrvlR5wyUYhvRcC12Axqh/8JtnAPq//+Vw==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.598.0.tgz", + "integrity": "sha512-oyWGcOlfTdzkC6SVplyr0AGh54IMrDxbhg5RxJ5P+V4BKfcDoDcZV9xenUk9NsOi9MuUjxMumb9UJGkDhM1m0A==", "dependencies": { - "@aws-sdk/types": "3.502.0", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@aws-sdk/types": "3.598.0", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" }, "peerDependencies": { "aws-crt": ">=1.0.0" @@ -1145,137 +1188,126 @@ } } }, - "node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", - "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", - "dependencies": { - "tslib": "^2.3.1" - } - }, "node_modules/@aws-sdk/xml-builder": { - "version": "3.496.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.496.0.tgz", - "integrity": "sha512-GvEjh537IIeOw1ZkZuB37sV12u+ipS5Z1dwjEC/HAvhl5ac23ULtTr1/n+U1gLNN+BAKSWjKiQ2ksj8DiUzeyw==", + "version": "3.598.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.598.0.tgz", + "integrity": "sha512-ZIa2RK7CHFTZ4gwK77WRtsZ6vF7xwRXxJ8KQIxK2duhoTVcn0xYxpFLdW9WZZZvdP9GIF3Loqvf8DRdeU5Jc7Q==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", - "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/generator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dependencies": { - "color-convert": "^1.9.0" + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "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==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/types": "^7.24.7" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "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==", "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=0.8.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "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==", + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dependencies": { - "has-flag": "^3.0.0" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "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==", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", - "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", - "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -1346,10 +1378,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", - "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", - "dev": true, + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "bin": { "parser": "bin/babel-parser.js" }, @@ -1358,9 +1389,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", - "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.7.tgz", + "integrity": "sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1380,13 +1411,54 @@ "node": ">=6.9.0" } }, + "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==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@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.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, "node_modules/@babel/types": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", - "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -1395,10 +1467,29 @@ }, "node_modules/@bgd-labs/aave-address-book": { "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@bgd-labs/aave-address-book/-/aave-address-book-2.19.0.tgz", "integrity": "sha512-JrZOZqzunJqFe4+/ZpL3vD7ddtGjjlBRCnMeQ68egNBAB2CYXvkXj6pSZLJBWklkoLgh17or1IdAQHTMYtBSsg==" }, - "node_modules/@braintree/sanitize-url": { + "node_modules/@bitcoinerlab/secp256k1": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@bitcoinerlab/secp256k1/-/secp256k1-1.1.1.tgz", + "integrity": "sha512-uhjW51WfVLpnHN7+G0saDcM/k9IqcyTbZ+bDgLF3AX8V/a3KXSE9vn7UPBrcdU72tp0J4YPR7BHp2m7MLAZ/1Q==", + "dependencies": { + "@noble/hashes": "^1.1.5", + "@noble/secp256k1": "^1.7.1" + } + }, + "node_modules/@bitcoinerlab/secp256k1/node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@braintree/sanitize-url": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-6.0.4.tgz", "integrity": "sha512-s3jaWicZd0pkP0jf5ysyHUI/RE7MHos6qlToFcGWXVp+ykHOy77OUMrfbgJ9it2C5bow7OIQwYYaHjk9XlBQ2A==" @@ -1441,6 +1532,14 @@ "follow-redirects": "^1.14.7" } }, + "node_modules/@bundlr-network/client/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@bundlr-network/client/node_modules/commander": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", @@ -1451,7 +1550,6 @@ }, "node_modules/@capacitor-community/barcode-scanner": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@capacitor-community/barcode-scanner/-/barcode-scanner-4.0.1.tgz", "integrity": "sha512-acuhDU2mqskSeCIQMc5TGNnDszXXs4IqEES+3C2JDiq+MkJMTr+B2Dhq4k55hlkRFMOumMhlnbr2R9G6qyFPhw==", "dependencies": { "@zxing/browser": "^0.1.3", @@ -1463,7 +1561,6 @@ }, "node_modules/@capacitor/android": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@capacitor/android/-/android-5.6.0.tgz", "integrity": "sha512-6O7xV6K6c8WvQzKxOe7fnhRyoVpS3TNDXy1FyfhvOvclBvu+1JddSdFvW4e4dSL60s2c00sCzNRgYhm+cn0/dQ==", "peerDependencies": { "@capacitor/core": "^5.6.0" @@ -1471,7 +1568,6 @@ }, "node_modules/@capacitor/cli": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@capacitor/cli/-/cli-5.6.0.tgz", "integrity": "sha512-h2HLkjPn+hd95F0iOlSWROW15kxj/0qNuzXgktSNQ55Z3dCeWmelgfkbYwjo0eqiunv5zNa31H0YvrpnIVdKEA==", "dev": true, "dependencies": { @@ -1503,7 +1599,6 @@ }, "node_modules/@capacitor/core": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@capacitor/core/-/core-5.6.0.tgz", "integrity": "sha512-xJhCOUGPHw0QYDA3YH+CmL6qiV9DH4Ij3yPxSenymjrtLuXI197u9ddCZwGEwgVIkh9kGZBBKzsNkn89SZ2gdQ==", "dependencies": { "tslib": "^2.1.0" @@ -1511,7 +1606,6 @@ }, "node_modules/@capacitor/dialog": { "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@capacitor/dialog/-/dialog-5.0.7.tgz", "integrity": "sha512-lWNBHXOtt7V+Jk4YiShvnb+/4Ouo+yF1NKTOFpQXfVbsjrmmlXhd3ZSXSgMukEtyr0wr0phFUKDyamY08cYBOg==", "peerDependencies": { "@capacitor/core": "^5.0.0" @@ -1519,7 +1613,6 @@ }, "node_modules/@capacitor/haptics": { "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@capacitor/haptics/-/haptics-5.0.7.tgz", "integrity": "sha512-/j+7Qa4BxQA5aOU43cwXuiudfSXfoHFsAVfcehH5DkSjxLykZKWHEuE4uFJXqdkSIbAHjS37D0Sde6ENP6G/MA==", "peerDependencies": { "@capacitor/core": "^5.0.0" @@ -1527,7 +1620,6 @@ }, "node_modules/@capacitor/ios": { "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@capacitor/ios/-/ios-5.6.0.tgz", "integrity": "sha512-iswpOcD5us10hIF5zS4w6k/ekW0A+2pXhDV4AHOBXR4VOkOMI8QJaavgl9JvZ/NVvVNJdEN2rOKCMNh4AH08sw==", "peerDependencies": { "@capacitor/core": "^5.6.0" @@ -1535,7 +1627,6 @@ }, "node_modules/@capacitor/status-bar": { "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@capacitor/status-bar/-/status-bar-5.0.6.tgz", "integrity": "sha512-7od8CxsBnot1XMK3IeOkproFL4hgoKoWAc3pwUvmDOkQsXoxwQm4SR9mLwQavv1XfxtHbFV9Ukd7FwMxOPSViw==", "peerDependencies": { "@capacitor/core": "^5.0.0" @@ -1606,6 +1697,14 @@ "node": ">=11" } }, + "node_modules/@coral-xyz/anchor/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@coral-xyz/anchor/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -1789,9 +1888,9 @@ } }, "node_modules/@cosmjs/socket/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -1810,7 +1909,6 @@ }, "node_modules/@cosmjs/stargate": { "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@cosmjs/stargate/-/stargate-0.32.2.tgz", "integrity": "sha512-AsJa29fT7Jd4xt9Ai+HMqhyj7UQu7fyYKdXj/8+/9PD74xe6lZSYhQPcitUmMLJ1ckKPgXSk5Dd2LbsQT0IhZg==", "dependencies": { "@confio/ics23": "^0.6.8", @@ -1837,19 +1935,42 @@ } }, "node_modules/@cosmjs/stargate/node_modules/@cosmjs/crypto": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.2.tgz", - "integrity": "sha512-RuxrYKzhrPF9g6NmU7VEq++Hn1vZJjqqJpZ9Tmw9lOYOV8BUsv+j/0BE86kmWi7xVJ7EwxiuxYsKuM8IR18CIA==", + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.32.3.tgz", + "integrity": "sha512-niQOWJHUtlJm2GG4F00yGT7sGPKxfUwz+2qQ30uO/E3p58gOusTcH2qjiJNVxb8vScYJhFYFqpm/OA/mVqoUGQ==", "dependencies": { - "@cosmjs/encoding": "^0.32.2", - "@cosmjs/math": "^0.32.2", - "@cosmjs/utils": "^0.32.2", + "@cosmjs/encoding": "^0.32.3", + "@cosmjs/math": "^0.32.3", + "@cosmjs/utils": "^0.32.3", "@noble/hashes": "^1", "bn.js": "^5.2.0", "elliptic": "^6.5.4", "libsodium-wrappers-sumo": "^0.7.11" } }, + "node_modules/@cosmjs/stargate/node_modules/@cosmjs/crypto/node_modules/@cosmjs/encoding": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.3.tgz", + "integrity": "sha512-p4KF7hhv8jBQX3MkB3Defuhz/W0l3PwWVYU2vkVuBJ13bJcXyhU9nJjiMkaIv+XP+W2QgRceqNNgFUC5chNR7w==", + "dependencies": { + "base64-js": "^1.3.0", + "bech32": "^1.1.4", + "readonly-date": "^1.0.0" + } + }, + "node_modules/@cosmjs/stargate/node_modules/@cosmjs/crypto/node_modules/@cosmjs/math": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.32.3.tgz", + "integrity": "sha512-amumUtZs8hCCnV+lSBaJIiZkGabQm22QGg/IotYrhcmoOEOjt82n7hMNlNXRs7V6WLMidGrGYcswB5zcmp0Meg==", + "dependencies": { + "bn.js": "^5.2.0" + } + }, + "node_modules/@cosmjs/stargate/node_modules/@cosmjs/crypto/node_modules/@cosmjs/utils": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.32.3.tgz", + "integrity": "sha512-WCZK4yksj2hBDz4w7xFZQTRZQ/RJhBX26uFHmmQFIcNUUVAihrLO+RerqJgk0dZqC42wstM9pEUQGtPmLcIYvg==" + }, "node_modules/@cosmjs/stargate/node_modules/@cosmjs/encoding": { "version": "0.32.2", "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.32.2.tgz", @@ -1861,11 +1982,19 @@ } }, "node_modules/@cosmjs/stargate/node_modules/@cosmjs/json-rpc": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.2.tgz", - "integrity": "sha512-lan2lOgmz4yVE/HR8eCOSiII/1OudIulk8836koyIDCsPEpt6eKBuctnAD168vABGArKccLAo7Mr2gy9nrKrOQ==", + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.32.3.tgz", + "integrity": "sha512-JwFRWZa+Y95KrAG8CuEbPVOSnXO2uMSEBcaAB/FBU3Mo4jQnDoUjXvt3vwtFWxfAytrWCn1I4YDFaOAinnEG/Q==", + "dependencies": { + "@cosmjs/stream": "^0.32.3", + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmjs/stargate/node_modules/@cosmjs/json-rpc/node_modules/@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", "dependencies": { - "@cosmjs/stream": "^0.32.2", "xstream": "^11.14.0" } }, @@ -1891,16 +2020,32 @@ } }, "node_modules/@cosmjs/stargate/node_modules/@cosmjs/socket": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.2.tgz", - "integrity": "sha512-Qc8jaw4uSBJm09UwPgkqe3g9TBFx4ZR9HkXpwT6Z9I+6kbLerXPR0Gy3NSJFSUgxIfTpO8O1yqoWAyf0Ay17Mw==", + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.32.3.tgz", + "integrity": "sha512-F2WwNmaUPdZ4SsH6Uyreq3wQk7jpaEkb3wfOP951f5Jt6HCW/PxbxhKzHkAAf6+Sqks6SPhkbWoE8XaZpjL2KA==", "dependencies": { - "@cosmjs/stream": "^0.32.2", + "@cosmjs/stream": "^0.32.3", "isomorphic-ws": "^4.0.1", "ws": "^7", "xstream": "^11.14.0" } }, + "node_modules/@cosmjs/stargate/node_modules/@cosmjs/socket/node_modules/@cosmjs/stream": { + "version": "0.32.3", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.3.tgz", + "integrity": "sha512-J2zVWDojkynYifAUcRmVczzmp6STEpyiAARq0rSsviqjreGIfspfuws/8rmkPa6qQBZvpQOBQCm2HyZZwYplIw==", + "dependencies": { + "xstream": "^11.14.0" + } + }, + "node_modules/@cosmjs/stargate/node_modules/@cosmjs/stream": { + "version": "0.32.2", + "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.2.tgz", + "integrity": "sha512-gpCufLfHAD8Zp1ZKge7AHbDf4RA0TZp66wZY6JaQR5bSiEF2Drjtp4mwXZPGejtaUMnaAgff3LrUzPJfKYdQwg==", + "dependencies": { + "xstream": "^11.14.0" + } + }, "node_modules/@cosmjs/stargate/node_modules/@cosmjs/tendermint-rpc": { "version": "0.32.2", "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.32.2.tgz", @@ -1924,15 +2069,20 @@ "integrity": "sha512-Gg5t+eR7vPJMAmhkFt6CZrzPd0EKpAslWwk5rFVYZpJsM8JG5KT9XQ99hgNM3Ov6ScNoIWbXkpX27F6A9cXR4Q==" }, "node_modules/@cosmjs/stargate/node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, + "node_modules/@cosmjs/stargate/node_modules/axios/node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/@cosmjs/stargate/node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", @@ -1952,9 +2102,9 @@ } }, "node_modules/@cosmjs/stargate/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -1971,14 +2121,6 @@ } } }, - "node_modules/@cosmjs/stream": { - "version": "0.32.2", - "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.32.2.tgz", - "integrity": "sha512-gpCufLfHAD8Zp1ZKge7AHbDf4RA0TZp66wZY6JaQR5bSiEF2Drjtp4mwXZPGejtaUMnaAgff3LrUzPJfKYdQwg==", - "dependencies": { - "xstream": "^11.14.0" - } - }, "node_modules/@cosmjs/tendermint-rpc": { "version": "0.31.3", "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.31.3.tgz", @@ -2041,10 +2183,19 @@ "node": ">=12" } }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@cyberlab/cyber-account": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@cyberlab/cyber-account/-/cyber-account-2.3.1.tgz", - "integrity": "sha512-m53xZbyn2CuhY+mABtBb0cTpHDQkjoEJk/IeufHnei9qyrZLA26trzs7/X9X+96Mqd0qm88JTwvAroftFwDsIw==", + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@cyberlab/cyber-account/-/cyber-account-2.3.4.tgz", + "integrity": "sha512-AVwQo5i920hsHDPO5JsJ1VWYKqTzGqoQO0VK5ZRrv6QwzQYoSwbR8giS/6uWdSET/jUYWkGxzH16kAnqLhpoog==", "dependencies": { "viem": "^1.17.2" } @@ -2343,9 +2494,9 @@ "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" }, "node_modules/@emotion/is-prop-valid": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", - "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.2.tgz", + "integrity": "sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==", "dependencies": { "@emotion/memoize": "^0.8.1" } @@ -2379,9 +2530,9 @@ } }, "node_modules/@emotion/serialize": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", - "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.4.tgz", + "integrity": "sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==", "dependencies": { "@emotion/hash": "^0.9.1", "@emotion/memoize": "^0.8.1", @@ -2440,144 +2591,515 @@ "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, - "node_modules/@endo/env-options": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@endo/env-options/-/env-options-0.1.4.tgz", - "integrity": "sha512-Ol8ct0aW8VK1ZaqntnUJfrYT59P6Xn36XPbHzkqQhsYkpudKDn5ILYEwGmSO/Ff+XJjv/pReNI0lhOyyrDa9mg==" + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "peer": true, + "engines": { + "node": ">=12" + } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=12" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", - "dev": true, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@ethereumjs/common": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", - "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.5" + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/rlp": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", - "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", - "bin": { - "rlp": "bin/rlp" - }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@ethereumjs/tx": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", - "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", - "dependencies": { - "@ethereumjs/common": "^3.2.0", - "@ethereumjs/rlp": "^4.0.1", - "@ethereumjs/util": "^8.1.0", - "ethereum-cryptography": "^2.0.0" - }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@ethereumjs/tx/node_modules/@ethereumjs/common": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", - "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", - "dependencies": { - "@ethereumjs/util": "^8.1.0", - "crc-32": "^1.2.0" + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" } }, - "node_modules/@ethereumjs/tx/node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/js": { + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-4.2.0.tgz", + "integrity": "sha512-1nc6VO4jtFd172BbSnTnDQVr9IYBFl1y4xPzZdtkrkKIncBCkdbgfdRV+MiTkJYAtTxvV12GRZLqBFT1PNK6Yw==", + "dependencies": { + "@ethereumjs/common": "^3.2.0", + "@ethereumjs/rlp": "^4.0.1", + "@ethereumjs/util": "^8.1.0", + "ethereum-cryptography": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@ethereumjs/common": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-3.2.0.tgz", + "integrity": "sha512-pksvzI0VyLgmuEF2FA/JR/4/y6hcPq8OUail3/AvycBaW1d5VSauOZzqGvJ3RTmR4MU35lWE8KseKOsEhrFRBA==", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "crc-32": "^1.2.0" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@scure/base": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/tx/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@ethereumjs/tx/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@ethereumjs/tx/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.0.tgz", + "integrity": "sha512-hsm9JhfytIf8QME/3B7j4bc8V+VdTU+Vas1aJlvIS96ffoNAosudXvGoEvWmc7QZYdkC8mrMJz9r0fcbw7GyCA==", "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "@noble/curves": "1.4.0", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, "node_modules/@ethereumjs/util": { @@ -2593,40 +3115,59 @@ "node": ">=14" } }, + "node_modules/@ethereumjs/util/node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/base": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.3.3.tgz", - "integrity": "sha512-LJaN3HwRbfQK0X1xFSi0Q9amqOgzQnnDngIt+ZlsBC3Bm7/nE7K0kwshZHyaru79yIVRv/e1mQAjZyuZG6jOFQ==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "dependencies": { - "@noble/curves": "~1.3.0", - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.2.tgz", - "integrity": "sha512-HYf9TUXG80beW+hGAt3TRM8wU6pQoYur9iNypTROm42dorCGmLnFe3eWjz3gOq6G62H2WRh0FCzAR1PI+29zIA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "dependencies": { - "@noble/hashes": "~1.3.2", - "@scure/base": "~1.1.4" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.1.3.tgz", - "integrity": "sha512-BlwbIL7/P45W8FGW2r7LGuvoEZ+7PWsniMvQ4p5s2xCyw9tmaDlpfsN9HjAucbF+t/qpVHwZUisgfK24TCW8aA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.0.tgz", + "integrity": "sha512-hsm9JhfytIf8QME/3B7j4bc8V+VdTU+Vas1aJlvIS96ffoNAosudXvGoEvWmc7QZYdkC8mrMJz9r0fcbw7GyCA==", "dependencies": { - "@noble/curves": "1.3.0", - "@noble/hashes": "1.3.3", - "@scure/bip32": "1.3.3", - "@scure/bip39": "1.2.2" + "@noble/curves": "1.4.0", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, "node_modules/@ethersproject/abi": { @@ -3185,6 +3726,25 @@ "hash.js": "1.1.7" } }, + "node_modules/@ethersproject/signing-key/node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/@ethersproject/signing-key/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==" + }, "node_modules/@ethersproject/solidity": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", @@ -3351,22 +3911,22 @@ } }, "node_modules/@fastify/busboy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.0.tgz", - "integrity": "sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "engines": { "node": ">=14" } }, "node_modules/@firebase/analytics": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", - "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.4.tgz", + "integrity": "sha512-OJEl/8Oye/k+vJ1zV/1L6eGpc1XzAj+WG2TPznJ7PszL7sOFLBXkL9IjHfOCGDGpXeO3btozy/cYUqv4zgNeHg==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/installations": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3374,14 +3934,14 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", - "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-types": "0.8.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.10.tgz", + "integrity": "sha512-ia68RcLQLLMFWrM10JfmFod7eJGwqr4/uyrtzHpTDnxGX/6gNCBTOuxdAbyWIqXI5XmcMQdz9hDijGKOHgDfPw==", + "dependencies": { + "@firebase/analytics": "0.10.4", + "@firebase/analytics-types": "0.8.2", + "@firebase/component": "0.6.7", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3389,30 +3949,30 @@ } }, "node_modules/@firebase/analytics-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", - "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.2.tgz", + "integrity": "sha512-EnzNNLh+9/sJsimsA/FGqzakmrAUKLeJvjRHlg8df1f97NLUlFidk9600y0ZgWOp3CAxn6Hjtk+08tixlUOWyw==" }, "node_modules/@firebase/app": { - "version": "0.9.25", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.25.tgz", - "integrity": "sha512-fX22gL5USXhOK21Hlh3oTeOzQZ6th6S2JrjXNEpBARmwzuUkqmVGVdsOCIFYIsLpK0dQE3o8xZnLrRg5wnzZ/g==", + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.10.5.tgz", + "integrity": "sha512-iY/fNot+hWPk9sTX8aHMqlcX9ynRvpGkskWAdUZ2eQQdLo8d1hSFYcYNwPv0Q/frGMasw8udKWMcFOEpC9fG8g==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "idb": "7.1.1", "tslib": "^2.1.0" } }, "node_modules/@firebase/app-check": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.1.tgz", - "integrity": "sha512-zi3vbM5tb/eGRWyiqf+1DXbxFu9Q07dnm46rweodgUpH9B8svxYkHfNwYWx7F5mjHU70SQDuaojH1We5ws9OKA==", + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.4.tgz", + "integrity": "sha512-2tjRDaxcM5G7BEpytiDcIl+NovV99q8yEqRMKDbn4J4i/XjjuThuB4S+4PkmTnZiCbdLXQiBhkVxNlUDcfog5Q==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3420,15 +3980,15 @@ } }, "node_modules/@firebase/app-check-compat": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.8.tgz", - "integrity": "sha512-EaETtChR4UgMokJFw+r6jfcIyCTUZSe0a6ivF37D9MxlG9G3wzK1COyXgxoX96GzXmDPc2aubX4PxCrdVHhrnA==", - "dependencies": { - "@firebase/app-check": "0.8.1", - "@firebase/app-check-types": "0.5.0", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.11.tgz", + "integrity": "sha512-t01zaH3RJpKEey0nGduz3Is+uSz7Sj4U5nwOV6lWb+86s5xtxpIvBJzu/lKxJfYyfZ29eJwpdjEgT1/lm4iQyA==", + "dependencies": { + "@firebase/app-check": "0.8.4", + "@firebase/app-check-types": "0.5.2", + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3436,42 +3996,58 @@ } }, "node_modules/@firebase/app-check-interop-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz", - "integrity": "sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg==" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.2.tgz", + "integrity": "sha512-LMs47Vinv2HBMZi49C09dJxp0QT5LwDzFaVGf/+ITHe3BlIhUiLNttkATSXplc89A2lAaeTqjgqVkiRfUGyQiQ==" }, "node_modules/@firebase/app-check-types": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", - "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.2.tgz", + "integrity": "sha512-FSOEzTzL5bLUbD2co3Zut46iyPWML6xc4x+78TeaXMSuJap5QObfb+rVvZJtla3asN4RwU7elaQaduP+HFizDA==" }, "node_modules/@firebase/app-compat": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.25.tgz", - "integrity": "sha512-B/JtCp1FsTuzlh1tIGQpYM2AXps21/zlzpFsk5LRsROOTRhBcR2N45AyaONPFD06C0yS0Tw19foxADzHyOSC3A==", - "dependencies": { - "@firebase/app": "0.9.25", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "version": "0.2.35", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.35.tgz", + "integrity": "sha512-vgay/WRjeH0r97/Q6L6df2CMx7oyNFDsE5yPQ9oR1G+zx2eT0s8vNNh0WlKqQxUEWaOLRnXhQ8gy7uu0cBgTRg==", + "dependencies": { + "@firebase/app": "0.10.5", + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" } }, "node_modules/@firebase/app-types": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", - "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.2.tgz", + "integrity": "sha512-oMEZ1TDlBz479lmABwWsWjzHwheQKiAgnuKxE0pz0IXCVx7/rtlkx1fQ6GfgK24WCrxDKMplZrT50Kh04iMbXQ==" }, - "node_modules/@firebase/auth": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.5.1.tgz", - "integrity": "sha512-sVi7rq2YneLGJFqHa5S6nDfCHix9yuVV3RLhj/pWPlB4a36ofXal4E6PJwpeMc8uLjWEr1aovYN1jkXWNB6Avw==", + "node_modules/@firebase/auth-compat": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.9.tgz", + "integrity": "sha512-RX8Zh/3zz2CsVbmYfgHkfUm4fAEPCl+KHVIImNygV5jTGDF6oKOhBIpf4Yigclyu8ESQKZ4elyN0MBYm9/7zGw==", + "dependencies": { + "@firebase/auth": "1.7.4", + "@firebase/auth-types": "0.12.2", + "@firebase/component": "0.6.7", + "@firebase/util": "1.9.6", + "tslib": "^2.1.0", + "undici": "5.28.4" + }, + "peerDependencies": { + "@firebase/app-compat": "0.x" + } + }, + "node_modules/@firebase/auth-compat/node_modules/@firebase/auth": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.4.tgz", + "integrity": "sha512-d2Fw17s5QesojwebrA903el20Li9/YGgkoOGJjagM4I1qAT36APa/FcZ+OX86KxbYKCtQKTMqraU8pxG7C2JWA==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0", - "undici": "5.26.5" + "undici": "5.28.4" }, "peerDependencies": { "@firebase/app": "0.x", @@ -3483,116 +4059,78 @@ } } }, - "node_modules/@firebase/auth-compat": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.1.tgz", - "integrity": "sha512-rgDZnrDoekRvtzXVji8Z61wxxkof6pTkjYEkybILrjM8tGP9tx4xa9qGpF4ax3AzF+rKr7mIa9NnoXEK4UNqmQ==", - "dependencies": { - "@firebase/auth": "1.5.1", - "@firebase/auth-types": "0.12.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "tslib": "^2.1.0", - "undici": "5.26.5" - }, - "peerDependencies": { - "@firebase/app-compat": "0.x" - } - }, - "node_modules/@firebase/auth-compat/node_modules/undici": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", - "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/@firebase/auth-interop-types": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", - "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.3.tgz", + "integrity": "sha512-Fc9wuJGgxoxQeavybiuwgyi+0rssr76b+nHpj+eGhXFYAdudMWyfBHvFL/I5fEHniUM/UQdFzi9VXJK2iZF7FQ==" }, "node_modules/@firebase/auth-types": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", - "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.2.tgz", + "integrity": "sha512-qsEBaRMoGvHO10unlDJhaKSuPn4pyoTtlQuP1ghZfzB6rNQPuhp/N/DcFZxm9i4v0SogjCbf9reWupwIvfmH6w==", "peerDependencies": { "@firebase/app-types": "0.x", "@firebase/util": "1.x" } }, - "node_modules/@firebase/auth/node_modules/undici": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", - "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } - }, "node_modules/@firebase/component": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", - "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.7.tgz", + "integrity": "sha512-baH1AA5zxfaz4O8w0vDwETByrKTQqB5CDjRls79Sa4eAGAoERw4Tnung7XbMl3jbJ4B/dmmtsMrdki0KikwDYA==", "dependencies": { - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" } }, "node_modules/@firebase/database": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.2.tgz", - "integrity": "sha512-8X6NBJgUQzDz0xQVaCISoOLINKat594N2eBbMR3Mu/MH/ei4WM+aAMlsNzngF22eljXu1SILP5G3evkyvsG3Ng==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.0", - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.5.tgz", + "integrity": "sha512-cAfwBqMQuW6HbhwI3Cb/gDqZg7aR0OmaJ85WUxlnoYW2Tm4eR0hFl5FEijI3/gYPUiUcUPQvTkGV222VkT7KPw==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "faye-websocket": "0.11.4", "tslib": "^2.1.0" } }, "node_modules/@firebase/database-compat": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.2.tgz", - "integrity": "sha512-09ryJnXDvuycsxn8aXBzLhBTuCos3HEnCOBWY6hosxfYlNCGnLvG8YMlbSAt5eNhf7/00B095AEfDsdrrLjxqA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/database": "1.0.2", - "@firebase/database-types": "1.0.0", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.5.tgz", + "integrity": "sha512-NDSMaDjQ+TZEMDMmzJwlTL05kh1+0Y84C+kVMaOmNOzRGRM7VHi29I6YUhCetXH+/b1Wh4ZZRyp1CuWkd8s6hg==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/database": "1.0.5", + "@firebase/database-types": "1.0.3", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" } }, "node_modules/@firebase/database-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.0.tgz", - "integrity": "sha512-SjnXStoE0Q56HcFgNQ+9SsmJc0c8TqGARdI/T44KXy+Ets3r6x/ivhQozT66bMnCEjJRywYoxNurRTMlZF8VNg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.3.tgz", + "integrity": "sha512-39V/Riv2R3O/aUjYKh0xypj7NTNXNAK1bcgY5Kx+hdQPRS/aPTS8/5c0CGFYKgVuFbYlnlnhrCTYsh2uNhGwzA==", "dependencies": { - "@firebase/app-types": "0.9.0", - "@firebase/util": "1.9.3" + "@firebase/app-types": "0.9.2", + "@firebase/util": "1.9.6" } }, "node_modules/@firebase/firestore": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.4.0.tgz", - "integrity": "sha512-VeDXD9PUjvcWY1tInBOMTIu2pijR3YYy+QAe5cxCo1Q1vW+aA/mpQHhebPM1J6b4Zd1MuUh8xpBRvH9ujKR56A==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", - "@firebase/webchannel-wrapper": "0.10.5", + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.6.3.tgz", + "integrity": "sha512-d/+N2iUsiJ/Dc7fApdpdmmTXzwuTCromsdA1lKwYfZtMIOd1fI881NSLwK2wV4I38wkLnvfKJUV6WpU1f3/ONg==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", + "@firebase/webchannel-wrapper": "1.0.0", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", "tslib": "^2.1.0", - "undici": "5.26.5" + "undici": "5.28.4" }, "engines": { "node": ">=10.10.0" @@ -3602,14 +4140,14 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.3.23", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.23.tgz", - "integrity": "sha512-uUTBiP0GLVBETaOCfB11d33OWB8x1r2G1Xrl0sRK3Va0N5LJ/GRvKVSGfM7VScj+ypeHe8RpdwKoCqLpN1e+uA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/firestore": "4.4.0", - "@firebase/firestore-types": "3.0.0", - "@firebase/util": "1.9.3", + "version": "0.3.32", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.32.tgz", + "integrity": "sha512-at71mwK7a/mUXH0OgyY0+gUzedm/EUydDFYSFsBoO8DYowZ23Mgd6P4Rzq/Ll3zI/3xJN7LGe7Qp4iE/V/3Arg==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/firestore": "4.6.3", + "@firebase/firestore-types": "3.0.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3617,18 +4155,18 @@ } }, "node_modules/@firebase/firestore-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.0.tgz", - "integrity": "sha512-Meg4cIezHo9zLamw0ymFYBD4SMjLb+ZXIbuN7T7ddXN6MGoICmOTq3/ltdCGoDCS2u+H1XJs2u/cYp75jsX9Qw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-3.0.2.tgz", + "integrity": "sha512-wp1A+t5rI2Qc/2q7r2ZpjUXkRVPtGMd6zCLsiWurjsQpqPgFin3AhNibKcIzoF2rnToNa/XYtyWXuifjOOwDgg==", "peerDependencies": { "@firebase/app-types": "0.x", "@firebase/util": "1.x" } }, "node_modules/@firebase/firestore/node_modules/@grpc/grpc-js": { - "version": "1.9.13", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.13.tgz", - "integrity": "sha512-OEZZu9v9AA+7/tghMDE8o5DAMD5THVnwSqDWuh7PPYO5287rTyqy0xEHT6/e4pbqSrhyLPdQFsam4TwFQVVIIw==", + "version": "1.9.15", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.15.tgz", + "integrity": "sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==", "dependencies": { "@grpc/proto-loader": "^0.7.8", "@types/node": ">=12.12.47" @@ -3637,43 +4175,40 @@ "node": "^8.13.0 || >=10.10.0" } }, - "node_modules/@firebase/firestore/node_modules/undici": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", - "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", + "node_modules/@firebase/firestore/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" + "undici-types": "~5.26.4" } }, "node_modules/@firebase/functions": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.0.tgz", - "integrity": "sha512-n1PZxKnJ++k73Q8khTPwihlbeKo6emnGzE0hX6QVQJsMq82y/XKmNpw2t/q30VJgwaia3ZXU1fd1C5wHncL+Zg==", - "dependencies": { - "@firebase/app-check-interop-types": "0.3.0", - "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", + "version": "0.11.5", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.5.tgz", + "integrity": "sha512-qrHJ+l62mZiU5UZiVi84t/iLXZlhRuSvBQsa2qvNLgPsEWR7wdpWhRmVdB7AU8ndkSHJjGlMICqrVnz47sgU7Q==", + "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/auth-interop-types": "0.2.3", + "@firebase/component": "0.6.7", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0", - "undici": "5.26.5" + "undici": "5.28.4" }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/functions-compat": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.6.tgz", - "integrity": "sha512-RQpO3yuHtnkqLqExuAT2d0u3zh8SDbeBYK5EwSCBKI9mjrFeJRXBnd3pEG+x5SxGJLy56/5pQf73mwt0OuH5yg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/functions": "0.11.0", - "@firebase/functions-types": "0.6.0", - "@firebase/util": "1.9.3", + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.11.tgz", + "integrity": "sha512-Qn+ts/M6Lj2/6i1cp5V5TRR+Hi9kyXyHbo+w9GguINJ87zxrCe6ulx3TI5AGQkoQa8YFHUhT3DMGmLFiJjWTSQ==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/functions": "0.11.5", + "@firebase/functions-types": "0.6.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3681,29 +4216,18 @@ } }, "node_modules/@firebase/functions-types": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", - "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" - }, - "node_modules/@firebase/functions/node_modules/undici": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", - "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", - "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" - } + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.2.tgz", + "integrity": "sha512-0KiJ9lZ28nS2iJJvimpY4nNccV21rkQyor5Iheu/nq8aKXJqtJdeSlZDspjPSBBiHRzo7/GMUttegnsEITqR+w==" }, "node_modules/@firebase/installations": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz", - "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.7.tgz", + "integrity": "sha512-i6iGoXRu5mX4rTsiMSSKrgh9pSEzD4hwBEzRh5kEhOTr8xN/wvQcCPZDSMVYKwM2XyCPBLVq0JzjyerwL0Rihg==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "idb": "7.0.1", + "@firebase/component": "0.6.7", + "@firebase/util": "1.9.6", + "idb": "7.1.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3711,14 +4235,14 @@ } }, "node_modules/@firebase/installations-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz", - "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.7.tgz", + "integrity": "sha512-RPcbD+3nqHbnhVjIOpWK2H5qzZ8pAAAScceiWph0VNTqpKyPQ5tDcp4V5fS0ELpfgsHYvroMLDKfeHxpfvm8cw==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/installations-types": "0.5.0", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.7", + "@firebase/installations": "0.6.7", + "@firebase/installations-types": "0.5.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3726,35 +4250,30 @@ } }, "node_modules/@firebase/installations-types": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", - "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.2.tgz", + "integrity": "sha512-que84TqGRZJpJKHBlF2pkvc1YcXrtEDOVGiDjovP/a3s6W4nlbohGXEsBJo0JCeeg/UG9A+DEZVDUV9GpklUzA==", "peerDependencies": { "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/installations/node_modules/idb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", - "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" - }, "node_modules/@firebase/logger": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", - "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.2.tgz", + "integrity": "sha512-Q1VuA5M1Gjqrwom6I6NUU4lQXdo9IAQieXlujeHZWvRt1b7qQ0KwBaNAjgxG27jgF9/mUwsNmO8ptBCGVYhB0A==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/@firebase/messaging": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.5.tgz", - "integrity": "sha512-i/rrEI2k9ueFhdIr8KQsptWGskrsnkC5TkohCTrJKz9P0C/PbNv14IAMkwhMJTqIur5VwuOnrUkc9Kdz7awekw==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", + "version": "0.12.9", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.9.tgz", + "integrity": "sha512-IH+JJmzbFGZXV3+TDyKdqqKPVfKRqBBg2BfYYOy7cm7J+SwV+uJMe8EnDKYeQLEQhtpwciPfJ3qQXJs2lbxDTw==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/installations": "0.6.7", + "@firebase/messaging-interop-types": "0.2.2", + "@firebase/util": "1.9.6", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -3763,13 +4282,13 @@ } }, "node_modules/@firebase/messaging-compat": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.5.tgz", - "integrity": "sha512-qHQZxm4hEG8/HFU/ls5/bU+rpnlPDoZoqi3ATMeb6s4hovYV9+PfV5I7ZrKV5eFFv47Hx1PWLe5uPnS4e7gMwQ==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.9.tgz", + "integrity": "sha512-5jN6wyhwPgBH02zOtmmoOeyfsmoD7ty48D1m0vVPsFg55RqN2Z3Q9gkZ5GmPklFPjTPLcxB1ObcHOZvThTkm7g==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/messaging": "0.12.5", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.7", + "@firebase/messaging": "0.12.9", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3777,19 +4296,19 @@ } }, "node_modules/@firebase/messaging-interop-types": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", - "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.2.tgz", + "integrity": "sha512-l68HXbuD2PPzDUOFb3aG+nZj5KA3INcPwlocwLZOzPp9rFM9yeuI9YLl6DQfguTX5eAGxO0doTR+rDLDvQb5tA==" }, "node_modules/@firebase/performance": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz", - "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.7.tgz", + "integrity": "sha512-d+Q4ltjdJZqjzcdms5i0UC9KLYX7vKGcygZ+7zHA/Xk+bAbMD2CPU0nWTnlNFWifZWIcXZ/2mAMvaGMW3lypUA==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/installations": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3797,15 +4316,15 @@ } }, "node_modules/@firebase/performance-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz", - "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/performance": "0.6.4", - "@firebase/performance-types": "0.2.0", - "@firebase/util": "1.9.3", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.7.tgz", + "integrity": "sha512-cb8ge/5iTstxfIGW+iiY+7l3FtN8gobNh9JSQNZgLC9xmcfBYWEs8IeEWMI6S8T+At0oHc3lv+b2kpRMUWr8zQ==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/performance": "0.6.7", + "@firebase/performance-types": "0.2.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3813,19 +4332,19 @@ } }, "node_modules/@firebase/performance-types": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", - "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.2.tgz", + "integrity": "sha512-gVq0/lAClVH5STrIdKnHnCo2UcPLjJlDUoEB/tB4KM+hAeHUxWKnpT0nemUPvxZ5nbdY/pybeyMe8Cs29gEcHA==" }, "node_modules/@firebase/remote-config": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz", - "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.7.tgz", + "integrity": "sha512-5oPNrPFLsbsjpq0lUEIXoDF2eJK7vAbyXe/DEuZQxnwJlfR7aQbtUlEkRgQWcicXpyDmAmDLo7q7lDbCYa6CpA==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/installations": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3833,15 +4352,15 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz", - "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==", - "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/logger": "0.4.0", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-types": "0.3.0", - "@firebase/util": "1.9.3", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.7.tgz", + "integrity": "sha512-Fq0oneQ4SluLnfr5/HfzRS1TZf1ANj1rWbCCW3+oC98An3nE+sCdp+FSuHsEVNwgMg4Tkwx9Oom2lkKeU+Vn+w==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/remote-config": "0.4.7", + "@firebase/remote-config-types": "0.3.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3849,33 +4368,33 @@ } }, "node_modules/@firebase/remote-config-types": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", - "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.2.tgz", + "integrity": "sha512-0BC4+Ud7y2aPTyhXJTMTFfrGGLqdYXrUB9sJVAB8NiqJswDTc4/2qrE/yfUbnQJhbSi6ZaTTBKyG3n1nplssaA==" }, "node_modules/@firebase/storage": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.0.tgz", - "integrity": "sha512-SGs02Y/mmWBRsqZiYLpv4Sf7uZYZzMWVNN+aKiDqPsFBCzD6hLvGkXz+u98KAl8FqcjgB8BtSu01wm4pm76KHA==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.5.tgz", + "integrity": "sha512-nGWBOGFNr10j0LA4NJ3/Yh3us/lb0Q1xSIKZ38N6FcS+vY54nqJ7k3zE3PENregHC8+8txRow++A568G3v8hOA==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.7", + "@firebase/util": "1.9.6", "tslib": "^2.1.0", - "undici": "5.26.5" + "undici": "5.28.4" }, "peerDependencies": { "@firebase/app": "0.x" } }, "node_modules/@firebase/storage-compat": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.3.tgz", - "integrity": "sha512-WNtjYPhpOA1nKcRu5lIodX0wZtP8pI0VxDJnk6lr+av7QZNS1s6zvr+ERDTve+Qu4Hq/ZnNaf3kBEQR2ccXn6A==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.8.tgz", + "integrity": "sha512-qDfY9kMb6Ch2hZb40sBjDQ8YPxbjGOxuT+gU1Z0iIVSSpSX0f4YpGJCypUXiA0T11n6InCXB+T/Dknh2yxVTkg==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/storage": "0.12.0", - "@firebase/storage-types": "0.8.0", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.7", + "@firebase/storage": "0.12.5", + "@firebase/storage-types": "0.8.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3883,46 +4402,68 @@ } }, "node_modules/@firebase/storage-types": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz", - "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.2.tgz", + "integrity": "sha512-0vWu99rdey0g53lA7IShoA2Lol1jfnPovzLDUBuon65K7uKG9G+L5uO05brD9pMw+l4HRFw23ah3GwTGpEav6g==", "peerDependencies": { "@firebase/app-types": "0.x", "@firebase/util": "1.x" } }, - "node_modules/@firebase/storage/node_modules/undici": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.26.5.tgz", - "integrity": "sha512-cSb4bPFd5qgR7qr2jYAi0hlX9n5YKK2ONKkLFkxl+v/9BvC0sOpZjBHDBSXc5lWAf5ty9oZdRXytBIHzgUcerw==", + "node_modules/@firebase/util": { + "version": "1.9.6", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.6.tgz", + "integrity": "sha512-IBr1MZbp4d5MjBCXL3TW1dK/PDXX4yOGbiwRNh1oAbE/+ci5Uuvy9KIrsFYY80as1I0iOaD5oOMA9Q8j4TJWcw==", "dependencies": { - "@fastify/busboy": "^2.0.0" - }, - "engines": { - "node": ">=14.0" + "tslib": "^2.1.0" } }, - "node_modules/@firebase/util": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", - "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", + "node_modules/@firebase/vertexai-preview": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@firebase/vertexai-preview/-/vertexai-preview-0.0.2.tgz", + "integrity": "sha512-NOOL63kFQRq45ioi5P+hlqj/4LNmvn1URhGjQdvyV54c1Irvoq26aW861PRRLjrSMIeNeiLtCLD5pe+ediepAg==", "dependencies": { + "@firebase/app-check-interop-types": "0.3.2", + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", "tslib": "^2.1.0" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@firebase/app-types": "0.x" } }, "node_modules/@firebase/webchannel-wrapper": { - "version": "0.10.5", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.5.tgz", - "integrity": "sha512-eSkJsnhBWv5kCTSU1tSUVl9mpFu+5NXXunZc83le8GMjMlsWwQArSc7cJJ4yl+aDFY0NGLi0AjZWMn1axOrkRg==" + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-1.0.0.tgz", + "integrity": "sha512-zuWxyfXNbsKbm96HhXzainONPFqRcoZblQ++e9cAIGUuHfl2cFSBzW01jtesqWG/lqaUyX3H8O1y9oWboGNQBA==" + }, + "node_modules/@fleekxyz/sdk": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@fleekxyz/sdk/-/sdk-0.7.3.tgz", + "integrity": "sha512-iYaKOltqXLKBbg0HRlnQrPIlnzgesSz4PwWFOErE/Ygu+D93WN7owxvjgyK5JbsylLp4wDpgdsFVCM0Ql0/bAg==", + "deprecated": "Package no longer supported. Please use the new package @fleek-platform/sdk at https://www.npmjs.com/package/@fleek-platform/sdk.", + "engines": { + "node": ">=18.0.0" + } }, "node_modules/@floating-ui/core": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.2.tgz", - "integrity": "sha512-Ii3MrfY/GAIN3OhXNzpCKaLxHQfJF9qvwq/kEJYdqDxeIHa01K8sldugal6TmeeXl+WMvhv9cnVzUTaFFJF09A==", + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.2.tgz", + "integrity": "sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==", "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.0" } }, + "node_modules/@floating-ui/core/node_modules/@floating-ui/utils": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.2.tgz", + "integrity": "sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==" + }, "node_modules/@floating-ui/dom": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", @@ -4006,69 +4547,29 @@ }, "node_modules/@google-cloud/pubsub": { "version": "3.7.5", - "resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-3.7.5.tgz", - "integrity": "sha512-4Qrry4vIToth5mqduVslltWVsyb7DR8OhnkBA3F7XiE0jgQsiuUfwp/RB2F559aXnRbwcfmjvP4jSuEaGcjrCQ==", - "dev": true, - "dependencies": { - "@google-cloud/paginator": "^4.0.0", - "@google-cloud/precise-date": "^3.0.0", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^2.0.0", - "@opentelemetry/api": "^1.6.0", - "@opentelemetry/semantic-conventions": "~1.3.0", - "@types/duplexify": "^3.6.0", - "@types/long": "^4.0.0", - "arrify": "^2.0.0", - "extend": "^3.0.2", - "google-auth-library": "^8.0.2", - "google-gax": "^3.6.1", - "heap-js": "^2.2.0", - "is-stream-ended": "^0.1.4", - "lodash.snakecase": "^4.1.1", - "p-defer": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/pubsub/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@google-cloud/pubsub/node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", - "dev": true, - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@google-cloud/pubsub/node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "resolved": "https://registry.npmjs.org/@google-cloud/pubsub/-/pubsub-3.7.5.tgz", + "integrity": "sha512-4Qrry4vIToth5mqduVslltWVsyb7DR8OhnkBA3F7XiE0jgQsiuUfwp/RB2F559aXnRbwcfmjvP4jSuEaGcjrCQ==", "dev": true, "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" + "@google-cloud/paginator": "^4.0.0", + "@google-cloud/precise-date": "^3.0.0", + "@google-cloud/projectify": "^3.0.0", + "@google-cloud/promisify": "^2.0.0", + "@opentelemetry/api": "^1.6.0", + "@opentelemetry/semantic-conventions": "~1.3.0", + "@types/duplexify": "^3.6.0", + "@types/long": "^4.0.0", + "arrify": "^2.0.0", + "extend": "^3.0.2", + "google-auth-library": "^8.0.2", + "google-gax": "^3.6.1", + "heap-js": "^2.2.0", + "is-stream-ended": "^0.1.4", + "lodash.snakecase": "^4.1.1", + "p-defer": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=12.0.0" } }, "node_modules/@google-cloud/pubsub/node_modules/google-auth-library": { @@ -4091,48 +4592,6 @@ "node": ">=12" } }, - "node_modules/@google-cloud/pubsub/node_modules/google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", - "dev": true, - "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/pubsub/node_modules/gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", - "dev": true, - "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@google-cloud/pubsub/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/@google-cloud/pubsub/node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -4146,9 +4605,9 @@ } }, "node_modules/@grpc/grpc-js": { - "version": "1.8.21", - "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.21.tgz", - "integrity": "sha512-KeyQeZpxeEBSqFVTi3q2K7PiPXmgBfECc4updA1ejCLjYmoAlvvM3ZMp5ztTDUCUQmoY3CpDxvchjO1+rFkoHg==", + "version": "1.8.22", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.8.22.tgz", + "integrity": "sha512-oAjDdN7fzbUi+4hZjKG96MR6KTEubAeMpQEb+77qy+3r0Ua5xTFuie6JOLr4ZZgl5g+W5/uRTS2M1V8mVAFPuA==", "dev": true, "dependencies": { "@grpc/proto-loader": "^0.7.0", @@ -4158,14 +4617,23 @@ "node": "^8.13.0 || >=10.10.0" } }, + "node_modules/@grpc/grpc-js/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@grpc/proto-loader": { - "version": "0.7.10", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz", - "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==", + "version": "0.7.13", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.13.tgz", + "integrity": "sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==", "dependencies": { "lodash.camelcase": "^4.3.0", "long": "^5.0.0", - "protobufjs": "^7.2.4", + "protobufjs": "^7.2.5", "yargs": "^17.7.2" }, "bin": { @@ -4175,15 +4643,23 @@ "node": ">=6" } }, + "node_modules/@grpc/proto-loader/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@grpc/proto-loader/node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, "node_modules/@grpc/proto-loader/node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -4216,10 +4692,40 @@ "@hapi/hoek": "^9.0.0" } }, + "node_modules/@hexaonelabs/firebase-web3connect": { + "version": "0.0.9-alpha.10", + "integrity": "sha512-AH92y8Za787LdDsrS1H/fbdniFNNpxHIj8shKEVoEs4bbb7TwC/M4Z7c6/z6Qv5YSdxsEYeytOYh234HkhtGfg==", + "dependencies": { + "@bitcoinerlab/secp256k1": "^1.1.1", + "@fleekxyz/sdk": "^0.7.3", + "@solana/spl-token": "^0.4.6", + "@solana/web3.js": "^1.91.8", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.5", + "bs58": "^5.0.0", + "buffer": "^6.0.3", + "ed25519-hd-key": "^1.3.0", + "ethers": "^5.7.2", + "firebase": "^10.10.0", + "stream-browserify": "^3.0.0", + "vite-plugin-node-polyfills": "^0.21.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "bip39": "^3.1.0", + "buffer": "^6.0.3", + "ethers": "^5.7.2", + "firebase": "^10.10.0" + } + }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", + "deprecated": "Use @eslint/config-array instead", "dev": true, "dependencies": { "@humanwhocodes/object-schema": "^2.0.1", @@ -4244,9 +4750,10 @@ } }, "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", - "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", "dev": true }, "node_modules/@ionic/cli-framework-output": { @@ -4264,21 +4771,21 @@ } }, "node_modules/@ionic/core": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.6.2.tgz", - "integrity": "sha512-PEeCAjKrtKkc7PqCF7WlXn36PmowBbswnMADmoJ75ozyheRMe+v+GY2a75dGsBxB8nMZP9X9wYBXvZ3BgYUdLw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.2.2.tgz", + "integrity": "sha512-gpWemL5IJjGDJPz6dltHnFyqioRl0sugs2PUXrwPaYwMnTDoRZ6iojYFovCIr5YJN99rHZprOthdcsYR/viGyQ==", "dependencies": { - "@stencil/core": "^4.8.2", - "ionicons": "^7.2.1", + "@stencil/core": "^4.17.2", + "ionicons": "^7.2.2", "tslib": "^2.1.0" } }, "node_modules/@ionic/react": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@ionic/react/-/react-7.6.2.tgz", - "integrity": "sha512-c2dD/ATMDf70GAp6z6QLzmRNZVBZl9B6zcCGJlYhxSHReNOAln3PWYwxy8v/7MuTyclG4rnNQxiSBd3XQbqKTw==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@ionic/react/-/react-8.2.2.tgz", + "integrity": "sha512-uf369EYjgEU88u65QdOBaTlEv0fy/v5H6ICpaPHNRHgvppkQSE9uWZitZdeBuXQq8+k9OCo1Wn0vzL3znP3nHA==", "dependencies": { - "@ionic/core": "7.6.2", + "@ionic/core": "8.2.2", "ionicons": "^7.0.0", "tslib": "*" }, @@ -4288,11 +4795,11 @@ } }, "node_modules/@ionic/react-router": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-7.6.2.tgz", - "integrity": "sha512-1dd8jGAGqbTWFF0FhTkn5MMxlGA/66Vl8MuBWMRt8/cZVe+TNm40UkhrcwBXcH8+PxRkZbuI4YUHwMJZWKUE2w==", + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/@ionic/react-router/-/react-router-8.2.2.tgz", + "integrity": "sha512-I8bEPiru2PtqQfBPbanjJw6iKl+wqpcv84bNqdux6kgpGTt0R+YKeJkkaaHxkZpLO4ZAxyB2Yxjvp1win07hMw==", "dependencies": { - "@ionic/react": "7.6.2", + "@ionic/react": "8.2.2", "tslib": "*" }, "peerDependencies": { @@ -4302,6 +4809,14 @@ "react-router-dom": "^5.0.1" } }, + "node_modules/@ionic/storage": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ionic/storage/-/storage-4.0.0.tgz", + "integrity": "sha512-3N21P19Xk6cICLnSXZ3ilRqbSXAGSFeIF3HNqz+1kARcm0UFT/vwmZreaXtFyq437vvEWOfJ2enlj3JHLKS0FA==", + "dependencies": { + "localforage": "^1.9.0" + } + }, "node_modules/@ionic/utils-array": { "version": "2.1.6", "resolved": "https://registry.npmjs.org/@ionic/utils-array/-/utils-array-2.1.6.tgz", @@ -4452,11 +4967,6 @@ "node": ">=16.0.0" } }, - "node_modules/@ioredis/commands": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ioredis/commands/-/commands-1.2.0.tgz", - "integrity": "sha512-Sx1pU8EM64o2BrqNpEO1CNLtKQwyhuXuqyfH7oGKCk+1a33d2r5saW8zNwm3j6BTExtjrv2BxTgzzkMwts6vGg==" - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -4553,10 +5063,31 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { "node": ">=6.0.0" } @@ -4567,12 +5098,12 @@ "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jsdevtools/ono": { @@ -4582,9 +5113,9 @@ "dev": true }, "node_modules/@jsdoc/salty": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.7.tgz", - "integrity": "sha512-mh8LbS9d4Jq84KLw8pzho7XC2q2/IJGiJss3xwRoLD1A+EE16SjN4PfaG4jRCzKegTFLlN0Zd8SdUPE6XdoPFg==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", + "integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==", "dev": true, "dependencies": { "lodash": "^4.17.21" @@ -4614,9 +5145,9 @@ } }, "node_modules/@json-rpc-tools/provider/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -4671,7 +5202,6 @@ }, "node_modules/@khmyznikov/pwa-install": { "version": "0.2.7", - "resolved": "https://registry.npmjs.org/@khmyznikov/pwa-install/-/pwa-install-0.2.7.tgz", "integrity": "sha512-QA+rRsIyQcCuFz9JTTrvctrfYylapKcKpsfl4G492pp6hbqC8d/o4sJchQKZFAMkG8t1Y8fw6be2c71ylCpn/A==", "dependencies": { "@lit/localize": "^0.11.4", @@ -4692,9 +5222,9 @@ } }, "node_modules/@lifi/sdk": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@lifi/sdk/-/sdk-2.5.0.tgz", - "integrity": "sha512-wx/3Ff0DAfYyV8VSWSQ/Qiy3DlwdrIfG841hbwqJK3AGxK0ulunLl1rKpMQrRdEEwkqAFNKZuJ8by0lGf9YccQ==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@lifi/sdk/-/sdk-2.5.2.tgz", + "integrity": "sha512-LljyEU3OARdHp+PJstWhI/ZdRDeBrd0MOYDeecTUp3Ox+B2WaZlz/qCd3HsaW9Rqr1RWP6Sge8t5BjjZaXXfsQ==", "dependencies": { "@ethersproject/abi": "^5.7.0", "@ethersproject/contracts": "^5.7.0", @@ -4713,9 +5243,9 @@ } }, "node_modules/@lifi/wallet-management": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/@lifi/wallet-management/-/wallet-management-2.6.0.tgz", - "integrity": "sha512-XyjV5uVRerGcQdnTbU6cjz2z8N/6wUy7rVrNypJ9ILi5QLUh2eyE9OBku3zuTvri1SCvc04L6C1RnecFuNcPrA==", + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@lifi/wallet-management/-/wallet-management-2.6.1.tgz", + "integrity": "sha512-UatA51tZn4ZpiAtJtPHUzt7e7lw3Ulb4eyUTN2O5jgDiAMaMHGqHchIIFuu8oeQqbqQv+hBXjSpLE8sLGB8vsg==", "dependencies": { "@coinbase/wallet-sdk": "^3.9.1", "@cyberlab/cyber-account": "^2.2.5", @@ -4726,16 +5256,16 @@ "@lifi/sdk": "^2.5.0", "@safe-global/safe-apps-provider": "^0.18.1", "@safe-global/safe-apps-sdk": "^8.1.0", - "@walletconnect/ethereum-provider": "^2.10.6", + "@walletconnect/ethereum-provider": "^2.12.2", "@walletconnect/modal": "^2.6.2", "events": "^3.3.0", "react": "^18.2.0" } }, "node_modules/@lifi/widget": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@lifi/widget/-/widget-2.10.1.tgz", - "integrity": "sha512-Tn/pq7/fh9aAHnnwuPYYznJ6IN+/5oUKP1qlCc/0iB3lJfeTq23ybkmNEqF90JrGGRkX6zvhs73Cl3vBJskg0w==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@lifi/widget/-/widget-2.10.2.tgz", + "integrity": "sha512-Ny4f/hx+27e1UKg2OgoV9IZ5jfNCIb717nS1cKsWgri1r3wBLcHamg4MHdCyJ3n7p9mhrgvzj8pW+DcMv9xwoA==", "dependencies": { "@emotion/react": "^11.11.1", "@emotion/styled": "^11.11.0", @@ -4744,7 +5274,7 @@ "@ethersproject/experimental": "^5.7.0", "@ethersproject/providers": "^5.7.2", "@lifi/sdk": "^2.5.0", - "@lifi/wallet-management": "^2.6.0", + "@lifi/wallet-management": "^2.6.1", "@mui/icons-material": "^5.14.14", "@mui/lab": "^5.0.0-alpha.149", "@mui/material": "^5.14.14", @@ -4806,10 +5336,26 @@ "react-dom": ">=16.8" } }, + "node_modules/@lifi/widget/node_modules/react-router-dom/node_modules/@remix-run/router": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.1.tgz", + "integrity": "sha512-Qg4DMQsfPNAs88rb2xkdk03N3bjK4jgX5fR24eHCTR9q6PrhZQZ4UJBPzCHJkIpTRN1UKxx2DzjZmnC+7Lj0Ow==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@lifi/widget/node_modules/react-router/node_modules/@remix-run/router": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.1.tgz", + "integrity": "sha512-Qg4DMQsfPNAs88rb2xkdk03N3bjK4jgX5fR24eHCTR9q6PrhZQZ4UJBPzCHJkIpTRN1UKxx2DzjZmnC+7Lj0Ow==", + "engines": { + "node": ">=14.0.0" + } + }, "node_modules/@lit-labs/ssr-dom-shim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.1.2.tgz", - "integrity": "sha512-jnOD+/+dSrfTWYfSXBXlo5l5f0q1UuJo3tkbMDCYA2lKUYq79jaxqtGEvnRoh049nt1vdo1+45RinipU6FGY2g==" + "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==" }, "node_modules/@lit/localize": { "version": "0.11.4", @@ -4841,27 +5387,22 @@ }, "node_modules/@magic-ext/avalanche": { "version": "16.4.1", - "resolved": "https://registry.npmjs.org/@magic-ext/avalanche/-/avalanche-16.4.1.tgz", "integrity": "sha512-o3q4brIqQiUGe0wcmSnevg77mO6OWVkTq01cHVOvX8+HMdZ6XAyh5flghkOQAxWJaVFQoQX+sdLr8Is6v7RTzw==" }, "node_modules/@magic-ext/bitcoin": { "version": "16.4.1", - "resolved": "https://registry.npmjs.org/@magic-ext/bitcoin/-/bitcoin-16.4.1.tgz", "integrity": "sha512-aQmi4hoPIs4MXXkiejJt9uWjMbNjxEtuRkONjcvs0EFSOa+o7HgQMP026NihJdBfR2hFI+LMHvc2qSWAGam82A==" }, "node_modules/@magic-ext/cosmos": { "version": "16.4.1", - "resolved": "https://registry.npmjs.org/@magic-ext/cosmos/-/cosmos-16.4.1.tgz", "integrity": "sha512-Nmw0UpONybLDjwycLZgg+XHqlv5q9nk65r7lC8aeLkliCZ6eANdudOBR6RSDbIDD65JQALB8Sr23JqVJEsBxoA==" }, "node_modules/@magic-ext/polkadot": { "version": "16.4.1", - "resolved": "https://registry.npmjs.org/@magic-ext/polkadot/-/polkadot-16.4.1.tgz", "integrity": "sha512-0eSbYLiS24XVmkwkNShR9Vhfw0rpCMr5hmiluBdRaBxoeoKo5Qhjp2+6p7dL0cHOWFiMOJLBM3za1iXZ+3QZQA==" }, "node_modules/@magic-ext/solana": { "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@magic-ext/solana/-/solana-18.3.0.tgz", "integrity": "sha512-+dtK41plTd1FH6tGj2Wbi1XU4gPBb9EwrLcrpoNzKwSmyyzo7hugNgAv/97IEkaz0fNsZqPriig23rwsN4NwAw==", "dependencies": { "@solana/web3.js": "^1.87.2" @@ -4975,19 +5516,6 @@ "base-x": "^3.0.2" } }, - "node_modules/@marinade.finance/marinade-ts-sdk/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "dependencies": { - "base-x": "^4.0.0" - } - }, - "node_modules/@marinade.finance/marinade-ts-sdk/node_modules/bs58/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, "node_modules/@metamask/eth-json-rpc-provider": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@metamask/eth-json-rpc-provider/-/eth-json-rpc-provider-1.0.1.tgz", @@ -5002,11 +5530,11 @@ } }, "node_modules/@metamask/json-rpc-engine": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.2.tgz", - "integrity": "sha512-dVjBPlni4CoiBpESVqrxh6k4OR14w6GRXKSSXHFuITjuhALE42gNCkXTpL4cjNeOBUgTba3eGe5EI8cyc2QLRg==", + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-7.3.3.tgz", + "integrity": "sha512-dwZPq8wx9yV3IX2caLi9q9xZBw2XeIoYqdyihDDDpuHVCEiqadJLwqM3zy+uwf6F1QYQ65A8aOMQg1Uw7LMLNg==", "dependencies": { - "@metamask/rpc-errors": "^6.1.0", + "@metamask/rpc-errors": "^6.2.1", "@metamask/safe-event-emitter": "^3.0.0", "@metamask/utils": "^8.3.0" }, @@ -5015,37 +5543,30 @@ } }, "node_modules/@metamask/json-rpc-engine/node_modules/@metamask/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", "dependencies": { "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.0.0", "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", "debug": "^4.3.4", "pony-cause": "^2.1.10", "semver": "^7.5.4", - "superstruct": "^1.0.3" + "uuid": "^9.0.1" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@metamask/json-rpc-engine/node_modules/superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@metamask/rpc-errors": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.1.0.tgz", - "integrity": "sha512-JQElKxai26FpDyRKO/yH732wI+BV90i1u6pOuDOpdADSbppB2g1pPh3AGST1zkZqEE9eIKIUw8UdBQ4rp3VTSg==", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/@metamask/rpc-errors/-/rpc-errors-6.3.0.tgz", + "integrity": "sha512-B1UIG/0xWkaDs/d6xrxsRf7kmFLdk8YE0HUToaFumjwQM36AjBsqEzVyemPTQv0SIrAPFnSmkLt053JOWcu5iw==", "dependencies": { - "@metamask/utils": "^8.1.0", + "@metamask/utils": "^8.3.0", "fast-safe-stringify": "^2.0.6" }, "engines": { @@ -5053,37 +5574,38 @@ } }, "node_modules/@metamask/rpc-errors/node_modules/@metamask/utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.3.0.tgz", - "integrity": "sha512-WFVcMPEkKKRCJ8DDkZUTVbLlpwgRn98F4VM/WzN89HM8PmHMnCyk/oG0AmK/seOxtik7uC7Bbi2YBC5Z5XB2zw==", + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.5.0.tgz", + "integrity": "sha512-I6bkduevXb72TIM9q2LRO63JSsF9EXduh3sBr9oybNX2hNNpr/j1tEjXrsG0Uabm4MJ1xkGAQEMwifvKZIkyxQ==", "dependencies": { "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.0.0", "@noble/hashes": "^1.3.1", "@scure/base": "^1.1.3", "@types/debug": "^4.1.7", "debug": "^4.3.4", "pony-cause": "^2.1.10", "semver": "^7.5.4", - "superstruct": "^1.0.3" + "uuid": "^9.0.1" }, "engines": { "node": ">=16.0.0" } }, - "node_modules/@metamask/rpc-errors/node_modules/superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", + "node_modules/@metamask/safe-event-emitter": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.1.1.tgz", + "integrity": "sha512-ihb3B0T/wJm1eUuArYP4lCTSEoZsClHhuWyfo/kMX3m/odpqNcPfsz5O2A3NT7dXCAgWPGDQGPqygCpgeniKMw==", "engines": { - "node": ">=14.0.0" + "node": ">=12.0.0" } }, - "node_modules/@metamask/safe-event-emitter": { + "node_modules/@metamask/superstruct": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@metamask/safe-event-emitter/-/safe-event-emitter-3.0.0.tgz", - "integrity": "sha512-j6Z47VOmVyGMlnKXZmL0fyvWfEYtKWCA9yGZkU3FCsGZUT5lHGmvaV9JA5F2Y+010y7+ROtR3WMXIkvl/nVzqQ==", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.0.0.tgz", + "integrity": "sha512-TOm+Lt/lCJk9j/3QT2LucrPewRmqI7/GKT+blK2IIOAkBMS+9TmeNjd2Y+TlfpSSYstaYsGZyz1XwpiTCg6RLA==", "engines": { - "node": ">=12.0.0" + "node": ">=16.0.0" } }, "node_modules/@metamask/utils": { @@ -5102,9 +5624,9 @@ } }, "node_modules/@metamask/utils/node_modules/superstruct": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", - "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", "engines": { "node": ">=14.0.0" } @@ -5177,19 +5699,6 @@ "node": ">= 14" } }, - "node_modules/@metaplex-foundation/js/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "node_modules/@metaplex-foundation/js/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "dependencies": { - "base-x": "^4.0.0" - } - }, "node_modules/@metaplex-foundation/js/node_modules/mime": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", @@ -5240,17 +5749,21 @@ "debug": "^4.3.4" } }, - "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", + "node_modules/@metaplex-foundation/mpl-auction-house/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", "dependencies": { - "base-x": "^4.0.0" + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" } }, "node_modules/@metaplex-foundation/mpl-candy-machine": { @@ -5286,19 +5799,6 @@ "debug": "^4.3.4" } }, - "node_modules/@metaplex-foundation/mpl-candy-machine/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "node_modules/@metaplex-foundation/mpl-candy-machine/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "dependencies": { - "base-x": "^4.0.0" - } - }, "node_modules/@metaplex-foundation/mpl-core": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-core/-/mpl-core-0.6.1.tgz", @@ -5309,6 +5809,14 @@ "bs58": "^4.0.1" } }, + "node_modules/@metaplex-foundation/mpl-core/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@metaplex-foundation/mpl-token-metadata": { "version": "2.13.0", "resolved": "https://registry.npmjs.org/@metaplex-foundation/mpl-token-metadata/-/mpl-token-metadata-2.13.0.tgz", @@ -5345,6 +5853,23 @@ "debug": "^4.3.4" } }, + "node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, "node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/assert": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", @@ -5357,19 +5882,6 @@ "util": "^0.12.5" } }, - "node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "node_modules/@metaplex-foundation/mpl-token-metadata/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "dependencies": { - "base-x": "^4.0.0" - } - }, "node_modules/@mithraic-labs/psy-american": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/@mithraic-labs/psy-american/-/psy-american-0.2.3.tgz", @@ -5399,57 +5911,55 @@ }, "node_modules/@moonpay/moonpay-js": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@moonpay/moonpay-js/-/moonpay-js-0.5.0.tgz", "integrity": "sha512-Q//d9kfGEQYOAxHIdXvnDrBONMR1uc2b/R48UP8uM//9f6tmUOOe5wXKnWJtK1Fh1/w3EDzigtYf8FNFiSco/w==" }, "node_modules/@moonpay/moonpay-react": { "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@moonpay/moonpay-react/-/moonpay-react-1.6.1.tgz", "integrity": "sha512-v2cx7W1ESrvzBf8Wj1If+poTiTX7OwZYUY0PLfDMuiCnu+di++GyI+R6VeAWUaH20KAQGiD54pFaoE7naNZrew==", "peerDependencies": { "react": ">=16" } }, "node_modules/@motionone/animation": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.16.3.tgz", - "integrity": "sha512-QUGWpLbMFLhyqKlngjZhjtxM8IqiJQjLK0DF+XOF6od9nhSvlaeEpOY/UMCRVcZn/9Tr2rZO22EkuCIjYdI74g==", + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/animation/-/animation-10.18.0.tgz", + "integrity": "sha512-9z2p5GFGCm0gBsZbi8rVMOAJCtw1WqBTIPw3ozk06gDvZInBPIsQcHgYogEJ4yuHJ+akuW8g1SEIOpTOvYs8hw==", "dependencies": { - "@motionone/easing": "^10.16.3", - "@motionone/types": "^10.16.3", - "@motionone/utils": "^10.16.3", + "@motionone/easing": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", "tslib": "^2.3.1" } }, "node_modules/@motionone/dom": { - "version": "10.16.4", - "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.16.4.tgz", - "integrity": "sha512-HPHlVo/030qpRj9R8fgY50KTN4Ko30moWRTA3L3imrsRBmob93cTYmodln49HYFbQm01lFF7X523OkKY0DX6UA==", - "dependencies": { - "@motionone/animation": "^10.16.3", - "@motionone/generators": "^10.16.4", - "@motionone/types": "^10.16.3", - "@motionone/utils": "^10.16.3", + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/dom/-/dom-10.18.0.tgz", + "integrity": "sha512-bKLP7E0eyO4B2UaHBBN55tnppwRnaE3KFfh3Ps9HhnAkar3Cb69kUCJY9as8LrccVYKgHA+JY5dOQqJLOPhF5A==", + "dependencies": { + "@motionone/animation": "^10.18.0", + "@motionone/generators": "^10.18.0", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", "hey-listen": "^1.0.8", "tslib": "^2.3.1" } }, "node_modules/@motionone/easing": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.16.3.tgz", - "integrity": "sha512-HWTMZbTmZojzwEuKT/xCdvoMPXjYSyQvuVM6jmM0yoGU6BWzsmYMeB4bn38UFf618fJCNtP9XeC/zxtKWfbr0w==", + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/easing/-/easing-10.18.0.tgz", + "integrity": "sha512-VcjByo7XpdLS4o9T8t99JtgxkdMcNWD3yHU/n6CLEz3bkmKDRZyYQ/wmSf6daum8ZXqfUAgFeCZSpJZIMxaCzg==", "dependencies": { - "@motionone/utils": "^10.16.3", + "@motionone/utils": "^10.18.0", "tslib": "^2.3.1" } }, "node_modules/@motionone/generators": { - "version": "10.16.4", - "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.16.4.tgz", - "integrity": "sha512-geFZ3w0Rm0ZXXpctWsSf3REGywmLLujEjxPYpBR0j+ymYwof0xbV6S5kGqqsDKgyWKVWpUInqQYvQfL6fRbXeg==", + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/generators/-/generators-10.18.0.tgz", + "integrity": "sha512-+qfkC2DtkDj4tHPu+AFKVfR/C30O1vYdvsGYaR13W/1cczPrrcjdvYCj0VLFuRMN+lP1xvpNZHCRNM4fBzn1jg==", "dependencies": { - "@motionone/types": "^10.16.3", - "@motionone/utils": "^10.16.3", + "@motionone/types": "^10.17.1", + "@motionone/utils": "^10.18.0", "tslib": "^2.3.1" } }, @@ -5463,16 +5973,16 @@ } }, "node_modules/@motionone/types": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.16.3.tgz", - "integrity": "sha512-W4jkEGFifDq73DlaZs3HUfamV2t1wM35zN/zX7Q79LfZ2sc6C0R1baUHZmqc/K5F3vSw3PavgQ6HyHLd/MXcWg==" + "version": "10.17.1", + "resolved": "https://registry.npmjs.org/@motionone/types/-/types-10.17.1.tgz", + "integrity": "sha512-KaC4kgiODDz8hswCrS0btrVrzyU2CSQKO7Ps90ibBVSQmjkrt2teqta6/sOG59v7+dPnKMAg13jyqtMKV2yJ7A==" }, "node_modules/@motionone/utils": { - "version": "10.16.3", - "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.16.3.tgz", - "integrity": "sha512-WNWDksJIxQkaI9p9Z9z0+K27xdqISGNFy1SsWVGaiedTHq0iaT6iZujby8fT/ZnZxj1EOaxJtSfUPCFNU5CRoA==", + "version": "10.18.0", + "resolved": "https://registry.npmjs.org/@motionone/utils/-/utils-10.18.0.tgz", + "integrity": "sha512-3XVF7sgyTSI2KWvTf6uLlBJ5iAgRgmvp3bpuOiQJvInd4nZ19ET8lX5unn30SlmRH7hXbBbH+Gxd0m0klJ3Xtw==", "dependencies": { - "@motionone/types": "^10.16.3", + "@motionone/types": "^10.17.1", "hey-listen": "^1.0.8", "tslib": "^2.3.1" } @@ -5481,6 +5991,7 @@ "version": "10.16.4", "resolved": "https://registry.npmjs.org/@motionone/vue/-/vue-10.16.4.tgz", "integrity": "sha512-z10PF9JV6SbjFq+/rYabM+8CVlMokgl8RFGvieSGNTmrkQanfHn+15XBrhG3BgUfvmTeSeyShfOHpG0i9zEdcg==", + "deprecated": "Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion", "dependencies": { "@motionone/dom": "^10.16.4", "tslib": "^2.3.1" @@ -5518,11 +6029,11 @@ } }, "node_modules/@mui/base/node_modules/@floating-ui/react-dom": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.4.tgz", - "integrity": "sha512-CF8k2rgKeh/49UrnIBs4BdxPUV6vize/Db1d/YbCLyp9GiVZ0BEwf5AiDSxJRCr6yOkGqTFHtmrULxkEfYZ7dQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", "dependencies": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.0.0" }, "peerDependencies": { "react": ">=16.8.0", @@ -5530,17 +6041,17 @@ } }, "node_modules/@mui/base/node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } }, "node_modules/@mui/core-downloads-tracker": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.1.tgz", - "integrity": "sha512-y/nUEsWHyBzaKYp9zLtqJKrLod/zMNEWpMj488FuQY9QTmqBiyUhI2uh7PVaLqLewXRtdmG6JV0b6T5exyuYRw==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.20.tgz", + "integrity": "sha512-DoL2ppgldL16utL8nNyj/P12f8mCNdx/Hb/AJnX9rLY4b52hCMIx1kH83pbXQ6uMy6n54M3StmEbvSGoj2OFuA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/mui-org" @@ -5612,9 +6123,9 @@ } }, "node_modules/@mui/lab/node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } @@ -5664,20 +6175,20 @@ } }, "node_modules/@mui/material/node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } }, "node_modules/@mui/private-theming": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.1.tgz", - "integrity": "sha512-wTbzuy5KjSvCPE9UVJktWHJ0b/tD5biavY9wvF+OpYDLPpdXK52vc1hTDxSbdkHIFMkJExzrwO9GvpVAHZBnFQ==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.20.tgz", + "integrity": "sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==", "dependencies": { - "@babel/runtime": "^7.23.5", - "@mui/utils": "^5.15.1", + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.20", "prop-types": "^15.8.1" }, "engines": { @@ -5698,13 +6209,13 @@ } }, "node_modules/@mui/styled-engine": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.1.tgz", - "integrity": "sha512-7WDZTJLqGexWDjqE9oAgjU8ak6hEtUw2yQU7SIYID5kLVO2Nj/Wi/KicbLsXnTsJNvSqePIlUIWTBSXwWJCPZw==", + "version": "5.15.14", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.14.tgz", + "integrity": "sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==", "dependencies": { - "@babel/runtime": "^7.23.5", + "@babel/runtime": "^7.23.9", "@emotion/cache": "^11.11.0", - "csstype": "^3.1.2", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -5729,17 +6240,17 @@ } }, "node_modules/@mui/system": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.1.tgz", - "integrity": "sha512-LAnP0ls69rqW9eBgI29phIx/lppv+WDGI7b3EJN7VZIqw0RezA0GD7NRpV12BgEYJABEii6z5Q9B5tg7dsX0Iw==", - "dependencies": { - "@babel/runtime": "^7.23.5", - "@mui/private-theming": "^5.15.1", - "@mui/styled-engine": "^5.15.1", - "@mui/types": "^7.2.11", - "@mui/utils": "^5.15.1", - "clsx": "^2.0.0", - "csstype": "^3.1.2", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.20.tgz", + "integrity": "sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==", + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.20", + "@mui/styled-engine": "^5.15.14", + "@mui/types": "^7.2.14", + "@mui/utils": "^5.15.20", + "clsx": "^2.1.0", + "csstype": "^3.1.3", "prop-types": "^15.8.1" }, "engines": { @@ -5768,17 +6279,17 @@ } }, "node_modules/@mui/system/node_modules/clsx": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", - "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", "engines": { "node": ">=6" } }, "node_modules/@mui/types": { - "version": "7.2.11", - "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.11.tgz", - "integrity": "sha512-KWe/QTEsFFlFSH+qRYf3zoFEj3z67s+qAuSnMMg+gFwbxG7P96Hm6g300inQL1Wy///gSRb8juX7Wafvp93m3w==", + "version": "7.2.14", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz", + "integrity": "sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==", "peerDependencies": { "@types/react": "^17.0.0 || ^18.0.0" }, @@ -5789,11 +6300,11 @@ } }, "node_modules/@mui/utils": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.1.tgz", - "integrity": "sha512-V1/d0E3Bju5YdB59HJf2G0tnHrFEvWLN+f8hAXp9+JSNy/LC2zKyqUfPPahflR6qsI681P8G9r4mEZte/SrrYA==", + "version": "5.15.20", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.20.tgz", + "integrity": "sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==", "dependencies": { - "@babel/runtime": "^7.23.5", + "@babel/runtime": "^7.23.9", "@types/prop-types": "^15.7.11", "prop-types": "^15.8.1", "react-is": "^18.2.0" @@ -5966,7 +6477,6 @@ }, "node_modules/@next/third-parties": { "version": "14.1.4", - "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.1.4.tgz", "integrity": "sha512-e/kpEFq5/ZPhHkxpJkvhMfLp3OC6KCBou0/BV8BvgjXAPgEo6sa0ZXe0l4ZEb3wcA7NIEHIpqCmjU5Z7QAHcKQ==", "dependencies": { "third-party-capital": "1.0.20" @@ -5977,11 +6487,11 @@ } }, "node_modules/@noble/curves": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", - "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", + "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", "dependencies": { - "@noble/hashes": "1.3.3" + "@noble/hashes": "1.4.0" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -5999,9 +6509,9 @@ ] }, "node_modules/@noble/hashes": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", - "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "engines": { "node": ">= 16" }, @@ -6056,9 +6566,9 @@ } }, "node_modules/@npmcli/agent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", - "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", "dev": true, "optional": true, "dependencies": { @@ -6066,16 +6576,16 @@ "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.1" + "socks-proxy-agent": "^8.0.3" }, "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@npmcli/fs": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.0.tgz", - "integrity": "sha512-7kZUAaLscfgbwBQRbvdMYaZOWyMEcPTH/tJjnyAWJ/dvvs9Ef+CERx/qJb9GExJpl1qipaDGn7KqHnFGGixd0w==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", "dev": true, "optional": true, "dependencies": { @@ -6095,16 +6605,16 @@ } }, "node_modules/@octokit/core": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.2.tgz", - "integrity": "sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "dev": true, "dependencies": { "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.0.0", - "@octokit/request": "^8.0.2", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" }, @@ -6113,12 +6623,12 @@ } }, "node_modules/@octokit/endpoint": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.4.tgz", - "integrity": "sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", "dev": true, "dependencies": { - "@octokit/types": "^12.0.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" }, "engines": { @@ -6126,13 +6636,13 @@ } }, "node_modules/@octokit/graphql": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.2.tgz", - "integrity": "sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dev": true, "dependencies": { - "@octokit/request": "^8.0.1", - "@octokit/types": "^12.0.0", + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" }, "engines": { @@ -6140,24 +6650,39 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "19.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-19.1.0.tgz", - "integrity": "sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "9.1.5", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.1.5.tgz", - "integrity": "sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", "dev": true, "dependencies": { - "@octokit/types": "^12.4.0" + "@octokit/types": "^12.6.0" }, "engines": { "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=5" + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-retry": { @@ -6177,10 +6702,25 @@ "@octokit/core": ">=5" } }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, "node_modules/@octokit/plugin-throttling": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.1.3.tgz", - "integrity": "sha512-pfyqaqpc0EXh5Cn4HX9lWYsZ4gGbjnSmUILeu4u2gnuM50K/wIk9s1Pxt3lVeVwekmITgN/nJdoh43Ka+vye8A==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", + "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", "dev": true, "dependencies": { "@octokit/types": "^12.2.0", @@ -6193,15 +6733,30 @@ "@octokit/core": "^5.0.0" } }, + "node_modules/@octokit/plugin-throttling/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true + }, + "node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^20.0.0" + } + }, "node_modules/@octokit/request": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz", - "integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", "dev": true, "dependencies": { - "@octokit/endpoint": "^9.0.0", - "@octokit/request-error": "^5.0.0", - "@octokit/types": "^12.0.0", + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" }, "engines": { @@ -6209,12 +6764,12 @@ } }, "node_modules/@octokit/request-error": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.1.tgz", - "integrity": "sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", "dev": true, "dependencies": { - "@octokit/types": "^12.0.0", + "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", "once": "^1.4.0" }, @@ -6223,18 +6778,18 @@ } }, "node_modules/@octokit/types": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.4.0.tgz", - "integrity": "sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^19.1.0" + "@octokit/openapi-types": "^22.2.0" } }, "node_modules/@opentelemetry/api": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.7.0.tgz", - "integrity": "sha512-AdY5wvN0P2vXBi3b29hxZgSFvdhdxPB9+f0B6s//P9Q8nibRWeA3cHm8UmLpio9ABigkVHJ5NMPk+Mz8VCCyrw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "devOptional": true, "engines": { "node": ">=8.0.0" @@ -6250,10 +6805,9 @@ } }, "node_modules/@parcel/watcher": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.3.0.tgz", - "integrity": "sha512-pW7QaFiL11O0BphO+bq3MgqeX/INAk9jgBldVDYjlQPO4VddoZnF22TcF9onMhnLVHuNqBJeRf+Fj7eezi/+rQ==", - "hasInstallScript": true, + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", "dependencies": { "detect-libc": "^1.0.3", "is-glob": "^4.0.3", @@ -6268,24 +6822,24 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.3.0", - "@parcel/watcher-darwin-arm64": "2.3.0", - "@parcel/watcher-darwin-x64": "2.3.0", - "@parcel/watcher-freebsd-x64": "2.3.0", - "@parcel/watcher-linux-arm-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-glibc": "2.3.0", - "@parcel/watcher-linux-arm64-musl": "2.3.0", - "@parcel/watcher-linux-x64-glibc": "2.3.0", - "@parcel/watcher-linux-x64-musl": "2.3.0", - "@parcel/watcher-win32-arm64": "2.3.0", - "@parcel/watcher-win32-ia32": "2.3.0", - "@parcel/watcher-win32-x64": "2.3.0" + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" } }, "node_modules/@parcel/watcher-android-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.3.0.tgz", - "integrity": "sha512-f4o9eA3dgk0XRT3XhB0UWpWpLnKgrh1IwNJKJ7UJek7eTYccQ8LR7XUWFKqw6aEq5KUNlCcGvSzKqSX/vtWVVA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", "cpu": [ "arm64" ], @@ -6302,9 +6856,9 @@ } }, "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.3.0.tgz", - "integrity": "sha512-mKY+oijI4ahBMc/GygVGvEdOq0L4DxhYgwQqYAz/7yPzuGi79oXrZG52WdpGA1wLBPrYb0T8uBaGFo7I6rvSKw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", "cpu": [ "arm64" ], @@ -6321,9 +6875,9 @@ } }, "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.3.0.tgz", - "integrity": "sha512-20oBj8LcEOnLE3mgpy6zuOq8AplPu9NcSSSfyVKgfOhNAc4eF4ob3ldj0xWjGGbOF7Dcy1Tvm6ytvgdjlfUeow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", "cpu": [ "x64" ], @@ -6340,9 +6894,9 @@ } }, "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.3.0.tgz", - "integrity": "sha512-7LftKlaHunueAEiojhCn+Ef2CTXWsLgTl4hq0pkhkTBFI3ssj2bJXmH2L67mKpiAD5dz66JYk4zS66qzdnIOgw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", "cpu": [ "x64" ], @@ -6359,9 +6913,9 @@ } }, "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.3.0.tgz", - "integrity": "sha512-1apPw5cD2xBv1XIHPUlq0cO6iAaEUQ3BcY0ysSyD9Kuyw4MoWm1DV+W9mneWI+1g6OeP6dhikiFE6BlU+AToTQ==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", "cpu": [ "arm" ], @@ -6378,9 +6932,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.3.0.tgz", - "integrity": "sha512-mQ0gBSQEiq1k/MMkgcSB0Ic47UORZBmWoAWlMrTW6nbAGoLZP+h7AtUM7H3oDu34TBFFvjy4JCGP43JlylkTQA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", "cpu": [ "arm64" ], @@ -6397,9 +6951,9 @@ } }, "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.3.0.tgz", - "integrity": "sha512-LXZAExpepJew0Gp8ZkJ+xDZaTQjLHv48h0p0Vw2VMFQ8A+RKrAvpFuPVCVwKJCr5SE+zvaG+Etg56qXvTDIedw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", "cpu": [ "arm64" ], @@ -6416,9 +6970,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.3.0.tgz", - "integrity": "sha512-P7Wo91lKSeSgMTtG7CnBS6WrA5otr1K7shhSjKHNePVmfBHDoAOHYRXgUmhiNfbcGk0uMCHVcdbfxtuiZCHVow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", "cpu": [ "x64" ], @@ -6435,9 +6989,9 @@ } }, "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.3.0.tgz", - "integrity": "sha512-+kiRE1JIq8QdxzwoYY+wzBs9YbJ34guBweTK8nlzLKimn5EQ2b2FSC+tAOpq302BuIMjyuUGvBiUhEcLIGMQ5g==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", "cpu": [ "x64" ], @@ -6454,9 +7008,9 @@ } }, "node_modules/@parcel/watcher-wasm": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.3.0.tgz", - "integrity": "sha512-ejBAX8H0ZGsD8lSICDNyMbSEtPMWgDL0WFCt/0z7hyf5v8Imz4rAM8xY379mBsECkq/Wdqa5WEDLqtjZ+6NxfA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz", + "integrity": "sha512-/ZR0RxqxU/xxDGzbzosMjh4W6NdYFMqq2nvo2b8SLi7rsl/4jkL8S5stIikorNkdR50oVDvqb/3JT05WM+CRRA==", "bundleDependencies": [ "napi-wasm" ], @@ -6479,9 +7033,9 @@ "license": "MIT" }, "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.3.0.tgz", - "integrity": "sha512-35gXCnaz1AqIXpG42evcoP2+sNL62gZTMZne3IackM+6QlfMcJLy3DrjuL6Iks7Czpd3j4xRBzez3ADCj1l7Aw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", "cpu": [ "arm64" ], @@ -6498,9 +7052,9 @@ } }, "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.3.0.tgz", - "integrity": "sha512-FJS/IBQHhRpZ6PiCjFt1UAcPr0YmCLHRbTc00IBTrelEjlmmgIVLeOx4MSXzx2HFEy5Jo5YdhGpxCuqCyDJ5ow==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", "cpu": [ "ia32" ], @@ -6517,9 +7071,9 @@ } }, "node_modules/@parcel/watcher-win32-x64": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.3.0.tgz", - "integrity": "sha512-dLx+0XRdMnVI62kU3wbXvbIRhLck4aE28bIGKbRGS7BJNt54IIj9+c/Dkqb+7DJEbHUZAX1bwaoM8PqVlHJmCA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", "cpu": [ "x64" ], @@ -6547,9 +7101,12 @@ } }, "node_modules/@parcel/watcher/node_modules/node-addon-api": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.0.0.tgz", - "integrity": "sha512-vgbBJTS4m5/KkE16t5Ly0WW9hz46swAstv0hYYwMtbG7AznRhNyfLRe8HZAiWIpcHzoO7HxhLuBQj9rJ/Ho0ZA==" + "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" + } }, "node_modules/@pedrouid/environment": { "version": "1.0.1", @@ -6640,6 +7197,14 @@ "node": ">=11" } }, + "node_modules/@project-serum/anchor/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@project-serum/borsh": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/@project-serum/borsh/-/borsh-0.2.5.tgz", @@ -6710,6 +7275,14 @@ "node": ">= 10" } }, + "node_modules/@project-serum/serum/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -6759,44 +7332,286 @@ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@pythnetwork/client": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/@pythnetwork/client/-/client-2.19.0.tgz", + "integrity": "sha512-0VSQ0NqBOa5EtloXbOVYZ6Wpu8CLP3oaOKVTaUMSX/HXbB00S6G+xdwF7stxo6emgrAMopotx3icEVug5Lpomg==", + "dependencies": { + "@coral-xyz/anchor": "^0.28.1-beta.1", + "@coral-xyz/borsh": "^0.28.0", + "buffer": "^6.0.1" + }, + "peerDependencies": { + "@solana/web3.js": "^1.30.2" + } + }, + "node_modules/@randlabs/communication-bridge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@randlabs/communication-bridge/-/communication-bridge-1.0.1.tgz", + "integrity": "sha512-CzS0U8IFfXNK7QaJFE4pjbxDGfPjbXBEsEaCn9FN15F+ouSAEUQkva3Gl66hrkBZOGexKFEWMwUHIDKpZ2hfVg==" + }, + "node_modules/@randlabs/myalgo-connect": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@randlabs/myalgo-connect/-/myalgo-connect-1.4.2.tgz", + "integrity": "sha512-K9hEyUi7G8tqOp7kWIALJLVbGCByhilcy6123WfcorxWwiE1sbQupPyIU5f3YdQK6wMjBsyTWiLW52ZBMp7sXA==", + "dependencies": { + "@randlabs/communication-bridge": "1.0.1" + } + }, + "node_modules/@rollup/plugin-inject": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/plugin-inject/-/plugin-inject-5.0.5.tgz", + "integrity": "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==", + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.3" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", + "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.0.tgz", + "integrity": "sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.0.tgz", + "integrity": "sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.0.tgz", + "integrity": "sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.0.tgz", + "integrity": "sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.0.tgz", + "integrity": "sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.0.tgz", + "integrity": "sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.0.tgz", + "integrity": "sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.0.tgz", + "integrity": "sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.0.tgz", + "integrity": "sha512-hNVMQK+qrA9Todu9+wqrXOHxFiD5YmdEi3paj6vP02Kx1hjd2LLYR2eaN7DsEshg09+9uzWi2W18MJDlG0cxJA==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.0.tgz", + "integrity": "sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.0.tgz", + "integrity": "sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/@pythnetwork/client": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/@pythnetwork/client/-/client-2.19.0.tgz", - "integrity": "sha512-0VSQ0NqBOa5EtloXbOVYZ6Wpu8CLP3oaOKVTaUMSX/HXbB00S6G+xdwF7stxo6emgrAMopotx3icEVug5Lpomg==", - "dependencies": { - "@coral-xyz/anchor": "^0.28.1-beta.1", - "@coral-xyz/borsh": "^0.28.0", - "buffer": "^6.0.1" - }, - "peerDependencies": { - "@solana/web3.js": "^1.30.2" - } + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.0.tgz", + "integrity": "sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/@randlabs/communication-bridge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@randlabs/communication-bridge/-/communication-bridge-1.0.1.tgz", - "integrity": "sha512-CzS0U8IFfXNK7QaJFE4pjbxDGfPjbXBEsEaCn9FN15F+ouSAEUQkva3Gl66hrkBZOGexKFEWMwUHIDKpZ2hfVg==" + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.0.tgz", + "integrity": "sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true }, - "node_modules/@randlabs/myalgo-connect": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/@randlabs/myalgo-connect/-/myalgo-connect-1.4.2.tgz", - "integrity": "sha512-K9hEyUi7G8tqOp7kWIALJLVbGCByhilcy6123WfcorxWwiE1sbQupPyIU5f3YdQK6wMjBsyTWiLW52ZBMp7sXA==", - "dependencies": { - "@randlabs/communication-bridge": "1.0.1" - } + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.0.tgz", + "integrity": "sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true }, - "node_modules/@remix-run/router": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.14.1.tgz", - "integrity": "sha512-Qg4DMQsfPNAs88rb2xkdk03N3bjK4jgX5fR24eHCTR9q6PrhZQZ4UJBPzCHJkIpTRN1UKxx2DzjZmnC+7Lj0Ow==", - "engines": { - "node": ">=14.0.0" - } + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.0.tgz", + "integrity": "sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.0.tgz", + "integrity": "sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true }, "node_modules/@rushstack/eslint-patch": { "version": "1.6.1", @@ -6805,21 +7620,126 @@ "dev": true }, "node_modules/@safe-global/safe-apps-provider": { - "version": "0.18.2", - "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.2.tgz", - "integrity": "sha512-yHHAcppwE7aIUWEeZiYAClQzZCdP5l0Kbd0CBlhKAsTcqZnx4Gh3G3G3frY5LlWcGzp9qmQ5jv+J1GBpaZLDgw==", + "version": "0.18.3", + "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.18.3.tgz", + "integrity": "sha512-f/0cNv3S4v7p8rowAjj0hDCg8Q8P/wBjp5twkNWeBdvd0RDr7BuRBPPk74LCqmjQ82P+1ltLlkmVFSmxTIT7XQ==", "dependencies": { - "@safe-global/safe-apps-sdk": "^9.0.0", + "@safe-global/safe-apps-sdk": "^9.1.0", "events": "^3.3.0" } }, + "node_modules/@safe-global/safe-apps-provider/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@safe-global/safe-apps-provider/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@safe-global/safe-apps-provider/node_modules/@safe-global/safe-apps-sdk": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-9.0.0.tgz", - "integrity": "sha512-fEqmQBU3JqTjORSl3XYrcaxdxkUqeeM39qsQjqCzzTHioN8DEfg3JCLq6EBoXzcKTVOYi8SPzLV7KJccdDw+4w==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-sdk/-/safe-apps-sdk-9.1.0.tgz", + "integrity": "sha512-N5p/ulfnnA2Pi2M3YeWjULeWbjo7ei22JwU/IXnhoHzKq3pYCN6ynL9mJBOlvDVv892EgLPCWCOwQk/uBT2v0Q==", "dependencies": { "@safe-global/safe-gateway-typescript-sdk": "^3.5.3", - "viem": "^1.6.0" + "viem": "^2.1.1" + } + }, + "node_modules/@safe-global/safe-apps-provider/node_modules/abitype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.0.tgz", + "integrity": "sha512-NMeMah//6bJ56H5XRj8QCV4AwuW6hB6zqz2LnhhLdcWVQOsXki6/Pn3APeqxCma62nXIcmZWdu1DlHWS74umVQ==", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/@safe-global/safe-apps-provider/node_modules/isows": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.4.tgz", + "integrity": "sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wagmi-dev" + } + ], + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/@safe-global/safe-apps-provider/node_modules/viem": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.15.1.tgz", + "integrity": "sha512-Vrveen3vDOJyPf8Q8TDyWePG2pTdK6IpSi4P6qlvAP+rXkAeqRvwYBy9AmGm+BeYpCETAyTT0SrCP6458XSt+w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@scure/bip32": "1.3.2", + "@scure/bip39": "1.2.1", + "abitype": "1.0.0", + "isows": "1.0.4", + "ws": "8.17.1" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@safe-global/safe-apps-provider/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "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/@safe-global/safe-apps-sdk": { @@ -6871,7 +7791,7 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "node_modules/@scure/bip32/node_modules/@noble/curves/node_modules/@noble/hashes": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", @@ -6882,6 +7802,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@scure/bip39": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.2.1.tgz", @@ -6894,6 +7825,17 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@semantic-release/commit-analyzer": { "version": "10.0.4", "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-10.0.4.tgz", @@ -6926,7 +7868,6 @@ }, "node_modules/@semantic-release/git": { "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", "dev": true, "dependencies": { @@ -7214,9 +8155,9 @@ } }, "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -7312,6 +8253,18 @@ "node": ">=16" } }, + "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sideway/address": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", @@ -7331,9 +8284,9 @@ "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" }, "node_modules/@sindresorhus/merge-streams": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-1.0.0.tgz", - "integrity": "sha512-rUV5WyJrJLoloD4NDN1V1+LDMDWOa4OTsT4yYJwQNpTU6FWxkxHpL7eu4w+DmiH8x/EAM1otkPE1+LaspIbplw==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", "dev": true, "engines": { "node": ">=18" @@ -7343,648 +8296,743 @@ } }, "node_modules/@smithy/abort-controller": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-2.1.1.tgz", - "integrity": "sha512-1+qdrUqLhaALYL0iOcN43EP6yAXXQ2wWZ6taf4S2pNGowmOc5gx+iMQv+E42JizNJjB0+gEadOXeV1Bf7JWL1Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.0.1.tgz", + "integrity": "sha512-Jb7jg4E+C+uvrUQi+h9kbILY6ts6fglKZzseMCHlH9ayq+1f5QdpYf8MV/xppuiN6DAMJAmwGz53GwP3213dmA==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/chunked-blob-reader": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-2.1.1.tgz", - "integrity": "sha512-NjNFCKxC4jVvn+lUr3Yo4/PmUJj3tbyqH6GNHueyTGS5Q27vlEJ1MkNhUDV8QGxJI7Bodnc2pD18lU2zRfhHlQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", + "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-2.1.1.tgz", - "integrity": "sha512-zNW+43dltfNMUrBEYLMWgI8lQr0uhtTcUyxkgC9EP4j17WREzgSFMPUFVrVV6Rc2+QtWERYjb4tzZnQGa7R9fQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz", + "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==", "dependencies": { - "@smithy/util-base64": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/config-resolver": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-2.1.1.tgz", - "integrity": "sha512-lxfLDpZm+AWAHPFZps5JfDoO9Ux1764fOgvRUBpHIO8HWHcSN1dkgsago1qLRVgm1BZ8RCm8cgv99QvtaOWIhw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.2.tgz", + "integrity": "sha512-wUyG6ezpp2sWAvfqmSYTROwFUmJqKV78GLf55WODrosBcT0BAMd9bOLO4HRhynWBgAobPml2cF9ZOdgCe00r+g==", "dependencies": { - "@smithy/node-config-provider": "^2.2.1", - "@smithy/types": "^2.9.1", - "@smithy/util-config-provider": "^2.2.1", - "@smithy/util-middleware": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/core": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-1.3.1.tgz", - "integrity": "sha512-tf+NIu9FkOh312b6M9G4D68is4Xr7qptzaZGZUREELF8ysE1yLKphqt7nsomjKZVwW7WE5pDDex9idowNGRQ/Q==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.2.1.tgz", + "integrity": "sha512-R8Pzrr2v2oGUoj4CTZtKPr87lVtBsz7IUBGhSwS1kc6Cj0yPwNdYbkzhFsxhoDE9+BPl09VN/6rFsW9GJzWnBA==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-retry": "^2.1.1", - "@smithy/middleware-serde": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/util-middleware": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-retry": "^3.0.4", + "@smithy/middleware-serde": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/util-middleware": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/credential-provider-imds": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-2.2.1.tgz", - "integrity": "sha512-7XHjZUxmZYnONheVQL7j5zvZXga+EWNgwEAP6OPZTi7l8J4JTeNh9aIOfE5fKHZ/ee2IeNOh54ZrSna+Vc6TFA==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.1.1.tgz", + "integrity": "sha512-htndP0LwHdE3R3Nam9ZyVWhwPYOmD4xCL79kqvNxy8u/bv0huuy574CSiRY4cvEICgimv8jlVfLeZ7zZqbnB2g==", "dependencies": { - "@smithy/node-config-provider": "^2.2.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/eventstream-codec": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-2.1.1.tgz", - "integrity": "sha512-E8KYBxBIuU4c+zrpR22VsVrOPoEDzk35bQR3E+xm4k6Pa6JqzkDOdMyf9Atac5GPNKHJBdVaQ4JtjdWX2rl/nw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.0.tgz", + "integrity": "sha512-XFDl70ZY+FabSnTX3oQGGYvdbEaC8vPEFkCEOoBkumqaZIwR1WjjJCDu2VMXlHbKWKshefWXdT0NYteL5v6uFw==", "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.9.1", - "@smithy/util-hex-encoding": "^2.1.1", - "tslib": "^2.5.0" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^3.1.0", + "@smithy/util-hex-encoding": "^3.0.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/eventstream-serde-browser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-2.1.1.tgz", - "integrity": "sha512-JvEdCmGlZUay5VtlT8/kdR6FlvqTDUiJecMjXsBb0+k1H/qc9ME5n2XKPo8q/MZwEIA1GmGgYMokKGjVvMiDow==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.2.tgz", + "integrity": "sha512-6147vdedQGaWn3Nt4P1KV0LuV8IH4len1SAeycyko0p8oRLWFyYyx0L8JHGclePDSphkjxZqBHtyIfyupCaTGg==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^3.0.2", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-2.1.1.tgz", - "integrity": "sha512-EqNqXYp3+dk//NmW3NAgQr9bEQ7fsu/CcxQmTiq07JlaIcne/CBWpMZETyXm9w5LXkhduBsdXdlMscfDUDn2fA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.1.tgz", + "integrity": "sha512-6+B8P+5Q1mll4u7IoI7mpmYOSW3/c2r3WQoYLdqOjbIKMixJFGmN79ZjJiNMy4X2GZ4We9kQ6LfnFuczSlhcyw==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/eventstream-serde-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-2.1.1.tgz", - "integrity": "sha512-LF882q/aFidFNDX7uROAGxq3H0B7rjyPkV6QDn6/KDQ+CG7AFkRccjxRf1xqajq/Pe4bMGGr+VKAaoF6lELIQw==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.2.tgz", + "integrity": "sha512-DLtmGAfqxZAql8rB+HqyPlUne22u3EEVj+hxlUjgXk0hXt+SfLGK0ljzRFmiWQ3qGpHu1NdJpJA9e5JE/dJxFw==", "dependencies": { - "@smithy/eventstream-serde-universal": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/eventstream-serde-universal": "^3.0.2", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/eventstream-serde-universal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-2.1.1.tgz", - "integrity": "sha512-LR0mMT+XIYTxk4k2fIxEA1BPtW3685QlqufUEUAX1AJcfFfxNDKEvuCRZbO8ntJb10DrIFVJR9vb0MhDCi0sAQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.2.tgz", + "integrity": "sha512-d3SgAIQ/s4EbU8HAHJ8m2MMJPAL30nqJktyVgvqZWNznA8PJl61gJw5gj/yjIt/Fvs3d4fU8FmPPAhdp2yr/7A==", "dependencies": { - "@smithy/eventstream-codec": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/eventstream-codec": "^3.1.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/fetch-http-handler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-2.4.1.tgz", - "integrity": "sha512-VYGLinPsFqH68lxfRhjQaSkjXM7JysUOJDTNjHBuN/ykyRb2f1gyavN9+VhhPTWCy32L4yZ2fdhpCs/nStEicg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.0.2.tgz", + "integrity": "sha512-0nW6tLK0b7EqSsfKvnOmZCgJqnodBAnvqcrlC5dotKfklLedPTRGsQamSVbVDWyuU/QGg+YbZDJUQ0CUufJXZQ==", + "dependencies": { + "@smithy/protocol-http": "^4.0.1", + "@smithy/querystring-builder": "^3.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-blob-browser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.0.tgz", + "integrity": "sha512-lKEHDN6bLzYdx5cFmdMHfYVmmTZTmjphwPBSumgkaniEYwRAXnbDEGETeuzfquS9Py1aH6cmqzXWxxkD7mV3sA==", + "dependencies": { + "@smithy/chunked-blob-reader": "^3.0.0", + "@smithy/chunked-blob-reader-native": "^3.0.0", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/hash-node": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.1.tgz", + "integrity": "sha512-w2ncjgk2EYO2+WhAsSQA8owzoOSY7IL1qVytlwpnL1pFGWTjIoIh5nROkEKXY51unB63bMGZqDiVoXaFbyKDlg==", "dependencies": { - "@smithy/protocol-http": "^3.1.1", - "@smithy/querystring-builder": "^2.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-base64": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-blob-browser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-2.1.1.tgz", - "integrity": "sha512-jizu1+2PAUjiGIfRtlPEU8Yo6zn+d78ti/ZHDesdf1SUn2BuZW433JlPoCOLH3dBoEEvTgLvQ8tUGSoTTALA+A==", + "node_modules/@smithy/hash-node/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", "dependencies": { - "@smithy/chunked-blob-reader": "^2.1.1", - "@smithy/chunked-blob-reader-native": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/@smithy/hash-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-2.1.1.tgz", - "integrity": "sha512-Qhoq0N8f2OtCnvUpCf+g1vSyhYQrZjhSwvJ9qvR8BUGOtTXiyv2x1OD2e6jVGmlpC4E4ax1USHoyGfV9JFsACg==", + "node_modules/@smithy/hash-node/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", "dependencies": { - "@smithy/types": "^2.9.1", - "@smithy/util-buffer-from": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/hash-stream-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-2.1.1.tgz", - "integrity": "sha512-VgDaKcfCy0iHcmtAZgZ3Yw9g37Gkn2JsQiMtFQXUh8Wmo3GfNgDwLOtdhJ272pOT7DStzpe9cNr+eV5Au8KfQA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.0.tgz", + "integrity": "sha512-OkU9vjN17yYsXTSrouctZn2iYwG4z8WSc7F50+9ogG2crOtMopkop+22j35tX2ry2i/vLRCYgnqEmBWfvnYT2g==", "dependencies": { - "@smithy/types": "^2.9.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/invalid-dependency": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-2.1.1.tgz", - "integrity": "sha512-7WTgnKw+VPg8fxu2v9AlNOQ5yaz6RA54zOVB4f6vQuR0xFKd+RzlCpt0WidYTsye7F+FYDIaS/RnJW4pxjNInw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.1.tgz", + "integrity": "sha512-RSNF/32BKygXKKMyS7koyuAq1rcdW5p5c4EFa77QenBFze9As+JiRnV9OWBh2cB/ejGZalEZjvIrMLHwJl7aGA==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/is-array-buffer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.1.1.tgz", - "integrity": "sha512-xozSQrcUinPpNPNPds4S7z/FakDTh1MZWtRP/2vQtYB/u3HYrX2UXuZs+VhaKBd6Vc7g2XPr2ZtwGBNDN6fNKQ==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@smithy/md5-js": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-2.1.1.tgz", - "integrity": "sha512-L3MbIYBIdLlT+MWTYrdVSv/dow1+6iZ1Ad7xS0OHxTTs17d753ZcpOV4Ro7M7tRAVWML/sg2IAp/zzCb6aAttg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.1.tgz", + "integrity": "sha512-wQa0YGsR4Zb1GQLGwOOgRAbkj22P6CFGaFzu5bKk8K4HVNIC2dBlIxqZ/baF0pLiSZySAPdDZT7CdZ7GkGXt5A==", "dependencies": { - "@smithy/types": "^2.9.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/middleware-content-length": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-2.1.1.tgz", - "integrity": "sha512-rSr9ezUl9qMgiJR0UVtVOGEZElMdGFyl8FzWEF5iEKTlcWxGr2wTqGfDwtH3LAB7h+FPkxqv4ZU4cpuCN9Kf/g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.1.tgz", + "integrity": "sha512-6QdK/VbrCfXD5/QolE2W/ok6VqxD+SM28Ds8iSlEHXZwv4buLsvWyvoEEy0322K/g5uFgPzBmZjGqesTmPL+yQ==", "dependencies": { - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-endpoint": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-2.4.1.tgz", - "integrity": "sha512-XPZTb1E2Oav60Ven3n2PFx+rX9EDsU/jSTA8VDamt7FXks67ekjPY/XrmmPDQaFJOTUHJNKjd8+kZxVO5Ael4Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.0.2.tgz", + "integrity": "sha512-gWEaGYB3Bei17Oiy/F2IlUPpBazNXImytoOdJ1xbrUOaJKAOiUhx8/4FOnYLLJHdAwa9PlvJ2ULda2f/Dnwi9w==", "dependencies": { - "@smithy/middleware-serde": "^2.1.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/url-parser": "^2.1.1", - "@smithy/util-middleware": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/middleware-serde": "^3.0.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "@smithy/url-parser": "^3.0.1", + "@smithy/util-middleware": "^3.0.1", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-retry": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-2.1.1.tgz", - "integrity": "sha512-eMIHOBTXro6JZ+WWzZWd/8fS8ht5nS5KDQjzhNMHNRcG5FkNTqcKpYhw7TETMYzbLfhO5FYghHy1vqDWM4FLDA==", - "dependencies": { - "@smithy/node-config-provider": "^2.2.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/service-error-classification": "^2.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/util-middleware": "^2.1.1", - "@smithy/util-retry": "^2.1.1", - "tslib": "^2.5.0", - "uuid": "^8.3.2" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.4.tgz", + "integrity": "sha512-Tu+FggbLNF5G9L6Wi8o32Mg4bhlBInWlhhaFKyytGRnkfxGopxFVXJQn7sjZdFYJyTz6RZZa06tnlvavUgtoVg==", + "dependencies": { + "@smithy/node-config-provider": "^3.1.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/service-error-classification": "^3.0.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-retry": "^3.0.1", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-serde": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-2.1.1.tgz", - "integrity": "sha512-D8Gq0aQBeE1pxf3cjWVkRr2W54t+cdM2zx78tNrVhqrDykRA7asq8yVJij1u5NDtKzKqzBSPYh7iW0svUKg76g==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.1.tgz", + "integrity": "sha512-ak6H/ZRN05r5+SR0/IUc5zOSyh2qp3HReg1KkrnaSLXmncy9lwOjNqybX4L4x55/e5mtVDn1uf/gQ6bw5neJPw==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/middleware-stack": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-2.1.1.tgz", - "integrity": "sha512-KPJhRlhsl8CjgGXK/DoDcrFGfAqoqvuwlbxy+uOO4g2Azn1dhH+GVfC3RAp+6PoL5PWPb+vt6Z23FP+Mr6qeCw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.1.tgz", + "integrity": "sha512-fS5uT//y1SlBdkzIvgmWQ9FufwMXrHSSbuR25ygMy1CRDIZkcBMoF4oTMYNfR9kBlVBcVzlv7joFdNrFuQirPA==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-config-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-2.2.1.tgz", - "integrity": "sha512-epzK3x1xNxA9oJgHQ5nz+2j6DsJKdHfieb+YgJ7ATWxzNcB7Hc+Uya2TUck5MicOPhDV8HZImND7ZOecVr+OWg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.1.tgz", + "integrity": "sha512-z5G7+ysL4yUtMghUd2zrLkecu0mTfnYlt5dR76g/HsFqf7evFazwiZP1ag2EJenGxNBDwDM5g8nm11NPogiUVA==", "dependencies": { - "@smithy/property-provider": "^2.1.1", - "@smithy/shared-ini-file-loader": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/property-provider": "^3.1.1", + "@smithy/shared-ini-file-loader": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-http-handler": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-2.3.1.tgz", - "integrity": "sha512-gLA8qK2nL9J0Rk/WEZSvgin4AppvuCYRYg61dcUo/uKxvMZsMInL5I5ZdJTogOvdfVug3N2dgI5ffcUfS4S9PA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.0.1.tgz", + "integrity": "sha512-hlBI6MuREA4o1wBMEt+QNhUzoDtFFvwR6ecufimlx9D79jPybE/r8kNorphXOi91PgSO9S2fxRjcKCLk7Jw8zA==", "dependencies": { - "@smithy/abort-controller": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/querystring-builder": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/querystring-builder": "^3.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/property-provider": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-2.1.1.tgz", - "integrity": "sha512-FX7JhhD/o5HwSwg6GLK9zxrMUrGnb3PzNBrcthqHKBc3dH0UfgEAU24xnJ8F0uow5mj17UeBEOI6o3CF2k7Mhw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.1.tgz", + "integrity": "sha512-YknOMZcQkB5on+MU0DvbToCmT2YPtTETMXW0D3+/Iln7ezT+Zm1GMHhCW1dOH/X/+LkkQD9aXEoCX/B10s4Xdw==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/protocol-http": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-3.1.1.tgz", - "integrity": "sha512-6ZRTSsaXuSL9++qEwH851hJjUA0OgXdQFCs+VDw4tGH256jQ3TjYY/i34N4vd24RV3nrjNsgd1yhb57uMoKbzQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.0.1.tgz", + "integrity": "sha512-eBhm9zwcFPEazc654c0BEWtxYAzrw+OhoSf5pkwKzfftWKXRoqEhwOE2Pvn30v0iAdo7Mfsfb6pi1NnZlGCMpg==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-builder": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-2.1.1.tgz", - "integrity": "sha512-C/ko/CeEa8jdYE4gt6nHO5XDrlSJ3vdCG0ZAc6nD5ZIE7LBp0jCx4qoqp7eoutBu7VrGMXERSRoPqwi1WjCPbg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.1.tgz", + "integrity": "sha512-vKitpnG/2KOMVlx3x1S3FkBH075EROG3wcrcDaNerQNh8yuqnSL23btCD2UyX4i4lpPzNW6VFdxbn2Z25b/g5Q==", "dependencies": { - "@smithy/types": "^2.9.1", - "@smithy/util-uri-escape": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-2.1.1.tgz", - "integrity": "sha512-H4+6jKGVhG1W4CIxfBaSsbm98lOO88tpDWmZLgkJpt8Zkk/+uG0FmmqMuCAc3HNM2ZDV+JbErxr0l5BcuIf/XQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.1.tgz", + "integrity": "sha512-Qt8DMC05lVS8NcQx94lfVbZSX+2Ym7032b/JR8AlboAa/D669kPzqb35dkjkvAG6+NWmUchef3ENtrD6F+5n8Q==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/service-error-classification": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-2.1.1.tgz", - "integrity": "sha512-txEdZxPUgM1PwGvDvHzqhXisrc5LlRWYCf2yyHfvITWioAKat7srQvpjMAvgzf0t6t7j8yHrryXU9xt7RZqFpw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.1.tgz", + "integrity": "sha512-ubFUvIePjDCyIzZ+pLETqNC6KXJ/fc6g+/baqel7Zf6kJI/kZKgjwkCI7zbUhoUuOZ/4eA/87YasVu40b/B4bA==", "dependencies": { - "@smithy/types": "^2.9.1" + "@smithy/types": "^3.1.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-2.3.1.tgz", - "integrity": "sha512-2E2kh24igmIznHLB6H05Na4OgIEilRu0oQpYXo3LCNRrawHAcfDKq9004zJs+sAMt2X5AbY87CUCJ7IpqpSgdw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.1.tgz", + "integrity": "sha512-nD6tXIX2126/P9e3wqRY1bm9dTtPZwRDyjVOd18G28o+1UOG+kOVgUwujE795HslSuPlEgqzsH5sgNP1hDjj9g==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/signature-v4": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-2.1.1.tgz", - "integrity": "sha512-Hb7xub0NHuvvQD3YwDSdanBmYukoEkhqBjqoxo+bSdC0ryV9cTfgmNjuAQhTPYB6yeU7hTR+sPRiFMlxqv6kmg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-3.1.0.tgz", + "integrity": "sha512-m0/6LW3IQ3/JBcdhqjpkpABPTPhcejqeAn0U877zxBdNLiWAnG2WmCe5MfkUyVuvpFTPQnQwCo/0ZBR4uF5kxg==", "dependencies": { - "@smithy/eventstream-codec": "^2.1.1", - "@smithy/is-array-buffer": "^2.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-hex-encoding": "^2.1.1", - "@smithy/util-middleware": "^2.1.1", - "@smithy/util-uri-escape": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/types": "^3.1.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.1", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/smithy-client": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-2.3.1.tgz", - "integrity": "sha512-YsTdU8xVD64r2pLEwmltrNvZV6XIAC50LN6ivDopdt+YiF/jGH6PY9zUOu0CXD/d8GMB8gbhnpPsdrjAXHS9QA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.2.tgz", + "integrity": "sha512-f3eQpczBOFUtdT/ptw2WpUKu1qH1K7xrssrSiHYtd9TuLXkvFqb88l9mz9FHeUVNSUxSnkW1anJnw6rLwUKzQQ==", "dependencies": { - "@smithy/middleware-endpoint": "^2.4.1", - "@smithy/middleware-stack": "^2.1.1", - "@smithy/protocol-http": "^3.1.1", - "@smithy/types": "^2.9.1", - "@smithy/util-stream": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/middleware-endpoint": "^3.0.2", + "@smithy/middleware-stack": "^3.0.1", + "@smithy/protocol-http": "^4.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-stream": "^3.0.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/types": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-2.9.1.tgz", - "integrity": "sha512-vjXlKNXyprDYDuJ7UW5iobdmyDm6g8dDG+BFUncAg/3XJaN45Gy5RWWWUVgrzIK7S4R1KWgIX5LeJcfvSI24bw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.1.0.tgz", + "integrity": "sha512-qi4SeCVOUPjhSSZrxxB/mB8DrmuSFUcJnD9KXjuP+7C3LV/KFV4kpuUSH3OHDZgQB9TEH/1sO/Fq/5HyaK9MPw==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/url-parser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-2.1.1.tgz", - "integrity": "sha512-qC9Bv8f/vvFIEkHsiNrUKYNl8uKQnn4BdhXl7VzQRP774AwIjiSMMwkbT+L7Fk8W8rzYVifzJNYxv1HwvfBo3Q==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.1.tgz", + "integrity": "sha512-G140IlNFlzYWVCedC4E2d6NycM1dCUbe5CnsGW1hmGt4hYKiGOw0v7lVru9WAn5T2w09QEjl4fOESWjGmCvVmg==", "dependencies": { - "@smithy/querystring-parser": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/querystring-parser": "^3.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" } }, "node_modules/@smithy/util-base64": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-2.1.1.tgz", - "integrity": "sha512-UfHVpY7qfF/MrgndI5PexSKVTxSZIdz9InghTFa49QOvuu9I52zLPLUHXvHpNuMb1iD2vmc6R+zbv/bdMipR/g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", "dependencies": { - "@smithy/util-buffer-from": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/util-body-length-browser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-2.1.1.tgz", - "integrity": "sha512-ekOGBLvs1VS2d1zM2ER4JEeBWAvIOUKeaFch29UjjJsxmZ/f0L3K3x0dEETgh3Q9bkZNHgT+rkdl/J/VUqSRag==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" } }, "node_modules/@smithy/util-body-length-node": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-2.2.1.tgz", - "integrity": "sha512-/ggJG+ta3IDtpNVq4ktmEUtOkH1LW64RHB5B0hcr5ZaWBmo96UX2cIOVbjCqqDickTXqBWZ4ZO0APuaPrD7Abg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-buffer-from": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.1.1.tgz", - "integrity": "sha512-clhNjbyfqIv9Md2Mg6FffGVrJxw7bgK7s3Iax36xnfVj6cg0fUG7I4RH0XgXJF8bxi+saY5HR21g2UPKSxVCXg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dependencies": { - "@smithy/is-array-buffer": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" }, "engines": { "node": ">=14.0.0" } }, "node_modules/@smithy/util-config-provider": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-2.2.1.tgz", - "integrity": "sha512-50VL/tx9oYYcjJn/qKqNy7sCtpD0+s8XEBamIFo4mFFTclKMNp+rsnymD796uybjiIquB7VCB/DeafduL0y2kw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-2.1.1.tgz", - "integrity": "sha512-lqLz/9aWRO6mosnXkArtRuQqqZBhNpgI65YDpww4rVQBuUT7qzKbDLG5AmnQTCiU4rOquaZO/Kt0J7q9Uic7MA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.4.tgz", + "integrity": "sha512-sXtin3Mue3A3xo4+XkozpgPptgmRwvNPOqTvb3ANGTCzzoQgAPBNjpE+aXCINaeSMXwHmv7E2oEn2vWdID+SAQ==", "dependencies": { - "@smithy/property-provider": "^2.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", "bowser": "^2.11.0", - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-2.1.1.tgz", - "integrity": "sha512-tYVrc+w+jSBfBd267KDnvSGOh4NMz+wVH7v4CClDbkdPfnjvImBZsOURncT5jsFwR9KCuDyPoSZq4Pa6+eCUrA==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.4.tgz", + "integrity": "sha512-CUF6TyxLh3CgBRVYgZNOPDfzHQjeQr0vyALR6/DkQkOm7rNfGEzW1BRFi88C73pndmfvoiIT7ochuT76OPz9Dw==", "dependencies": { - "@smithy/config-resolver": "^2.1.1", - "@smithy/credential-provider-imds": "^2.2.1", - "@smithy/node-config-provider": "^2.2.1", - "@smithy/property-provider": "^2.1.1", - "@smithy/smithy-client": "^2.3.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/config-resolver": "^3.0.2", + "@smithy/credential-provider-imds": "^3.1.1", + "@smithy/node-config-provider": "^3.1.1", + "@smithy/property-provider": "^3.1.1", + "@smithy/smithy-client": "^3.1.2", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { "node": ">= 10.0.0" } }, "node_modules/@smithy/util-endpoints": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-1.1.1.tgz", - "integrity": "sha512-sI4d9rjoaekSGEtq3xSb2nMjHMx8QXcz2cexnVyRWsy4yQ9z3kbDpX+7fN0jnbdOp0b3KSTZJZ2Yb92JWSanLw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.2.tgz", + "integrity": "sha512-4zFOcBFQvifd2LSD4a1dKvfIWWwh4sWNtS3oZ7mpob/qPPmJseqKB148iT+hWCDsG//TmI+8vjYPgZdvnkYlTg==", "dependencies": { - "@smithy/node-config-provider": "^2.2.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/node-config-provider": "^3.1.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-hex-encoding": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-2.1.1.tgz", - "integrity": "sha512-3UNdP2pkYUUBGEXzQI9ODTDK+Tcu1BlCyDBaRHwyxhA+8xLP8agEKQq4MGmpjqb4VQAjq9TwlCQX0kP6XDKYLg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-middleware": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-2.1.1.tgz", - "integrity": "sha512-mKNrk8oz5zqkNcbcgAAepeJbmfUW6ogrT2Z2gDbIUzVzNAHKJQTYmH9jcy0jbWb+m7ubrvXKb6uMjkSgAqqsFA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.1.tgz", + "integrity": "sha512-WRODCQtUsO7vIvfrdxS8RFPeLKcewYtaCglZsBsedIKSUGIIvMlZT5oh+pCe72I+1L+OjnZuqRNpN2LKhWA4KQ==", "dependencies": { - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-retry": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-2.1.1.tgz", - "integrity": "sha512-Mg+xxWPTeSPrthpC5WAamJ6PW4Kbo01Fm7lWM1jmGRvmrRdsd3192Gz2fBXAMURyXpaNxyZf6Hr/nQ4q70oVEA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.1.tgz", + "integrity": "sha512-5lRtYm+8fNFEUTdqZXg5M4ppVp40rMIJfR1TpbHAhKQgPIDpWT+iYMaqgnwEbtpi9U1smyUOPv5Sg+M1neOBgw==", "dependencies": { - "@smithy/service-error-classification": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/service-error-classification": "^3.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-stream": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-2.1.1.tgz", - "integrity": "sha512-J7SMIpUYvU4DQN55KmBtvaMc7NM3CZ2iWICdcgaovtLzseVhAqFRYqloT3mh0esrFw+3VEK6nQFteFsTqZSECQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.0.2.tgz", + "integrity": "sha512-n5Obp5AnlI6qHo8sbupwrcpBe6vFp4qkl0SRNuExKPNrH3ABAMG2ZszRTIUIv2b4AsFrCO+qiy4uH1Q3z1dxTA==", "dependencies": { - "@smithy/fetch-http-handler": "^2.4.1", - "@smithy/node-http-handler": "^2.3.1", - "@smithy/types": "^2.9.1", - "@smithy/util-base64": "^2.1.1", - "@smithy/util-buffer-from": "^2.1.1", - "@smithy/util-hex-encoding": "^2.1.1", - "@smithy/util-utf8": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/fetch-http-handler": "^3.0.2", + "@smithy/node-http-handler": "^3.0.1", + "@smithy/types": "^3.1.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/util-uri-escape": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-2.1.1.tgz", - "integrity": "sha512-saVzI1h6iRBUVSqtnlOnc9ssU09ypo7n+shdQ8hBTZno/9rZ3AuRYvoHInV57VF7Qn7B+pFJG7qTzFiHxWlWBw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", "dependencies": { - "tslib": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-utf8": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.1.1.tgz", - "integrity": "sha512-BqTpzYEcUMDwAKr7/mVRUtHDhs6ZoXDi9NypMvMfOr/+u1NW7JgqodPDECiiLboEm6bobcPcECxzjtQh865e9A==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", "dependencies": { - "@smithy/util-buffer-from": "^2.1.1", - "tslib": "^2.5.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-utf8/node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-utf8/node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/util-waiter": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-2.1.1.tgz", - "integrity": "sha512-kYy6BLJJNif+uqNENtJqWdXcpqo1LS+nj1AfXcDhOpqpSHJSAkVySLyZV9fkmuVO21lzGoxjvd1imGGJHph/IA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.0.1.tgz", + "integrity": "sha512-wwnrVQdjQxvWGOAiLmqlEhENGCcDIN+XJ/+usPOgSZObAslrCXgKlkX7rNVwIWW2RhPguTKthvF+4AoO0Z6KpA==", "dependencies": { - "@smithy/abort-controller": "^2.1.1", - "@smithy/types": "^2.9.1", - "tslib": "^2.5.0" + "@smithy/abort-controller": "^3.0.1", + "@smithy/types": "^3.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0" } }, "node_modules/@solana/buffer-layout": { @@ -8012,83 +9060,144 @@ "node": ">= 10" } }, + "node_modules/@solana/codecs": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0-preview.2.tgz", + "integrity": "sha512-4HHzCD5+pOSmSB71X6w9ptweV48Zj1Vqhe732+pcAQ2cMNnN0gMPMdDq7j3YwaZDZ7yrILVV/3+HTnfT77t2yA==", + "dependencies": { + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-data-structures": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/codecs-strings": "2.0.0-preview.2", + "@solana/options": "2.0.0-preview.2" + } + }, "node_modules/@solana/codecs-core": { - "version": "2.0.0-experimental.8618508", - "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-experimental.8618508.tgz", - "integrity": "sha512-JCz7mKjVKtfZxkuDtwMAUgA7YvJcA2BwpZaA1NOLcted4OMC4Prwa3DUe3f3181ixPYaRyptbF0Ikq2MbDkYEA==" + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0-preview.2.tgz", + "integrity": "sha512-gLhCJXieSCrAU7acUJjbXl+IbGnqovvxQLlimztPoGgfLQ1wFYu+XJswrEVQqknZYK1pgxpxH3rZ+OKFs0ndQg==", + "dependencies": { + "@solana/errors": "2.0.0-preview.2" + } }, "node_modules/@solana/codecs-data-structures": { - "version": "2.0.0-experimental.8618508", - "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-experimental.8618508.tgz", - "integrity": "sha512-sLpjL9sqzaDdkloBPV61Rht1tgaKq98BCtIKRuyscIrmVPu3wu0Bavk2n/QekmUzaTsj7K1pVSniM0YqCdnEBw==", + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0-preview.2.tgz", + "integrity": "sha512-Xf5vIfromOZo94Q8HbR04TbgTwzigqrKII0GjYr21K7rb3nba4hUW2ir8kguY7HWFBcjHGlU5x3MevKBOLp3Zg==", "dependencies": { - "@solana/codecs-core": "2.0.0-experimental.8618508", - "@solana/codecs-numbers": "2.0.0-experimental.8618508" + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" } }, "node_modules/@solana/codecs-numbers": { - "version": "2.0.0-experimental.8618508", - "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-experimental.8618508.tgz", - "integrity": "sha512-EXQKfzFr3CkKKNzKSZPOOOzchXsFe90TVONWsSnVkonO9z+nGKALE0/L9uBmIFGgdzhhU9QQVFvxBMclIDJo2Q==", + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0-preview.2.tgz", + "integrity": "sha512-aLZnDTf43z4qOnpTcDsUVy1Ci9im1Md8thWipSWbE+WM9ojZAx528oAql+Cv8M8N+6ALKwgVRhPZkto6E59ARw==", "dependencies": { - "@solana/codecs-core": "2.0.0-experimental.8618508" + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" } }, "node_modules/@solana/codecs-strings": { - "version": "2.0.0-experimental.8618508", - "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-experimental.8618508.tgz", - "integrity": "sha512-b2yhinr1+oe+JDmnnsV0641KQqqDG8AQ16Z/x7GVWO+AWHMpRlHWVXOq8U1yhPMA4VXxl7i+D+C6ql0VGFp0GA==", + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0-preview.2.tgz", + "integrity": "sha512-EgBwY+lIaHHgMJIqVOGHfIfpdmmUDNoNO/GAUGeFPf+q0dF+DtwhJPEMShhzh64X2MeCZcmSO6Kinx0Bvmmz2g==", "dependencies": { - "@solana/codecs-core": "2.0.0-experimental.8618508", - "@solana/codecs-numbers": "2.0.0-experimental.8618508" + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2", + "@solana/errors": "2.0.0-preview.2" }, "peerDependencies": { "fastestsmallesttextencoderdecoder": "^1.0.22" } }, + "node_modules/@solana/errors": { + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0-preview.2.tgz", + "integrity": "sha512-H2DZ1l3iYF5Rp5pPbJpmmtCauWeQXRJapkDg8epQ8BJ7cA2Ut/QEtC3CMmw/iMTcuS6uemFNLcWvlOfoQhvQuA==", + "dependencies": { + "chalk": "^5.3.0", + "commander": "^12.0.0" + }, + "bin": { + "errors": "bin/cli.js" + } + }, + "node_modules/@solana/errors/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@solana/errors/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } + }, "node_modules/@solana/options": { - "version": "2.0.0-experimental.8618508", - "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-experimental.8618508.tgz", - "integrity": "sha512-fy/nIRAMC3QHvnKi63KEd86Xr/zFBVxNW4nEpVEU2OT0gCEKwHY4Z55YHf7XujhyuM3PNpiBKg/YYw5QlRU4vg==", + "version": "2.0.0-preview.2", + "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0-preview.2.tgz", + "integrity": "sha512-FAHqEeH0cVsUOTzjl5OfUBw2cyT8d5Oekx4xcn5hn+NyPAfQJgM3CEThzgRD6Q/4mM5pVUnND3oK/Mt1RzSE/w==", "dependencies": { - "@solana/codecs-core": "2.0.0-experimental.8618508", - "@solana/codecs-numbers": "2.0.0-experimental.8618508" + "@solana/codecs-core": "2.0.0-preview.2", + "@solana/codecs-numbers": "2.0.0-preview.2" } }, "node_modules/@solana/spl-token": { - "version": "0.3.10", - "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.10.tgz", - "integrity": "sha512-YFCtV8yC64Ef2w2HKOSNYwcsMt70e/GLMZYkZbdD6tYOlp4NnjUkY1EYxtIbVhsm3LSXoJV43u5chnMni+gr7w==", + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.4.6.tgz", + "integrity": "sha512-1nCnUqfHVtdguFciVWaY/RKcQz1IF4b31jnKgAmjU9QVN1q7dRUkTEWJZgTYIEtsULjVnC9jRqlhgGN39WbKKA==", "dependencies": { "@solana/buffer-layout": "^4.0.0", "@solana/buffer-layout-utils": "^0.2.0", - "@solana/spl-token-metadata": "^0.1.2", + "@solana/spl-token-group": "^0.0.4", + "@solana/spl-token-metadata": "^0.1.4", "buffer": "^6.0.3" }, "engines": { "node": ">=16" }, "peerDependencies": { - "@solana/web3.js": "^1.87.6" + "@solana/web3.js": "^1.91.6" + } + }, + "node_modules/@solana/spl-token-group": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@solana/spl-token-group/-/spl-token-group-0.0.4.tgz", + "integrity": "sha512-7+80nrEMdUKlK37V6kOe024+T7J4nNss0F8LQ9OOPYdWCCfJmsGUzVx2W3oeizZR4IHM6N4yC9v1Xqwc3BTPWw==", + "dependencies": { + "@solana/codecs": "2.0.0-preview.2", + "@solana/spl-type-length-value": "0.1.0" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.91.6" } }, "node_modules/@solana/spl-token-metadata": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.2.tgz", - "integrity": "sha512-hJYnAJNkDrtkE2Q41YZhCpeOGU/0JgRFXbtrtOuGGeKc3pkEUHB9DDoxZAxx+XRno13GozUleyBi0qypz4c3bw==", - "dependencies": { - "@solana/codecs-core": "2.0.0-experimental.8618508", - "@solana/codecs-data-structures": "2.0.0-experimental.8618508", - "@solana/codecs-numbers": "2.0.0-experimental.8618508", - "@solana/codecs-strings": "2.0.0-experimental.8618508", - "@solana/options": "2.0.0-experimental.8618508", + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@solana/spl-token-metadata/-/spl-token-metadata-0.1.4.tgz", + "integrity": "sha512-N3gZ8DlW6NWDV28+vCCDJoTqaCZiF/jDUnk3o8GRkAFzHObiR60Bs1gXHBa8zCPdvOwiG6Z3dg5pg7+RW6XNsQ==", + "dependencies": { + "@solana/codecs": "2.0.0-preview.2", "@solana/spl-type-length-value": "0.1.0" }, "engines": { "node": ">=16" }, "peerDependencies": { - "@solana/web3.js": "^1.87.6" + "@solana/web3.js": "^1.91.6" } }, "node_modules/@solana/spl-type-length-value": { @@ -8132,15 +9241,15 @@ } }, "node_modules/@solana/web3.js": { - "version": "1.87.6", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.87.6.tgz", - "integrity": "sha512-LkqsEBgTZztFiccZZXnawWa8qNCATEqE97/d0vIwjTclmVlc8pBpD1DmjfVHtZ1HS5fZorFlVhXfpwnCNDZfyg==", - "dependencies": { - "@babel/runtime": "^7.23.2", - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.1", - "@solana/buffer-layout": "^4.0.0", - "agentkeepalive": "^4.3.0", + "version": "1.93.0", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.93.0.tgz", + "integrity": "sha512-suf4VYwWxERz4tKoPpXCRHFRNst7jmcFUaD65kII+zg9urpy5PeeqgLV6G5eWGzcVzA9tZeXOju1A1Y+0ojEVw==", + "dependencies": { + "@babel/runtime": "^7.24.7", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", + "@solana/buffer-layout": "^4.0.1", + "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", "bn.js": "^5.2.1", "borsh": "^0.7.0", @@ -8148,14 +9257,21 @@ "buffer": "6.0.3", "fast-stable-stringify": "^1.0.0", "jayson": "^4.1.0", - "node-fetch": "^2.6.12", - "rpc-websockets": "^7.5.1", - "superstruct": "^0.14.2" + "node-fetch": "^2.7.0", + "rpc-websockets": "^9.0.0", + "superstruct": "^1.0.4" + } + }, + "node_modules/@solana/web3.js/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" } }, "node_modules/@solendprotocol/solend-sdk": { "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@solendprotocol/solend-sdk/-/solend-sdk-0.7.6.tgz", "integrity": "sha512-03jJabwZo/Sb0vDy4kL6rzV+OsQrr9ga/BmxE++fk8tDZK7tcwF/iznAmzQzWgBDZzYR2TXUnKXT6qfuG4Pzqw==", "dependencies": { "@marinade.finance/marinade-ts-sdk": "^3.1.1", @@ -8180,6 +9296,23 @@ "typedoc-plugin-cname": "^1.0.1" } }, + "node_modules/@solendprotocol/solend-sdk/node_modules/@solana/spl-token": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@solana/spl-token/-/spl-token-0.3.11.tgz", + "integrity": "sha512-bvohO3rIMSVL24Pb+I4EYTJ6cL82eFpInEXD/I8K8upOGjpqHsKUoAempR/RnUlI1qSFNyFlWJfu6MNUgfbCQQ==", + "dependencies": { + "@solana/buffer-layout": "^4.0.0", + "@solana/buffer-layout-utils": "^0.2.0", + "@solana/spl-token-metadata": "^0.1.2", + "buffer": "^6.0.3" + }, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "@solana/web3.js": "^1.88.0" + } + }, "node_modules/@solendprotocol/solend-sdk/node_modules/@types/bn.js": { "version": "5.1.5", "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", @@ -8188,6 +9321,14 @@ "@types/node": "*" } }, + "node_modules/@solendprotocol/solend-sdk/node_modules/@types/bn.js/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@solendprotocol/solend-sdk/node_modules/axios": { "version": "0.24.0", "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", @@ -8196,76 +9337,6 @@ "follow-redirects": "^1.14.4" } }, - "node_modules/@solendprotocol/solend-sdk/node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "peer": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@solendprotocol/solend-sdk/node_modules/marked": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.7.tgz", - "integrity": "sha512-BJXxkuIfJchcXOJWTT2DOL+yFWifFv2yGYOUzvXg8Qz610QKw+sHCvTMYwA+qWGhlA2uivBezChZ/pBy1tWdkQ==", - "peer": true, - "bin": { - "marked": "bin/marked" - }, - "engines": { - "node": ">= 8.16.2" - } - }, - "node_modules/@solendprotocol/solend-sdk/node_modules/typedoc": { - "version": "0.20.37", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", - "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", - "peer": true, - "dependencies": { - "colors": "^1.4.0", - "fs-extra": "^9.1.0", - "handlebars": "^4.7.7", - "lodash": "^4.17.21", - "lunr": "^2.3.9", - "marked": "~2.0.3", - "minimatch": "^3.0.0", - "progress": "^2.0.3", - "shelljs": "^0.8.4", - "shiki": "^0.9.3", - "typedoc-default-themes": "^0.12.10" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 10.8.0" - }, - "peerDependencies": { - "typescript": "3.9.x || 4.0.x || 4.1.x || 4.2.x" - } - }, - "node_modules/@solendprotocol/solend-sdk/node_modules/typedoc-plugin-cname": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", - "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", - "peerDependencies": { - "typedoc": "^0.20.27" - } - }, - "node_modules/@solendprotocol/solend-sdk/node_modules/typescript": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.2.4.tgz", - "integrity": "sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, "node_modules/@solflare-wallet/utl-sdk": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/@solflare-wallet/utl-sdk/-/utl-sdk-1.4.0.tgz", @@ -8432,9 +9503,9 @@ } }, "node_modules/@stencil/core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.9.0.tgz", - "integrity": "sha512-aWSkhBmk3yPwRAkUwBbzRwmdhb8hKiQ/JMr9m5jthpBZLjtppYbzz6PN2MhSMDfRp6K93eQw5WogSEH4HHuB6w==", + "version": "4.18.3", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.18.3.tgz", + "integrity": "sha512-8yoG5AFQYEPocVtuoc5kvRS0Hku0MoDWDUpADRaXPVHsOFLmxR16LJENj25ucCz5GEfeTGQ/tCE8JAypPmr/fQ==", "bin": { "stencil": "bin/stencil" }, @@ -8452,409 +9523,454 @@ } }, "node_modules/@swagger-api/apidom-ast": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.89.0.tgz", - "integrity": "sha512-Rqfzqo8On7ddhmsKFWsCLsfCJRlOYbIM1itYnxpnj2wxrxQ8v0b91ecFU/Hs/NgDuncvbZYf7gD+71g0QAJrww==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ast/-/apidom-ast-0.99.2.tgz", + "integrity": "sha512-poNlXWAU2XBl192+lo5sC6loB3qGvwK30V1pta6Hs200KeTayVsMMRL4R6wDDYEtsbv7M3vQaFKcRGbYUk/SgA==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-error": "^0.89.0", + "@swagger-api/apidom-error": "^0.99.0", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", "unraw": "^3.0.0" } }, "node_modules/@swagger-api/apidom-core": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.89.0.tgz", - "integrity": "sha512-GVjcvNEh1aPeWZHoVxPx9jMwff0nKPkKjuKyTOrMCCCGIO92J5o42qYxcerW4FTKlnpXvc2vObl0B5X5yh2jIA==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-core/-/apidom-core-0.99.2.tgz", + "integrity": "sha512-deudG9eCxqgPnZyIcZzpmDxF0cja0hdPFS2hB0Op6aB4TKc9mOP1+1iEIDI3Tlx/nzgIayyAl1bblyhK3yH5fQ==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", + "@swagger-api/apidom-ast": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", "@types/ramda": "~0.29.6", "minim": "~0.23.8", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", "short-unique-id": "^5.0.2", "stampit": "^4.3.2" } }, "node_modules/@swagger-api/apidom-error": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-0.89.0.tgz", - "integrity": "sha512-e2xt6Mjf58yfotElZUvM1aglvlTGN8pcJR/kotNc+JmYBTw9gzB8mDjBya4z1Ze0Z++Cp2FMTVpd8n0QceQqKQ==", + "version": "0.99.0", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-error/-/apidom-error-0.99.0.tgz", + "integrity": "sha512-ZdFdn+GeIo23X2GKFrfH4Y5KY8yTzVF1l/Mqjs8+nD30LTbYg6f3ITHn429dk8fDT3NT69fG+gGm60FAFaKkeQ==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7" } }, "node_modules/@swagger-api/apidom-json-pointer": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.89.0.tgz", - "integrity": "sha512-42D4HG2hsBU3qYX2yKW743/4dGp0rKyjtal3s+Rdae46rQuqXOItU7PQLYyORpM4Pka6wTwAKlhnz3raYH4zPQ==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-json-pointer/-/apidom-json-pointer-0.99.2.tgz", + "integrity": "sha512-bZENmE3H2si1yP38VLUAdhoMWNxkh98+/dCOESaw3R5zXHG04di3ShbYsCG0StkigF+eCfCdaj6XoikQOGSkiA==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-ns-api-design-systems": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.89.0.tgz", - "integrity": "sha512-RQzXwWi0GXIo1Y89KfgaCA8B/vic094YRtZbj/Y7tzxTvFwhtBdpHn0ur/Nm+zSb+FlFq0YZZS7jIJ/ekPB1FQ==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-api-design-systems/-/apidom-ns-api-design-systems-0.99.2.tgz", + "integrity": "sha512-854ioZ/FB5DNiJcMinD9/a6dj6h/poOsKcb4POhPTzMSM0fHLIQUp//Ufhx7qL6qsepwtLapkgZ3/hAYN7lnBg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", + "@swagger-api/apidom-ns-openapi-3-1": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" } }, "node_modules/@swagger-api/apidom-ns-asyncapi-2": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.89.0.tgz", - "integrity": "sha512-3JMHw/cyqHSTKpAGWtC0jjnlhI2qqhd3nBdlDbWCk329bVoLncSzUaXk3ozmRb9qeZdnrEHYb0H9WaeByT0lGA==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-asyncapi-2/-/apidom-ns-asyncapi-2-0.99.2.tgz", + "integrity": "sha512-HF38kCszKYQqhQ6VMEMqd5r7gPGBRpHwPcoYaRJSDeOST/qLLG78xpoCJKQEyL3PQprea0gXKz1LG1uslDHgtQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-json-schema-draft-7": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-json-schema-draft-7": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-4": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.89.0.tgz", - "integrity": "sha512-7gXy3BPLkS7p7dmz9Hbf7ia4lH0NAaW2i7GcQdpX48pAUTR0/7Y+BPd38sgRxIOpebReWxnoAcKAfkak/KCQ3A==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-4/-/apidom-ns-json-schema-draft-4-0.99.2.tgz", + "integrity": "sha512-vgCRaqDLI/SmTECZeKO47RGFFx6MCpOcbSm60sV0/ZJxeK+TgkNjIRJTyuRQNts44K863CWgY+bwzzn1zhNqUg==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.89.0", - "@swagger-api/apidom-core": "^0.89.0", + "@swagger-api/apidom-ast": "^0.99.2", + "@swagger-api/apidom-core": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.4" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-6": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.89.0.tgz", - "integrity": "sha512-Ed3hpPAhHJHs25HoBt4ySrfbfUSlOdU4uXyVsumjLSHSSQxd6NfIovKOSdYllSRYXrTmkfE50DrentYozDpBfQ==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-6/-/apidom-ns-json-schema-draft-6-0.99.2.tgz", + "integrity": "sha512-ayKGsd65a6p/k4s5L2el+vMoMi8kc/bLXVszWszFDET1eZNvhKwEMLylGzKMfnwAFgpj+kJOKn4MZsD6PK6U/A==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.4" } }, "node_modules/@swagger-api/apidom-ns-json-schema-draft-7": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.89.0.tgz", - "integrity": "sha512-VF33y3qettfHiS7FtenRfqYpGkZSlXb+KqSNKefuPvp7l1EjR3lnl+pszCKcIIXXTcz5Cgt6OVx9dHsdjsNW1g==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-json-schema-draft-7/-/apidom-ns-json-schema-draft-7-0.99.2.tgz", + "integrity": "sha512-Rn2YeQKxj6hSijQAzGRRxMYDRIedqHjE69z9xigVbvm+iDXxLJIwasuzFa7BIMRDZF5eAJkBPHXTiU9cXVsl6w==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", - "@swagger-api/apidom-ns-json-schema-draft-6": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", + "@swagger-api/apidom-ns-json-schema-draft-6": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.4" } }, "node_modules/@swagger-api/apidom-ns-openapi-2": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-0.89.0.tgz", - "integrity": "sha512-M9k9heFnVGbuo36oiynOULk6ROWDHBpInftmZUSYvsfvgsQDCLK+rZvMr9lrk4cSUV7OcqSG9r4NdrXt7dZxYg==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-2/-/apidom-ns-openapi-2-0.99.2.tgz", + "integrity": "sha512-4YlBvMkxSJIWrOQmsHiVuQ2VkbcWgUnOm7uiRq+8d88ur9mKI5XbP5iUvxCASuONmCqlaSU2+qoM1qesy73XPw==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" } }, "node_modules/@swagger-api/apidom-ns-openapi-3-0": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.89.0.tgz", - "integrity": "sha512-9kbGRhjt+cpN6eqrwJ3GktoEGLXP2/9wDTQIUiII8jpjSRDwX8fzKMCvaQgGU3Id0gIG3KFVscvv15Z+n8PHMw==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-0/-/apidom-ns-openapi-3-0-0.99.2.tgz", + "integrity": "sha512-fcT597Ty3kqTkoBr1jeZ3Lfbu0a+CKd1l2ojY6RBF/5+dWNux+CRZ9qosax2XZbN+nJhSdvGLLvGvuKaV3Ybug==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", - "@swagger-api/apidom-ns-json-schema-draft-4": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", + "@swagger-api/apidom-ns-json-schema-draft-4": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" } }, "node_modules/@swagger-api/apidom-ns-openapi-3-1": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.89.0.tgz", - "integrity": "sha512-QlmETSbV6XL+AutyEvXcw78paizZSFgGWsqxMJKj9nZgdh217dLvvt0V5vWdE5fK5p4hlzHfRR7kO0Ong8sGSw==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-openapi-3-1/-/apidom-ns-openapi-3-1-0.99.2.tgz", + "integrity": "sha512-ubO8vi1dYpIV2a3IKhTkBCf125udoCeUZIc9wrhOFwwHHIKeInGR5L6yxlNhOQm0/doYCth77vEqcuTBpxaIrw==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.89.0", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.89.0", + "@swagger-api/apidom-ast": "^0.99.2", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-0": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" + } + }, + "node_modules/@swagger-api/apidom-ns-workflows-1": { + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-ns-workflows-1/-/apidom-ns-workflows-1-0.99.2.tgz", + "integrity": "sha512-lm8G7cbCRXukN4UOb/bPszUiSbvN1ymvwQ2PEkyZN+DzJvYfgRuAxXt7xd2EDKJcxeH4igpAnkKoIoBoSOHg+w==", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-1": "^0.99.2", + "@types/ramda": "~0.29.6", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", + "ts-mixer": "^6.0.3" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-json": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.89.0.tgz", - "integrity": "sha512-sYr5E0RKZqupgMzvUCM0nDMskl8YPrzYJ0MFW91NJvL3rBzeShBqZ+dB62UzDIAXwjZEtvEEaC9eGIPf7IxvEg==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-json/-/apidom-parser-adapter-api-design-systems-json-0.99.2.tgz", + "integrity": "sha512-7WPbiUJEWggVmxsssFfW/8JGk8Yu4C9ELneh805kMsgl/DOm6hcHxqT5gXXSwamH0ZQlTmSnHl2OZSlG+U5KKQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.89.0", - "@swagger-api/apidom-parser-adapter-json": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-api-design-systems": "^0.99.2", + "@swagger-api/apidom-parser-adapter-json": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-api-design-systems-yaml": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.89.0.tgz", - "integrity": "sha512-mbl2wOMY62S2GgGMon1IpsosPQ5zn+rwW8xnZAX/LDUMB5YLmk2THghckyxjxdSBqkJ9jJMEuoHk+RInT6qBzQ==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-api-design-systems-yaml/-/apidom-parser-adapter-api-design-systems-yaml-0.99.2.tgz", + "integrity": "sha512-ezOA1fjBAQPQ5X0DGYnuFyZMBSBCsaT6k9KDRr7B37Do9yj8YKa/lTlg5usXOrcLm4VgcyJGTKhAJi9kfzCKcA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-api-design-systems": "^0.89.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-api-design-systems": "^0.99.2", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-json-2": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.89.0.tgz", - "integrity": "sha512-0p4/HuGfp4xiddfJw9FrMTEaRikhOZLkR7it+U2P1X3LagrVqI3dTivT/TMMA4xaVuczoKrBC/A1SySboarU/w==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-json-2/-/apidom-parser-adapter-asyncapi-json-2-0.99.2.tgz", + "integrity": "sha512-b1ncaIc4dD0FGqty3iRCDUA/uHdd7nH271C06blQ+S9Id4D/xXxzd84z8LeNIJNLhCcnueuMKgUkGzvXP+raAA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-json": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-asyncapi-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-json": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.89.0.tgz", - "integrity": "sha512-t14f5RtN6eD37JknahpQpNnrv68QqvA0EQc1cJPskxclh1MRqmvT+oo9R0rXPh2isqr9nhG8UfySdj+5jS5qVA==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-asyncapi-yaml-2/-/apidom-parser-adapter-asyncapi-yaml-2-0.99.2.tgz", + "integrity": "sha512-NuwuwdORyZPhEpxwyEgslyGfVnwIuyDvF5TDT0cLCMOIFDqbE/n77c4FAh/nQUARDEXRthiDb5pdMo/+rOxjFg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-asyncapi-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-json": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.89.0.tgz", - "integrity": "sha512-UREIb9iLcthuk76iqkFggEdaxYrGNhMOUxU8q/K085bSd+2emLC5yI0yWauEufZPcyTnhu6ZIAsR1lCs6dXkIA==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-json/-/apidom-parser-adapter-json-0.99.2.tgz", + "integrity": "sha512-wy2WF71bLX1wEJkgmPRCEnXicV155KCelPQhCtzAGGo/B3+OuhknovBWXZNStvoJqZ/2A4a5pvYrgHoVoIKchg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.89.0", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", + "@swagger-api/apidom-ast": "^0.99.2", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", "tree-sitter": "=0.20.4", - "tree-sitter-json": "=0.20.1", + "tree-sitter-json": "=0.20.2", "web-tree-sitter": "=0.20.3" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-2": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-0.89.0.tgz", - "integrity": "sha512-thpuSntNPIKxaY7RcrCyick4946HcYGokw2ie/iRYIM9GbHZPBjcJMEl3+UTq/WsvBxQWIcrVrY0G7VKC/ZwDQ==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-2/-/apidom-parser-adapter-openapi-json-2-0.99.2.tgz", + "integrity": "sha512-z+ATszNWaO2JlixM9h4QpTAW2fE5nPCY4IDcScuWbch8gtKBmv61+53nahYb7tc3W/X0mMqhc1LyTCy5QC2L/w==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-openapi-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-json": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-json": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-0": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.89.0.tgz", - "integrity": "sha512-t+VkLdxnt55Wao+lHgA975W3KO7+jNiGFlwbLJO89wRgBcJz9Y1wG267/S+UjwdDHqjdVZvPK8w2uKODRohLTA==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-0/-/apidom-parser-adapter-openapi-json-3-0-0.99.2.tgz", + "integrity": "sha512-78PFDsF67tWDjPCGAD9cNHage8p5Vs2+zili1AF2zch3JkJA/KxBt+5va4A8w1fYaUaXi8LnMkM8VvEIAsNaOw==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.89.0", - "@swagger-api/apidom-parser-adapter-json": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-0": "^0.99.2", + "@swagger-api/apidom-parser-adapter-json": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-json-3-1": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.89.0.tgz", - "integrity": "sha512-46vdRGoBVgiDTb5iMWBT7+19HlY0jkX/KRA828K/cXF/huThGlcfQkq3UEneHFPGV2KpMETrzSC9Pk6UBB1rJA==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-json-3-1/-/apidom-parser-adapter-openapi-json-3-1-0.99.2.tgz", + "integrity": "sha512-WQmm14C0EH0dcMzvgrGPeLkWKXyFwyunK9rrRt7xRLn8sL1Em0dC31hiVdgypo3DLrz9YW3PStpSQjEedJaWUQ==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.89.0", - "@swagger-api/apidom-parser-adapter-json": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-json": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-2": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-0.89.0.tgz", - "integrity": "sha512-CYzFa2nsTn8FFDa8xfFIxx1APKbJohPtcv5b4sHE7rU+Xj1Yw3EQhedbVN1d/RK+1zI8p8oo7CY/Ed93GoXZLQ==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-2/-/apidom-parser-adapter-openapi-yaml-2-0.99.2.tgz", + "integrity": "sha512-rEoE54T8KKRxtdxXgvaYba+GX8853mwcw5nzdrrvOy2tNKqsJANPeJcrQmjVYqJX7SU0HuZPK3zBvyqMyKoNsg==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-openapi-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.89.0.tgz", - "integrity": "sha512-yf7mwRAlAPz+EDJfrVFKz73cQ6BJsS+HQZkoyeF2xfK3UA4Y9NxfEaF6/7qY9WWw6NVO2XHJ+cgWXAacLxNqag==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-0/-/apidom-parser-adapter-openapi-yaml-3-0-0.99.2.tgz", + "integrity": "sha512-l7ve45cfAj+imE8flypjdo49zpfp0m29stpOO/q2fCD5/46wT3Z4Ve3aKhil8/TRFEX26VOKoYVNjpeUWzUMaw==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.89.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-0": "^0.99.2", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.89.0.tgz", - "integrity": "sha512-nf01AYWcMHjA4RK1lGJxUftNn+ISS12u0yn2hWRx/epIFz2vbUoNwe5+9XdxVPDZ0sUlrcMcUz9ZweHOUo/t9w==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-openapi-yaml-3-1/-/apidom-parser-adapter-openapi-yaml-3-1-0.99.2.tgz", + "integrity": "sha512-1ab06o/M6MAJ0Js4C1bifpj/R0T0mw26Qk4dR7qKzel9dDuEkIRMQF7JHnf2pojZE+aR59Eb4iAMKmxzokHZdA==", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.99.2", + "@types/ramda": "~0.29.6", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-workflows-json-1": { + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-json-1/-/apidom-parser-adapter-workflows-json-1-0.99.2.tgz", + "integrity": "sha512-VsFVmwTX/OfsXyBmIEp5Y+adqBF4Cj/cM/55KPM3mIEmKbc+PK3M08TIotMk1FdCiTafe+I28OZL+WMVujNm1A==", + "optional": true, + "dependencies": { + "@babel/runtime-corejs3": "^7.20.7", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-workflows-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-json": "^0.99.2", + "@types/ramda": "~0.29.6", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" + } + }, + "node_modules/@swagger-api/apidom-parser-adapter-workflows-yaml-1": { + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-workflows-yaml-1/-/apidom-parser-adapter-workflows-yaml-1-0.99.2.tgz", + "integrity": "sha512-yK+48YcllFc8mY711ZJ7uTfPVZmJdujIHbvGLOMxMODmETkZlEjfoTAwNTWvutcuA6cxK70tKUD8vz5572ALQA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.89.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-ns-workflows-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.99.2", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.0.0" + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0" } }, "node_modules/@swagger-api/apidom-parser-adapter-yaml-1-2": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.89.0.tgz", - "integrity": "sha512-q94xmhPznSQRMl7MC+LsCb/n+Az7HlYTblYOv88dZBwmHJKvpSdmaAzRFhoJUMwbBFXN6Qr0w40a80dX0FD62g==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-parser-adapter-yaml-1-2/-/apidom-parser-adapter-yaml-1-2-0.99.2.tgz", + "integrity": "sha512-eU6Rd58WzzcOYOajwp9UCURhXVO8SUCrau14W6BuF1DbJCr85FmOigy4yu2b9UWsK44ZPzH8KeyhSYwTkqkgLA==", "optional": true, "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-ast": "^0.89.0", - "@swagger-api/apidom-core": "^0.89.0", - "@swagger-api/apidom-error": "^0.89.0", + "@swagger-api/apidom-ast": "^0.99.2", + "@swagger-api/apidom-core": "^0.99.2", + "@swagger-api/apidom-error": "^0.99.0", "@types/ramda": "~0.29.6", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", - "stampit": "^4.3.2", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", "tree-sitter": "=0.20.4", "tree-sitter-yaml": "=0.5.0", "web-tree-sitter": "=0.20.3" } }, "node_modules/@swagger-api/apidom-reference": { - "version": "0.89.0", - "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.89.0.tgz", - "integrity": "sha512-o5305pzG3LOli/D8gybR3M4BZRFbefSNos1nTGHrWIFFLjH9ZHa1sUc76WVvNAqwCFfs/j2IXjuIHiQkeJL2Ow==", + "version": "0.99.2", + "resolved": "https://registry.npmjs.org/@swagger-api/apidom-reference/-/apidom-reference-0.99.2.tgz", + "integrity": "sha512-QwAnCCEUbicPAVPWYOOpSI8rcj2e7TTybn1chGfdogV+NMLprGXBk/A86hO9CaSLMXkCA2rERUznSNSZWC996g==", "dependencies": { "@babel/runtime-corejs3": "^7.20.7", - "@swagger-api/apidom-core": "^0.89.0", + "@swagger-api/apidom-core": "^0.99.2", "@types/ramda": "~0.29.6", "axios": "^1.4.0", "minimatch": "^7.4.3", "process": "^0.11.10", - "ramda": "~0.29.1", - "ramda-adjunct": "^4.1.1", + "ramda": "~0.30.0", + "ramda-adjunct": "^5.0.0", "stampit": "^4.3.2" }, "optionalDependencies": { - "@swagger-api/apidom-error": "^0.89.0", - "@swagger-api/apidom-json-pointer": "^0.89.0", - "@swagger-api/apidom-ns-asyncapi-2": "^0.89.0", - "@swagger-api/apidom-ns-openapi-2": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-0": "^0.89.0", - "@swagger-api/apidom-ns-openapi-3-1": "^0.89.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.89.0", - "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.89.0", - "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-json": "^0.89.0", - "@swagger-api/apidom-parser-adapter-openapi-json-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.89.0", - "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.89.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^0.89.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.89.0", - "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.89.0", - "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.89.0" + "@swagger-api/apidom-error": "^0.99.0", + "@swagger-api/apidom-json-pointer": "^0.99.2", + "@swagger-api/apidom-ns-asyncapi-2": "^0.99.2", + "@swagger-api/apidom-ns-openapi-2": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-0": "^0.99.2", + "@swagger-api/apidom-ns-openapi-3-1": "^0.99.2", + "@swagger-api/apidom-ns-workflows-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-api-design-systems-json": "^0.99.2", + "@swagger-api/apidom-parser-adapter-api-design-systems-yaml": "^0.99.2", + "@swagger-api/apidom-parser-adapter-asyncapi-json-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-asyncapi-yaml-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-json": "^0.99.2", + "@swagger-api/apidom-parser-adapter-openapi-json-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-openapi-json-3-0": "^0.99.2", + "@swagger-api/apidom-parser-adapter-openapi-json-3-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-openapi-yaml-2": "^0.99.2", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-0": "^0.99.2", + "@swagger-api/apidom-parser-adapter-openapi-yaml-3-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-workflows-json-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-workflows-yaml-1": "^0.99.2", + "@swagger-api/apidom-parser-adapter-yaml-1-2": "^0.99.2" } }, "node_modules/@swagger-api/apidom-reference/node_modules/axios": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", - "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", + "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -8927,6 +10043,14 @@ "node": ">=11" } }, + "node_modules/@switchboard-xyz/sbv2-lite/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@switchboard-xyz/sbv2-lite/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -8944,18 +10068,18 @@ "integrity": "sha512-4AOeU+P5UuE/4nOUkmcQdW5y7i9ndt1cQd/3iUe+LTz3RxESf/W/5lg4B74HbDMMv8PHnPnGCQFH45kBcrQYoQ==" }, "node_modules/@tanstack/match-sorter-utils": { - "version": "8.8.4", - "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.8.4.tgz", - "integrity": "sha512-rKH8LjZiszWEvmi01NR72QWZ8m4xmXre0OOwlRGnjU01Eqz/QnN+cqpty2PJ0efHblq09+KilvyR7lsbzmXVEw==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/@tanstack/match-sorter-utils/-/match-sorter-utils-8.15.1.tgz", + "integrity": "sha512-PnVV3d2poenUM31ZbZi/yXkBu3J7kd5k2u51CGwwNojag451AjTH9N6n41yjXz2fpLeewleyLBmNS6+HcGDlXw==", "dependencies": { - "remove-accents": "0.4.2" + "remove-accents": "0.5.0" }, "engines": { "node": ">=12" }, "funding": { "type": "github", - "url": "https://github.com/sponsors/kentcdodds" + "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/query-core": { @@ -9077,28 +10201,37 @@ } }, "node_modules/@testing-library/dom": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", - "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz", + "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==", "dev": true, "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", + "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=14" + "node": ">=18" + } + }, + "node_modules/@testing-library/dom/node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "peer": true, + "dependencies": { + "dequal": "^2.0.3" } }, "node_modules/@testing-library/jest-dom": { "version": "5.17.0", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", "dev": true, "dependencies": { @@ -9133,7 +10266,6 @@ }, "node_modules/@testing-library/react": { "version": "13.4.0", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dev": true, "dependencies": { @@ -9170,7 +10302,6 @@ }, "node_modules/@testing-library/user-event": { "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-13.5.0.tgz", "integrity": "sha512-5Kwtbo3Y/NowpkbRuSepbyMFkZmHgD+vPzYB/RJ4oxt5Gj/avFFBYjhw27cqSVPVw/3a67NK1PbiIr9k4Gwmdg==", "dev": true, "dependencies": { @@ -9191,9 +10322,9 @@ "dev": true }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==" }, "node_modules/@tsconfig/node12": { "version": "1.0.11", @@ -9224,6 +10355,24 @@ "@types/node": "*" } }, + "node_modules/@types/bn.js/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/bs58": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/bs58/-/bs58-4.0.4.tgz", + "integrity": "sha512-0IEpMFXXQi2zXaXl9GJ3sRwQo0uEkD+yFOv+FnAU5lkPtcu6h61xb7jc2CFPEZ5BUOaiP13ThuGc9HD4R8lR5g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "base-x": "^3.0.6" + } + }, "node_modules/@types/color": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/color/-/color-3.0.6.tgz", @@ -9241,9 +10390,9 @@ } }, "node_modules/@types/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-87W6MJCKZYDhLAx/J1ikW8niMvmGRyY+rpUxWpL1cO7F8Uu5CHuQoFv+R0/L5pgNdW4jTyda42kv60uwVIPjLw==" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-hulKeREDdLFesGQjl96+4aoJSHY5b2GRjagzzcqCfIrWhe5vkCqIvrLbqzBaI1q94Vg8DNJZZqTR5ocdWmWclg==" }, "node_modules/@types/connect": { "version": "3.4.38", @@ -9253,15 +10402,31 @@ "@types/node": "*" } }, + "node_modules/@types/connect/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/cors": { "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/cors/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/debug": { "version": "4.1.12", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", @@ -9279,6 +10444,20 @@ "@types/node": "*" } }, + "node_modules/@types/duplexify/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, "node_modules/@types/fs-extra": { "version": "8.1.5", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.1.5.tgz", @@ -9288,6 +10467,15 @@ "@types/node": "*" } }, + "node_modules/@types/fs-extra/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz", @@ -9298,10 +10486,19 @@ "@types/node": "*" } }, + "node_modules/@types/glob/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/hast": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.8.tgz", - "integrity": "sha512-aMIqAlFd2wTIDZuvLbhUT+TGvMxrNC8ECUIVtH6xxy0sQLs3iu6NO8Kp/VT5je7i5ufnebXzdV1dNDMnvaH6IQ==", + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", "dependencies": { "@types/unist": "^2" } @@ -9343,9 +10540,9 @@ "dev": true }, "node_modules/@types/linkify-it": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", - "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", "dev": true }, "node_modules/@types/lodash": { @@ -9359,19 +10556,19 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.1.tgz", + "integrity": "sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==", "dev": true, "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" + "@types/linkify-it": "^5", + "@types/mdurl": "^2" } }, "node_modules/@types/mdurl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", - "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", "dev": true }, "node_modules/@types/minimatch": { @@ -9392,9 +10589,9 @@ "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==" }, "node_modules/@types/node": { - "version": "16.18.68", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.68.tgz", - "integrity": "sha512-sG3hPIQwJLoewrN7cr0dwEy+yF5nD4D/4FxtQpFciRD/xwUzgD+G05uxZHv5mhfXo4F9Jkp13jjn0CC2q325sg==" + "version": "16.18.98", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.98.tgz", + "integrity": "sha512-fpiC20NvLpTLAzo3oVBKIqBGR6Fx/8oAK/SSf7G+fydnXMY1x4x9RZ6sBXhqKlCU21g2QapUsbLlhv3+a7wS+Q==" }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", @@ -9415,6 +10612,14 @@ "@types/node": "*" } }, + "node_modules/@types/pbkdf2/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/prop-types": { "version": "15.7.11", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", @@ -9422,35 +10627,42 @@ }, "node_modules/@types/qrcode": { "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/qrcode/-/qrcode-1.5.5.tgz", "integrity": "sha512-CdfBi/e3Qk+3Z/fXYShipBT13OJ2fDO2Q2w5CIP5anLTLIndQG9z6P1cnm+8zCWSpm5dnxMFd/uREtb0EXuQzg==", "dev": true, "dependencies": { "@types/node": "*" } }, + "node_modules/@types/qrcode/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/ramda": { - "version": "0.29.9", - "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.9.tgz", - "integrity": "sha512-X3yEG6tQCWBcUAql+RPC/O1Hm9BSU+MXu2wJnCETuAgUlrEDwTA1kIOdEEE4YXDtf0zfQLHa9CCE7WYp9kqPIQ==", + "version": "0.29.12", + "resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.29.12.tgz", + "integrity": "sha512-sgIEjpJhdQPB52gDF4aphs9nl0xe54CR22DPdWqT8gQHjZYmVApgA0R3/CpMbl0Y8az2TEZrPNL2zy0EvjbkLA==", "dependencies": { - "types-ramda": "^0.29.6" + "types-ramda": "^0.29.10" } }, "node_modules/@types/react": { - "version": "18.2.45", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.45.tgz", - "integrity": "sha512-TtAxCNrlrBp8GoeEp1npd5g+d/OejJHFxS3OWmrPBMFaVQMSN0OFySozJio5BHxTuTeug00AVXVAjfDSfk+lUg==", + "version": "18.3.3", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", + "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==", "dependencies": { "@types/prop-types": "*", - "@types/scheduler": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.2.18", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz", - "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==", + "version": "18.3.0", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", + "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", "devOptional": true, "dependencies": { "@types/react": "*" @@ -9467,7 +10679,6 @@ }, "node_modules/@types/react-router-dom": { "version": "5.3.3", - "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", "dependencies": { "@types/history": "^4.7.11", @@ -9493,10 +10704,14 @@ "@types/node": "*" } }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" + "node_modules/@types/rimraf/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/secp256k1": { "version": "4.0.6", @@ -9506,6 +10721,14 @@ "@types/node": "*" } }, + "node_modules/@types/secp256k1/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@types/slice-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@types/slice-ansi/-/slice-ansi-4.0.0.tgz", @@ -9514,7 +10737,6 @@ }, "node_modules/@types/swagger-ui-react": { "version": "4.18.3", - "resolved": "https://registry.npmjs.org/@types/swagger-ui-react/-/swagger-ui-react-4.18.3.tgz", "integrity": "sha512-Mo/R7IjDVwtiFPs84pWvh5pI9iyNGBjmfielxqbOh2Jv+8WVSDVe8Nu25kb5BOuV2xmGS3o33jr6nwDJMBcX+Q==", "dev": true, "dependencies": { @@ -9553,7 +10775,6 @@ }, "node_modules/@types/uuid": { "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.8.tgz", "integrity": "sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==", "dev": true }, @@ -9565,6 +10786,14 @@ "@types/node": "*" } }, + "node_modules/@types/ws/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/@typescript-eslint/parser": { "version": "6.15.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.15.0.tgz", @@ -9905,23 +11134,6 @@ "uint8arrays": "^3.1.0" } }, - "node_modules/@wagmi/connectors/node_modules/query-string": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", - "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", - "dependencies": { - "decode-uri-component": "^0.2.0", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@wagmi/core": { "version": "0.10.17", "resolved": "https://registry.npmjs.org/@wagmi/core/-/core-0.10.17.tgz", @@ -10167,9 +11379,9 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@wagmi/core/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -10206,27 +11418,64 @@ } }, "node_modules/@walletconnect/core": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.11.1.tgz", - "integrity": "sha512-T57Vd7YdbHPsy3tthBuwrhaZNafN0+PqjISFRNeJy/bsKdXxpJg2hGSARuOTpCO7V6VcaatqlaSMuG3DrnG5rA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@walletconnect/core/-/core-2.13.3.tgz", + "integrity": "sha512-TdF+rC6rONJGyOUtt/nLkbyQWjnkwbD3kXq3ZA0Q7+tYtmSjTDE4wbArlLbHIbtf69g+9/DpEVEQimWWcEOn2g==", "dependencies": { - "@walletconnect/heartbeat": "1.2.1", - "@walletconnect/jsonrpc-provider": "1.0.13", - "@walletconnect/jsonrpc-types": "1.0.3", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", "@walletconnect/jsonrpc-utils": "1.0.8", "@walletconnect/jsonrpc-ws-connection": "1.0.14", - "@walletconnect/keyvaluestorage": "^1.1.1", - "@walletconnect/logger": "^2.0.1", - "@walletconnect/relay-api": "^1.0.9", - "@walletconnect/relay-auth": "^1.0.4", - "@walletconnect/safe-json": "^1.0.2", - "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.11.1", - "@walletconnect/utils": "2.11.1", - "events": "^3.3.0", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/relay-api": "1.0.10", + "@walletconnect/relay-auth": "1.0.4", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.13.3", + "@walletconnect/utils": "2.13.3", + "events": "3.3.0", "isomorphic-unfetch": "3.1.0", "lodash.isequal": "4.5.0", - "uint8arrays": "^3.1.0" + "uint8arrays": "3.1.0" + } + }, + "node_modules/@walletconnect/core/node_modules/@walletconnect/heartbeat": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz", + "integrity": "sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==", + "dependencies": { + "@walletconnect/events": "^1.0.1", + "@walletconnect/time": "^1.0.2", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/core/node_modules/@walletconnect/jsonrpc-provider": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz", + "integrity": "sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", + "events": "^3.3.0" + } + }, + "node_modules/@walletconnect/core/node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", + "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", + "dependencies": { + "events": "^3.3.0", + "keyvaluestorage-interface": "^1.0.0" + } + }, + "node_modules/@walletconnect/core/node_modules/uint8arrays": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", + "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", + "dependencies": { + "multiformats": "^9.4.2" } }, "node_modules/@walletconnect/crypto": { @@ -10276,22 +11525,41 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@walletconnect/ethereum-provider": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.11.1.tgz", - "integrity": "sha512-UfQH0ho24aa2M1xYmanbJv2ggQPebKmQytp2j20QEvURJ2R0v7YKWZ+0PfwOs6o6cuGw6gGxy/0WQXQRZSAsfg==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@walletconnect/ethereum-provider/-/ethereum-provider-2.13.3.tgz", + "integrity": "sha512-gThsYguFJ7XZp18GP23W6TooQaS6XlF4faFDXPCQVqlWjzEatkkQ2R6Hhv4a4qk4D21qNXirCFnI59Xhbj0KJQ==", + "dependencies": { + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/modal": "2.6.2", + "@walletconnect/sign-client": "2.13.3", + "@walletconnect/types": "2.13.3", + "@walletconnect/universal-provider": "2.13.3", + "@walletconnect/utils": "2.13.3", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/jsonrpc-provider": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz", + "integrity": "sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==", "dependencies": { - "@walletconnect/jsonrpc-http-connection": "^1.0.7", - "@walletconnect/jsonrpc-provider": "^1.0.13", - "@walletconnect/jsonrpc-types": "^1.0.3", "@walletconnect/jsonrpc-utils": "^1.0.8", - "@walletconnect/modal": "^2.6.2", - "@walletconnect/sign-client": "2.11.1", - "@walletconnect/types": "2.11.1", - "@walletconnect/universal-provider": "2.11.1", - "@walletconnect/utils": "2.11.1", + "@walletconnect/safe-json": "^1.0.2", "events": "^3.3.0" } }, + "node_modules/@walletconnect/ethereum-provider/node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", + "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", + "dependencies": { + "events": "^3.3.0", + "keyvaluestorage-interface": "^1.0.0" + } + }, "node_modules/@walletconnect/events": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@walletconnect/events/-/events-1.0.1.tgz", @@ -10322,20 +11590,15 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@walletconnect/jsonrpc-http-connection": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.7.tgz", - "integrity": "sha512-qlfh8fCfu8LOM9JRR9KE0s0wxP6ZG9/Jom8M0qsoIQeKF3Ni0FyV4V1qy/cc7nfI46SLQLSl4tgWSfLiE1swyQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-http-connection/-/jsonrpc-http-connection-1.0.8.tgz", + "integrity": "sha512-+B7cRuaxijLeFDJUq5hAzNyef3e3tBDIxyaCNmFtjwnod5AGis3RToNqzFU33vpVcxFhofkpE7Cx+5MYejbMGw==", "dependencies": { "@walletconnect/jsonrpc-utils": "^1.0.6", "@walletconnect/safe-json": "^1.0.1", "cross-fetch": "^3.1.4", - "tslib": "1.14.1" - } - }, - "node_modules/@walletconnect/jsonrpc-http-connection/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "events": "^3.3.0" + } }, "node_modules/@walletconnect/jsonrpc-provider": { "version": "1.0.13", @@ -10393,9 +11656,9 @@ } }, "node_modules/@walletconnect/jsonrpc-ws-connection/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -10447,6 +11710,23 @@ "query-string": "^6.13.5" } }, + "node_modules/@walletconnect/legacy-client/node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@walletconnect/legacy-modal": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@walletconnect/legacy-modal/-/legacy-modal-2.0.0.tgz", @@ -10495,19 +11775,31 @@ "query-string": "^6.13.5" } }, - "node_modules/@walletconnect/logger": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.0.1.tgz", - "integrity": "sha512-SsTKdsgWm+oDTBeNE/zHxxr5eJfZmE9/5yp/Ku+zJtcTAjELb3DXueWkDXmE9h8uHIbJzIb5wj5lPdzyrjT6hQ==", + "node_modules/@walletconnect/legacy-utils/node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", "dependencies": { - "pino": "7.11.0", - "tslib": "1.14.1" + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@walletconnect/logger/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/@walletconnect/logger": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@walletconnect/logger/-/logger-2.1.2.tgz", + "integrity": "sha512-aAb28I3S6pYXZHQm5ESB+V6rDqIYfsnHaQyzFbwUUBFY4H0OXx/YtTl8lvhUNhMMfb9UxbwEBS253TlXUYJWSw==", + "dependencies": { + "@walletconnect/safe-json": "^1.0.2", + "pino": "7.11.0" + } }, "node_modules/@walletconnect/modal": { "version": "2.6.2", @@ -10554,19 +11846,13 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@walletconnect/relay-api": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.9.tgz", - "integrity": "sha512-Q3+rylJOqRkO1D9Su0DPE3mmznbAalYapJ9qmzDgK28mYF9alcP3UwG/og5V7l7CFOqzCLi7B8BvcBUrpDj0Rg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@walletconnect/relay-api/-/relay-api-1.0.10.tgz", + "integrity": "sha512-tqrdd4zU9VBNqUaXXQASaexklv6A54yEyQQEXYOCr+Jz8Ket0dmPBDyg19LVSNUN2cipAghQc45/KVmfFJ0cYw==", "dependencies": { - "@walletconnect/jsonrpc-types": "^1.0.2", - "tslib": "1.14.1" + "@walletconnect/jsonrpc-types": "^1.0.2" } }, - "node_modules/@walletconnect/relay-api/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - }, "node_modules/@walletconnect/relay-auth": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@walletconnect/relay-auth/-/relay-auth-1.0.4.tgz", @@ -10599,18 +11885,28 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@walletconnect/sign-client": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.11.1.tgz", - "integrity": "sha512-s3oKSx6/F5X2WmkV1jfJImBFACf9Km5HpTb+n5q+mobJVpUQw/clvoVyIrNNppLhm1V1S/ylHXh0qCrDppDpCA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@walletconnect/sign-client/-/sign-client-2.13.3.tgz", + "integrity": "sha512-3Pcq6trHWdBZn5X0VUFQ3zJaaqyEbMW9WNVKcZ2SakIpQAwySd08Mztvq48G98jfucdgP3tjGPbBvzHX9vJX7w==", "dependencies": { - "@walletconnect/core": "2.11.1", - "@walletconnect/events": "^1.0.1", - "@walletconnect/heartbeat": "1.2.1", + "@walletconnect/core": "2.13.3", + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-utils": "1.0.8", - "@walletconnect/logger": "^2.0.1", + "@walletconnect/logger": "2.1.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.13.3", + "@walletconnect/utils": "2.13.3", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/sign-client/node_modules/@walletconnect/heartbeat": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz", + "integrity": "sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==", + "dependencies": { + "@walletconnect/events": "^1.0.1", "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.11.1", - "@walletconnect/utils": "2.11.1", "events": "^3.3.0" } }, @@ -10628,53 +11924,91 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, "node_modules/@walletconnect/types": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.1.tgz", - "integrity": "sha512-UbdbX+d6MOK0AXKxt5imV3KvAcLVpZUHylaRDIP5ffwVylM/p4DHnKppil1Qq5N+IGDr3RsUwLGFkKjqsQYRKw==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.13.3.tgz", + "integrity": "sha512-9UdtLoQqwGFfepCPprUAXeUbKg9zyDarPRmEJVco51OWXHCOpvRgroWk54fQHDhCUIfDELjObY6XNAzNrmNYUA==", + "dependencies": { + "@walletconnect/events": "1.0.1", + "@walletconnect/heartbeat": "1.2.2", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/keyvaluestorage": "1.1.1", + "@walletconnect/logger": "2.1.2", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/types/node_modules/@walletconnect/heartbeat": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@walletconnect/heartbeat/-/heartbeat-1.2.2.tgz", + "integrity": "sha512-uASiRmC5MwhuRuf05vq4AT48Pq8RMi876zV8rr8cV969uTOzWdB/k+Lj5yI2PBtB1bGQisGen7MM1GcZlQTBXw==", "dependencies": { "@walletconnect/events": "^1.0.1", - "@walletconnect/heartbeat": "1.2.1", - "@walletconnect/jsonrpc-types": "1.0.3", - "@walletconnect/keyvaluestorage": "^1.1.1", - "@walletconnect/logger": "^2.0.1", + "@walletconnect/time": "^1.0.2", "events": "^3.3.0" } }, + "node_modules/@walletconnect/types/node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", + "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", + "dependencies": { + "events": "^3.3.0", + "keyvaluestorage-interface": "^1.0.0" + } + }, "node_modules/@walletconnect/universal-provider": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.11.1.tgz", - "integrity": "sha512-BJvPYByIfbBYF4x8mqDV79ebQX0tD54pp8itsqrHWn0qKZeJyIH8sQ69yY0GnbJrzoFS3ZLULdC0yDxWDeuRGw==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@walletconnect/universal-provider/-/universal-provider-2.13.3.tgz", + "integrity": "sha512-2tuV2d8AdB4Fg/uMs8IdNHrjYy1Tz1uT5kzaT8X1/wx5DHHa/oaheoY5kDZHI0L1oNIg/OlM0/ovonGIcI5ddw==", "dependencies": { - "@walletconnect/jsonrpc-http-connection": "^1.0.7", - "@walletconnect/jsonrpc-provider": "1.0.13", - "@walletconnect/jsonrpc-types": "^1.0.2", - "@walletconnect/jsonrpc-utils": "^1.0.7", - "@walletconnect/logger": "^2.0.1", - "@walletconnect/sign-client": "2.11.1", - "@walletconnect/types": "2.11.1", - "@walletconnect/utils": "2.11.1", + "@walletconnect/jsonrpc-http-connection": "1.0.8", + "@walletconnect/jsonrpc-provider": "1.0.14", + "@walletconnect/jsonrpc-types": "1.0.4", + "@walletconnect/jsonrpc-utils": "1.0.8", + "@walletconnect/logger": "2.1.2", + "@walletconnect/sign-client": "2.13.3", + "@walletconnect/types": "2.13.3", + "@walletconnect/utils": "2.13.3", + "events": "3.3.0" + } + }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/jsonrpc-provider": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-provider/-/jsonrpc-provider-1.0.14.tgz", + "integrity": "sha512-rtsNY1XqHvWj0EtITNeuf8PHMvlCLiS3EjQL+WOkxEOA4KPxsohFnBDeyPYiNm4ZvkQdLnece36opYidmtbmow==", + "dependencies": { + "@walletconnect/jsonrpc-utils": "^1.0.8", + "@walletconnect/safe-json": "^1.0.2", "events": "^3.3.0" } }, + "node_modules/@walletconnect/universal-provider/node_modules/@walletconnect/jsonrpc-types": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@walletconnect/jsonrpc-types/-/jsonrpc-types-1.0.4.tgz", + "integrity": "sha512-P6679fG/M+wuWg9TY8mh6xFSdYnFyFjwFelxyISxMDrlbXokorEVXYOxiqEbrU3x1BmBoCAJJ+vtEaEoMlpCBQ==", + "dependencies": { + "events": "^3.3.0", + "keyvaluestorage-interface": "^1.0.0" + } + }, "node_modules/@walletconnect/utils": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.11.1.tgz", - "integrity": "sha512-wRFDHN86dZ05mCET1H3912odIeQa8j7cZKxl1FlWRpV2YsILj9HCYSX6Uq2brwO02Kv2vryke44G1r8XI/LViA==", + "version": "2.13.3", + "resolved": "https://registry.npmjs.org/@walletconnect/utils/-/utils-2.13.3.tgz", + "integrity": "sha512-hjyyNhnhTCezGNr6OCfKRzqRsiak+p+YP57iRo1Tsf222fsj/9JD++MP97YiDwc4e4xXaZp/boiLB+8hJHsCog==", "dependencies": { "@stablelib/chacha20poly1305": "1.0.1", "@stablelib/hkdf": "1.0.1", - "@stablelib/random": "^1.0.2", + "@stablelib/random": "1.0.2", "@stablelib/sha256": "1.0.1", - "@stablelib/x25519": "^1.0.3", - "@walletconnect/relay-api": "^1.0.9", - "@walletconnect/safe-json": "^1.0.2", - "@walletconnect/time": "^1.0.2", - "@walletconnect/types": "2.11.1", - "@walletconnect/window-getters": "^1.0.1", - "@walletconnect/window-metadata": "^1.0.1", + "@stablelib/x25519": "1.0.3", + "@walletconnect/relay-api": "1.0.10", + "@walletconnect/safe-json": "1.0.2", + "@walletconnect/time": "1.0.2", + "@walletconnect/types": "2.13.3", + "@walletconnect/window-getters": "1.0.1", + "@walletconnect/window-metadata": "1.0.1", "detect-browser": "5.3.0", "query-string": "7.1.3", - "uint8arrays": "^3.1.0" + "uint8arrays": "3.1.0" } }, "node_modules/@walletconnect/utils/node_modules/query-string": { @@ -10694,6 +12028,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@walletconnect/utils/node_modules/uint8arrays": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.0.tgz", + "integrity": "sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==", + "dependencies": { + "multiformats": "^9.4.2" + } + }, "node_modules/@walletconnect/window-getters": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@walletconnect/window-getters/-/window-getters-1.0.1.tgz", @@ -10904,9 +12246,12 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -10986,15 +12331,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -11136,6 +12481,15 @@ "tmp-promise": "^3.0.2" } }, + "node_modules/arbundles/node_modules/avsc": { + "version": "5.4.7", + "resolved": "git+ssh://git@github.com/Irys-xyz/avsc.git#a730cc8018b79e114b6a3381bbb57760a24c6cef", + "integrity": "sha512-yL4FBUl4sGJwowM+ZV6NcBSHHFTL4IP0rhbKQi/BE1etp5AgaEMb22c8EbvkJOfGMIb+GCzbc3dhLkPbSKbq2Q==", + "license": "MIT", + "engines": { + "node": ">=0.11" + } + }, "node_modules/arbundles/node_modules/axios": { "version": "0.21.4", "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", @@ -11144,24 +12498,13 @@ "follow-redirects": "^1.14.0" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/arbundles/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } }, "node_modules/archiver": { "version": "5.3.2", @@ -11263,9 +12606,9 @@ "dev": true }, "node_modules/aria-hidden": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", - "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "dependencies": { "tslib": "^2.0.0" }, @@ -11308,15 +12651,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", - "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -11326,6 +12670,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array-includes/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -11335,26 +12698,37 @@ "node": ">=8" } }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", - "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "node_modules/array.prototype.findlastindex/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -11400,30 +12774,52 @@ } }, "node_modules/array.prototype.tosorted": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", - "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "node_modules/array.prototype.tosorted/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -11433,6 +12829,36 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/arraybuffer.prototype.slice/node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice/node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/arrify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz", @@ -11443,9 +12869,9 @@ } }, "node_modules/arweave": { - "version": "1.14.4", - "resolved": "https://registry.npmjs.org/arweave/-/arweave-1.14.4.tgz", - "integrity": "sha512-tmqU9fug8XAmFETYwgUhLaD3WKav5DaM4p1vgJpEj/Px2ORPPMikwnSySlFymmL2qgRh2ZBcZsg11+RXPPGLsA==", + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/arweave/-/arweave-1.15.1.tgz", + "integrity": "sha512-rT7FOwqdudd5npqp4xOYdDT2035LtpcqePjwirh4wjRiEtVsz1FZkRiM2Yj+fOAwYzOm/hNG0GDOipDSaiEGGQ==", "dependencies": { "arconnect": "^0.4.2", "asn1.js": "^5.4.1", @@ -11453,7 +12879,7 @@ "bignumber.js": "^9.0.2" }, "engines": { - "node": ">=16.15.0" + "node": ">=18" } }, "node_modules/arweave-stream-tx": { @@ -11573,15 +12999,6 @@ "retry": "0.13.1" } }, - "node_modules/asynciterator.prototype": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", - "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", - "dev": true, - "dependencies": { - "has-symbols": "^1.0.3" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -11613,7 +13030,6 @@ }, "node_modules/autoprefixer": { "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", "dev": true, "funding": [ @@ -11659,14 +13075,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/avsc": { - "version": "5.4.7", - "resolved": "git+ssh://git@github.com/Irys-xyz/avsc.git#a730cc8018b79e114b6a3381bbb57760a24c6cef", - "license": "MIT", - "engines": { - "node": ">=0.11" - } - }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -11677,9 +13085,9 @@ } }, "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.0.tgz", + "integrity": "sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==", "dev": true }, "node_modules/axe-core": { @@ -11788,9 +13196,9 @@ "dev": true }, "node_modules/basic-ftp": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.4.tgz", - "integrity": "sha512-8PzkB0arJFV4jJWSGOYR+OEic6aeKMu/osRhBULN6RY0ykby6LKhbmuQ5ublvaas5BOwboah5D87nrHyuh8PPA==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, "engines": { "node": ">=10.0.0" @@ -11858,11 +13266,14 @@ } }, "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/bindings": { @@ -11882,15 +13293,12 @@ } }, "node_modules/bip32": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", - "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-4.0.0.tgz", + "integrity": "sha512-aOGy88DDlVUhspIXJN+dVEtclhIsfAUppD43V0j40cPTld3pv/0X/MlrZSZ6jowIaQQzFwP8M6rFU2z2mVYjDQ==", "dependencies": { - "@types/node": "10.12.18", - "bs58check": "^2.1.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "tiny-secp256k1": "^1.1.3", + "@noble/hashes": "^1.2.0", + "@scure/base": "^1.1.1", "typeforce": "^1.11.5", "wif": "^2.0.6" }, @@ -11898,21 +13306,6 @@ "node": ">=6.0.0" } }, - "node_modules/bip32/node_modules/@types/node": { - "version": "10.12.18", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", - "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" - }, - "node_modules/bip32/node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, "node_modules/bip39": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.1.0.tgz", @@ -11931,9 +13324,9 @@ } }, "node_modules/bitcoinjs-lib": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.5.tgz", - "integrity": "sha512-yuf6xs9QX/E8LWE2aMJPNd0IxGofwfuVOiYdNUESkc+2bHHVKjhJd8qewqapeoolh9fihzHGoDCB5Vkr57RZCQ==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/bitcoinjs-lib/-/bitcoinjs-lib-6.1.6.tgz", + "integrity": "sha512-Fk8+Vc+e2rMoDU5gXkW9tD+313rhkm5h6N9HfZxXvYU9LedttVvmXKTgd9k5rsQJjkSfsv6XRM8uhJv94SrvcA==", "dependencies": { "@noble/hashes": "^1.2.0", "bech32": "^2.0.0", @@ -12058,6 +13451,14 @@ "text-encoding-utf-8": "^1.0.2" } }, + "node_modules/borsh/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", @@ -12140,6 +13541,14 @@ "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" }, + "node_modules/browser-resolve": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-2.0.0.tgz", + "integrity": "sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==", + "dependencies": { + "resolve": "^1.17.0" + } + }, "node_modules/browserify-aes": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", @@ -12184,24 +13593,87 @@ } }, "node_modules/browserify-sign": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.2.tgz", - "integrity": "sha512-1rudGyeYY42Dk6texmv7c4VcQ0EsvVbLwZkA+AQB7SxvXxmcD93jcHie8bzecJ+ChDlmAm2Qyu0+Ccg5uhZXCg==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz", + "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==", "dependencies": { "bn.js": "^5.2.1", "browserify-rsa": "^4.1.0", "create-hash": "^1.2.0", "create-hmac": "^1.1.7", - "elliptic": "^6.5.4", + "elliptic": "^6.5.5", + "hash-base": "~3.0", "inherits": "^2.0.4", - "parse-asn1": "^5.1.6", - "readable-stream": "^3.6.2", + "parse-asn1": "^5.1.7", + "readable-stream": "^2.3.8", "safe-buffer": "^5.2.1" }, "engines": { - "node": ">= 4" + "node": ">= 0.12" + } + }, + "node_modules/browserify-sign/node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/browserify-sign/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/browserify-sign/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/browserify-sign/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dependencies": { + "pako": "~1.0.5" } }, + "node_modules/browserify-zlib/node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, "node_modules/browserslist": { "version": "4.22.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", @@ -12235,13 +13707,18 @@ } }, "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", + "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", "dependencies": { - "base-x": "^3.0.2" + "base-x": "^4.0.0" } }, + "node_modules/bs58/node_modules/base-x": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", + "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" + }, "node_modules/bs58check": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-3.0.1.tgz", @@ -12251,19 +13728,6 @@ "bs58": "^5.0.0" } }, - "node_modules/bs58check/node_modules/base-x": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-4.0.0.tgz", - "integrity": "sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw==" - }, - "node_modules/bs58check/node_modules/bs58": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-5.0.0.tgz", - "integrity": "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ==", - "dependencies": { - "base-x": "^4.0.0" - } - }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -12332,6 +13796,11 @@ "node": ">=6.14.2" } }, + "node_modules/builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==" + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -12353,9 +13822,9 @@ } }, "node_modules/cacache": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.1.tgz", - "integrity": "sha512-g4Uf2CFZPaxtJKre6qr4zqLDOOPU7bNVhWjlNhvzc51xaTOx2noMOLhfFkTAqwtrAZAKQUuDfyjitzilpA8WsQ==", + "version": "18.0.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.3.tgz", + "integrity": "sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==", "dev": true, "optional": true, "dependencies": { @@ -12387,32 +13856,42 @@ } }, "node_modules/cacache/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dev": true, "optional": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacache/node_modules/glob/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "optional": true, "dependencies": { @@ -12441,6 +13920,23 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cacache/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -12607,6 +14103,7 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "devOptional": true, "funding": [ { "type": "individual", @@ -12633,6 +14130,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "devOptional": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -12673,9 +14171,9 @@ } }, "node_modules/citty": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.5.tgz", - "integrity": "sha512-AS7n5NSc0OQVMV9v6wt3ByujNIrne0/cTjiC2MYqhvao57VNfiuVksTSr2p17nVOhEr2KtqiAkGwHcgMC/qUuQ==", + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", "dependencies": { "consola": "^3.2.3" } @@ -12748,49 +14246,187 @@ "dependencies": { "colors": "1.0.3" }, - "engines": { - "node": ">= 0.2.0" + "engines": { + "node": ">= 0.2.0" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + }, + "node_modules/clipboardy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", + "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", + "dependencies": { + "execa": "^8.0.1", + "is-wsl": "^3.1.0", + "is64bit": "^2.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/clipboardy/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/clipboardy/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/clipboardy/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", - "dev": true, + "node_modules/clipboardy/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dependencies": { - "string-width": "^4.2.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": "10.* || >= 12.*" + "node": ">=12" }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-width": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", - "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "node_modules/clipboardy/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "engines": { - "node": ">= 10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + "node_modules/clipboardy/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, - "node_modules/clipboardy": { + "node_modules/clipboardy/node_modules/strip-final-newline": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", - "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", - "dependencies": { - "arch": "^2.2.0", - "execa": "^5.1.1", - "is-wsl": "^2.2.0" - }, + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12825,14 +14461,6 @@ "node": ">=6" } }, - "node_modules/cluster-key-slot": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.2.tgz", - "integrity": "sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", @@ -13045,6 +14673,11 @@ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==" + }, "node_modules/config-chain": { "version": "1.1.13", "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", @@ -13075,138 +14708,353 @@ "xdg-basedir": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=8" + } + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/consola": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", + "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==" + }, + "node_modules/constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==" + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", + "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", + "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" + }, + "bin": { + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/conventional-changelog-writer/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/conventional-changelog-writer/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/conventional-changelog-writer/node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "dev": true, + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "node_modules/conventional-changelog-writer/node_modules/normalize-package-data": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/conventional-changelog-writer/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "ms": "2.0.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/connect/node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "node_modules/conventional-changelog-writer/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/connect/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, "dependencies": { - "ee-first": "1.1.1" + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/connect/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/consola": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/consola/-/consola-3.2.3.tgz", - "integrity": "sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, "engines": { - "node": "^14.18.0 || >=16.10.0" + "node": ">=8" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "engines": { - "node": ">= 0.6" + "bin": { + "semver": "bin/semver" } }, - "node_modules/conventional-changelog-angular": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", - "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", + "node_modules/conventional-changelog-writer/node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, - "dependencies": { - "compare-func": "^2.0.0" - }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/conventional-changelog-writer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", - "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", + "node_modules/conventional-changelog-writer/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "dependencies": { - "conventional-commits-filter": "^3.0.0", - "dateformat": "^3.0.3", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^8.1.2", - "semver": "^7.0.0", - "split": "^1.0.1" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, "engines": { - "node": ">=14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/conventional-commits-filter": { @@ -13240,18 +15088,6 @@ "node": ">=16" } }, - "node_modules/conventional-commits-parser/node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", - "dev": true, - "engines": { - "node": ">=16.10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -13267,9 +15103,9 @@ } }, "node_modules/cookie-es": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.0.0.tgz", - "integrity": "sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.1.0.tgz", + "integrity": "sha512-L2rLOcK0wzWSfSDA33YR+PUHDG10a8px7rUHKWbGLP4YfbsMed2KFUw5fczvDPbT98DDe3LEzviswl810apTEw==" }, "node_modules/cookie-signature": { "version": "1.0.6", @@ -13305,9 +15141,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.34.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.34.0.tgz", - "integrity": "sha512-pmhivkYXkymswFfbXsANmBAewXx86UBfmagP+w0wkK06kLsLlTK5oQmsURPivzMkIBQiYq2cjamcZExIwlFQIg==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.1.tgz", + "integrity": "sha512-J/r5JTHSmzTxbiYYrzXg9w1VpqrYt+gexenBE9pugeyhwPZTAEJddyiReJWsLO6uNQ8xJZFbod6XC7KKwatCiA==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -13317,8 +15153,7 @@ "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/cors": { "version": "2.8.5", @@ -13528,6 +15363,19 @@ "node": ">= 8" } }, + "node_modules/crossws": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.2.4.tgz", + "integrity": "sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==", + "peerDependencies": { + "uWebSockets.js": "*" + }, + "peerDependenciesMeta": { + "uWebSockets.js": { + "optional": true + } + } + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -13585,33 +15433,33 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/csv": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/csv/-/csv-6.3.6.tgz", - "integrity": "sha512-jsEsX2HhGp7xiwrJu5srQavKsh+HUJcCi78Ar3m4jlmFKRoTkkMy7ZZPP+LnQChmaztW+uj44oyfMb59daAs/Q==", + "version": "6.3.9", + "resolved": "https://registry.npmjs.org/csv/-/csv-6.3.9.tgz", + "integrity": "sha512-eiN+Qu8NwSLxZYia6WzB8xlX/rAQ/8EgK5A4dIF7Bz96mzcr5dW1jlcNmjG0QWySWKfPdCerH3RQ96ZqqsE8cA==", "dependencies": { - "csv-generate": "^4.3.1", - "csv-parse": "^5.5.3", - "csv-stringify": "^6.4.5", - "stream-transform": "^3.3.0" + "csv-generate": "^4.4.1", + "csv-parse": "^5.5.6", + "csv-stringify": "^6.5.0", + "stream-transform": "^3.3.2" }, "engines": { "node": ">= 0.1.90" } }, "node_modules/csv-generate": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.3.1.tgz", - "integrity": "sha512-7YeeJq+44/I/O5N2sr2qBMcHZXhpfe38eh7DOFxyMtYO+Pir7kIfgFkW5MPksqKqqR6+/wX7UGoZm1Ot11151w==" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-4.4.1.tgz", + "integrity": "sha512-O/einO0v4zPmXaOV+sYqGa02VkST4GP5GLpWBNHEouIU7pF3kpGf3D0kCCvX82ydIY4EKkOK+R8b1BYsRXravg==" }, "node_modules/csv-parse": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.3.tgz", - "integrity": "sha512-v0KW6C0qlZzoGjk6u5tLmVfyZxNgPGXZsWTXshpAgKVGmGXzaVWGdlCFxNx5iuzcXT/oJN1HHM9DZKwtAtYa+A==" + "version": "5.5.6", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.5.6.tgz", + "integrity": "sha512-uNpm30m/AGSkLxxy7d9yRXpJQFrZzVWLFBkS+6ngPcZkw/5k3L/jjFuj7tVnEpRn+QgmiXr21nDlhCiUK4ij2A==" }, "node_modules/csv-stringify": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.4.5.tgz", - "integrity": "sha512-SPu1Vnh8U5EnzpNOi1NDBL5jU5Rx7DVHr15DNg9LXDTAbQlAVAmEbVt16wZvEW9Fu9Qt4Ji8kmeCJ2B1+4rFTQ==" + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-6.5.0.tgz", + "integrity": "sha512-edlXFVKcUx7r8Vx5zQucsuMg4wb/xT6qyz+Sr1vnLrdXqlLD1+UKyWNyZ9zn6mUW1ewmGxrpVwAcChGF0HQ/2Q==" }, "node_modules/curve25519-js": { "version": "0.0.4", @@ -13619,39 +15467,144 @@ "integrity": "sha512-axn2UMEnkhyDUPWOwVKBMVIzSQy2ejH2xRGy1wq81dqRwApXfIzfbE3hIX0ZRFBIihf/KDqK158DLwESu4AK1w==" }, "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "dependencies": { + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-buffer/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dependencies": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "node_modules/data-view-byte-length/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dependencies": { - "assert-plus": "^1.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">=0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", - "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", - "dev": true, + "node_modules/data-view-byte-offset/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, "engines": { - "node": ">= 14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/date-fns": { @@ -13680,7 +15633,6 @@ }, "node_modules/dayjs": { "version": "1.11.10", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/debug": { @@ -13827,16 +15779,19 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/define-lazy-prop": { @@ -13865,9 +15820,9 @@ } }, "node_modules/defu": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", - "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==" + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==" }, "node_modules/degenerator": { "version": "5.0.1", @@ -13883,6 +15838,37 @@ "node": ">= 14" } }, + "node_modules/degenerator/node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/degenerator/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/delay": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", @@ -13902,14 +15888,6 @@ "node": ">=0.4.0" } }, - "node_modules/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "engines": { - "node": ">=0.10" - } - }, "node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -13943,9 +15921,9 @@ } }, "node_modules/destr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.2.tgz", - "integrity": "sha512-65AlobnZMiCET00KaFFjUefxDX0khFA/E4myqZ7a6Sq1yZtR8+FVIvilVX66vF2uobSumxooYZChiRPCKNqhmg==" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz", + "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==" }, "node_modules/destroy": { "version": "1.2.0", @@ -13963,9 +15941,9 @@ "integrity": "sha512-53rsFbGdwMwlF7qvCt0ypLM5V5/Mbl0szB7GPN8y9NCcbknYOeVVXdrXEq+90IwAfrrzt6Hd+u2E2ntakICU8w==" }, "node_modules/detect-libc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.2.tgz", - "integrity": "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", "optional": true, "engines": { "node": ">=8" @@ -14052,6 +16030,17 @@ "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==" }, + "node_modules/domain-browser": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-4.23.0.tgz", + "integrity": "sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, "node_modules/dompurify": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", @@ -14172,6 +16161,12 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, "node_modules/ecdsa-sig-formatter": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", @@ -14181,6 +16176,20 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/ed25519-hd-key": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ed25519-hd-key/-/ed25519-hd-key-1.3.0.tgz", + "integrity": "sha512-IWwAyiiuJQhgu3L8NaHb68eJxTu2pgCwxIBdgpLJdKpYZM46+AXePSVTr7fkNKaUOfOL4IrjEUaQvyVRIDP7fg==", + "dependencies": { + "create-hmac": "1.1.7", + "tweetnacl": "1.0.3" + } + }, + "node_modules/ed25519-hd-key/node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -14197,9 +16206,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.616", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz", - "integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==", + "version": "1.4.803", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.803.tgz", + "integrity": "sha512-61H9mLzGOCLLVsnLiRzCbc63uldP0AniRYPV3hbGVtONA1pI7qSGILdbofR7A8TMbOypDocEAjH/e+9k1QIe3g==", "dev": true }, "node_modules/elementtree": { @@ -14215,9 +16224,9 @@ } }, "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", + "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -14295,9 +16304,9 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "version": "5.17.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.0.tgz", + "integrity": "sha512-dwDPwZL0dmye8Txp2gzFmA6sxALaSvdRDjPH0viLcKrtlOL3tw62nWWweVD1SdILDTJrbrL6tdWVN58Wo6U3eA==", "dev": true, "dependencies": { "graceful-fs": "^4.2.4", @@ -14308,10 +16317,13 @@ } }, "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "engines": { + "node": ">=0.12" + }, "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } @@ -14352,18 +16364,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/env-ci/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/env-ci/node_modules/human-signals": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", @@ -14398,9 +16398,9 @@ } }, "node_modules/env-ci/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -14486,56 +16486,233 @@ } }, "node_modules/es-abstract": { - "version": "1.22.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", - "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-abstract/node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" } }, "node_modules/es-get-iterator": { @@ -14559,39 +16736,99 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", - "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", "dev": true, "dependencies": { - "asynciterator.prototype": "^1.0.0", - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.1", - "es-set-tostringtag": "^2.0.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", + "internal-slot": "^1.0.7", "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.0.1" + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", - "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", + "node_modules/es-iterator-helpers/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers/node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/es-shim-unscopables": { @@ -14607,7 +16844,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -14621,13 +16857,14 @@ } }, "node_modules/es5-ext": { - "version": "0.10.62", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", - "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "hasInstallScript": true, "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", "next-tick": "^1.1.0" }, "engines": { @@ -14663,18 +16900,59 @@ } }, "node_modules/es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dependencies": { - "d": "^1.0.1", - "ext": "^1.1.2" + "d": "^1.0.2", + "ext": "^1.7.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -14706,26 +16984,75 @@ } }, "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, "dependencies": { "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" }, "bin": { "escodegen": "bin/escodegen.js", "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">=6.0" + "node": ">=4.0" }, "optionalDependencies": { "source-map": "~0.6.1" } }, + "node_modules/escodegen/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/escodegen/node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/escodegen/node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/escodegen/node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -14736,9 +17063,20 @@ "node": ">=0.10.0" } }, + "node_modules/escodegen/node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/eslint": { "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "dependencies": { @@ -14793,7 +17131,6 @@ }, "node_modules/eslint-config-next": { "version": "14.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.0.3.tgz", "integrity": "sha512-IKPhpLdpSUyKofmsXUfrvBC49JMUTdeaD8ZIH4v9Vk0sC1X6URTuTJCLtA0Vwuj7V/CQh0oISuSTvNn5//Buew==", "dev": true, "dependencies": { @@ -14863,9 +17200,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -15096,6 +17433,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dependencies": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -15159,6 +17510,11 @@ "node": ">=4.0" } }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", @@ -15252,18 +17608,17 @@ }, "node_modules/ethereum-blockies-base64": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/ethereum-blockies-base64/-/ethereum-blockies-base64-1.0.2.tgz", "integrity": "sha512-Vg2HTm7slcWNKaRhCUl/L3b4KrB8ohQXdd5Pu3OI897EcR6tVRvUqdTwAyx+dnmoDzj8e2bwBLDQ50ByFmcz6w==", "dependencies": { "pnglib": "0.0.1" } }, "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz", + "integrity": "sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==", "dependencies": { - "js-sha3": "^0.8.0" + "@noble/hashes": "^1.4.0" } }, "node_modules/ethereum-cryptography": { @@ -15288,6 +17643,14 @@ "setimmediate": "^1.0.5" } }, + "node_modules/ethereum-cryptography/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/ethereum-cryptography/node_modules/bs58check": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", @@ -15330,6 +17693,14 @@ "@types/node": "*" } }, + "node_modules/ethereumjs-util/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/ethers": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", @@ -15395,6 +17766,15 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "node_modules/event-stream": { "version": "3.3.4", "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", @@ -15532,15 +17912,15 @@ } }, "node_modules/exegesis/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -15686,11 +18066,6 @@ "type": "^2.7.2" } }, - "node_modules/ext/node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==" - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -15794,9 +18169,9 @@ "dev": true }, "node_modules/fast-redact": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.3.0.tgz", - "integrity": "sha512-6T5V1QK1u4oF+ATxs1lWUmlEk6P2T9HqJG3e2DnHOdVgZy2rFJBoEnrIedcTXlkAHU/zKC+7KETJ+KGGKwxgMQ==", + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", "engines": { "node": ">=6" } @@ -15854,9 +18229,9 @@ "peer": true }, "node_modules/fastq": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", - "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -15975,9 +18350,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -16060,7 +18435,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -16096,41 +18470,41 @@ } }, "node_modules/firebase": { - "version": "10.7.1", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.7.1.tgz", - "integrity": "sha512-Mlt7y7zQ43FtKp4SCyYie3tnrOL3UMF2XXiV4ZXMrC0d0wtcOYmABuybhkJpJCKILpdekxr39wjnaai0DZlWFg==", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-compat": "0.2.6", - "@firebase/app": "0.9.25", - "@firebase/app-check": "0.8.1", - "@firebase/app-check-compat": "0.3.8", - "@firebase/app-compat": "0.2.25", - "@firebase/app-types": "0.9.0", - "@firebase/auth": "1.5.1", - "@firebase/auth-compat": "0.5.1", - "@firebase/database": "1.0.2", - "@firebase/database-compat": "1.0.2", - "@firebase/firestore": "4.4.0", - "@firebase/firestore-compat": "0.3.23", - "@firebase/functions": "0.11.0", - "@firebase/functions-compat": "0.3.6", - "@firebase/installations": "0.6.4", - "@firebase/installations-compat": "0.2.4", - "@firebase/messaging": "0.12.5", - "@firebase/messaging-compat": "0.2.5", - "@firebase/performance": "0.6.4", - "@firebase/performance-compat": "0.2.4", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-compat": "0.2.4", - "@firebase/storage": "0.12.0", - "@firebase/storage-compat": "0.3.3", - "@firebase/util": "1.9.3" + "version": "10.12.2", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.12.2.tgz", + "integrity": "sha512-ZxEdtSvP1I9su1yf32D8TIdgxtPgxwr6z3jYAR1TXS/t+fVfpoPc/N1/N2bxOco9mNjUoc+od34v5Fn4GeKs6Q==", + "dependencies": { + "@firebase/analytics": "0.10.4", + "@firebase/analytics-compat": "0.2.10", + "@firebase/app": "0.10.5", + "@firebase/app-check": "0.8.4", + "@firebase/app-check-compat": "0.3.11", + "@firebase/app-compat": "0.2.35", + "@firebase/app-types": "0.9.2", + "@firebase/auth": "1.7.4", + "@firebase/auth-compat": "0.5.9", + "@firebase/database": "1.0.5", + "@firebase/database-compat": "1.0.5", + "@firebase/firestore": "4.6.3", + "@firebase/firestore-compat": "0.3.32", + "@firebase/functions": "0.11.5", + "@firebase/functions-compat": "0.3.11", + "@firebase/installations": "0.6.7", + "@firebase/installations-compat": "0.2.7", + "@firebase/messaging": "0.12.9", + "@firebase/messaging-compat": "0.2.9", + "@firebase/performance": "0.6.7", + "@firebase/performance-compat": "0.2.7", + "@firebase/remote-config": "0.4.7", + "@firebase/remote-config-compat": "0.2.7", + "@firebase/storage": "0.12.5", + "@firebase/storage-compat": "0.3.8", + "@firebase/util": "1.9.6", + "@firebase/vertexai-preview": "0.0.2" } }, "node_modules/firebase-tools": { "version": "12.9.1", - "resolved": "https://registry.npmjs.org/firebase-tools/-/firebase-tools-12.9.1.tgz", "integrity": "sha512-t/oTgGnGm3sLT3wR80B7hY6vdAs6rTlZMsmnZGsP+GeKtVzaB5KHEwLbkZuRXtqij9f35IfkQm2a4TKjKY6xUQ==", "dev": true, "dependencies": { @@ -16211,6 +18585,12 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/firebase-tools/node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, "node_modules/firebase-tools/node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", @@ -16284,6 +18664,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -16325,6 +18706,27 @@ } } }, + "node_modules/firebase/node_modules/@firebase/auth": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.7.4.tgz", + "integrity": "sha512-d2Fw17s5QesojwebrA903el20Li9/YGgkoOGJjagM4I1qAT36APa/FcZ+OX86KxbYKCtQKTMqraU8pxG7C2JWA==", + "dependencies": { + "@firebase/component": "0.6.7", + "@firebase/logger": "0.4.2", + "@firebase/util": "1.9.6", + "tslib": "^2.1.0", + "undici": "5.28.4" + }, + "peerDependencies": { + "@firebase/app": "0.x", + "@react-native-async-storage/async-storage": "^1.18.1" + }, + "peerDependenciesMeta": { + "@react-native-async-storage/async-storage": { + "optional": true + } + } + }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -16343,6 +18745,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -16355,9 +18758,9 @@ } }, "node_modules/flatted": { - "version": "3.2.9", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", - "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/fn.name": { @@ -16367,9 +18770,9 @@ "dev": true }, "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { "type": "individual", @@ -16394,9 +18797,9 @@ } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", "dev": true, "optional": true, "dependencies": { @@ -16598,7 +19001,6 @@ "version": "1.1.6", "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -16616,7 +19018,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16635,19 +19036,18 @@ "integrity": "sha512-TTvznnpde1rTv/3FOmZMbPCh75gqkJ9dKJdsKmcNiXh4olLJl3eRahHJcGzyPZjuVaytffP02Or4z5avDvqKQA==" }, "node_modules/gaxios": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", - "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", + "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", "dev": true, "dependencies": { - "abort-controller": "^3.0.0", "extend": "^3.0.2", "https-proxy-agent": "^5.0.0", "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" + "node-fetch": "^2.6.9" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/gaxios/node_modules/agent-base": { @@ -16676,16 +19076,16 @@ } }, "node_modules/gcp-metadata": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", - "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", + "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", "dev": true, "dependencies": { - "gaxios": "^4.0.0", + "gaxios": "^5.0.0", "json-bigint": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, "node_modules/get-caller-file": { @@ -16697,44 +19097,48 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/get-port-please": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.1.tgz", - "integrity": "sha512-3UBAyM3u4ZBVYDsxOQfJDxEa6XTbpBDrOjp4mf7ExFRt5BKs/QywQQiJsh2B+hxcZLSapWqCRvElUe8DnKcFHA==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", + "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" }, "node_modules/get-stream": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", - "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -16744,9 +19148,9 @@ } }, "node_modules/get-tsconfig": { - "version": "4.7.2", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.2.tgz", - "integrity": "sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.5.tgz", + "integrity": "sha512-ZCuZCnlqNzjb4QprAzXKdpp/gh6KTxSJuw3IBsPnV/7fV4NxC9ckB+vPTt8w7fJA0TaSD7c55BR47JD6MEDyDw==", "dev": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" @@ -16756,50 +19160,32 @@ } }, "node_modules/get-uri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", - "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", "dev": true, "dependencies": { "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.0", + "data-uri-to-buffer": "^6.0.2", "debug": "^4.3.4", - "fs-extra": "^8.1.0" + "fs-extra": "^11.2.0" }, "engines": { "node": ">= 14" } }, "node_modules/get-uri/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/get-uri/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/get-uri/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" + "node": ">=14.14" } }, "node_modules/getpass": { @@ -16813,7 +19199,6 @@ }, "node_modules/gh-pages": { "version": "5.0.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-5.0.0.tgz", "integrity": "sha512-Nqp1SjkPIB94Xw/3yYNTUL+G2dxlhjvv1zeN/4kMC1jfViTEqhtVz/Ba1zSXHuvXCN9ADNS1dN4r5/J/nZWEQQ==", "dev": true, "dependencies": { @@ -16845,6 +19230,15 @@ "node": ">=0.10.0" } }, + "node_modules/gh-pages/node_modules/array-union/node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/gh-pages/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -16881,6 +19275,18 @@ "node": ">=0.10.0" } }, + "node_modules/gh-pages/node_modules/globby/node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/gh-pages/node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", @@ -16987,6 +19393,7 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -17085,11 +19492,12 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -17099,12 +19507,12 @@ } }, "node_modules/globby": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.0.tgz", - "integrity": "sha512-/1WM/LNHRAOH9lZta77uGbq0dAEQM+XjNesWwhlERDVenqothRbnzTrL3/LrIoEPPjeUHC3vrS6TwoyxeHs7MQ==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", + "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", "dev": true, "dependencies": { - "@sindresorhus/merge-streams": "^1.0.0", + "@sindresorhus/merge-streams": "^2.1.0", "fast-glob": "^3.3.2", "ignore": "^5.2.4", "path-type": "^5.0.0", @@ -17150,220 +19558,187 @@ "node": ">=10" } }, - "node_modules/google-auth-library/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/google-auth-library/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "debug": "4" }, "engines": { - "node": ">=10" + "node": ">= 6.0.0" } }, - "node_modules/google-gax": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", - "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", + "node_modules/google-auth-library/node_modules/gaxios": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.3.3.tgz", + "integrity": "sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA==", "dev": true, "dependencies": { - "@grpc/grpc-js": "~1.8.0", - "@grpc/proto-loader": "^0.7.0", - "@types/long": "^4.0.0", - "@types/rimraf": "^3.0.2", "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^8.0.2", - "is-stream-ended": "^0.1.4", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^1.0.0", - "protobufjs": "7.2.4", - "protobufjs-cli": "1.1.1", - "retry-request": "^5.0.0" - }, - "bin": { - "compileProtos": "build/tools/compileProtos.js", - "minifyProtoJson": "build/tools/minify.js" + "extend": "^3.0.2", + "https-proxy-agent": "^5.0.0", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.7" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/google-gax/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/google-auth-library/node_modules/gcp-metadata": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-4.3.1.tgz", + "integrity": "sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A==", "dev": true, "dependencies": { - "debug": "4" + "gaxios": "^4.0.0", + "json-bigint": "^1.0.0" }, "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/google-gax/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=10" } }, - "node_modules/google-gax/node_modules/escodegen": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", - "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "node_modules/google-auth-library/node_modules/google-p12-pem": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", + "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", "dev": true, "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^4.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" + "node-forge": "^1.3.1" }, "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=4.0" + "gp12-pem": "build/src/bin/gp12-pem.js" }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/google-gax/node_modules/escodegen/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, "engines": { - "node": ">=4.0" + "node": ">=10" } }, - "node_modules/google-gax/node_modules/gaxios": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz", - "integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==", + "node_modules/google-auth-library/node_modules/gtoken": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", + "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", "dev": true, "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9" + "gaxios": "^4.0.0", + "google-p12-pem": "^3.1.3", + "jws": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/google-gax/node_modules/gcp-metadata": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz", - "integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==", + "node_modules/google-auth-library/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=12" + "node": ">= 6" } }, - "node_modules/google-gax/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/google-auth-library/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/google-gax/node_modules/google-auth-library": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", - "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", + "node_modules/google-gax": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/google-gax/-/google-gax-3.6.1.tgz", + "integrity": "sha512-g/lcUjGcB6DSw2HxgEmCDOrI/CByOwqRvsuUvNalHUK2iPPPlmAIpbMbl62u0YufGMr8zgE3JL7th6dCb1Ry+w==", "dev": true, "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.3.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" + "@grpc/grpc-js": "~1.8.0", + "@grpc/proto-loader": "^0.7.0", + "@types/long": "^4.0.0", + "@types/rimraf": "^3.0.2", + "abort-controller": "^3.0.0", + "duplexify": "^4.0.0", + "fast-text-encoding": "^1.0.3", + "google-auth-library": "^8.0.2", + "is-stream-ended": "^0.1.4", + "node-fetch": "^2.6.1", + "object-hash": "^3.0.0", + "proto3-json-serializer": "^1.0.0", + "protobufjs": "7.2.4", + "protobufjs-cli": "1.1.1", + "retry-request": "^5.0.0" + }, + "bin": { + "compileProtos": "build/tools/compileProtos.js", + "minifyProtoJson": "build/tools/minify.js" }, "engines": { "node": ">=12" } }, - "node_modules/google-gax/node_modules/google-p12-pem": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", - "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", + "node_modules/google-gax/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", "dev": true, "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" + "undici-types": "~5.26.4" } }, - "node_modules/google-gax/node_modules/gtoken": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", - "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", + "node_modules/google-gax/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=12.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/google-gax/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/google-gax/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "dependencies": { - "agent-base": "6", - "debug": "4" + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/google-gax/node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "node_modules/google-gax/node_modules/google-auth-library": { + "version": "8.9.0", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-8.9.0.tgz", + "integrity": "sha512-f7aQCJODJFmYWN6PeNKzgvy9LI2tYmXnzpNDHEjG5sDNPgGb2FXQyTBnXeSH+PAtpKESFD+LmHw3Ox3mN7e1Fg==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "arrify": "^2.0.0", + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "fast-text-encoding": "^1.0.0", + "gaxios": "^5.0.0", + "gcp-metadata": "^5.3.0", + "gtoken": "^6.1.0", + "jws": "^4.0.0", + "lru-cache": "^6.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=12" } }, "node_modules/google-gax/node_modules/long": { @@ -17396,32 +19771,6 @@ "node": ">=10" } }, - "node_modules/google-gax/node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/google-gax/node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/google-gax/node_modules/protobufjs": { "version": "7.2.4", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.4.tgz", @@ -17474,32 +19823,10 @@ "protobufjs": "^7.0.0" } }, - "node_modules/google-gax/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/google-gax/node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/google-p12-pem": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-3.1.4.tgz", - "integrity": "sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-4.0.1.tgz", + "integrity": "sha512-WPkN4yGtz05WZ5EhtlxNDWPhC4JIic6G8ePitwUWy4l+XPVYec+a0j0Ts47PDtW59y3RwAhUd9/h9ZZ63px6RQ==", "dev": true, "dependencies": { "node-forge": "^1.3.1" @@ -17508,7 +19835,7 @@ "gp12-pem": "build/src/bin/gp12-pem.js" }, "engines": { - "node": ">=10" + "node": ">=12.0.0" } }, "node_modules/google-protobuf": { @@ -17539,32 +19866,34 @@ "dev": true }, "node_modules/gtoken": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-5.3.2.tgz", - "integrity": "sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-6.1.2.tgz", + "integrity": "sha512-4ccGpzz7YAr7lxrT2neugmXQ3hP9ho2gcaityLVkiUecAiwiy60Ii8gRbZeOsXV19fYaRjgBSshs8kXw+NKCPQ==", "dev": true, "dependencies": { - "gaxios": "^4.0.0", - "google-p12-pem": "^3.1.3", + "gaxios": "^5.0.1", + "google-p12-pem": "^4.0.0", "jws": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12.0.0" } }, "node_modules/h3": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/h3/-/h3-1.9.0.tgz", - "integrity": "sha512-+F3ZqrNV/CFXXfZ2lXBINHi+rM4Xw3CDC5z2CDK3NMPocjonKipGLLDSkrqY9DOrioZNPTIdDMWfQKm//3X2DA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/h3/-/h3-1.11.1.tgz", + "integrity": "sha512-AbaH6IDnZN6nmbnJOH72y3c5Wwh9P97soSVdGSBbcDACRdkC0FEWf25pzx4f/NuOCK6quHmW18yF2Wx+G4Zi1A==", "dependencies": { "cookie-es": "^1.0.0", - "defu": "^6.1.3", - "destr": "^2.0.2", + "crossws": "^0.2.2", + "defu": "^6.1.4", + "destr": "^2.0.3", "iron-webcrypto": "^1.0.0", + "ohash": "^1.1.3", "radix3": "^1.1.0", - "ufo": "^1.3.2", + "ufo": "^1.4.0", "uncrypto": "^0.1.3", - "unenv": "^1.7.4" + "unenv": "^1.9.0" } }, "node_modules/handlebars": { @@ -17631,7 +19960,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -17645,20 +19973,20 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.2.2" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "engines": { "node": ">= 0.4" }, @@ -17723,9 +20051,9 @@ } }, "node_modules/hasown": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { "function-bind": "^1.1.2" }, @@ -17769,6 +20097,14 @@ "secp256k1": "^4.0.0" } }, + "node_modules/hdkey/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/hdkey/node_modules/bs58check": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", @@ -17780,9 +20116,9 @@ } }, "node_modules/heap-js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.3.0.tgz", - "integrity": "sha512-E5303mzwQ+4j/n2J0rDvEPBN7GKjhis10oHiYOgjxsmxYgqG++hz9NyLLOXttzH8as/DyiBHYpUrJTZWYaMo8Q==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/heap-js/-/heap-js-2.5.0.tgz", + "integrity": "sha512-kUGoI3p7u6B41z/dp33G6OaL7J4DRqRYwVmeIlwLClx7yaaAy7hoDExnuejTKtuDwfcatGmddHDEOjf6EyIxtQ==", "dev": true, "engines": { "node": ">=10.0.0" @@ -17855,27 +20191,15 @@ } }, "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", + "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/hot-shots": { @@ -17899,7 +20223,6 @@ }, "node_modules/html5-qrcode": { "version": "2.3.8", - "resolved": "https://registry.npmjs.org/html5-qrcode/-/html5-qrcode-2.3.8.tgz", "integrity": "sha512-jsr4vafJhwoLVEDW3n1KvPnCCXWaQfRng0/EEYk1vNcQGcG/htAdhJX0be8YyqMoSz7+hZvOZSTAepsabiuhiQ==" }, "node_modules/http-cache-semantics": { @@ -17972,6 +20295,11 @@ "npm": ">=1.3.7" } }, + "node_modules/https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==" + }, "node_modules/https-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", @@ -18157,6 +20485,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -18168,9 +20497,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -18201,14 +20530,6 @@ "node": ">=12.0.0" } }, - "node_modules/inquirer/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/inquirer/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -18281,42 +20602,26 @@ } }, "node_modules/ionicons": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.2.2.tgz", - "integrity": "sha512-I3iYIfc9Q9FRifWyFSwTAvbEABWlWY32i0sAVDDPGYnaIZVugkLCZFbEcrphW6ixVPg8tt1oLwalo/JJwbEqnA==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz", + "integrity": "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==", "dependencies": { "@stencil/core": "^4.0.3" } }, - "node_modules/ioredis": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ioredis/-/ioredis-5.3.2.tgz", - "integrity": "sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, "dependencies": { - "@ioredis/commands": "^1.1.1", - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.4", - "denque": "^2.1.0", - "lodash.defaults": "^4.2.0", - "lodash.isarguments": "^3.1.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": ">=12.22.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" + "node": ">= 12" } }, - "node_modules/ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "dev": true - }, "node_modules/ip-regex": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.3.0.tgz", @@ -18336,9 +20641,9 @@ } }, "node_modules/iron-webcrypto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.0.0.tgz", - "integrity": "sha512-anOK1Mktt8U1Xi7fCM3RELTuYbnFikQY5VtrDj7kPgpejV7d43tWKhzgioO0zpkazLEL/j/iayRqnJhrGfqUsg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", + "integrity": "sha512-feOM6FaSr6rEABp/eDfVseKyTMDt+KGpeB35SkVn9Tyn0CqvVsY3EwI0v5i8nMHyJnzCIQf7nsy3p41TPkJZhg==", "funding": { "url": "https://github.com/sponsors/brc-dd" } @@ -18418,7 +20723,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, "dependencies": { "has-bigints": "^1.0.1" }, @@ -18441,7 +20745,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -18493,11 +20796,102 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view/node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view/node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view/node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-date-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -18607,6 +21001,37 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -18639,10 +21064,13 @@ "optional": true }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18663,10 +21091,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "dev": true, + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "engines": { "node": ">= 0.4" }, @@ -18698,7 +21125,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -18748,7 +21174,6 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -18761,10 +21186,13 @@ } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18773,7 +21201,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -18802,7 +21229,6 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -18817,7 +21243,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, "dependencies": { "has-symbols": "^1.0.2" }, @@ -18877,10 +21302,13 @@ "dev": true }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -18889,7 +21317,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dev": true, "dependencies": { "call-bind": "^1.0.2" }, @@ -18898,13 +21325,35 @@ } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -18952,6 +21401,20 @@ "node": ">=v0.10.0" } }, + "node_modules/is64bit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", + "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", + "dependencies": { + "system-architecture": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -18971,6 +21434,14 @@ "whatwg-fetch": "^3.4.1" } }, + "node_modules/isomorphic-timers-promises": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-timers-promises/-/isomorphic-timers-promises-1.0.1.tgz", + "integrity": "sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==", + "engines": { + "node": ">=10" + } + }, "node_modules/isomorphic-unfetch": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", @@ -19038,9 +21509,9 @@ } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.0.tgz", + "integrity": "sha512-JVYhQnN59LVPFCEcVa2C3CrEKYacvjRfqIQl+h8oi91aLYQVWRYbxjPcv1bUiUy/kLmQaANrYfNMCO3kuEDHfw==", "dev": true, "optional": true, "dependencies": { @@ -19117,9 +21588,9 @@ } }, "node_modules/jayson/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "engines": { "node": ">=8.3.0" }, @@ -19176,9 +21647,9 @@ } }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "bin": { "jiti": "bin/jiti.js" } @@ -19190,9 +21661,9 @@ "dev": true }, "node_modules/joi": { - "version": "17.12.1", - "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.1.tgz", - "integrity": "sha512-vtxmq+Lsc5SlfqotnfVjlViWfOL9nt/avKNbKYizwf6gsCfq9NYY/ceYRMFD8XDdrjJ9abJyScWmhmIiy+XRtQ==", + "version": "17.13.1", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz", + "integrity": "sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==", "dependencies": { "@hapi/hoek": "^9.3.0", "@hapi/topo": "^5.1.0", @@ -19269,27 +21740,27 @@ "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==" }, "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", "dev": true }, "node_modules/jsdoc": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", - "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.3.tgz", + "integrity": "sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==", "dev": true, "dependencies": { "@babel/parser": "^7.20.15", "@jsdoc/salty": "^0.2.1", - "@types/markdown-it": "^12.2.3", + "@types/markdown-it": "^14.1.1", "bluebird": "^3.7.2", "catharsis": "^0.9.0", "escape-string-regexp": "^2.0.0", "js2xmlparser": "^4.0.2", "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^8.6.7", "marked": "^4.0.10", "mkdirp": "^1.0.4", "requizzle": "^0.2.3", @@ -19312,16 +21783,15 @@ "node": ">=8" } }, - "node_modules/jsdoc/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "bin": { - "mkdirp": "bin/cmd.js" + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=10" + "node": ">=4" } }, "node_modules/json-bigint": { @@ -19399,9 +21869,9 @@ "dev": true }, "node_modules/json-stable-stringify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.0.tgz", - "integrity": "sha512-zfA+5SuwYN2VWqN1/5HZaDzQKLJHaBVMZIIM+wuYjdptkaQsqzDdqjqf+lZZJUuJq1aanHiY8LhH8LmH+qBYJA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.1.1.tgz", + "integrity": "sha512-SU/971Kt5qVQfJpyDveVhQ/vya+5hvrjClFOcr8c0Fq5aODJjMwutrOfCU+eCnVD5gpx1Q3fEqkyom77zH1iIg==", "dependencies": { "call-bind": "^1.0.5", "isarray": "^2.0.5", @@ -19439,9 +21909,10 @@ } }, "node_modules/jsonc-parser": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", - "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "peer": true }, "node_modules/jsonfile": { "version": "6.1.0", @@ -19649,9 +22120,9 @@ "dev": true }, "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", "dev": true }, "node_modules/language-tags": { @@ -19782,7 +22253,6 @@ }, "node_modules/lightweight-charts": { "version": "4.1.3", - "resolved": "https://registry.npmjs.org/lightweight-charts/-/lightweight-charts-4.1.3.tgz", "integrity": "sha512-SJacmEyx3LmT2Qsc7Kq7cEX7nEHtQv0MOlujhRlcDxhW62pG6nkBlcM52/jNqkq8B28KQeVmgOQ7zrdJ4BCPDw==", "dependencies": { "fancy-canvas": "2.1.0" @@ -19794,35 +22264,36 @@ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/listhen": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.5.5.tgz", - "integrity": "sha512-LXe8Xlyh3gnxdv4tSjTjscD1vpr/2PRpzq8YIaMJgyKzRG8wdISlWVWnGThJfHnlJ6hmLt2wq1yeeix0TEbuoA==", - "dependencies": { - "@parcel/watcher": "^2.3.0", - "@parcel/watcher-wasm": "2.3.0", - "citty": "^0.1.4", - "clipboardy": "^3.0.0", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/listhen/-/listhen-1.7.2.tgz", + "integrity": "sha512-7/HamOm5YD9Wb7CFgAZkKgVPA96WwhcTQoqtm2VTZGVbVVn3IWKRBTgrU7cchA3Q8k9iCsG8Osoi9GX4JsGM9g==", + "dependencies": { + "@parcel/watcher": "^2.4.1", + "@parcel/watcher-wasm": "^2.4.1", + "citty": "^0.1.6", + "clipboardy": "^4.0.0", "consola": "^3.2.3", - "defu": "^6.1.2", - "get-port-please": "^3.1.1", - "h3": "^1.8.1", + "crossws": "^0.2.0", + "defu": "^6.1.4", + "get-port-please": "^3.1.2", + "h3": "^1.10.2", "http-shutdown": "^1.2.2", - "jiti": "^1.20.0", - "mlly": "^1.4.2", + "jiti": "^1.21.0", + "mlly": "^1.6.1", "node-forge": "^1.3.1", - "pathe": "^1.1.1", - "std-env": "^3.4.3", - "ufo": "^1.3.0", - "untun": "^0.1.2", + "pathe": "^1.1.2", + "std-env": "^3.7.0", + "ufo": "^1.4.0", + "untun": "^0.1.3", "uqr": "^0.1.2" }, "bin": { @@ -19898,7 +22369,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, "dependencies": { "p-locate": "^5.0.0" }, @@ -19950,7 +22420,8 @@ "node_modules/lodash.defaults": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", - "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==" + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true }, "node_modules/lodash.difference": { "version": "4.5.0", @@ -19976,11 +22447,6 @@ "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", "dev": true }, - "node_modules/lodash.isarguments": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz", - "integrity": "sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==" - }, "node_modules/lodash.isboolean": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", @@ -20145,9 +22611,9 @@ } }, "node_modules/lru-cache": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", - "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", "engines": { "node": "14 || >=16.14" } @@ -20169,7 +22635,6 @@ }, "node_modules/magic-sdk": { "version": "21.4.1", - "resolved": "https://registry.npmjs.org/magic-sdk/-/magic-sdk-21.4.1.tgz", "integrity": "sha512-T/v7XWjPWiLMASWiA9qAo6Yoo+swBj1t60kDxXgNumRg4rKbvWnBToNTMmVY3li0ORA8NkeymtLQwX/oeAVFhw==", "dependencies": { "@magic-sdk/commons": "^17.4.1", @@ -20178,6 +22643,14 @@ "localforage": "^1.7.4" } }, + "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==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + } + }, "node_modules/make-dir": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", @@ -20208,9 +22681,9 @@ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" }, "node_modules/make-fetch-happen": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.0.tgz", - "integrity": "sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", "dev": true, "optional": true, "dependencies": { @@ -20223,6 +22696,7 @@ "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", "ssri": "^10.0.0" }, @@ -20230,6 +22704,16 @@ "node": "^16.14.0 || >=18.0.0" } }, + "node_modules/make-fetch-happen/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, "node_modules/map-obj": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", @@ -20248,19 +22732,20 @@ "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==" }, "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, "dependencies": { "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, "bin": { - "markdown-it": "bin/markdown-it.js" + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/markdown-it-anchor": { @@ -20306,13 +22791,10 @@ } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, - "dependencies": { - "type-fest": "^3.0.0" - }, "engines": { "node": ">=14.16" }, @@ -20332,18 +22814,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -20355,9 +22825,9 @@ } }, "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", "dev": true }, "node_modules/media-typer": { @@ -20365,171 +22835,17 @@ "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">= 0.6" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", "dev": true, "engines": { - "node": ">=10" + "node": ">=16.10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -20604,9 +22920,9 @@ "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" }, "node_modules/mime": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.1.tgz", - "integrity": "sha512-5lZ5tyrIfliMXzFtkYyekWbtRXObT9OWa8IwQ5uxTBDHucNNwniRqo0yInflj+iYi5CBa6qxadGzGarDfuEOxA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz", + "integrity": "sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==", "dev": true, "funding": [ "https://github.com/sponsors/broofa" @@ -20760,9 +23076,9 @@ } }, "node_modules/minipass-fetch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.4.tgz", - "integrity": "sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, "optional": true, "dependencies": { @@ -20891,15 +23207,15 @@ "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" }, "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, "bin": { "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" } }, "node_modules/mkdirp-classic": { @@ -20909,14 +23225,25 @@ "optional": true }, "node_modules/mlly": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.4.2.tgz", - "integrity": "sha512-i/Ykufi2t1EZ6NaPLdfnZk2AX8cs0d+mTzVKuPfqPKPatxLApaBoxJQ9x1/uckXtrS/U5oisPMDkNs0yQTaBRg==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", "dependencies": { - "acorn": "^8.10.0", - "pathe": "^1.1.1", - "pkg-types": "^1.0.3", - "ufo": "^1.3.0" + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "node_modules/mlly/node_modules/acorn": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", + "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" } }, "node_modules/modify-values": { @@ -21130,6 +23457,14 @@ "text-encoding-utf-8": "^1.0.2" } }, + "node_modules/near-api-js/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/near-api-js/node_modules/http-errors": { "version": "1.8.1", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", @@ -21208,6 +23543,14 @@ "tweetnacl": "^1.0.2" } }, + "node_modules/near-seed-phrase/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/near-seed-phrase/node_modules/tweetnacl": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", @@ -21244,7 +23587,6 @@ }, "node_modules/next": { "version": "14.0.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.0.3.tgz", "integrity": "sha512-AbYdRNfImBr3XGtvnwOxq8ekVCwbFTv/UJoLwmaX89nk9i051AEY4/HAWzU0YpaTDw8IofUpmuIlvzWF13jxIw==", "dependencies": { "@next/env": "14.0.3", @@ -21319,6 +23661,31 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/next/node_modules/postcss/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/next/node_modules/postcss/node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -21335,9 +23702,9 @@ } }, "node_modules/node-abi": { - "version": "3.52.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", - "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", + "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", "optional": true, "dependencies": { "semver": "^7.3.5" @@ -21419,9 +23786,9 @@ } }, "node_modules/node-fetch-native": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz", - "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==" + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.4.tgz", + "integrity": "sha512-IhOigYzAKHd244OC0JIMIUrjzctirCmPkaIfhDeGcEETWof5zKYUW7e7MYvChGWh/4CJeXEgsRyGzuF334rOOQ==" }, "node_modules/node-forge": { "version": "1.3.1", @@ -21432,9 +23799,9 @@ } }, "node_modules/node-gyp": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.0.1.tgz", - "integrity": "sha512-gg3/bHehQfZivQVfqIyy8wTdSymF9yTyP4CJifK73imyNMU8AIGQE2pUa7dNWfmMeG9cDVF2eehiRMv0LC1iAg==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.1.0.tgz", + "integrity": "sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==", "dev": true, "optional": true, "dependencies": { @@ -21477,23 +23844,23 @@ } }, "node_modules/node-gyp/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "dev": true, "optional": true, "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -21510,9 +23877,9 @@ } }, "node_modules/node-gyp/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", "dev": true, "optional": true, "dependencies": { @@ -21525,6 +23892,33 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/node-gyp/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/node-gyp/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/node-gyp/node_modules/which": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", @@ -21547,10 +23941,81 @@ "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, + "node_modules/node-stdlib-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/node-stdlib-browser/-/node-stdlib-browser-1.2.0.tgz", + "integrity": "sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==", + "dependencies": { + "assert": "^2.0.0", + "browser-resolve": "^2.0.0", + "browserify-zlib": "^0.2.0", + "buffer": "^5.7.1", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "create-require": "^1.1.1", + "crypto-browserify": "^3.11.0", + "domain-browser": "^4.22.0", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "isomorphic-timers-promises": "^1.0.1", + "os-browserify": "^0.3.0", + "path-browserify": "^1.0.1", + "pkg-dir": "^5.0.0", + "process": "^0.11.10", + "punycode": "^1.4.1", + "querystring-es3": "^0.2.1", + "readable-stream": "^3.6.0", + "stream-browserify": "^3.0.0", + "stream-http": "^3.2.0", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.1", + "url": "^0.11.0", + "util": "^0.12.4", + "vm-browserify": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-stdlib-browser/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/node-stdlib-browser/node_modules/pkg-dir": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", + "dependencies": { + "find-up": "^5.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, "optional": true, "dependencies": { @@ -21564,18 +24029,18 @@ } }, "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", "dev": true, "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/normalize-path": { @@ -21596,9 +24061,9 @@ } }, "node_modules/normalize-url": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.0.tgz", - "integrity": "sha512-uVFpKhj5MheNBJRTiMZ9pE/7hD1QTeEvugSJW/OmLzAp78PB5O6adfMNTvmfKhXBkvCzC+rqifWcVYpGFwTjnw==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", "dev": true, "engines": { "node": ">=14.16" @@ -21608,9 +24073,9 @@ } }, "node_modules/npm": { - "version": "9.9.2", - "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.2.tgz", - "integrity": "sha512-D3tV+W0PzJOlwo8YmO6fNzaB1CrMVYd1V+2TURF6lbCbmZKqMsYgeQfPVvqiM3zbNSJPhFEnmlEXIogH2Vq7PQ==", + "version": "9.9.3", + "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.3.tgz", + "integrity": "sha512-Z1l+rcQ5kYb17F3hHtO601arEpvdRYnCLtg8xo3AGtyj3IthwaraEOexI9903uANkifFbqHC8hT53KIrozWg8A==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -21695,21 +24160,21 @@ "@npmcli/run-script": "^6.0.2", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^17.1.3", + "cacache": "^17.1.4", "chalk": "^5.3.0", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "cli-columns": "^4.0.0", "cli-table3": "^0.6.3", "columnify": "^1.6.0", "fastest-levenshtein": "^1.0.16", - "fs-minipass": "^3.0.2", - "glob": "^10.2.7", + "fs-minipass": "^3.0.3", + "glob": "^10.3.10", "graceful-fs": "^4.2.11", "hosted-git-info": "^6.1.1", "ini": "^4.1.1", "init-package-json": "^5.0.0", "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^3.0.0", + "json-parse-even-better-errors": "^3.0.1", "libnpmaccess": "^7.0.2", "libnpmdiff": "^5.0.20", "libnpmexec": "^6.0.4", @@ -21723,14 +24188,14 @@ "libnpmversion": "^4.0.2", "make-fetch-happen": "^11.1.1", "minimatch": "^9.0.3", - "minipass": "^5.0.0", + "minipass": "^7.0.4", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^9.4.0", + "node-gyp": "^9.4.1", "nopt": "^7.2.0", "normalize-package-data": "^5.0.0", "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.2.0", + "npm-install-checks": "^6.3.0", "npm-package-arg": "^10.1.0", "npm-pick-manifest": "^8.0.2", "npm-profile": "^7.0.1", @@ -21743,12 +24208,12 @@ "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", "read": "^2.1.0", - "semver": "^7.5.4", + "semver": "^7.6.0", "sigstore": "^1.9.0", "spdx-expression-parse": "^3.0.1", - "ssri": "^10.0.4", + "ssri": "^10.0.5", "supports-color": "^9.4.0", - "tar": "^6.1.15", + "tar": "^6.2.0", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", @@ -21785,6 +24250,12 @@ "node": ">=0.1.90" } }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/npm/node_modules/@isaacs/cliui": { "version": "8.0.2", "dev": true, @@ -21859,7 +24330,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "6.5.0", + "version": "6.5.1", "dev": true, "inBundle": true, "license": "ISC", @@ -21872,7 +24343,7 @@ "@npmcli/name-from-folder": "^2.0.0", "@npmcli/node-gyp": "^3.0.0", "@npmcli/package-json": "^4.0.0", - "@npmcli/query": "^3.0.0", + "@npmcli/query": "^3.1.0", "@npmcli/run-script": "^6.0.0", "bin-links": "^4.0.1", "cacache": "^17.0.4", @@ -21906,13 +24377,13 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "6.4.0", + "version": "6.4.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/map-workspaces": "^3.0.2", - "ci-info": "^3.8.0", + "ci-info": "^4.0.0", "ini": "^4.1.0", "nopt": "^7.0.0", "proc-log": "^3.0.0", @@ -22013,6 +24484,19 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { "version": "2.0.0", "dev": true, @@ -22062,7 +24546,7 @@ } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.0.0", + "version": "3.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -22187,18 +24671,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/abort-controller": { - "version": "3.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, "node_modules/npm/node_modules/agent-base": { "version": "6.0.2", "dev": true, @@ -22212,13 +24684,11 @@ } }, "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.3.0", + "version": "4.5.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", - "depd": "^2.0.0", "humanize-ms": "^1.2.1" }, "engines": { @@ -22275,14 +24745,10 @@ "license": "MIT" }, "node_modules/npm/node_modules/are-we-there-yet": { - "version": "4.0.0", + "version": "4.0.2", "dev": true, "inBundle": true, "license": "ISC", - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^4.1.0" - }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -22293,28 +24759,8 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/base64-js": { - "version": "1.5.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.2", + "version": "4.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -22346,30 +24792,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/npm/node_modules/buffer": { - "version": "6.0.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, "node_modules/npm/node_modules/builtins": { "version": "5.0.1", "dev": true, @@ -22380,7 +24802,7 @@ } }, "node_modules/npm/node_modules/cacache": { - "version": "17.1.3", + "version": "17.1.4", "dev": true, "inBundle": true, "license": "ISC", @@ -22389,7 +24811,7 @@ "fs-minipass": "^3.0.0", "glob": "^10.2.2", "lru-cache": "^7.7.1", - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-collect": "^1.0.2", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", @@ -22424,7 +24846,7 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "3.8.0", + "version": "4.0.0", "dev": true, "funding": [ { @@ -22497,7 +24919,7 @@ } }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.1", + "version": "6.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -22645,17 +25067,8 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/depd": { - "version": "2.0.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/npm/node_modules/diff": { - "version": "5.1.0", + "version": "5.2.0", "dev": true, "inBundle": true, "license": "BSD-3-Clause", @@ -22700,24 +25113,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/npm/node_modules/event-target-shim": { - "version": "5.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/npm/node_modules/events": { - "version": "3.3.0", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, "node_modules/npm/node_modules/exponential-backoff": { "version": "3.1.1", "dev": true, @@ -22750,12 +25145,12 @@ } }, "node_modules/npm/node_modules/fs-minipass": { - "version": "3.0.2", + "version": "3.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -22768,10 +25163,13 @@ "license": "ISC" }, "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", + "version": "1.1.2", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/npm/node_modules/gauge": { "version": "5.0.1", @@ -22793,19 +25191,19 @@ } }, "node_modules/npm/node_modules/glob": { - "version": "10.2.7", + "version": "10.3.10", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", + "jackspeak": "^2.3.5", "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2", - "path-scurry": "^1.7.0" + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" }, "bin": { - "glob": "dist/cjs/src/bin.js" + "glob": "dist/esm/bin.mjs" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -22820,24 +25218,24 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hasown": { + "version": "2.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "ISC" - }, "node_modules/npm/node_modules/hosted-git-info": { "version": "6.1.1", "dev": true, @@ -22905,28 +25303,8 @@ "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/ieee754": { - "version": "1.2.1", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "inBundle": true, - "license": "BSD-3-Clause" - }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", + "version": "6.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -22955,6 +25333,12 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, "node_modules/npm/node_modules/inflight": { "version": "1.0.6", "dev": true, @@ -22998,11 +25382,24 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/ip": { - "version": "2.0.0", + "node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", "dev": true, "inBundle": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ip-regex": { "version": "4.3.0", @@ -23026,12 +25423,12 @@ } }, "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.0", + "version": "2.13.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23059,7 +25456,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "2.2.1", + "version": "2.3.6", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", @@ -23076,8 +25473,14 @@ "@pkgjs/parseargs": "^0.11.0" } }, + "node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", @@ -23116,7 +25519,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "7.0.2", + "version": "7.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -23129,7 +25532,7 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "5.0.20", + "version": "5.0.21", "dev": true, "inBundle": true, "license": "ISC", @@ -23149,14 +25552,14 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "6.0.4", + "version": "6.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@npmcli/arborist": "^6.5.0", "@npmcli/run-script": "^6.0.0", - "ci-info": "^3.7.1", + "ci-info": "^4.0.0", "npm-package-arg": "^10.1.0", "npmlog": "^7.0.1", "pacote": "^15.0.8", @@ -23171,7 +25574,7 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "4.2.1", + "version": "4.2.2", "dev": true, "inBundle": true, "license": "ISC", @@ -23183,7 +25586,7 @@ } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "9.0.3", + "version": "9.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -23196,7 +25599,7 @@ } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "5.0.4", + "version": "5.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -23209,7 +25612,7 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "5.0.20", + "version": "5.0.21", "dev": true, "inBundle": true, "license": "ISC", @@ -23224,12 +25627,12 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "7.5.1", + "version": "7.5.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ci-info": "^3.6.1", + "ci-info": "^4.0.0", "normalize-package-data": "^5.0.0", "npm-package-arg": "^10.1.0", "npm-registry-fetch": "^14.0.3", @@ -23243,7 +25646,7 @@ } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "6.0.2", + "version": "6.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -23255,7 +25658,7 @@ } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "5.0.3", + "version": "5.0.4", "dev": true, "inBundle": true, "license": "ISC", @@ -23268,7 +25671,7 @@ } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "4.0.2", + "version": "4.0.3", "dev": true, "inBundle": true, "license": "ISC", @@ -23318,6 +25721,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/minimatch": { "version": "9.0.3", "dev": true, @@ -23334,12 +25746,12 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "5.0.0", + "version": "7.0.4", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-collect": { @@ -23367,12 +25779,12 @@ } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.3", + "version": "3.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "minipass": "^5.0.0", + "minipass": "^7.0.3", "minipass-sized": "^1.0.3", "minizlib": "^2.1.2" }, @@ -23539,7 +25951,7 @@ } }, "node_modules/npm/node_modules/node-gyp": { - "version": "9.4.0", + "version": "9.4.1", "dev": true, "inBundle": true, "license": "MIT", @@ -23548,7 +25960,7 @@ "exponential-backoff": "^3.1.1", "glob": "^7.1.4", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^11.0.3", + "make-fetch-happen": "^10.0.3", "nopt": "^6.0.0", "npmlog": "^6.0.0", "rimraf": "^3.0.2", @@ -23563,6 +25975,19 @@ "node": "^12.13 || ^14.13 || >=16" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { "version": "1.1.1", "dev": true, @@ -23592,6 +26017,87 @@ "concat-map": "0.0.1" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { "version": "4.0.4", "dev": true, @@ -23631,6 +26137,33 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { "version": "3.1.2", "dev": true, @@ -23643,6 +26176,35 @@ "node": "*" } }, + "node_modules/npm/node_modules/node-gyp/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { "version": "6.0.0", "dev": true, @@ -23673,25 +26235,47 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { + "version": "3.0.7", "dev": true, "inBundle": true, - "license": "MIT", + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "minipass": "^3.1.1" }, "engines": { - "node": ">= 6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { - "version": "3.0.7", + "node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { + "version": "2.0.1", "dev": true, "inBundle": true, - "license": "ISC" + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } }, "node_modules/npm/node_modules/node-gyp/node_modules/which": { "version": "2.0.2", @@ -23760,7 +26344,7 @@ } }, "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.2.0", + "version": "6.3.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -23853,6 +26437,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/npm-user-validate": { "version": "2.0.0", "dev": true, @@ -23933,6 +26526,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/npm/node_modules/pacote/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/parse-conflict-json": { "version": "3.0.1", "dev": true, @@ -23966,13 +26568,13 @@ } }, "node_modules/npm/node_modules/path-scurry": { - "version": "1.9.2", + "version": "1.10.1", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^9.1.1", - "minipass": "^5.0.0 || ^6.0.2" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -23982,7 +26584,7 @@ } }, "node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { - "version": "9.1.1", + "version": "10.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -23991,7 +26593,7 @@ } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.13", + "version": "6.0.15", "dev": true, "inBundle": true, "license": "MIT", @@ -24012,15 +26614,6 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/process": { - "version": "0.11.10", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/npm/node_modules/promise-all-reject-late": { "version": "1.0.1", "dev": true, @@ -24128,18 +26721,17 @@ } }, "node_modules/npm/node_modules/readable-stream": { - "version": "4.4.0", + "version": "3.6.2", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 6" } }, "node_modules/npm/node_modules/retry": { @@ -24236,7 +26828,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.5.4", + "version": "7.6.0", "dev": true, "inBundle": true, "license": "ISC", @@ -24290,7 +26882,7 @@ } }, "node_modules/npm/node_modules/signal-exit": { - "version": "4.0.2", + "version": "4.1.0", "dev": true, "inBundle": true, "license": "ISC", @@ -24331,16 +26923,16 @@ } }, "node_modules/npm/node_modules/socks": { - "version": "2.7.1", + "version": "2.8.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, @@ -24369,7 +26961,7 @@ } }, "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", + "version": "2.5.0", "dev": true, "inBundle": true, "license": "CC-BY-3.0" @@ -24385,18 +26977,18 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.13", + "version": "3.0.17", "dev": true, "inBundle": true, "license": "CC0-1.0" }, "node_modules/npm/node_modules/ssri": { - "version": "10.0.4", + "version": "10.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "minipass": "^5.0.0" + "minipass": "^7.0.3" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -24478,7 +27070,7 @@ } }, "node_modules/npm/node_modules/tar": { - "version": "6.1.15", + "version": "6.2.0", "dev": true, "inBundle": true, "license": "ISC", @@ -24518,6 +27110,15 @@ "node": ">=8" } }, + "node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, "node_modules/npm/node_modules/text-table": { "version": "0.2.0", "dev": true, @@ -24867,28 +27468,67 @@ } }, "node_modules/object.entries": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", - "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.entries/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.fromentries": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", - "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -24898,39 +27538,83 @@ } }, "node_modules/object.groupby": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", - "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.groupby/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", - "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -24948,15 +27632,20 @@ } }, "node_modules/ofetch": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.3.tgz", - "integrity": "sha512-s1ZCMmQWXy4b5K/TW9i/DtiN8Ku+xCiHcjQ6/J/nDdssirrQNOoB165Zu8EqLMA2lln1JUth9a0aW9Ap2ctrUg==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/ofetch/-/ofetch-1.3.4.tgz", + "integrity": "sha512-KLIET85ik3vhEfS+3fDlc/BAZiAp+43QEC/yCo5zkNoY2YaKvNkOaFr/6wCFgFH1kuYQM5pMNi0Tg8koiIemtw==", "dependencies": { - "destr": "^2.0.1", - "node-fetch-native": "^1.4.0", - "ufo": "^1.3.0" + "destr": "^2.0.3", + "node-fetch-native": "^1.6.3", + "ufo": "^1.5.3" } }, + "node_modules/ohash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.3.tgz", + "integrity": "sha512-zuHHiGTYTA1sYJ/wZN+t5HKZaH23i4yI1HMwbuXm24Nid7Dv0KcuRlKoNKS9UNfAVSBlnGLcuQrnOKWOZoEGaw==" + }, "node_modules/on-exit-leak-free": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/on-exit-leak-free/-/on-exit-leak-free-0.2.0.tgz", @@ -25041,10 +27730,13 @@ } }, "node_modules/openapi3-ts/node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", "dev": true, + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } @@ -25088,6 +27780,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==" + }, "node_modules/os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -25118,12 +27815,12 @@ } }, "node_modules/p-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.0.0.tgz", - "integrity": "sha512-3gxOrNadcyxj+YKFyRmRIEuCMGayNNJoXL7Zf1dqfdfoDsVB190bHfFfhqfcNEDFLfQP1q2uir2cBgIqnIT+cQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, "dependencies": { - "p-map": "^7.0.0" + "p-map": "^7.0.1" }, "engines": { "node": ">=18" @@ -25145,7 +27842,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, "dependencies": { "yocto-queue": "^0.1.0" }, @@ -25160,7 +27856,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, "dependencies": { "p-limit": "^3.0.2" }, @@ -25172,9 +27867,9 @@ } }, "node_modules/p-map": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.0.tgz", - "integrity": "sha512-EZl03dLKv3RypkrjlevZoNwQMSy4bAblWcR18zhonktnN4fUs3asFQKSe0awn982omGxamvbejqQKQYDJYHCEg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", + "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", "dev": true, "engines": { "node": ">=18" @@ -25220,13 +27915,12 @@ } }, "node_modules/pac-resolver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", - "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", "dev": true, "dependencies": { "degenerator": "^5.0.0", - "ip": "^1.1.8", "netmask": "^2.0.2" }, "engines": { @@ -25250,15 +27944,46 @@ } }, "node_modules/parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz", + "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==", "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" + "asn1.js": "^4.10.1", + "browserify-aes": "^1.2.0", + "evp_bytestokey": "^1.0.3", + "hash-base": "~3.0", + "pbkdf2": "^3.1.2", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse-asn1/node_modules/asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/parse-asn1/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==" + }, + "node_modules/parse-asn1/node_modules/hash-base": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": ">=4" } }, "node_modules/parse-entities": { @@ -25357,6 +28082,7 @@ "version": "2.7.1", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -25384,13 +28110,21 @@ } }, "node_modules/patch-package/node_modules/yaml": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", - "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", + "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", + "bin": { + "yaml": "bin.mjs" + }, "engines": { "node": ">= 14" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -25451,9 +28185,9 @@ } }, "node_modules/pathe": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.1.tgz", - "integrity": "sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" }, "node_modules/pause-stream": { "version": "0.0.11", @@ -25491,9 +28225,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -25523,18 +28257,6 @@ "node": ">=0.10.0" } }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "dev": true, - "dependencies": { - "pinkie": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/pino": { "version": "7.11.0", "resolved": "https://registry.npmjs.org/pino/-/pino-7.11.0.tgz", @@ -25715,13 +28437,13 @@ } }, "node_modules/pkg-types": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz", - "integrity": "sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.1.tgz", + "integrity": "sha512-ko14TjmDuQJ14zsotODv7dBlwxKhUKQEhuhmbqo1uCi9BB0Z2alo/wAXg6q1dTR5TyuqYyWhjtfe/Tsh+X28jQ==", "dependencies": { - "jsonc-parser": "^3.2.0", - "mlly": "^1.2.0", - "pathe": "^1.1.0" + "confbox": "^0.1.7", + "mlly": "^1.7.0", + "pathe": "^1.1.2" } }, "node_modules/plist": { @@ -25752,9 +28474,9 @@ "integrity": "sha512-95ChzOoYLOPIyVmL+Y6X+abKGXUJlvOVLkB1QQkyXl7Uczc6FElUy/x01NS7r2GX6GRezloO/ecCX9h4U9KadA==" }, "node_modules/pony-cause": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.10.tgz", - "integrity": "sha512-3IKLNXclQgkU++2fSi93sQ6BznFuxSLB11HdvZQ6JW/spahf/P1pAHBQEahr20rs0htZW0UDkM1HmA+nZkXKsw==", + "version": "2.1.11", + "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", + "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", "engines": { "node": ">=12.0.0" } @@ -25791,11 +28513,29 @@ "ms": "^2.1.1" } }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { - "version": "8.4.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", - "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", - "dev": true, + "version": "8.4.38", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -25813,7 +28553,7 @@ "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -25826,18 +28566,18 @@ "dev": true }, "node_modules/preact": { - "version": "10.19.3", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.3.tgz", - "integrity": "sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==", + "version": "10.22.0", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.22.0.tgz", + "integrity": "sha512-RRurnSjJPj4rp5K6XoP45Ui33ncb7e4H7WiOHVpjbkvqvA3U+N8Z6Qbo0AE6leGYBV66n8EhEaFixvIu3SkxFw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" } }, "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "optional": true, "dependencies": { "detect-libc": "^2.0.0", @@ -25871,7 +28611,6 @@ }, "node_modules/prettier": { "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { @@ -25945,8 +28684,7 @@ "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/process-warning": { "version": "1.0.0", @@ -26058,6 +28796,15 @@ "node": ">=12.0.0" } }, + "node_modules/proto3-json-serializer/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/proto3-json-serializer/node_modules/long": { "version": "5.2.3", "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", @@ -26065,9 +28812,9 @@ "dev": true }, "node_modules/proto3-json-serializer/node_modules/protobufjs": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz", - "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.3.2.tgz", + "integrity": "sha512-RXyHaACeqXeqAKGLDl68rQKbmObRsTIn4TYVUUug1KfS47YWCo5MacGITEryugIgZqORCvJWEk4l449POg5Txg==", "dev": true, "hasInstallScript": true, "dependencies": { @@ -26113,6 +28860,14 @@ "pbts": "bin/pbts" } }, + "node_modules/protobufjs/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/proxy-addr": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", @@ -26204,7 +28959,6 @@ }, "node_modules/pullstate": { "version": "1.25.0", - "resolved": "https://registry.npmjs.org/pullstate/-/pullstate-1.25.0.tgz", "integrity": "sha512-6SJMhK5EbDhrbyocMQOZKY3QKC5RfLcdtYD1y7wioF5dseVsdi3vmeHG3TwW4SrhQQP/WKyU/Np2X6UOhq1F6g==", "dependencies": { "fast-deep-equal": "^3.1.3", @@ -26227,8 +28981,16 @@ "node_modules/punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==" + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "engines": { + "node": ">=6" + } }, "node_modules/pupa": { "version": "2.1.1", @@ -26383,9 +29145,9 @@ } }, "node_modules/query-string": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", - "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.1.tgz", + "integrity": "sha512-MplouLRDHBZSG9z7fpuAAcI7aAYjDLhtsiVZsevsfaHWDS2IDdORKbSd1kWUA+V4zyva/HZoSfpwnYMMQDhb0w==", "dependencies": { "decode-uri-component": "^0.2.0", "filter-obj": "^1.1.0", @@ -26399,6 +29161,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==", + "engines": { + "node": ">=0.4.x" + } + }, "node_modules/querystringify": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", @@ -26439,23 +29209,23 @@ } }, "node_modules/radix3": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.0.tgz", - "integrity": "sha512-pNsHDxbGORSvuSScqNJ+3Km6QAVqk8CfsCBIEoDgpqLrkD2f3QM4I7d1ozJJ172OmIcoUcerZaNWqtLkRXTV3A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/radix3/-/radix3-1.1.2.tgz", + "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==" }, "node_modules/ramda": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz", - "integrity": "sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==", + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.30.1.tgz", + "integrity": "sha512-tEF5I22zJnuclswcZMc8bDIrwRHRzf+NqVEmqg50ShAZMP7MWeR/RGDthfM/p+BlqvF2fXAzpn8i+SJcYD3alw==", "funding": { "type": "opencollective", "url": "https://opencollective.com/ramda" } }, "node_modules/ramda-adjunct": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-4.1.1.tgz", - "integrity": "sha512-BnCGsZybQZMDGram9y7RiryoRHS5uwx8YeGuUeDKuZuvK38XO6JJfmK85BwRWAKFA6pZ5nZBO/HBFtExVaf31w==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ramda-adjunct/-/ramda-adjunct-5.0.1.tgz", + "integrity": "sha512-UTQCcWnoiuYH+ua+jGg3GTktcmCSD2W7OO2++tmv8p2Ze+N9VgVACERg4g36rRfIXklVMtqazyBLBWXfoPKgRQ==", "engines": { "node": ">=0.10.3" }, @@ -26464,7 +29234,7 @@ "url": "https://opencollective.com/ramda-adjunct" }, "peerDependencies": { - "ramda": ">= 0.29.0" + "ramda": ">= 0.30.0" } }, "node_modules/randexp": { @@ -26551,22 +29321,29 @@ } }, "node_modules/re2": { - "version": "1.20.9", - "resolved": "https://registry.npmjs.org/re2/-/re2-1.20.9.tgz", - "integrity": "sha512-ZYcPTFr5ha2xq3WQjBDTF9CWPSDK1z28MLh5UFRxc//7X8BNQ3A7yR7ITnP0jO346661ertdKVFqw1qoL3FMEQ==", + "version": "1.21.3", + "resolved": "https://registry.npmjs.org/re2/-/re2-1.21.3.tgz", + "integrity": "sha512-GI+KoGkHT4kxTaX+9p0FgNB1XUnCndO9slG5qqeEoZ7kbf6Dk6ohQVpmwKVeSp7LPLn+g6Q3BaCopz4oHuBDuQ==", "dev": true, "hasInstallScript": true, "optional": true, "dependencies": { "install-artifact-from-github": "^1.3.5", - "nan": "^2.18.0", - "node-gyp": "^10.0.1" + "nan": "^2.20.0", + "node-gyp": "^10.1.0" } }, + "node_modules/re2/node_modules/nan": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.20.0.tgz", + "integrity": "sha512-bk3gXBZDGILuuo/6sKtr0DQmSThYHLtNCdSdXk9YkxD/jK6X2vmCyyXBBxyqZ4XcnzTyYEAThfX3DCEnLf6igw==", + "dev": true, + "optional": true + }, "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -26610,15 +29387,15 @@ } }, "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "dependencies": { "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "scheduler": "^0.23.2" }, "peerDependencies": { - "react": "^18.2.0" + "react": "^18.3.1" } }, "node_modules/react-hook-form": { @@ -26767,7 +29544,6 @@ }, "node_modules/react-router-dom": { "version": "5.3.4", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", "dependencies": { "@babel/runtime": "^7.12.13", @@ -26840,7 +29616,6 @@ }, "node_modules/react-use-gesture": { "version": "9.1.3", - "resolved": "https://registry.npmjs.org/react-use-gesture/-/react-use-gesture-9.1.3.tgz", "integrity": "sha512-CdqA2SmS/fj3kkS2W8ZU8wjTbVBAIwDWaRprX7OKaj7HlGwBasGEFggmk5qNklknqk9zK/h8D355bEJFTpqEMg==", "deprecated": "This package is no longer maintained. Please use @use-gesture/react instead", "peerDependencies": { @@ -26953,9 +29728,9 @@ } }, "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", - "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "version": "4.20.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz", + "integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==", "dev": true, "engines": { "node": ">=16" @@ -26976,22 +29751,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", - "dev": true, - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz", - "integrity": "sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -27006,21 +29769,6 @@ "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.0.tgz", - "integrity": "sha512-UL7ELRVxYBHBgYEtZCXjxuD5vPxnmvMGq0jp/dGPKKrN7tfsBh2IY7TlJ15WWwdjRWD3RJbnsygUurTK3xkPkg==", - "dev": true, - "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/read-pkg/node_modules/parse-json": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", @@ -27053,9 +29801,9 @@ } }, "node_modules/read-pkg/node_modules/type-fest": { - "version": "4.8.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.8.3.tgz", - "integrity": "sha512-//BaTm14Q/gHBn09xlnKNqfI8t6bmdzx2DXYfPBNofN0WUybCEUDcbCWcTa0oF09lzLjZgPphXAsvRiMK0V6Bw==", + "version": "4.20.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz", + "integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==", "dev": true, "engines": { "node": ">=16" @@ -27165,25 +29913,6 @@ "esprima": "~4.0.0" } }, - "node_modules/redis-errors": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/redis-errors/-/redis-errors-1.2.0.tgz", - "integrity": "sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==", - "engines": { - "node": ">=4" - } - }, - "node_modules/redis-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-3.0.0.tgz", - "integrity": "sha512-DJnGAeenTdpMEH6uAJRK/uiyEIH9WVsUmoLwzudwGJUwZPp80PDBWPHXSAGNPwNvIXAbe7MSUB1zQFugFml66A==", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/redux": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", @@ -27203,19 +29932,19 @@ "node_modules/reflect-metadata": { "version": "0.1.14", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", - "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", - "peer": true + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==" }, "node_modules/reflect.getprototypeof": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", - "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", "globalthis": "^1.0.3", "which-builtin-type": "^1.1.3" }, @@ -27226,6 +29955,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/reflect.getprototypeof/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/refractor": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/refractor/-/refractor-3.6.0.tgz", @@ -27317,10 +30065,15 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/remarkable/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, "node_modules/remove-accents": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.4.2.tgz", - "integrity": "sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA==" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" }, "node_modules/repeat-string": { "version": "1.6.1", @@ -27433,7 +30186,6 @@ }, "node_modules/reselect": { "version": "5.0.1", - "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.0.1.tgz", "integrity": "sha512-D72j2ubjgHpvuCiORWkOUxndHJrxDaSolheiz5CO+roz8ka97/4msh2E8F5qay4GawR5vzBt5MkbDHT+Rdy/Wg==" }, "node_modules/resolve": { @@ -27614,6 +30366,41 @@ "rlp": "bin/rlp" } }, + "node_modules/rollup": { + "version": "4.18.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.0.tgz", + "integrity": "sha512-QmJz14PX3rzbJCN1SG4Xe/bAAX2a6NpCP8ab2vfu2GiUr8AQcr2nCV/oEO3yneFarB67zk8ShlIyWb2LGTb3Sg==", + "peer": true, + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.0", + "@rollup/rollup-android-arm64": "4.18.0", + "@rollup/rollup-darwin-arm64": "4.18.0", + "@rollup/rollup-darwin-x64": "4.18.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.0", + "@rollup/rollup-linux-arm-musleabihf": "4.18.0", + "@rollup/rollup-linux-arm64-gnu": "4.18.0", + "@rollup/rollup-linux-arm64-musl": "4.18.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.0", + "@rollup/rollup-linux-riscv64-gnu": "4.18.0", + "@rollup/rollup-linux-s390x-gnu": "4.18.0", + "@rollup/rollup-linux-x64-gnu": "4.18.0", + "@rollup/rollup-linux-x64-musl": "4.18.0", + "@rollup/rollup-win32-arm64-msvc": "4.18.0", + "@rollup/rollup-win32-ia32-msvc": "4.18.0", + "@rollup/rollup-win32-x64-msvc": "4.18.0", + "fsevents": "~2.3.2" + } + }, "node_modules/router": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/router/-/router-1.3.8.tgz", @@ -27654,12 +30441,15 @@ "dev": true }, "node_modules/rpc-websockets": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.9.0.tgz", - "integrity": "sha512-DwKewQz1IUA5wfLvgM8wDpPRcr+nWSxuFxx5CbrI2z/MyyZ4nXLM86TvIA+cI1ZAdqC8JIBR1mZR55dzaLU+Hw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.1.tgz", + "integrity": "sha512-JCkdc/TfJBGRfmjIFK7cmqX79nwPWUd9xCM0DAydRbdLShsW3j/GV2gmPlaFa8V1+2u4V/O47fm4ZR5+F6HyDw==", "dependencies": { - "@babel/runtime": "^7.17.2", - "eventemitter3": "^4.0.7", + "@swc/helpers": "^0.5.11", + "@types/uuid": "^8.3.4", + "@types/ws": "^8.2.2", + "buffer": "^6.0.3", + "eventemitter3": "^5.0.1", "uuid": "^8.3.2", "ws": "^8.5.0" }, @@ -27672,6 +30462,40 @@ "utf-8-validate": "^5.0.2" } }, + "node_modules/rpc-websockets/node_modules/@swc/helpers": { + "version": "0.5.11", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.11.tgz", + "integrity": "sha512-YNlnKRWF2sVojTpIyzwou9XoTNbzbzONwRhOoniEioF1AtaitTvVZblaQRrAzChWQ1bLYyYSWzM18y4WwgzJ+A==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/rpc-websockets/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/rpc-websockets/node_modules/@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, + "node_modules/rpc-websockets/node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rpc-websockets/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" + }, "node_modules/rpc-websockets/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -27711,14 +30535,21 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", - "dev": true, + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -27729,6 +30560,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-array-concat/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -27754,15 +30603,35 @@ "integrity": "sha512-SAJWGKDs50tAbiDXLf89PDwt9XYkWyANFWVzn4dTXl5QyI8t2o/bW5/OJl3lvc2WVU4MEpTo9Yz5NVFNsp+OJQ==" }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", - "dev": true, + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -27782,7 +30651,6 @@ }, "node_modules/sass": { "version": "1.69.5", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", "devOptional": true, "dependencies": { @@ -27804,9 +30672,9 @@ "dev": true }, "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", "dependencies": { "loose-envify": "^1.1.0" } @@ -27881,6 +30749,11 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.0.0.tgz", "integrity": "sha512-DZVbtY62kc3kkBtMHqwCOfXrT/hnoORy5BJ4+HU1IR59X0KWAOqsfzQPcUl/lQLlG7qXbe/fZ3r/emxtAl+sqg==" }, + "node_modules/secretjs/node_modules/@types/node": { + "version": "11.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", + "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + }, "node_modules/secretjs/node_modules/big-integer": { "version": "1.6.51", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.51.tgz", @@ -27897,6 +30770,28 @@ "node": "*" } }, + "node_modules/secretjs/node_modules/bip32": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/bip32/-/bip32-2.0.6.tgz", + "integrity": "sha512-HpV5OMLLGTjSVblmrtYRfFFKuQB+GArM0+XP8HGWfJ5vxYBqo+DesvJwOdC2WJ3bCkZShGf0QIfoIpeomVzVdA==", + "dependencies": { + "@types/node": "10.12.18", + "bs58check": "^2.1.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "tiny-secp256k1": "^1.1.3", + "typeforce": "^1.11.5", + "wif": "^2.0.6" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/secretjs/node_modules/bip32/node_modules/@types/node": { + "version": "10.12.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.12.18.tgz", + "integrity": "sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ==" + }, "node_modules/secretjs/node_modules/bip39": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/bip39/-/bip39-3.0.4.tgz", @@ -27908,10 +30803,23 @@ "randombytes": "^2.0.1" } }, - "node_modules/secretjs/node_modules/bip39/node_modules/@types/node": { - "version": "11.11.6", - "resolved": "https://registry.npmjs.org/@types/node/-/node-11.11.6.tgz", - "integrity": "sha512-Exw4yUWMBXM3X+8oqzJNRqZSwUAaS4+7NdvHqQuFi/d+synz++xmX3QIf+BFqneW8N31R8Ky+sikfZUXq07ggQ==" + "node_modules/secretjs/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/secretjs/node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } }, "node_modules/secretjs/node_modules/cross-fetch": { "version": "3.1.5", @@ -27973,6 +30881,14 @@ "node": ">=12.0.0" } }, + "node_modules/secretjs/node_modules/protobufjs/node_modules/@types/node": { + "version": "20.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", + "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, "node_modules/secure-random": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/secure-random/-/secure-random-1.1.2.tgz", @@ -27980,7 +30896,6 @@ }, "node_modules/semantic-release": { "version": "21.1.2", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-21.1.2.tgz", "integrity": "sha512-kz76azHrT8+VEkQjoCBHE06JNQgTgsC4bT8XfCzb7DHcsk9vG3fqeMVik8h5rcWCYi2Fd+M3bwA7BG8Z8cRwtA==", "dev": true, "dependencies": { @@ -28133,44 +31048,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/figures": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", - "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0", - "is-unicode-supported": "^1.2.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semantic-release/node_modules/hosted-git-info": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", - "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "node_modules/semantic-release/node_modules/figures": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", "dev": true, "dependencies": { - "lru-cache": "^10.0.1" + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/semantic-release/node_modules/human-signals": { @@ -28243,9 +31134,9 @@ } }, "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.2.0.tgz", - "integrity": "sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { "path-key": "^4.0.0" @@ -28468,12 +31359,9 @@ } }, "node_modules/ses": { - "version": "0.18.8", - "resolved": "https://registry.npmjs.org/ses/-/ses-0.18.8.tgz", - "integrity": "sha512-kOH1AhJc6gWDXKURKeU1w7iFUdImAegAljVvBg5EUBgNqjH4bxcEsGVUadVEPtA2PVRMyQp1fiSMDwEZkQNj1g==", - "dependencies": { - "@endo/env-options": "^0.1.4" - } + "version": "0.18.4", + "resolved": "https://registry.npmjs.org/ses/-/ses-0.18.4.tgz", + "integrity": "sha512-Ph0PC38Q7uutHmMM9XPqA7rp/2taiRwW6pIZJwTr4gz90DtrBvy/x7AmNPH2uqNPhKriZpYKvPi1xKWjM9xJuQ==" }, "node_modules/set-blocking": { "version": "2.0.0", @@ -28481,14 +31369,16 @@ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -28498,7 +31388,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", - "dev": true, "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -28578,9 +31467,9 @@ } }, "node_modules/short-unique-id": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/short-unique-id/-/short-unique-id-5.0.3.tgz", - "integrity": "sha512-yhniEILouC0s4lpH0h7rJsfylZdca10W9mDJRAFh3EpcSUanCHGb0R7kcFOIUCZYSAPo0PUD5ZxWQdW0T4xaug==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/short-unique-id/-/short-unique-id-5.2.0.tgz", + "integrity": "sha512-cMGfwNyfDZ/nzJ2k2M+ClthBIh//GlZl1JEf47Uoa9XR11bz8Pa2T2wQO4bVrRdH48LrIDWJahQziKo3MjhsWg==", "bin": { "short-unique-id": "bin/short-unique-id", "suid": "bin/short-unique-id" @@ -28813,26 +31702,26 @@ } }, "node_modules/socks": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", - "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, "dependencies": { - "ip": "^2.0.0", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { - "node": ">= 10.13.0", + "node": ">= 10.0.0", "npm": ">= 3.0.0" } }, "node_modules/socks-proxy-agent": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", - "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.3.tgz", + "integrity": "sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", "socks": "^2.7.1" }, @@ -28840,11 +31729,17 @@ "node": ">= 14" } }, - "node_modules/socks/node_modules/ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true + "node_modules/socks-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } }, "node_modules/sonic-boom": { "version": "2.8.0", @@ -28863,9 +31758,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -28896,9 +31791,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -28912,9 +31807,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/split": { @@ -28946,9 +31841,10 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true }, "node_modules/sshpk": { "version": "1.18.0", @@ -28975,10 +31871,16 @@ "node": ">=0.10.0" } }, + "node_modules/sshpk/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, "node_modules/ssri": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.5.tgz", - "integrity": "sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A==", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "optional": true, "dependencies": { @@ -29002,11 +31904,6 @@ "resolved": "https://registry.npmjs.org/stampit/-/stampit-4.3.2.tgz", "integrity": "sha512-pE2org1+ZWQBnIxRPrBM2gVupkuDD0TTNIo1H6GdT/vO82NXli2z8lRE8cu/nBIHrcOCXFBAHpb9ZldrB2/qOA==" }, - "node_modules/standard-as-callback": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/standard-as-callback/-/standard-as-callback-2.1.0.tgz", - "integrity": "sha512-qoRRSyROncaz1z0mvYqIE4lCd9p2R90i6GxW3uZv5ucSu8tU7B5HXUP1gG8pVZsYNVaXjk8ClXHPttLyxAL48A==" - }, "node_modules/start-server-and-test": { "version": "1.15.4", "resolved": "https://registry.npmjs.org/start-server-and-test/-/start-server-and-test-1.15.4.tgz", @@ -29135,6 +32032,17 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/stream-http": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.2.0.tgz", + "integrity": "sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==", + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "xtend": "^4.0.2" + } + }, "node_modules/stream-json": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.8.0.tgz", @@ -29145,14 +32053,14 @@ } }, "node_modules/stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==" }, "node_modules/stream-transform": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.3.0.tgz", - "integrity": "sha512-pG1NeDdmErNYKtvTpFayrEueAmL0xVU5wd22V7InGnatl4Ocq3HY7dcXIKj629kXvYQvglCC7CeDIGAlx1RNGA==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-3.3.2.tgz", + "integrity": "sha512-v64PUnPy9Qw94NGuaEMo+9RHQe4jTBYf+NkTtqkCgeuiNo8NlL0LtLR7fkKWNVFtp3RhIm5Dlxkgm5uz7TDimQ==" }, "node_modules/streamsearch": { "version": "1.1.0", @@ -29202,9 +32110,6 @@ "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" } }, "node_modules/string-width-cjs/node_modules/emoji-regex": { @@ -29220,34 +32125,142 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/string.prototype.matchall": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", - "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "regexp.prototype.flags": "^1.5.0", - "set-function-name": "^2.0.0", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.matchall/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.matchall/node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall/node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", - "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", + "node_modules/string.prototype.matchall/node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall/node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -29257,28 +32270,65 @@ } }, "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend/node_modules/call-bind": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", - "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", - "dev": true, + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart/node_modules/call-bind": { "version": "1.0.7", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", - "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", - "dev": true, + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -29304,9 +32354,6 @@ "optional": true, "dependencies": { "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" } }, "node_modules/strip-bom": { @@ -29510,9 +32557,12 @@ } }, "node_modules/superstruct": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", - "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==" + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.4.tgz", + "integrity": "sha512-7JpaAoX2NGyoFlI9NBh66BQXGONc+uE+MRS5i2iOBKuS4e+ccgMDjATgZldkah+33DakBxDHiss9kvUcGAO8UQ==", + "engines": { + "node": ">=14.0.0" + } }, "node_modules/supports-color": { "version": "7.2.0", @@ -29582,7 +32632,6 @@ }, "node_modules/swagger-ui-react": { "version": "5.10.5", - "resolved": "https://registry.npmjs.org/swagger-ui-react/-/swagger-ui-react-5.10.5.tgz", "integrity": "sha512-uBQLku4j3L1NC4/xE3HTgz1EcFisBphh8AnGqbj9LMxeGGcpKOlx/ZDigRAeVXWr9jOnZZbeGBzMe4NVHxPZrQ==", "dependencies": { "@babel/runtime-corejs3": "^7.23.5", @@ -29640,7 +32689,6 @@ }, "node_modules/swr": { "version": "2.2.4", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.2.4.tgz", "integrity": "sha512-njiZ/4RiIhoOlAaLYDqwz5qH/KZXVilRLvomrx83HjzCWTfa+InyfAjv05PSFxnmLzZkNO9ZfvgoqzAaEI4sGQ==", "dependencies": { "client-only": "^0.0.1", @@ -29658,6 +32706,17 @@ "node": ">=0.10" } }, + "node_modules/system-architecture": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", + "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/tabbable": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", @@ -29952,10 +33011,21 @@ "node": ">=0.10.0" } }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/tiny-invariant": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", - "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" }, "node_modules/tiny-secp256k1": { "version": "1.1.6", @@ -30006,6 +33076,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dependencies": { "glob": "^7.1.3" }, @@ -30075,24 +33146,98 @@ "node": ">=6" } }, - "node_modules/toxic": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz", - "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==", - "dev": true, + "node_modules/toxic": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toxic/-/toxic-1.0.1.tgz", + "integrity": "sha512-WI3rIGdcaKULYg7KVoB0zcjikqvcYYvcuT6D89bFPz2rVR0Rl0PK6x8/X62rtdLtBKIE985NzVf/auTtGegIIg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.10" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/traverse": { + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/traverse-chain": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", + "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==" + }, + "node_modules/traverse/node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/traverse/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/traverse/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "lodash": "^4.17.10" + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/traverse": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", + "node_modules/traverse/node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, "engines": { "node": ">= 0.4" }, @@ -30100,11 +33245,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/traverse-chain": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/traverse-chain/-/traverse-chain-0.1.0.tgz", - "integrity": "sha512-up6Yvai4PYKhpNp5PkYtx50m3KbwQrqDwbuZP/ItyL64YEWHAvH6Md83LFLV/GRSk/BoUVwwgUzX6SOQSbsfAg==" - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -30126,9 +33266,9 @@ } }, "node_modules/tree-sitter-json": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.20.1.tgz", - "integrity": "sha512-482hf7J+aBwhksSw8yWaqI8nyP1DrSwnS4IMBShsnkFWD3SE8oalHnsEik59fEVi3orcTCUtMzSjZx+0Tpa6Vw==", + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/tree-sitter-json/-/tree-sitter-json-0.20.2.tgz", + "integrity": "sha512-eUxrowp4F1QEGk/i7Sa+Xl8Crlfp7J0AXxX1QdJEQKQYMWhgMbCIgyQvpO3Q0P9oyTrNQxRLlRipDS44a8EtRw==", "hasInstallScript": true, "optional": true, "dependencies": { @@ -30185,12 +33325,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -30204,6 +33344,11 @@ "node": ">=14.0.0" } }, + "node_modules/ts-mixer": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", + "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==" + }, "node_modules/ts-node": { "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", @@ -30268,6 +33413,11 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/tty-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" + }, "node_modules/tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", @@ -30287,9 +33437,9 @@ "dev": true }, "node_modules/type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==" }, "node_modules/type-check": { "version": "0.4.0", @@ -30303,54 +33453,371 @@ "node": ">= 0.8.0" } }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-buffer/node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-buffer/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-buffer/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-buffer/node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-buffer/node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-length/node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-length/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-length/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-length/node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-length/node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset/node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset/node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset/node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, + "node_modules/typed-array-length/node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", - "dev": true, + "node_modules/typed-array-length/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, + "node_modules/typed-array-length/node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -30359,17 +33826,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", - "dev": true, + "node_modules/typed-array-length/node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -30378,15 +33840,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dev": true, + "node_modules/typed-array-length/node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -30400,6 +33866,71 @@ "is-typedarray": "^1.0.0" } }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray.prototype.slice/node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedoc": { + "version": "0.20.37", + "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.20.37.tgz", + "integrity": "sha512-9+qDhdc4X00qTNOtii6QX2z7ndAeWVOso7w3MPSoSJdXlVhpwPfm1yEp4ooKuWA9fiQILR8FKkyjmeqa13hBbw==", + "peer": true, + "dependencies": { + "colors": "^1.4.0", + "fs-extra": "^9.1.0", + "handlebars": "^4.7.7", + "lodash": "^4.17.21", + "lunr": "^2.3.9", + "marked": "~2.0.3", + "minimatch": "^3.0.0", + "progress": "^2.0.3", + "shelljs": "^0.8.4", + "shiki": "^0.9.3", + "typedoc-default-themes": "^0.12.10" + }, + "bin": { + "typedoc": "bin/typedoc" + }, + "engines": { + "node": ">= 10.8.0" + }, + "peerDependencies": { + "typescript": "3.9.x || 4.0.x || 4.1.x || 4.2.x" + } + }, "node_modules/typedoc-default-themes": { "version": "0.12.10", "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.12.10.tgz", @@ -30409,22 +33940,50 @@ "node": ">= 8" } }, + "node_modules/typedoc-plugin-cname": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typedoc-plugin-cname/-/typedoc-plugin-cname-1.0.1.tgz", + "integrity": "sha512-f97SS5RzDCVBa7Frg1VketIMAkEl3OTvBs9wM8lLEkJVWCIG2yXnszglA82on39gFwQ1tyq8tiuxRgb4569GpA==", + "peerDependencies": { + "typedoc": "^0.20.27" + } + }, + "node_modules/typedoc/node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "peer": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/typedoc/node_modules/marked": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/marked/-/marked-2.0.7.tgz", + "integrity": "sha512-BJXxkuIfJchcXOJWTT2DOL+yFWifFv2yGYOUzvXg8Qz610QKw+sHCvTMYwA+qWGhlA2uivBezChZ/pBy1tWdkQ==", + "peer": true, + "bin": { + "marked": "bin/marked" + }, + "engines": { + "node": ">= 8.16.2" + } + }, "node_modules/typeforce": { "version": "1.18.0", "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==" }, "node_modules/types-ramda": { - "version": "0.29.6", - "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.6.tgz", - "integrity": "sha512-VJoOk1uYNh9ZguGd3eZvqkdhD4hTGtnjRBUx5Zc0U9ftmnCgiWcSj/lsahzKunbiwRje1MxxNkEy1UdcXRCpYw==", + "version": "0.29.10", + "resolved": "https://registry.npmjs.org/types-ramda/-/types-ramda-0.29.10.tgz", + "integrity": "sha512-5PJiW/eiTPyXXBYGZOYGezMl6qj7keBiZheRwfjJZY26QPHsNrjfJnz0mru6oeqqoTHOni893Jfd6zyUXfQRWg==", "dependencies": { "ts-toolbelt": "^9.6.0" } }, "node_modules/typescript": { "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", @@ -30440,15 +33999,15 @@ "integrity": "sha512-+J5D5ir763y+Am/QY6hXNRlwljIeRMZMGs0cT6qqZVVzzT3X3nFPXVyPOFRMOR4kupB0T8JnCdpWdp6Q/iXn3w==" }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "dev": true }, "node_modules/ufo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.3.2.tgz", - "integrity": "sha512-o+ORpgGwaYQXgqGDwd+hkS4PuZ3QnmqMMxRuajK/a38L6fTpcE5GPIfrf+L/KemFzfUpeUQc1rRS1iDBozvnFA==" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", + "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==" }, "node_modules/uglify-js": { "version": "3.17.4", @@ -30474,7 +34033,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dev": true, "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -30497,9 +34055,9 @@ "dev": true }, "node_modules/undici": { - "version": "5.28.2", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz", - "integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==", + "version": "5.28.4", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", + "integrity": "sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==", "dependencies": { "@fastify/busboy": "^2.0.0" }, @@ -30507,15 +34065,20 @@ "node": ">=14.0" } }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/unenv": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.8.0.tgz", - "integrity": "sha512-uIGbdCWZfhRRmyKj1UioCepQ0jpq638j/Cf0xFTn4zD1nGJ2lSdzYHLzfdXN791oo/0juUiSWW1fBklXMTsuqg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz", + "integrity": "sha512-QKnFNznRxmbOF1hDgzpqrlIf6NC5sbZ2OJ+5Wl3OX8uM+LUJXbj4TXvLJCtwbPTmbMHCLIz6JLKNinNsMShK9g==", "dependencies": { "consola": "^3.2.3", "defu": "^6.1.3", "mime": "^3.0.0", - "node-fetch-native": "^1.4.1", + "node-fetch-native": "^1.6.1", "pathe": "^1.1.1" } }, @@ -30650,35 +34213,35 @@ "integrity": "sha512-08/DA66UF65OlpUDIQtbJyrqTR0jTAlJ+jsnkQ4jxR7+K5g5YG1APZKQSMCE1vqqmD+2pv6+IdEjmopFatacvg==" }, "node_modules/unstorage": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.1.tgz", - "integrity": "sha512-rWQvLRfZNBpF+x8D3/gda5nUCQL2PgXy2jNG4U7/Rc9BGEv9+CAJd0YyGCROUBKs9v49Hg8huw3aih5Bf5TAVw==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.10.2.tgz", + "integrity": "sha512-cULBcwDqrS8UhlIysUJs2Dk0Mmt8h7B0E6mtR+relW9nZvsf/u4SkAYyNliPiPW7XtFNb5u3IUMkxGxFTTRTgQ==", "dependencies": { "anymatch": "^3.1.3", - "chokidar": "^3.5.3", - "destr": "^2.0.2", - "h3": "^1.8.2", - "ioredis": "^5.3.2", - "listhen": "^1.5.5", - "lru-cache": "^10.0.2", + "chokidar": "^3.6.0", + "destr": "^2.0.3", + "h3": "^1.11.1", + "listhen": "^1.7.2", + "lru-cache": "^10.2.0", "mri": "^1.2.0", - "node-fetch-native": "^1.4.1", + "node-fetch-native": "^1.6.2", "ofetch": "^1.3.3", - "ufo": "^1.3.1" + "ufo": "^1.4.0" }, "peerDependencies": { - "@azure/app-configuration": "^1.4.1", + "@azure/app-configuration": "^1.5.0", "@azure/cosmos": "^4.0.0", "@azure/data-tables": "^13.2.2", - "@azure/identity": "^3.3.2", - "@azure/keyvault-secrets": "^4.7.0", - "@azure/storage-blob": "^12.16.0", - "@capacitor/preferences": "^5.0.6", - "@netlify/blobs": "^6.2.0", - "@planetscale/database": "^1.11.0", - "@upstash/redis": "^1.23.4", - "@vercel/kv": "^0.2.3", - "idb-keyval": "^6.2.1" + "@azure/identity": "^4.0.1", + "@azure/keyvault-secrets": "^4.8.0", + "@azure/storage-blob": "^12.17.0", + "@capacitor/preferences": "^5.0.7", + "@netlify/blobs": "^6.5.0 || ^7.0.0", + "@planetscale/database": "^1.16.0", + "@upstash/redis": "^1.28.4", + "@vercel/kv": "^1.0.1", + "idb-keyval": "^6.2.1", + "ioredis": "^5.3.2" }, "peerDependenciesMeta": { "@azure/app-configuration": { @@ -30716,9 +34279,46 @@ }, "idb-keyval": { "optional": true + }, + "ioredis": { + "optional": true } } }, + "node_modules/unstorage/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/unstorage/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/untildify": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", @@ -30742,9 +34342,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -30761,8 +34361,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -30842,6 +34442,15 @@ "node": ">=6" } }, + "node_modules/url": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "dependencies": { + "punycode": "^1.4.1", + "qs": "^6.11.2" + } + }, "node_modules/url-join": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", @@ -31102,11 +34711,86 @@ } } }, + "node_modules/vite": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.1.tgz", + "integrity": "sha512-XBmSKRLXLxiaPYamLv3/hnP/KXDai1NDexN0FpkTaZXTfycHvkRHoenpgl/fvuK/kPbB6xAgoyiryAhQNxYmAQ==", + "peer": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.38", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-node-polyfills": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/vite-plugin-node-polyfills/-/vite-plugin-node-polyfills-0.21.0.tgz", + "integrity": "sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==", + "dependencies": { + "@rollup/plugin-inject": "^5.0.5", + "node-stdlib-browser": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/davidmyersdev" + }, + "peerDependencies": { + "vite": "^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, "node_modules/vlq": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/vlq/-/vlq-2.0.4.tgz", "integrity": "sha512-aodjPa2wPQFkra1G8CzJBTHXhgk3EVSwxSWXNPr1fgdFLUb8kvLV1iEb6rFgasIsjP82HWI6dsb5Io26DDnasA==" }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==" + }, "node_modules/void-elements": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", @@ -31178,14 +34862,6 @@ "node": ">=12.0.0" } }, - "node_modules/wait-on/node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/watchpack": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", @@ -31207,9 +34883,9 @@ } }, "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "engines": { "node": ">= 8" } @@ -31405,13 +35081,13 @@ "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/websocket": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", - "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "version": "1.0.35", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.35.tgz", + "integrity": "sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q==", "dependencies": { "bufferutil": "^4.0.1", "debug": "^2.2.0", - "es5-ext": "^0.10.50", + "es5-ext": "^0.10.63", "typedarray-to-buffer": "^3.1.5", "utf-8-validate": "^5.0.2", "yaeti": "^0.0.6" @@ -31486,7 +35162,6 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -31582,6 +35257,14 @@ "bs58check": "<3.0.0" } }, + "node_modules/wif/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/wif/node_modules/bs58check": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", @@ -31678,12 +35361,6 @@ "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrappy": { @@ -31995,7 +35672,6 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, "engines": { "node": ">=10" }, @@ -32047,6 +35723,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", diff --git a/package.json b/package.json index 19b3071c..ba0e6d04 100644 --- a/package.json +++ b/package.json @@ -1,17 +1,18 @@ { "name": "hexa-lite", - "version": "1.1.0", + "version": "1.2.0", "homepage": ".", "private": false, "scripts": { "dev": "next dev", + "dev:emulator": "firebase emulators:start", "build": "next build", "start": "next start", "export": "next export", "predeploy:gh": "npm run build", "predeploy:fb": "npm run build", "deploy:gh": "gh-pages -d build", - "deploy:fb": "firebase deploy --only hosting:hexa-lite" + "deploy:fb": "firebase deploy --only hosting:app-hexa-lite" }, "dependencies": { "@0xsquid/widget": "^1.6.23", @@ -19,6 +20,7 @@ "@aave/math-utils": "^1.21.1", "@avalabs/avalanchejs": "^3.17.0", "@bgd-labs/aave-address-book": "^2.19.0", + "@bitcoinerlab/secp256k1": "^1.1.1", "@capacitor-community/barcode-scanner": "^4.0.1", "@capacitor/android": "^5.0.0", "@capacitor/core": "^5.0.0", @@ -27,10 +29,12 @@ "@capacitor/ios": "^5.0.0", "@capacitor/status-bar": "^5.0.0", "@cosmjs/stargate": "^0.32.1", + "@hexaonelabs/firebase-web3connect": "^0.0.9-alpha.10", "@ionic/react": "latest", "@ionic/react-router": "latest", + "@ionic/storage": "^4.0.0", "@khmyznikov/pwa-install": "^0.2.7", - "@lifi/widget": "^2.10.1", + "@lifi/widget": "^2.10.2", "@magic-ext/avalanche": "^16.4.0", "@magic-ext/bitcoin": "^16.4.0", "@magic-ext/cosmos": "^16.4.0", @@ -39,7 +43,8 @@ "@moonpay/moonpay-js": "^0.5.0", "@moonpay/moonpay-react": "^1.6.1", "@next/third-parties": "^14.1.4", - "@solana/web3.js": "^1.87.6", + "@solana/spl-token": "^0.4.6", + "@solana/web3.js": "^1.93.0", "@solendprotocol/solend-sdk": "^0.7.6", "@types/jest": "^26.0.20", "@types/node": "^12.19.15", @@ -47,9 +52,13 @@ "@types/react-dom": "^18.0.6", "@types/react-router": "^5.1.11", "@types/react-router-dom": "^5.1.7", - "bitcoinjs-lib": "^6.1.5", + "bip32": "^4.0.0", + "bip39": "^3.1.0", + "bitcoinjs-lib": "^6.1.6", + "bs58": "^5.0.0", "cors": "^2.8.5", "dayjs": "^1.11.10", + "ed25519-hd-key": "^1.3.0", "ethereum-blockies-base64": "^1.0.2", "ethers": "^5.7.2", "firebase": "^10.7.1", @@ -66,7 +75,9 @@ "react-router": "^5.3.4", "react-router-dom": "^5.3.4", "react-use-gesture": "^9.1.3", + "reflect-metadata": "^0.1.14", "reselect": "^5.0.0", + "stream-browserify": "^3.0.0", "swagger-ui-react": "^5.10.5", "swr": "^2.2.4", "uuid": "^9.0.1" @@ -81,6 +92,7 @@ "@testing-library/jest-dom": "^5.16.5", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "@types/bs58": "^4.0.4", "@types/cors": "^2.8.17", "@types/jest": "^27.5.2", "@types/node": "^16.18.36", diff --git a/public/assets/app-logo/100.png b/public/assets/app-logo/100.png index 7c6bfc8a..9d2db32f 100755 Binary files a/public/assets/app-logo/100.png and b/public/assets/app-logo/100.png differ diff --git a/public/assets/app-logo/1024.png b/public/assets/app-logo/1024.png index 3c761c97..b2d1fef3 100755 Binary files a/public/assets/app-logo/1024.png and b/public/assets/app-logo/1024.png differ diff --git a/public/assets/app-logo/114.png b/public/assets/app-logo/114.png index 70a6e903..0c2e4b38 100755 Binary files a/public/assets/app-logo/114.png and b/public/assets/app-logo/114.png differ diff --git a/public/assets/app-logo/120.png b/public/assets/app-logo/120.png index 75128060..25c125a5 100755 Binary files a/public/assets/app-logo/120.png and b/public/assets/app-logo/120.png differ diff --git a/public/assets/app-logo/128.png b/public/assets/app-logo/128.png index 1eddebe9..3a94f12e 100755 Binary files a/public/assets/app-logo/128.png and b/public/assets/app-logo/128.png differ diff --git a/public/assets/app-logo/144.png b/public/assets/app-logo/144.png index 6ee2b58e..7aafe17d 100755 Binary files a/public/assets/app-logo/144.png and b/public/assets/app-logo/144.png differ diff --git a/public/assets/app-logo/152.png b/public/assets/app-logo/152.png index 29928eb1..821d05ab 100755 Binary files a/public/assets/app-logo/152.png and b/public/assets/app-logo/152.png differ diff --git a/public/assets/app-logo/16.png b/public/assets/app-logo/16.png index 331d7bd5..14d95846 100755 Binary files a/public/assets/app-logo/16.png and b/public/assets/app-logo/16.png differ diff --git a/public/assets/app-logo/167.png b/public/assets/app-logo/167.png index d3a9d141..346ef77b 100755 Binary files a/public/assets/app-logo/167.png and b/public/assets/app-logo/167.png differ diff --git a/public/assets/app-logo/180.png b/public/assets/app-logo/180.png index 26642eae..9e107f06 100755 Binary files a/public/assets/app-logo/180.png and b/public/assets/app-logo/180.png differ diff --git a/public/assets/app-logo/192.png b/public/assets/app-logo/192.png index 45886458..acc10af0 100755 Binary files a/public/assets/app-logo/192.png and b/public/assets/app-logo/192.png differ diff --git a/public/assets/app-logo/20.png b/public/assets/app-logo/20.png index 912c4932..eacce3ad 100755 Binary files a/public/assets/app-logo/20.png and b/public/assets/app-logo/20.png differ diff --git a/public/assets/app-logo/256.png b/public/assets/app-logo/256.png index 68607e55..d5a35f78 100755 Binary files a/public/assets/app-logo/256.png and b/public/assets/app-logo/256.png differ diff --git a/public/assets/app-logo/29.png b/public/assets/app-logo/29.png index 531160d9..00477655 100755 Binary files a/public/assets/app-logo/29.png and b/public/assets/app-logo/29.png differ diff --git a/public/assets/app-logo/32.png b/public/assets/app-logo/32.png index 8c680416..62c49eee 100755 Binary files a/public/assets/app-logo/32.png and b/public/assets/app-logo/32.png differ diff --git a/public/assets/app-logo/40.png b/public/assets/app-logo/40.png index 7e5d4dca..543b22db 100755 Binary files a/public/assets/app-logo/40.png and b/public/assets/app-logo/40.png differ diff --git a/public/assets/app-logo/48.png b/public/assets/app-logo/48.png index 8bc64136..3ef002bb 100755 Binary files a/public/assets/app-logo/48.png and b/public/assets/app-logo/48.png differ diff --git a/public/assets/app-logo/50.png b/public/assets/app-logo/50.png index 0b24dda7..29a352d6 100755 Binary files a/public/assets/app-logo/50.png and b/public/assets/app-logo/50.png differ diff --git a/public/assets/app-logo/512.png b/public/assets/app-logo/512.png index 7a841630..f6d4af90 100755 Binary files a/public/assets/app-logo/512.png and b/public/assets/app-logo/512.png differ diff --git a/public/assets/app-logo/57.png b/public/assets/app-logo/57.png index 392c6250..eff9ed00 100755 Binary files a/public/assets/app-logo/57.png and b/public/assets/app-logo/57.png differ diff --git a/public/assets/app-logo/58.png b/public/assets/app-logo/58.png index 446ac223..4e6085c5 100755 Binary files a/public/assets/app-logo/58.png and b/public/assets/app-logo/58.png differ diff --git a/public/assets/app-logo/60.png b/public/assets/app-logo/60.png index 0b4a90bd..9d99d178 100755 Binary files a/public/assets/app-logo/60.png and b/public/assets/app-logo/60.png differ diff --git a/public/assets/app-logo/64.png b/public/assets/app-logo/64.png index 149b87cb..d465501d 100755 Binary files a/public/assets/app-logo/64.png and b/public/assets/app-logo/64.png differ diff --git a/public/assets/app-logo/72.png b/public/assets/app-logo/72.png index f8a6c2e8..7a423645 100755 Binary files a/public/assets/app-logo/72.png and b/public/assets/app-logo/72.png differ diff --git a/public/assets/app-logo/76.png b/public/assets/app-logo/76.png index b323109c..140840a0 100755 Binary files a/public/assets/app-logo/76.png and b/public/assets/app-logo/76.png differ diff --git a/public/assets/app-logo/80.png b/public/assets/app-logo/80.png index 5074e08f..8b8fb5b2 100755 Binary files a/public/assets/app-logo/80.png and b/public/assets/app-logo/80.png differ diff --git a/public/assets/app-logo/87.png b/public/assets/app-logo/87.png index 2abef2eb..59460c33 100755 Binary files a/public/assets/app-logo/87.png and b/public/assets/app-logo/87.png differ diff --git a/public/assets/app-logo/96.png b/public/assets/app-logo/96.png index dcc4f37f..bbc2d515 100755 Binary files a/public/assets/app-logo/96.png and b/public/assets/app-logo/96.png differ diff --git a/public/assets/cryptocurrency-icons/oseth.svg b/public/assets/cryptocurrency-icons/oseth.svg new file mode 100644 index 00000000..394d8660 --- /dev/null +++ b/public/assets/cryptocurrency-icons/oseth.svg @@ -0,0 +1 @@ + diff --git a/public/assets/cryptocurrency-icons/usde.svg b/public/assets/cryptocurrency-icons/usde.svg new file mode 100644 index 00000000..91c363de --- /dev/null +++ b/public/assets/cryptocurrency-icons/usde.svg @@ -0,0 +1 @@ + diff --git a/public/assets/cryptocurrency-icons/weeth.svg b/public/assets/cryptocurrency-icons/weeth.svg new file mode 100644 index 00000000..048936db --- /dev/null +++ b/public/assets/cryptocurrency-icons/weeth.svg @@ -0,0 +1 @@ + diff --git a/public/assets/icons/bank.svg b/public/assets/icons/bank.svg index f8e80613..600615c2 100644 --- a/public/assets/icons/bank.svg +++ b/public/assets/icons/bank.svg @@ -1,3 +1,9 @@ - - - + + + + + + + + \ No newline at end of file diff --git a/public/assets/icons/history-icon.svg b/public/assets/icons/history-icon.svg new file mode 100644 index 00000000..bca36ee4 --- /dev/null +++ b/public/assets/icons/history-icon.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/public/favicon.ico b/public/favicon.ico old mode 100755 new mode 100644 index 502529f4..24b69f1d Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/favicon.svg b/public/favicon.svg index 0cfcbba8..b846366d 100644 --- a/public/favicon.svg +++ b/public/favicon.svg @@ -1,12 +1,11 @@ - - - - \ No newline at end of file + + + + + + diff --git a/src/components/ATOMLiquidStakingstrategy.tsx b/src/components/ATOMLiquidStakingstrategy.tsx index 0c62e742..ad4d0ad7 100644 --- a/src/components/ATOMLiquidStakingstrategy.tsx +++ b/src/components/ATOMLiquidStakingstrategy.tsx @@ -40,7 +40,7 @@ export interface IStrategyModalProps { } export function ATOMLiquidStakingstrategyCard() { - const { web3Provider, switchNetwork, connectWallet, disconnectWallet, currentNetwork } = Store.useState(getWeb3State); + const { switchNetwork, connectWallet, disconnectWallet, currentNetwork } = Store.useState(getWeb3State); const [baseAPRst, setBaseAPRst] = useState(-1); const { display: displayLoader, hide: hideLoader } = useLoader(); const toastContext = useIonToast(); diff --git a/src/components/AppShell.tsx b/src/components/AppShell.tsx index 5c78a065..dbc7008a 100755 --- a/src/components/AppShell.tsx +++ b/src/components/AppShell.tsx @@ -1,39 +1,27 @@ import { IonApp, - IonButton, IonRouterOutlet, setupIonicReact, IonText, - IonChip, IonContent, IonGrid, IonRow, IonCol, IonPage, - useIonModal, - IonIcon, useIonAlert, - IonImg, IonSkeletonText, - IonFab, - IonFabButton, IonList, IonItem, IonAvatar, IonProgressBar, IonModal, - IonHeader, - IonToolbar, - IonTitle, - IonButtons, useIonToast, } from "@ionic/react"; import { StatusBar, Style } from "@capacitor/status-bar"; import { IonReactRouter } from "@ionic/react-router"; -import { Redirect, Route, useHistory } from "react-router-dom"; -import { useEffect, useRef, useState, lazy, Suspense } from "react"; -import { Welcome } from "./Welcome"; +import { Redirect } from "react-router-dom"; +import { useEffect, useRef, useState, Suspense } from "react"; import { Header } from "./Header"; import { NotFoundPage } from "@/containers/NotFoundPage"; import PwaInstall from "./PwaInstall"; @@ -41,10 +29,22 @@ import { initializeWeb3 } from "@/store/effects/web3.effects"; import Store from "@/store"; import { getErrorState, getWeb3State } from "@/store/selectors"; import { IonRoute } from "@ionic/react"; -import { isPlatform } from "@ionic/core"; -import { close } from "ionicons/icons"; import { setErrorState } from "@/store/actions"; import { initializeAppSettings } from "@/store/effects/app-settings.effect"; +import { LoaderProvider } from "@/context/LoaderContext"; +import { + AuthWithLinkContainer, + BuyWithFiatContainer, + DefiContainer, + EarnContainer, + LeaderboardContainer, + MagicMigrationContainer, + SwapContainer, + WalletDesktopContainer, + WalletMobileContainer, + WelcomeMobileContainer, +} from "@/containers"; +import { isMobilePWADevice } from "@/utils/isMobile"; setupIonicReact({ mode: "ios" }); @@ -61,71 +61,58 @@ window } catch {} }); -const LeaderboardContainer = lazy(() => import("@/containers/desktop/LeaderboardContainer")); -const WalletDesktopContainer = lazy(() => import("@/containers/desktop/WalletDesktopContainer")); -const SwapContainer = lazy(() => import("@/containers/desktop/SwapContainer")); -const DefiContainer = lazy(() => import("@/containers/desktop/DefiContainer")); -const EarnContainer = lazy(() => import("@/containers/desktop/EarnContainer")); -const AvailablePlatformsContainer = lazy(() => import("@/containers/desktop/AvailablePlatformsContainer")); -const AboutContainer = lazy(() => import("@/containers/desktop/AboutContainer")); -const BuyWithFiatContainer = lazy(() => import("@/containers/BuyWithFiat")); -const WalletMobileContainer = lazy( - () => import("@/containers/mobile/WalletMobileContainer") -); -const WelcomeMobileContainer = lazy( - () => import("@/containers/mobile/WelcomeMobileContainer") -); - const DefaultProgressBar = () => { - return () + return ( + + ); }; const DefaultLoadingPage = () => { return ( - - - - - ) -} + + + + + ); +}; -const isMobilePWADevice = - localStorage.getItem('hexa-lite_is-pwa') || - Boolean(isPlatform("pwa")) || - Boolean(isPlatform("electron")) || - Boolean(isPlatform("mobile")) && !Boolean(isPlatform("mobileweb")); const setPreferScheme = () => { const prefersLightScheme = window.matchMedia("(prefers-color-scheme: light)"); if (prefersLightScheme.matches) { - document.querySelector('body')?.classList.remove('dark'); - if (typeof window !== 'undefined' && window.localStorage) { - localStorage.setItem('hexa-lite_is-lightmode', 'true'); + document.querySelector("body")?.classList.remove("dark"); + if (typeof window !== "undefined" && window.localStorage) { + localStorage.setItem("hexa-lite_is-lightmode", "true"); } } else { - localStorage.setItem('hexa-lite_is-lightmode', 'false'); + localStorage.setItem("hexa-lite_is-lightmode", "false"); } -} +}; const AppShell = () => { - // get params from url `s=` - const { pathname = "/swap" } = window.location; - let segment = pathname.split("/")[1] || "swap"; // urlParams.get("s") || "swap"; - const { walletAddress, isMagicWallet } = Store.useState(getWeb3State); + const { pathname = "/wallet" } = window.location; + let segment = pathname.split("/")[1] || "wallet"; // urlParams.get("s") || "swap"; + const { walletAddress } = Store.useState(getWeb3State); const error = Store.useState(getErrorState); const [presentFiatWarning, dismissFiatWarning] = useIonAlert(); const [isBuyWithFiatModalOpen, setIsBuyWithFiatModalOpen] = useState(false); + const [isMagicMigrationModalOpen, setIsMagicMigrationModalOpen] = + useState(false); + const [ + isMigrationMadalAlreadyDisplayed, + setIsMigrationMadalAlreadyDisplayed, + ] = useState( + Boolean(localStorage.getItem("hexa-lite__migration-modal-displayed")) + ); const [presentToast, dismissToast] = useIonToast(); - if(error) { + if (error) { presentToast({ - message: `[ERROR] ${ - error?.message || error - }`, + message: `[ERROR] ${error?.message || error}`, color: "danger", duration: 1000 * 30, buttons: [ @@ -138,13 +125,15 @@ const AppShell = () => { }, ], onDidDismiss: () => setErrorState(undefined), - }) + }); } - const isNotFound = - segment && ["wallet", "swap", "fiat", "defi", "earn"].indexOf(segment) === -1; // use state to handle segment change - const [currentSegment, setSegment] = useState(segment); + const [currentSegment, setSegment] = useState( + segment.includes("index") ? "wallet" : segment + ); + const isNotFound = + ["wallet", "swap", "fiat", "defi", "earn"].indexOf(currentSegment) === -1; const handleSegmentChange = async (e: any) => { if (e.detail.value === "fiat") { if (walletAddress && walletAddress !== "") { @@ -152,8 +141,7 @@ const AppShell = () => { } else { await presentFiatWarning({ header: "Information", - message: - "Connect to enable buy crypto with fiat.", + message: "Connect to enable buy crypto with fiat.", buttons: ["OK"], cssClass: "modalAlert", }); @@ -162,230 +150,257 @@ const AppShell = () => { } setSegment(e.detail.value); }; - const contentRef = useRef(null); - const scrollToTop = () => { - // @ts-ignore - contentRef.current.scrollToTop(); - }; useEffect(() => { - initializeWeb3(); - initializeAppSettings() + // initialize by check if user have an existing Wallet created with Magic.link + // to display Migration Guide to Hexa Lite FirebaseWeb3Connect integration + window.indexedDB?.databases().then((databases) => { + // check existing DB + const magicExist = databases.find((db) => + db.name?.toLowerCase()?.includes("magic") + ); + // check modal already displayed + const displayModal = magicExist && !isMigrationMadalAlreadyDisplayed; + if (displayModal) { + // Migration guide process + setIsMagicMigrationModalOpen(true); + } + }); + if (walletAddress === undefined) { + // initialze Web3 connection & app settings + initializeWeb3(); + initializeAppSettings(); + } }, []); useEffect(() => { - if (typeof window !== 'undefined' && window.localStorage) { - const isLightmode = localStorage.getItem('hexa-lite_is-lightmode'); - isLightmode && isLightmode === 'true' - ? document.querySelector('body')?.classList.remove('dark') + if (typeof window !== "undefined" && window.localStorage) { + const isLightmode = localStorage.getItem("hexa-lite_is-lightmode"); + isLightmode && isLightmode === "true" + ? document.querySelector("body")?.classList.remove("dark") : setPreferScheme(); } else { setPreferScheme(); } - return ()=> {}; + return () => {}; }, []); return ( - {!isMobilePWADevice && ( + {!isMobilePWADevice && !isMagicMigrationModalOpen && ( - - ( - <> - - - - - - + + ( + }> + + + )} + /> + ( + }> + + + )} + /> + {/* }> + + } /> + }> + + } /> */} + } + exact={true} + /> + } + exact={true} + /> + ( + <> + + {!isNotFound && ( +
+ )} + + }> + {currentSegment === "wallet" && ( + + )} + + }> + {currentSegment === "swap" && } + + }> + {currentSegment === "earn" && } + + }> + {currentSegment === "defi" && ( + - - - - - - - )} - /> - } > - - } /> - }> - - } /> - }> - - } /> - + }> + {isNotFound === true && } + + + + + )} + /> + + + + )} + + {/* Here use mobile UI */} + {isMobilePWADevice && !isMagicMigrationModalOpen && ( + + + ( - + }> + + )} - exact={true} /> ( - <> - - {!isNotFound && ( -
- )} - - }> - {currentSegment === "wallet" && ( - - )} - - }> - {currentSegment === "swap" && ()} - - }> - {currentSegment === "earn" && } - - }> - {currentSegment === "defi" && ( - - )} - - }> - {currentSegment === isNotFound && } - - - - + }> + + )} /> - - - )} - - {/* Here use mobile UI */} - {isMobilePWADevice && ( - - - } > - - } /> - !walletAddress ? ( - } - > + walletAddress === undefined || walletAddress === null ? ( + }> ) : ( - - - - - -
- -

- -

-

- -

-
-
-
-
-
- - - - - {[1,2,3,4,5].map((_: any, i: number) => ( - - + fallback={ + <> + + + + + +
+ +

- - -

- -

-

- -

-
- +

+

- - - ))} - - - - - - - } +

+
+
+
+
+
+ + + + + {[1, 2, 3, 4, 5].map( + (_: any, i: number) => ( + + + + + +

+ +

+

+ +

+
+ + + +
+ ) + )} +
+
+
+
+
+
+ + } >
@@ -396,17 +411,39 @@ const AppShell = () => {
)} + + + setIsBuyWithFiatModalOpen(false)} + > + }> + setIsBuyWithFiatModalOpen(false)} + isLightmode={ + localStorage.getItem("hexa-lite_is-lightmode") === "true" + ? true + : undefined + } + /> + + + setIsBuyWithFiatModalOpen(false)} - > - }> - setIsBuyWithFiatModalOpen(false)} - isLightmode={localStorage.getItem('hexa-lite_is-lightmode') === 'true' ? true : undefined} /> - - + isOpen={isMagicMigrationModalOpen} + onDidDismiss={() => { + setIsMagicMigrationModalOpen(false); + setIsMigrationMadalAlreadyDisplayed(true); + localStorage.setItem("hexa-lite__migration-modal-displayed", "true"); + }} + > + }> + + + ); }; diff --git a/src/components/AuthBadge.tsx b/src/components/AuthBadge.tsx index a1fc8bcb..88906fff 100644 --- a/src/components/AuthBadge.tsx +++ b/src/components/AuthBadge.tsx @@ -13,14 +13,15 @@ import { IonText, useIonModal, } from "@ionic/react"; -import { checkmarkCircle, copyOutline, openOutline } from "ionicons/icons"; +import { checkmarkCircle, copyOutline, openOutline, saveOutline } from "ionicons/icons"; import DisconnectButton from "./DisconnectButton"; import { SelectNetwork } from "./SelectNetwork"; import { SuccessCopyAddress } from "./SuccessCopyAddress"; import { ToggleLightmode } from "./ui/ToogleLightmode"; +import web3Connector from "@/servcies/firebase-web3-connect"; export const AuthBadge: React.FC = () => { - const { walletAddress, currentNetwork, isMagicWallet, switchNetwork } = + const { walletAddress, currentNetwork, switchNetwork } = Store.useState(getWeb3State); const { display: displayLoader, hide: hidLoader } = useLoader(); const chain = @@ -38,16 +39,16 @@ export const AuthBadge: React.FC = () => { const [presentSelectNetwork, dismissSelectNetwork] = useIonModal(() => ( )); - const handleActions = async (type: string, payload: string) => { + const handleActions = async (type: string, payload?: string) => { await displayLoader(); switch (true) { - case type === "copy": { - navigator?.clipboard?.writeText(payload); + case type === "copy" && payload !== undefined: { + navigator?.clipboard?.writeText(`${payload}`); // display toast confirmation presentSuccessCopyAddress({ cssClass: "modalAlert", @@ -77,6 +78,9 @@ export const AuthBadge: React.FC = () => { await handleActions("copy", `${walletAddress}`); break; } + case type === 'backup': { + await web3Connector.backupWallet() + } default: break; } @@ -167,6 +171,32 @@ export const AuthBadge: React.FC = () => { + + + +

Backup Wallet

+
+ +

+ + Download wallet backup + +

+
+
+ handleActions('backup')} + > + + +
diff --git a/src/components/ConnectButton.tsx b/src/components/ConnectButton.tsx deleted file mode 100644 index f5b68e75..00000000 --- a/src/components/ConnectButton.tsx +++ /dev/null @@ -1,83 +0,0 @@ -import Store from "@/store"; -import { useLoader } from "../context/LoaderContext"; -import { IonButton, IonSkeletonText, useIonToast } from "@ionic/react"; -import { getWeb3State } from "@/store/selectors"; -import { MouseEvent } from "react"; - -const ConnectButton = (props: { - style?: any; - size?: "small" | "default" | "large"; - expand?: "full" | "block"; -}) => { - const toastContext = useIonToast(); - const presentToast = toastContext[0]; - const dismissToast = toastContext[1]; - // Get the initializeWeb3 function from the Web3 context - const { connectWallet, web3Provider } = Store.useState(getWeb3State); - const { display: displayLoader, hide: hideLoader } = useLoader(); - // Define the event handler for the button click - const handleConnect = async () => { - try { - // Display the loader while the connection is being made - await displayLoader(); - await connectWallet(); - // Hide the loader - await hideLoader(); - } catch (error: any) { - // Hide the loader - await hideLoader(); - // Log any errors that occur during the connection process - // filter out the error message if user stop the connection ([-32603] Internal JSON-RPC error.) - if (error?.code === -32603) { - return; - } - console.error("[ERROR] handleConnect:", error); - await presentToast({ - message: `[ERROR] Connect Failed with reason: ${ - error?.message || error - }`, - color: "danger", - buttons: [ - { - text: "x", - role: "cancel", - handler: () => { - dismissToast(); - }, - }, - ], - }); - } - }; - - // Render the button component with the click event handler - return ( - { - $event.currentTarget.disabled = true; - try { - await handleConnect(); - $event.currentTarget.disabled = false; - } catch (err: any) { - console.log('[ERROR] {ConnectButton} handleConnect(): ', err); - if ($event.currentTarget) { - $event.currentTarget.disabled = false; - } - } - }} - > - {web3Provider === null ? ( - - ) : ( - "Connect" - )} - - ); -}; - -export default ConnectButton; diff --git a/src/components/CrosschainLoanForm.tsx b/src/components/CrosschainLoanForm.tsx index 03e74147..1ba93dca 100644 --- a/src/components/CrosschainLoanForm.tsx +++ b/src/components/CrosschainLoanForm.tsx @@ -48,7 +48,7 @@ const isNumberKey = (evt: React.KeyboardEvent) => { } const requestQuote = async (ops: { - web3Provider: ethers.providers.Web3Provider; + signer: ethers.Signer; selectedCollateral: Pick< IAavePool, "chainId" | "aTokenAddress" | "decimals" | "priceInUSD" @@ -57,7 +57,7 @@ const requestQuote = async (ops: { inputFromAmount: number; }): Promise => { const { - web3Provider, + signer, selectedCollateral, newCollateral, inputFromAmount, @@ -69,7 +69,7 @@ const requestQuote = async (ops: { ) .toString(); console.log("[INFO] CrosschainLoanForm requestQuote...", ops); - const fromAddress = (await web3Provider?.getSigner().getAddress()) || ""; + const fromAddress = (await signer.getAddress()) || ""; // return {...fakeQuote, estimate: { // ...fakeQuote.estimate, // toAmount: `${(Number(inputFromAmount||0) * Number(selectedCollateral.priceInUSD)) / Number(newCollateral.priceInUSD)}` @@ -135,7 +135,7 @@ export function CrosschainLoanForm(props: { const { reserve, userSummary, toggleCrosschainForm, onSubmit } = props; const userSummaryAndIncentivesGroup = Store.useState(getUserSummaryAndIncentivesGroupState) const poolGroups = Store.useState(getPoolGroupsState); - const { web3Provider, assets } = Store.useState(getWeb3State); + const { signer, assets } = Store.useState(getWeb3State); const [healthFactor, setHealthFactor] = useState( +userSummary.healthFactor ); @@ -249,7 +249,7 @@ export function CrosschainLoanForm(props: { ), currentLiquidationThreshold: summary.currentLiquidationThreshold, }); - if (!web3Provider) { + if (!signer) { // UI loader control setIsLoading(() => false); throw new Error("No ethereum provider"); @@ -258,7 +258,7 @@ export function CrosschainLoanForm(props: { setIsLoading(() => true); // request Quote const { errors, message, ...quote } = await requestQuote({ - web3Provider: web3Provider as ethers.providers.Web3Provider, + signer, inputFromAmount: value, newCollateral, selectedCollateral, @@ -749,38 +749,38 @@ export function CrosschainLoanForm(props: { { - // exclud all action if no quote available - if (!quote?.id || !web3Provider) { - return; - } - await displayLoader(); - try { - // perform swap collaterals - await checkAndSetAllowance( - web3Provider as ethers.providers.Web3Provider, - quote.action.fromToken.address, - quote.estimate.approvalAddress, - quote.action.fromAmount, - ); - await sendTransaction(quote, web3Provider as ethers.providers.Web3Provider); - await presentToast({ - message: `Swap callaterals successfully. Waiting form Borrow transaction...`, - duration: 5000, - color: "primary", - buttons: ['x'] + // // exclud all action if no quote available + // if (!quote?.id || !signer) { + // return; + // } + // await displayLoader(); + // try { + // // perform swap collaterals + // await checkAndSetAllowance( + // signer, + // quote.action.fromToken.address, + // quote.estimate.approvalAddress, + // quote.action.fromAmount, + // ); + // await sendTransaction(quote, signer); + // await presentToast({ + // message: `Swap callaterals successfully. Waiting form Borrow transaction...`, + // duration: 5000, + // color: "primary", + // buttons: ['x'] - }); - await hideLoader(); - // perform borrow by closing modal with params as `data` - onSubmit(borrowAmount, "confirm"); - } catch (error: any) { - await presentToast({ - message: `Error while swap callaterals: ${error?.message||'Transaction failed'}. Please try again.`, - duration: 5000, - color: "danger", - }); - await hideLoader(); - } + // }); + // await hideLoader(); + // // perform borrow by closing modal with params as `data` + // onSubmit(borrowAmount, "confirm"); + // } catch (error: any) { + // await presentToast({ + // message: `Error while swap callaterals: ${error?.message||'Transaction failed'}. Please try again.`, + // duration: 5000, + // color: "danger", + // }); + // await hideLoader(); + // } }} strong={true} color="gradient" diff --git a/src/components/ETHLiquidStakingstrategy.tsx b/src/components/ETHLiquidStakingstrategy.tsx index 7cdc160c..6119d738 100644 --- a/src/components/ETHLiquidStakingstrategy.tsx +++ b/src/components/ETHLiquidStakingstrategy.tsx @@ -51,7 +51,7 @@ export interface IStrategyModalProps { export function ETHLiquidStakingstrategyCard(props: { asImage?: boolean, asItem?: boolean }) { const { currentNetwork, - web3Provider, + signer, switchNetwork, connectWallet, disconnectWallet, @@ -91,10 +91,9 @@ export function ETHLiquidStakingstrategyCard(props: { asImage?: boolean, asItem? try { await displayLoader(); await connectWallet(); - if (!(web3Provider instanceof ethers.providers.Web3Provider)) { + if (!signer) { throw new Error("Provider not found"); } - const signer = web3Provider?.getSigner(); console.log("[INFO] signer", signer); if (!signer) { throw new Error("Signer not found"); @@ -147,7 +146,7 @@ export function ETHLiquidStakingstrategyCard(props: { asImage?: boolean, asItem? }); } }, - signer: web3Provider instanceof ethers.providers.Web3Provider ? web3Provider?.getSigner() : undefined, + signer: signer || undefined }, // set source chain to Polygon fromChain: NETWORK.optimism, @@ -195,13 +194,13 @@ export function ETHLiquidStakingstrategyCard(props: { asImage?: boolean, asItem? }, []); useEffect(() => { - if (!web3Provider) { + if (!signer) { return; } getETHByWstETH(1).then((value) => { setWstToEthAmount(() => Number(value)); }); - }, [web3Provider]); + }, [signer]); const widgetEvents = useWidgetEvents(); useEffect(() => { @@ -404,13 +403,7 @@ export function ETHLiquidStakingstrategyCard(props: { asImage?: boolean, asItem? { - const chainId = currentNetwork; - await displayLoader(); - if (chainId !== NETWORK.optimism) { - await switchNetwork(NETWORK.optimism); - } await modal.current?.present(); - await hideLoader(); }} expand="block" color="gradient" @@ -430,13 +423,7 @@ export function ETHLiquidStakingstrategyCard(props: { asImage?: boolean, asItem? { - const chainId = currentNetwork; - await displayLoader(); - if (chainId !== NETWORK.optimism) { - await switchNetwork(NETWORK.optimism); - } await modal.current?.present(); - await hideLoader(); }}> { - if (!web3Provider) { + if (!signer) { return; } getETHByWstETH(1).then((value) => { setWstToEthAmount(() => Number(value)); }); - }, [web3Provider]); + }, [signer]); const widgetEvents = useWidgetEvents(); useEffect(() => { diff --git a/src/components/Header.tsx b/src/components/Header.tsx index acf6818a..9d7370a3 100644 --- a/src/components/Header.tsx +++ b/src/components/Header.tsx @@ -22,7 +22,7 @@ import { ribbonOutline, } from "ionicons/icons"; import { AuthBadge } from "./AuthBadge"; -import ConnectButton from "./ConnectButton"; +import ConnectButton from "./ui/ConnectButton"; import { useEffect, useState } from "react"; import { getAddressPoints } from "@/servcies/datas.service"; import { PointsPopover } from "./PointsPopover"; @@ -71,7 +71,7 @@ export function Header({
{ - router.push('/index', 'back'); + window.location.href = 'https://hexa-lite.io' }} > diff --git a/src/components/LiFiWidgetDynamic.tsx b/src/components/LiFiWidgetDynamic.tsx index a1fe4278..60567bb4 100644 --- a/src/components/LiFiWidgetDynamic.tsx +++ b/src/components/LiFiWidgetDynamic.tsx @@ -1,3 +1,4 @@ +import { IonSpinner } from "@ionic/react"; import { LiFiWidget } from "@lifi/widget"; import dynamic from "next/dynamic"; @@ -5,5 +6,6 @@ export const LiFiWidgetDynamic = dynamic( () => import('@lifi/widget').then((module) => module.LiFiWidget) as any, { ssr: false, + loading: ()=> }, ) as typeof LiFiWidget; \ No newline at end of file diff --git a/src/components/LoanFormModal.tsx b/src/components/LoanFormModal.tsx index cb305563..2410ad80 100644 --- a/src/components/LoanFormModal.tsx +++ b/src/components/LoanFormModal.tsx @@ -12,6 +12,8 @@ import { IonImg, IonInput, IonItem, + IonLabel, + IonNote, IonRow, IonText, } from "@ionic/react"; @@ -27,6 +29,7 @@ import { import { WarningBox } from "./WarningBox"; import { CrosschainLoanForm } from "./CrosschainLoanForm"; import { IAavePool } from "@/pool/Aave.pool"; +import web3Connector from '@/servcies/firebase-web3-connect'; export function LoanFormModal({ onDismiss, @@ -43,6 +46,9 @@ export function LoanFormModal({ }) { const { pool, actionType, userSummary } = selectedPool; const inputRef = useRef(null); + const [isConfirm, setIsConfirm ] = useState(false); + const [feesAmount, setFeesAmount ] = useState('0 Gwei'); + const [valueAmount, setValueAmount ] = useState(0); const [isCrossChainEnabled, setIsCrossChainEnabled] = useState(isCrossChain); const [healthFactor, setHealthFactor] = useState( -1 @@ -62,7 +68,16 @@ export function LoanFormModal({ const readableAction = actionType[0].toUpperCase() + actionType.slice(1).toLocaleLowerCase(); - console.log('>>>', userSummary) + const handleClick = async () => { + if (!isConfirm) { + const fees = await web3Connector.getNetworkFeesAsUSD(); + setFeesAmount(fees); + setIsConfirm(true); + return; + } + onDismiss(valueAmount, "confirm"); + } + return ( @@ -99,46 +114,102 @@ export function LoanFormModal({ {!isCrossChainEnabled && ( <> - - - Amount - - -
- - - + Amount + +
{ - const el = inputRef.current; - if (el) { - (el as any).value = maxAmount || 0; + slot="start" + style={{ + display: "flex", + alignItems: "center", + }} + > + + + +
{ + const el = inputRef.current; + if (el) { + (el as any).value = maxAmount || 0; + const newHealthFactor = + calculateHealthFactorFromBalancesBigUnits({ + collateralBalanceMarketReferenceCurrency: + userSummary.totalCollateralUSD, + borrowBalanceMarketReferenceCurrency: + valueToBigNumber( + userSummary.totalBorrowsUSD + ).plus( + valueToBigNumber( + inputRef.current?.value || 0 + ).times(pool?.priceInUSD || 0) + ), + currentLiquidationThreshold: + userSummary.currentLiquidationThreshold, + }); + console.log(">>newHealthFactor.toNumber()", { + newHealthFactor: newHealthFactor.toNumber(), + userSummary, + v: inputRef.current?.value, + }); + + setHealthFactor(newHealthFactor.toNumber()); + } + }} + > + +

{pool.symbol}

+
+ + + Max :{maxAmount.toFixed(6)} + + +
+
+
+ { + const value = (e.target as any).value; + if (maxAmount && value && Number(value) > maxAmount) { + (e.target as any).value = maxAmount; + } + if (value && Number(value) < 0) { + (e.target as any).value = "0"; + setValueAmount(0); + return; + } + // set State + setValueAmount(Number(value)); + // calculate healthfactor const newHealthFactor = calculateHealthFactorFromBalancesBigUnits({ collateralBalanceMarketReferenceCurrency: userSummary.totalCollateralUSD, borrowBalanceMarketReferenceCurrency: - valueToBigNumber( - userSummary.totalBorrowsUSD - ).plus( + valueToBigNumber(userSummary.totalBorrowsUSD).plus( valueToBigNumber( inputRef.current?.value || 0 ).times(pool?.priceInUSD || 0) @@ -147,67 +218,46 @@ export function LoanFormModal({ userSummary.currentLiquidationThreshold, }); console.log(">>newHealthFactor.toNumber()", { - newHealthFactor: newHealthFactor.toNumber(), + newHealthFactor, userSummary, v: inputRef.current?.value, }); setHealthFactor(newHealthFactor.toNumber()); - } - }} - > - -

{pool.symbol}

-
- - - Max :{maxAmount.toFixed(6)} - - + }} + />
-
-
- { - const value = (e.target as any).value; - if (maxAmount && value && Number(value) > maxAmount) { - (e.target as any).value = maxAmount; - } - if (value && Number(value) < 0) { - (e.target as any).value = "0"; - } - const newHealthFactor = - calculateHealthFactorFromBalancesBigUnits({ - collateralBalanceMarketReferenceCurrency: - userSummary.totalCollateralUSD, - borrowBalanceMarketReferenceCurrency: - valueToBigNumber(userSummary.totalBorrowsUSD).plus( - valueToBigNumber( - inputRef.current?.value || 0 - ).times(pool?.priceInUSD || 0) - ), - currentLiquidationThreshold: - userSummary.currentLiquidationThreshold, - }); - console.log(">>newHealthFactor.toNumber()", { - newHealthFactor, - userSummary, - v: inputRef.current?.value, - }); - - setHealthFactor(newHealthFactor.toNumber()); - }} - /> -
-
-
+ + + )} + {isConfirm && ( + + + Review Transaction + + + Action + {readableAction} + + + Amount + {valueAmount||0} { pool.symbol } + + + Fees + {feesAmount||0} + + + )}
{displayRiskCheckbox && ( @@ -239,14 +289,15 @@ export function LoanFormModal({ or use crosschain collateral )} */} + onDismiss(inputRef.current?.value, "confirm")} + onClick={() => handleClick()} strong={true} color="gradient" - disabled={Number(inputRef.current?.value||0) > maxAmount || Number(inputRef.current?.value||0) <= 0} + disabled={(valueAmount||0) > maxAmount || Number(valueAmount||0) <= 0} > - Confirm + {isConfirm ? 'Confirm' : readableAction} diff --git a/src/components/MATICLiquidStakingstrategy.tsx b/src/components/MATICLiquidStakingstrategy.tsx index 459f237a..099127a5 100644 --- a/src/components/MATICLiquidStakingstrategy.tsx +++ b/src/components/MATICLiquidStakingstrategy.tsx @@ -43,6 +43,7 @@ import type { Route } from '@lifi/sdk'; import { PointsData, addAddressPoints } from "@/servcies/datas.service"; import Store from "@/store"; import { getWeb3State } from "@/store/selectors"; +import { signInWithPhoneNumber } from "firebase/auth"; export interface IStrategyModalProps { dismiss?: ( @@ -52,7 +53,7 @@ export interface IStrategyModalProps { } export function MATICLiquidStakingstrategyCard(props: { asImage?: boolean, asItem?: boolean }) { - const { web3Provider, switchNetwork, connectWallet, disconnectWallet, currentNetwork } = Store.useState(getWeb3State); + const { signer, switchNetwork, connectWallet, disconnectWallet, currentNetwork } = Store.useState(getWeb3State); const [baseAPRst, setBaseAPRst] = useState(-1); const [action, setAction] = useState<"stake" | "unstake">("stake"); const { display: displayLoader, hide: hideLoader } = useLoader(); @@ -87,10 +88,9 @@ export function MATICLiquidStakingstrategyCard(props: { asImage?: boolean, asIte try { await displayLoader(); await connectWallet(); - if (!(web3Provider instanceof ethers.providers.Web3Provider)) { + if (!signer) { throw new Error("Provider not found"); } - const signer = web3Provider?.getSigner(); console.log("[INFO] signer", signer); if (!signer) { throw new Error("Signer not found"); @@ -143,7 +143,7 @@ export function MATICLiquidStakingstrategyCard(props: { asImage?: boolean, asIte }); } }, - signer: web3Provider instanceof ethers.providers.Web3Provider ? web3Provider?.getSigner() : undefined, + signer: signer || undefined }, // set source chain to Polygon fromChain: NETWORK.polygon, @@ -393,12 +393,7 @@ export function MATICLiquidStakingstrategyCard(props: { asImage?: boolean, asIte { - await displayLoader(); - if (currentNetwork !== NETWORK.polygon) { - await switchNetwork(NETWORK.polygon); - } await modal.current?.present(); - await hideLoader(); }} expand="block" color="gradient" @@ -417,13 +412,7 @@ export function MATICLiquidStakingstrategyCard(props: { asImage?: boolean, asIte { - const chainId = currentNetwork; - await displayLoader(); - if (chainId !== NETWORK.optimism) { - await switchNetwork(NETWORK.optimism); - } await modal.current?.present(); - await hideLoader(); }}> (null); const getChainData = (chainId: number) => { @@ -109,13 +109,6 @@ export function NetworkButton() { currentNetwork || CHAIN_DEFAULT.id ); const handleSwitchNetwork = async (chainId: number) => { - const isMagic = (web3Provider as any)?.provider?.sdk?.rpcProvider - ?.isMagic; - console.log( - "{{NetworkButton}} handleSwitchNetwork(): web3Provider", - isMagic, - Number(BigInt(chainId).toString()) - ); // save the new chainId to localstorage localStorage.setItem( "default-chainId", diff --git a/src/components/ReserveDetail.tsx b/src/components/ReserveDetail.tsx index a37b813b..ba6f7b20 100644 --- a/src/components/ReserveDetail.tsx +++ b/src/components/ReserveDetail.tsx @@ -9,6 +9,7 @@ import { IonContent, IonFabButton, IonFabList, + IonFooter, IonGrid, IonHeader, IonIcon, @@ -35,7 +36,7 @@ import { import { ethers } from "ethers"; import { getReadableAmount } from "../utils/getReadableAmount"; import { valueToBigNumber } from "@aave/math-utils"; -import ConnectButton from "./ConnectButton"; +import ConnectButton from "./ui/ConnectButton"; import { LoanFormModal } from "./LoanFormModal"; import { useEffect, useMemo, useRef, useState } from "react"; import { @@ -75,6 +76,7 @@ import { import { initializeUserSummary } from "@/store/effects/pools.effect"; import { ModalMessage } from "./ModalMessage"; import { currencyFormat } from "@/utils/currencyFormat"; +import { isMobilePWADevice } from "@/utils/isMobile"; interface IReserveDetailProps { pool: MarketPool; @@ -82,59 +84,6 @@ interface IReserveDetailProps { handleSegmentChange: (e: { detail: { value: string } }) => void; } -const loadTokenData = async (symbol: string) => { - // check if have localstorage data - const localCoinsListString = localStorage.getItem("coingecko-coins-list"); - let localCoinsList = localCoinsListString - ? JSON.parse(localCoinsListString) - : null; - if (!localCoinsList) { - localCoinsList = await fetch( - `https://api.coingecko.com/api/v3/coins/list` - ).then((response) => response.json()); - localStorage.setItem( - "coingecko-coins-list", - JSON.stringify(localCoinsList) - ); - } - if (!localCoinsList) { - return; - } - // find coin id by symbol - const coin = localCoinsList.find( - (coin: { symbol: string }) => - coin.symbol.toLocaleLowerCase() === symbol.toLocaleLowerCase() - ); - if (coin) { - // fetch coin data by id - return fetch(`https://api.coingecko.com/api/v3/coins/${coin.id}`) - .then((response) => response.json()) - .then((data) => { - console.log("coin data: ", data.description.en); - const { - description: { en: description }, - market_data: { - fully_diluted_valuation: { usd: fullyDilutedValuationUSD }, - market_cap: { usd: marketCapUSD }, - max_supply: maxSupply, - total_supply: totalSupply, - circulating_supply: circulatingSupply, - }, - } = data; - return { - description, - fullyDilutedValuationUSD, - marketCapUSD, - maxSupply, - totalSupply, - circulatingSupply, - }; - }); - } else { - return; - } -}; - export function ReserveDetail(props: IReserveDetailProps) { const { pool: { id, chainId }, @@ -142,7 +91,7 @@ export function ReserveDetail(props: IReserveDetailProps) { handleSegmentChange, } = props; const { - web3Provider, + signer, currentNetwork, walletAddress, assets, @@ -249,7 +198,6 @@ export function ReserveDetail(props: IReserveDetailProps) { throw new Error("No poolGroup found"); } - console.log('>>>>x x', userSummaryAndIncentivesGroup) const userSummary = userSummaryAndIncentivesGroup?.find((group) => group?.userReservesData?.find(({ reserve }) => reserve.id === id) ); @@ -306,24 +254,20 @@ export function ReserveDetail(props: IReserveDetailProps) { `[INFO] ReserveDetail - onWillDismiss from LoanFormModal: `, ev.detail ); - if (!web3Provider) { - throw new Error("No web3Provider found"); + if (!signer) { + throw new Error("No signer found"); } - if (!(web3Provider instanceof ethers.providers.Web3Provider)) { - throw new Error("No EVM web3Provider"); + if (!signer) { + throw new Error("No EVM signer"); } if (ev.detail.role !== "confirm") { return; } displayLoader(); - // switch network if need - let provider = web3Provider; if (currentNetwork !== pool.chainId) { await switchNetwork(pool.chainId); - // update provider after switch network - provider = web3Provider; } - if (!provider) { + if (!signer) { throw new Error("No provider found or update failed"); } // perform action @@ -332,19 +276,19 @@ export function ReserveDetail(props: IReserveDetailProps) { const amount = Number(value); switch (true) { case type === "deposit": { - await pool.deposit(amount, provider); + await pool.deposit(amount, signer); break; } case type === "withdraw": { - await pool.withdraw(amount, provider); + await pool.withdraw(amount, signer); break; } case type === "borrow": { - await pool.borrow(amount, provider); + await pool.borrow(amount, signer); break; } case type === "repay": { - await pool.repay(amount, provider); + await pool.repay(amount, signer); break; } default: @@ -411,11 +355,10 @@ export function ReserveDetail(props: IReserveDetailProps) { ) : ( <> ); - const DepositBtn = walletAddress && (walletBalance || 0) > 0 && - supplyPoolRatioInPercent < 99 ? ( + (supplyPoolRatioInPercent < 99 || Infinity) ? ( + { + setIsModalOptionsOpen(() => true); + }} + > + Choose option + + + ) : ( + + ); + return ( <> @@ -617,60 +576,7 @@ export function ReserveDetail(props: IReserveDetailProps) { size-lg="6" className="ion-text-center" > - {walletAddress ? ( - <> - { - setIsModalOptionsOpen(() => true); - }} - > - Choose option - - {}} - keyboardClose={false} - isOpen={isModalOptionsOpen} - onDidDismiss={() => { - setIsModalOptionsOpen(false); - }} - > - - - - -

- Select option -

-
- -

- - Choose an option to interact with this - pool. - -

-
-
- - {/* {ExchangeAssetBtn} - {BuyAssetBtn} */} - {WithdrawBtn} - {DepositBtn} - {RepayBtn} - {BorrowBtn} - -
-
-
- - ) : ( - - )} + {!isMobilePWADevice ? callActionsBtn : null} {tokenDetails && (
+ {isMobilePWADevice && ( + + + {callActionsBtn} + + + )} + {}} + keyboardClose={false} + isOpen={isModalOptionsOpen} + onDidDismiss={() => { + setIsModalOptionsOpen(false); + }} + > + + + + +

+ Select option +

+
+ +

+ + Choose an option to interact with this + pool. + +

+
+
+ + {/* {ExchangeAssetBtn} + {BuyAssetBtn} */} + {WithdrawBtn} + {DepositBtn} + {RepayBtn} + {BorrowBtn} + +
+
+
+ { diff --git a/src/components/SelectNetwork.tsx b/src/components/SelectNetwork.tsx index 11126e19..c7ba5beb 100644 --- a/src/components/SelectNetwork.tsx +++ b/src/components/SelectNetwork.tsx @@ -16,13 +16,13 @@ import { IChain } from "@/constants/chains"; interface SelectNetworkProps { chains: Pick[]; - isMagicWallet: boolean; + isExternalWallet: boolean; dismiss: (data?: any, role?: string | undefined) => void; } export const SelectNetwork: React.FC = ({ chains, - isMagicWallet, + isExternalWallet, dismiss, }) => { return ( @@ -32,7 +32,7 @@ export const SelectNetwork: React.FC = ({

Select network

- {!isMagicWallet && ( + {isExternalWallet && (

= ({ }} > {chains - // .filter(chain => isMagicWallet ? true : chain.type === "evm") .sort((a, b) => (a.name > b.name ? 1 : -1)) .map((chain, index) => ( = ({ button={true} detail={false} disabled={ - isMagicWallet ? false : chain.type === "evm" ? false : true + isExternalWallet && chain.type !== "evm" ? true : false } style={{ "--background": "transparent" }} onClick={() => dismiss(chain.id, "getAddressFromNetwork")} diff --git a/src/components/base/WalletBaseContainer.tsx b/src/components/base/WalletBaseContainer.tsx index c3d42b97..edd71e90 100644 --- a/src/components/base/WalletBaseContainer.tsx +++ b/src/components/base/WalletBaseContainer.tsx @@ -16,6 +16,7 @@ import { IAsset } from "@/interfaces/asset.interface"; import { DepositContainer } from "@/containers/DepositContainer"; import { HookOverlayOptions } from "@ionic/react/dist/types/hooks/HookOverlayOptions"; import { TransferContainer } from "../../containers/TransferContainer"; +import { TxInterface } from "@/interfaces/tx.interface"; const BuyWithFiatContainer = lazy(() => import("@/containers/BuyWithFiat")); export type SelectedTokenDetail = { @@ -31,7 +32,7 @@ export type SelectedTokenDetail = { export interface WalletComponentProps { modalOpts: Omit & HookOverlayOptions; - walletAddress?: string; + walletAddress?: string|null; assets: IAsset[]; loadAssets: (force?: boolean) => Promise; } @@ -45,6 +46,7 @@ export interface WalletComponentState { isTransferModalOpen: boolean; isDepositModalOpen: boolean; isBuyWithFiatModalOpen: boolean; + currentView: 'tokens' | 'txs' | 'nfts' } export default class WalletBaseComponent extends React.Component< @@ -62,6 +64,7 @@ export default class WalletBaseComponent extends React.Component< isTransferModalOpen: false, isDepositModalOpen: false, isBuyWithFiatModalOpen: false, + currentView: 'tokens' }; } diff --git a/src/components/mobile/ActionNavButtons.tsx b/src/components/mobile/ActionNavButtons.tsx index 9a2c8570..ce36e7f2 100644 --- a/src/components/mobile/ActionNavButtons.tsx +++ b/src/components/mobile/ActionNavButtons.tsx @@ -81,7 +81,6 @@ export const MobileActionNavButtons = (props: { { setState({ isEarnModalOpen: true }); }} diff --git a/src/components/mobile/WalletAssetsList.tsx b/src/components/mobile/WalletAssetsList.tsx index bf933ff4..6a11e76c 100644 --- a/src/components/mobile/WalletAssetsList.tsx +++ b/src/components/mobile/WalletAssetsList.tsx @@ -30,8 +30,6 @@ export const WalletAssetsList = (props: { totalBalance, assetGroup, filterBy, handleTokenDetailClick, handleTransferClick, setIsSwapModalOpen } = props; - const { walletAddress, assets, isMagicWallet, loadAssets } = - Store.useState(getWeb3State); return ( <> diff --git a/src/components/ui/CheckIcon/CheckIcon.module.scss b/src/components/ui/CheckIcon/CheckIcon.module.scss new file mode 100644 index 00000000..056253a9 --- /dev/null +++ b/src/components/ui/CheckIcon/CheckIcon.module.scss @@ -0,0 +1,64 @@ +@keyframes outline { + from { + stroke-dasharray: 0, 345.576px; + } + to { + stroke-dasharray: 345.576px, 345.576px; + } +} +@keyframes circle { + from { + transform: scale(1); + } + to { + transform: scale(0); + } +} +@keyframes check { + from { + stroke-dasharray: 0, 75px; + } + to { + stroke-dasharray: 75px, 75px; + } +} +@keyframes check-group { + from { + transform: scale(1); + } + 50% { + transform: scale(1.09); + } + to { + transform: scale(1); + } +} + + +#check__group { + animation: 0.32s ease-in-out 1.03s check-group; + transform-origin: center; +} +#filled__circle {} + +#white__circle { + animation: 0.35s ease-in 0.35s forwards circle; + transform: none; + transform-origin: center; +} + +#outline__circle { + animation: 0.38s ease-in outline; + transform: rotate(0deg); + transform-origin: center; +} + +#check__icon { + animation: 0.34s cubic-bezier(0.65, 0, 1, 1) 0.8s forwards check; + stroke-dasharray: 0, 75px; + stroke-linecap: round; + stroke-linejoin: round; +} + + + diff --git a/src/components/ui/CheckIcon/CheckIcon.tsx b/src/components/ui/CheckIcon/CheckIcon.tsx new file mode 100644 index 00000000..a427dc6d --- /dev/null +++ b/src/components/ui/CheckIcon/CheckIcon.tsx @@ -0,0 +1,58 @@ +import { IonText } from '@ionic/react'; +import styles from './CheckIcon.module.scss'; + +export const CheckIcon = (props: {message?: string}) => { + return (<> + + + + + + + + + {props.message && (<> +

+ +

{props.message}

+
+
+ )} + ) +} \ No newline at end of file diff --git a/src/components/ui/ConnectButton.tsx b/src/components/ui/ConnectButton.tsx new file mode 100644 index 00000000..fe4e8ba8 --- /dev/null +++ b/src/components/ui/ConnectButton.tsx @@ -0,0 +1,48 @@ +import Store from "@/store"; +import { IonButton, IonSkeletonText } from "@ionic/react"; +import { getWeb3State } from "@/store/selectors"; +import { useRef } from "react"; + +const ConnectButton = (props: { + style?: any; + size?: "small" | "default" | "large"; + expand?: "full" | "block"; +}) => { + const { style = {}, size = "default", expand = undefined } = props; + // Get the initializeWeb3 function from the Web3 context + const { connectWallet, walletAddress } = Store.useState(getWeb3State); + const buttonRef = useRef(null); + const isDisabled = Boolean(walletAddress); + + // Render the button component with the click event handler + return ( + { + if (!buttonRef.current) { + throw new Error("Element not connected to DOM"); + } + buttonRef.current.disabled = true; + try { + await connectWallet(); + } catch (err: any) { + buttonRef.current.disabled = false; + console.log("[ERROR] {ConnectButton} handleConnect(): ", err); + } + }} + > + {walletAddress === undefined ? ( + + ) : ( + "Connect" + )} + + ); +}; + +export default ConnectButton; diff --git a/src/components/ui/CrossIcon/CrossIcon.module.scss b/src/components/ui/CrossIcon/CrossIcon.module.scss new file mode 100644 index 00000000..3d62738e --- /dev/null +++ b/src/components/ui/CrossIcon/CrossIcon.module.scss @@ -0,0 +1,46 @@ + +@keyframes stroke { + 100% { + stroke-dashoffset: 0; + } +} + +.cross__svg { + border-radius: 50%; + display: block; + height: 111px; + margin: 1rem auto; + stroke-width: 4; + width: 111px; +} + +.cross__circle { + animation: 0.6s ease 0s normal forwards 1 running stroke; + fill: none; + margin: 0 auto; + stroke: var(--ion-color-danger); + stroke-dasharray: 166; + stroke-dashoffset: 166; + stroke-width: 3; +} + +.cross__path { + stroke: var(--ion-color-danger); + stroke-dasharray: 48; + stroke-dashoffset: 48; + transform-origin: 50% 50% 0; +} + +.cross__path__right { + animation: 0.3s ease 0.8s normal forwards 1 running stroke; +} + +.cross__path__left { + animation: 1s ease 0.8s normal forwards 1 running stroke; +} + +.cross__message { + color: var(--ion-color-danger); + font-size: 0.8rem; + text-align: center; +} \ No newline at end of file diff --git a/src/components/ui/CrossIcon/CrossIcon.tsx b/src/components/ui/CrossIcon/CrossIcon.tsx new file mode 100644 index 00000000..61a57f30 --- /dev/null +++ b/src/components/ui/CrossIcon/CrossIcon.tsx @@ -0,0 +1,26 @@ +import styles from './CrossIcon.module.scss'; + +export const CrossIcon = (props: {message: string}) => { + return ( + <> + + + + + +

{props.message}

+ + ); +}; diff --git a/src/components/ui/InputAssetWithDropDown/InputAssetWithDropDown.tsx b/src/components/ui/InputAssetWithDropDown/InputAssetWithDropDown.tsx new file mode 100644 index 00000000..fe173fa1 --- /dev/null +++ b/src/components/ui/InputAssetWithDropDown/InputAssetWithDropDown.tsx @@ -0,0 +1,195 @@ +import { SymbolIcon } from "@/components/SymbolIcon"; +import { CHAIN_AVAILABLES, CHAIN_DEFAULT } from "@/constants/chains"; +import { IAsset } from "@/interfaces/asset.interface"; +import { getReadableAmount } from "@/utils/getReadableAmount"; +import { InputInputEventDetail, IonInputCustomEvent } from "@ionic/core"; +import { IonCol, IonGrid, IonIcon, IonInput, IonItem, IonLabel, IonList, IonListHeader, IonModal, IonRow, IonText } from "@ionic/react"; +import { chevronDown } from "ionicons/icons"; +import { Dispatch, SetStateAction, useEffect, useMemo, useState } from "react"; + +const isNumberKey = (evt: React.KeyboardEvent) => { + var charCode = evt.which ? evt.which : evt.keyCode; + return !(charCode > 31 && (charCode < 48 || charCode > 57)); +}; + +export const InputAssetWithDropDown = (props: { + assets: IAsset[]; + inputFromAmount: number; + setInputFromAmount: Dispatch>; + setInputFromAsset: Dispatch>; +}) => { + const { assets, setInputFromAmount, inputFromAmount, setInputFromAsset } = + props; + const [selectedAsset, setSelectedAsset] = useState(assets[0]); + const [popoverOpen, setPopoverOpen] = useState(false); + + useEffect(() => { + if (selectedAsset) { + setInputFromAsset(selectedAsset); + } + return () => {}; + }); + + const maxBalance = useMemo(() => { + // round to the lower tenth + return Math.floor(selectedAsset?.balance * 10000) / 10000; + }, [selectedAsset]); + + const handleInputChange = async ( + e: IonInputCustomEvent + ) => { + let value = Number((e.target as any).value || 0); + setInputFromAmount(() => value); + }; + + return ( + <> + + + +
{ + $event.stopPropagation(); + setPopoverOpen(() => true); + }} + > +
+ + +
+ +
+ +

{selectedAsset?.symbol}

+
+ { + $event.stopPropagation(); + setInputFromAmount(() => selectedAsset?.balance || 0); + }} + > + Max: {maxBalance} + +
+
+
+ +
+ ["e", "E", "+", "-"].includes(evt.key) && evt.preventDefault()} + onIonInput={(e) => handleInputChange(e)} + /> +
+
+
+
+ + setPopoverOpen(false)} + className="modalAlert" + > + + +

Available assets

+
+
+ + {assets + .filter((a) => a.balance > 0) + .map((asset, index) => ( + { + setPopoverOpen(() => false); + setSelectedAsset(asset); + setInputFromAsset(asset); + setInputFromAmount(() => 0); + console.log('[INFO] selectedAsset: ',{ selectedAsset }); + }} + > +
+ +
+ + {asset.symbol} +
+ + + { + CHAIN_AVAILABLES.find((c) => c.id === asset?.chain?.id) + ?.name + } + + +
+
+ {Number(asset?.balance).toFixed(6)} +
+ + + {getReadableAmount( + +asset?.balance, + Number(asset?.priceUsd), + "No deposit" + )} + + +
+
+ ))} +
+
+ + ); +}; \ No newline at end of file diff --git a/src/components/ui/LightChart.tsx b/src/components/ui/LightChart.tsx index d2ab6481..40160be1 100644 --- a/src/components/ui/LightChart.tsx +++ b/src/components/ui/LightChart.tsx @@ -1,20 +1,80 @@ -import { ColorType, IChartApi, createChart } from 'lightweight-charts'; -import { useEffect, useRef } from 'react'; - -// Generated by https://quicktype.io +import { IonButton, IonButtons } from "@ionic/react"; +import { + ColorType, + IChartApi, + ISeriesApi, + LineStyle, + LineType, + SeriesMarker, + Time, + createChart, +} from "lightweight-charts"; +import { useEffect, useRef, useState } from "react"; export interface DataItem { - time: string; + time: string|number; value: number; } +type SerieIntervalType = "1D" | "1W" | "1M" | "1Y"; +export type SeriesData = Map; +export type SeriesMarkerData = Map[]>; -export default function LightChart(props: { data: DataItem[], minHeight?: number }) { +export default function LightChart(props: { + data?: DataItem[]; + seriesData?: SeriesData; + markers?: SeriesMarkerData; + interval?: "1D"|"1W"|"1M"|"1Y"; + handleChartEvent?: ({ + action, + payload, + }: { + action: string; + payload: unknown; + }) => any; + minHeight?: number; +}) { + const { seriesData, data, interval, markers, handleChartEvent } = props; const chartContainerRef = useRef(null); - const chartRef = useRef(null); - + const chartRef = useRef(null); + const [chartSeries, setChartSeries] = useState< + ISeriesApi<"Line" | "Area", any> + >(null as any); + const [currentInterval, setcurrentInterval] = + useState(interval || "1M"); + + const setChartInterval = (interval: SerieIntervalType) => { + if (!chartSeries) throw new Error("chartSeries not initialized"); + const value = data ? data : seriesData?.get(interval); + if (!value) + throw new Error("Serie value not found for this interval: " + interval); + if (!chartRef.current) throw new Error("Chart not initialized"); + // set value & options + chartSeries.setData(value); + chartSeries.applyOptions({ + topColor: "rgba(0,144,255, 0.618)", + lineStyle: LineStyle.Solid, + lineType: LineType.Simple, + bottomColor: "rgba(0,144,255, 0.01)", + lineColor: "rgba(0,144,255, 1)", + lineWidth: 3, + baseLineWidth: 3, + }); + // markers + const markerValue = markers?.get(interval); + if (chartSeries && markerValue) { + + chartSeries.setMarkers(markerValue); + } + chartRef.current.timeScale().fitContent(); + setcurrentInterval(interval); + }; useEffect(() => { - if (chartContainerRef.current && props.data.length > 0) { + if ( + chartContainerRef.current && + ((data?.length || 0) > 0 || (seriesData?.size || 0) > 0) + ) { + console.log(data); // remove the chart if it already exists if (chartRef.current) { chartRef.current.remove(); @@ -23,14 +83,14 @@ export default function LightChart(props: { data: DataItem[], minHeight?: number // create a new chart const chart = createChart(chartContainerRef.current, { - width: window.innerWidth||400, + width: window.innerWidth || 400, height: props?.minHeight || 250, layout: { background: { - type: ColorType.Solid, - color: 'transparent', - }, - textColor: '#d1d4dc', + type: ColorType.Solid, + color: "transparent", + }, + textColor: "#d1d4dc", }, grid: { vertLines: { @@ -38,18 +98,15 @@ export default function LightChart(props: { data: DataItem[], minHeight?: number }, horzLines: { // color: 'rgba(42, 46, 57, 0.05)', - visible: false + visible: false, }, }, rightPriceScale: { borderVisible: false, - visible: true, + visible: false, }, timeScale: { borderVisible: false, - fixLeftEdge: true, - rightBarStaysOnScroll: true, - fixRightEdge: true, }, crosshair: { horzLine: { @@ -58,37 +115,75 @@ export default function LightChart(props: { data: DataItem[], minHeight?: number }, }, autoSize: true, - - }); - // const lineSeries = chart.addLineSeries(); - // lineSeries.setData(props.data); - - const series = chart.addAreaSeries({ - topColor: 'rgba(0,144,255, 0.618)', - bottomColor: 'rgba(0,144,255, 0.01)', - lineColor: 'rgba(0,144,255, 1)', - lineWidth: 3, + handleScroll: false, + handleScale: false, }); - series.setData(props.data); - - const now = new Date(); - chart.timeScale().setVisibleRange({ - from: new Date(`${now.getFullYear()}-${(now.getMonth()+1) < 10 ? `0${(now.getMonth() + 1)}` : now.getMonth()+1}-${now.getDate()-7}`).getTime() / 1000 as any, - to: now.getTime() / 1000 as any, - }); - // store the chart instance in the ref chartRef.current = chart; + // subscribe to event mouse move + if (handleChartEvent) { + chart.subscribeCrosshairMove((param) => { + if ( + param.point === undefined || + !param.time || + param.point.x < 0 || + param.point.y < 0 + ) { + handleChartEvent({ action: "leave", payload: undefined }); + } else { + const dateStr = new Date(param.time.toString()).toDateString(); + const data = param.seriesData.get(series) as DataItem; + const price = data.value; + handleChartEvent({ action: "move", payload: { dateStr, price } }); + // console.log(); + } + }); + } + + const series = chart.addAreaSeries(); + setChartSeries(series); + + // if (markers && series) { + + // series.setMarkers(markers); + // } } // clean up the chart when the component is unmounted return () => { if (chartRef.current) { + // chartRef.current.unsubscribeCrosshairMove(); chartRef.current.remove(); chartRef.current = null; } }; - }, [props.data]); + }, [data, seriesData]); - return
; -}; + useEffect(() => { + if (!chartSeries || !chartRef.current) return () => {}; + setChartInterval(interval||currentInterval); + chartRef.current?.timeScale().fitContent(); + }, [chartSeries, chartRef.current, interval || currentInterval]); + return ( + <> +
+ {(seriesData?.size || 0) > 1 && !interval? ( +
+ + {["1D", "1W", "1M", "1Y"].map((interval: any, index: number) => ( + setChartInterval(interval)} + > + {interval} + + ))} + +
+ ) : null} + + ); +} diff --git a/src/components/ui/MenuSetting.tsx b/src/components/ui/MenuSetting.tsx index 462e41d1..d2950ba5 100644 --- a/src/components/ui/MenuSetting.tsx +++ b/src/components/ui/MenuSetting.tsx @@ -18,14 +18,15 @@ import { useIonRouter, IonPopover, } from "@ionic/react"; -import { close, open, openOutline, radioButtonOn, ribbonOutline } from "ionicons/icons"; +import { close, openOutline, saveOutline, ribbonOutline } from "ionicons/icons"; import { getAddressPoints } from "@/servcies/datas.service"; import Store from "@/store"; import { getWeb3State } from "@/store/selectors"; -import ConnectButton from "../ConnectButton"; +import ConnectButton from "./ConnectButton"; import DisconnectButton from "../DisconnectButton"; import { ToggleLightmode } from "./ToogleLightmode"; import { PointsPopover } from "../PointsPopover"; +import web3Connector from "@/servcies/firebase-web3-connect"; interface MenuSettingsProps { dismiss: ()=> void @@ -169,20 +170,27 @@ export const MenuSettings: React.FC = ({dismiss}) => { > -

Feedback

+

Backup Wallet

- Send your feedback + + Download wallet backup +

- { - window.open('https://forms.gle/Dx25eG66TMxyFfh8A', '_blank') - }}> - + { + await web3Connector.backupWallet(); + }} + > + - + = ({dismiss}) => { > -

Gouvernance

+

Feedback

- Snapshot + Send your feedback

{ - window.open('https://snapshot.org/#/hexaonelabs.eth', '_blank') + window.open('https://forms.gle/Dx25eG66TMxyFfh8A', '_blank') }}> @@ -211,16 +219,16 @@ export const MenuSettings: React.FC = ({dismiss}) => { > -

Source code

+

Gouvernance

- Github + Snapshot

{ - window.open('https://github.com/hexaonelabs', '_blank') + window.open('https://snapshot.org/#/hexaonelabs.eth', '_blank') }}> @@ -232,20 +240,20 @@ export const MenuSettings: React.FC = ({dismiss}) => { > -

Terms & Conditions

+

Source code

- PDF + Github

{ - window.open('https://hexa-lite.io/terms-conditions.pdf', '_blank') + window.open('https://github.com/hexaonelabs', '_blank') }}> -
+ = ({dismiss}) => { > -

Wallet key export

-
+

Terms & Conditions

+

- Wallet Magik + PDF

{ - window.open('https://wallet.magic.link/', '_blank') + window.open('https://hexa-lite.io/terms-conditions.pdf', '_blank') }}> -
+ { + const { token, allocationRatioInPercent } = props; + + return ( + + +
+
+ + c.id === token.chain?.id)?.logo + } + alt={token.symbol} + onError={(event) => { + ( + event.target as any + ).src = `https://images.placeholders.dev/?width=42&height=42&text=${token.symbol}&bgColor=%23000000&textColor=%23182449`; + }} + /> + + +

+ {token.chain?.name} +
+ network +

+
+
+ {allocationRatioInPercent && ( + + + {allocationRatioInPercent}% + + + )} +
+
+ +

+ +
+ + + {numberFormat.format(token.balance)} {token.symbol} + + +

+
+
+
+
+ ); +}; diff --git a/src/components/ui/NftsList/NftsList.tsx b/src/components/ui/NftsList/NftsList.tsx new file mode 100644 index 00000000..5d44394e --- /dev/null +++ b/src/components/ui/NftsList/NftsList.tsx @@ -0,0 +1,110 @@ +import Store from "@/store"; +import { getWeb3State } from "@/store/selectors"; +import { + IonButton, + IonCard, + IonCardContent, + IonCardHeader, + IonCardSubtitle, + IonCardTitle, + IonChip, + IonCol, + IonGrid, + IonIcon, + IonImg, + IonInfiniteScroll, + IonLabel, + IonRow, + IonText, +} from "@ionic/react"; +import { imageOutline, ticket } from "ionicons/icons"; +import { useEffect, useState } from "react"; +import { WalletTxEntitySkeleton } from "../WalletTxEntitySkeleton"; + +export const NftsList = (props: { filterBy?: string | null }) => { + const { nfts } = Store.useState(getWeb3State); + const [maxItemCount, setMaxItemCount] = useState(9); + const [] = useState(); + + const data = nfts; + // preload img + useEffect(() => {}); + + return ( + <> + + {nfts.length > 0 ? ( + <> + + {data.slice(0, maxItemCount).map((nft, i) => ( + + + {nft.imageUrl && nft.imageUrl.length > 0 ? ( + { + console.log("yy", $event.target); + }} + /> + ) : ( + + )} + + {nft.name || "unknown"} + + {nft.collectionName || "unknown"} + + + + {nft.chain?.name} + + + + ))} + + {maxItemCount < data.length + ? ( + <> + + + setMaxItemCount(maxItemCount + 9)}> + load more + + + + + ) + : null} + + ) : ( + <> + + +

No NFTs found.

+
+
+ + )} +
+ + ); +}; diff --git a/src/components/ui/TokenDetailDescription.tsx b/src/components/ui/TokenDetailDescription.tsx index 1b28aec4..e94db235 100644 --- a/src/components/ui/TokenDetailDescription.tsx +++ b/src/components/ui/TokenDetailDescription.tsx @@ -1,4 +1,4 @@ -import { TokenInfo } from "@/utils/getTokenInfo"; +import { TokenInfo } from "@/servcies/coingecko.service"; import { IonChip, IonLabel, IonListHeader, IonText } from "@ionic/react"; export function TokenDetailDescription(props: { tokenInfo: TokenInfo }) { diff --git a/src/components/ui/TokenDetailMarketData.tsx b/src/components/ui/TokenDetailMarketData.tsx index dc7cecd0..02279485 100644 --- a/src/components/ui/TokenDetailMarketData.tsx +++ b/src/components/ui/TokenDetailMarketData.tsx @@ -1,5 +1,5 @@ import { currencyFormat } from "@/utils/currencyFormat"; -import { TokenInfo } from "@/utils/getTokenInfo"; +import { TokenInfo } from '@/servcies/coingecko.service'; import { numberFormat } from "@/utils/numberFormat"; import { IonItem, diff --git a/src/components/ui/ToogleLightmode.tsx b/src/components/ui/ToogleLightmode.tsx index d620a6a2..d1277b3f 100644 --- a/src/components/ui/ToogleLightmode.tsx +++ b/src/components/ui/ToogleLightmode.tsx @@ -23,6 +23,7 @@ export const ToggleLightmode = () => { ); } \ No newline at end of file diff --git a/src/components/ui/TsxList/TxsList.tsx b/src/components/ui/TsxList/TxsList.tsx new file mode 100644 index 00000000..692b94e9 --- /dev/null +++ b/src/components/ui/TsxList/TxsList.tsx @@ -0,0 +1,98 @@ +import Store from "@/store"; +import { getWeb3State } from "@/store/selectors"; +import { IonCol, IonGrid, IonInfiniteScroll, IonLabel, IonRow, IonText } from "@ionic/react"; +import { useState } from "react"; +import { WalletTxEntity } from "../WalletTxEntity"; +import { LoadingPoolGroupsSkeleton } from "@/components/LoadingPoolGroupsSkeleton"; +import { WalletTxEntitySkeleton } from "../WalletTxEntitySkeleton"; + +export const TxsList = (props: { + filterBy?: string|null; +}) => { + const { txs } = Store.useState(getWeb3State); + const [maxItemCount, setMaxItemCount] = useState(10); + const data = txs + .filter((tx)=> { + if (!props.filterBy) { + return true; + } + // check transfers + if (tx.attributes.transfers.find( + t => t.fungible_info?.symbol.toLocaleLowerCase() === props.filterBy?.toLocaleLowerCase()) + ) { + return true; + } + // check approvals + if (tx.attributes.approvals.find( + t => t.fungible_info?.symbol.toLocaleLowerCase() === props.filterBy?.toLocaleLowerCase()) + ) { + return true; + } + return false + }); + + return ( + <> + + + + + Transaction Type + + + + + + Details + + + + + + Date/Time + + + + + + {data.length <= 0 + ? (
+ + no existing transaction + +
) + : data + .slice(0, maxItemCount) + .map((tx, i) => ( + + ))} + { + console.log(maxItemCount, data.length) + if (maxItemCount >= data.length) { + ev.target.disabled = true; + ev.target.complete(); + return; + } + setMaxItemCount((s) => s + 10); + setTimeout(() => ev.target.complete(), 150); + }} + > +
+ 10 ? 5 : txs.length - maxItemCount} /> +
+
+ + ); +}; diff --git a/src/components/ui/WalletAssetEntity.tsx b/src/components/ui/WalletAssetEntity.tsx index 2d55fe90..8caad57a 100644 --- a/src/components/ui/WalletAssetEntity.tsx +++ b/src/components/ui/WalletAssetEntity.tsx @@ -17,9 +17,10 @@ import { Currency } from "./Currency"; export function WalletAssetEntity(props: { asset: SelectedTokenDetail; + allocationRatioInPercent: number; setSelectedTokenDetail: (asset: SelectedTokenDetail) => void; }) { - const { asset, setSelectedTokenDetail } = props; + const { asset, setSelectedTokenDetail, allocationRatioInPercent } = props; return ( ) : ''} - + + +

+ {allocationRatioInPercent}% +

+
+
+

{currencyFormat.format(asset.priceUsd)}

- +

{numberFormat.format(asset.balance)}

- + -

+

diff --git a/src/components/ui/WalletTxEntity.tsx b/src/components/ui/WalletTxEntity.tsx new file mode 100644 index 00000000..0e4a6994 --- /dev/null +++ b/src/components/ui/WalletTxEntity.tsx @@ -0,0 +1,241 @@ +import { + IonAvatar, + IonBadge, + IonButton, + IonChip, + IonCol, + IonGrid, + IonIcon, + IonLabel, + IonRow, + IonText, + IonThumbnail, +} from "@ionic/react"; +import { Transfer, TxInterface } from "@/interfaces/tx.interface"; +import { CHAIN_AVAILABLES } from "@/constants/chains"; +import { useStores } from "pullstate"; +import Store from "@/store"; +import { getWeb3State } from "@/store/selectors"; +import { getSplitedAddress } from "@/utils/getSplitedAddress"; +import { useMemo } from "react"; +import { arrowDown, arrowUp, document, lockOpen, repeat } from "ionicons/icons"; +import { currencyFormat } from "@/utils/currencyFormat"; + +export function WalletTxEntity(props: { tx: TxInterface }) { + const { tx } = props; + const { walletAddress } = Store.useState(getWeb3State); + + let icon; + let color = 'primary'; + switch (true) { + case tx.attributes.operation_type === 'trade': + icon = repeat; + break; + case tx.attributes.operation_type === 'deposit': + case tx.attributes.operation_type === 'receive': + color = 'success'; + icon = arrowDown; + break; + case tx.attributes.operation_type === 'approve': + icon = lockOpen; + break + case tx.attributes.operation_type === 'send': + case tx.attributes.operation_type === 'withdraw': + color = 'warning'; + icon = arrowUp; + break; + case tx.attributes.operation_type === 'execute': + icon = document; + break; + case tx.attributes.operation_type === 'mint': + color = 'success' + icon = document; + break; + default: + icon = document; + color = 'primary'; + break; + } + + const action1 = tx.attributes.transfers.length > 0 + ? tx.attributes.transfers[0] + : tx.attributes.approvals[0]; + const action2 = tx.attributes.transfers.length > 0 + ? tx.attributes.transfers[1] + : undefined; + + return ( + { + // setDisplayTxDetail(asset); + console.log(tx) + }} + style={{ + cursor: "default", + borderBottom: "solid 1px rgba(var(--ion-color-primary-rgb), 0.2)", + }} + > + + +

+ + + c.value === tx.relationships.chain.data.id)?.logo + } + alt={tx.relationships.chain.data.id} + style={{ transform: "scale(1.01)" }} + onError={(event) => { + ( + event.target as any + ).src = `https://images.placeholders.dev/?width=42&height=42&text=${tx.relationships.chain.data.id}&bgColor=%23cccccc&textColor=%23182449`; + }} + /> + +
+ {/* +

+ {tx.attributes.operation_type} +

+
*/} + + {tx.attributes.operation_type} + + +
+ + +
+ + {tx.relationships.chain.data.id} { + ( + event.target as any + ).src = `https://images.placeholders.dev/?width=42&height=42&text=${action1.fungible_info.symbol}&bgColor=%23cccccc&textColor=%23182449`; + }} + /> + + + {(tx.attributes.operation_type === 'trade' || tx.attributes.operation_type === 'receive' || tx.attributes.operation_type === 'approve'|| tx.attributes.operation_type === 'deposit') && ( +

+ {tx.attributes.operation_type !== 'approve' && ( + (action1 as Transfer).direction === 'in' ? '+ ' : '- ' + )} + {action1.quantity.float.toFixed(3) + ' '} + {action1.fungible_info.symbol} + {tx.attributes.operation_type !== 'approve' && ( + +
{currencyFormat.format((action1 as Transfer).value)} +
+ )} +

+ )} +
+
+ { tx.attributes.operation_type === 'trade' && action2 && ( +
+ + {tx.relationships.chain.data.id} { + ( + event.target as any + ).src = `https://images.placeholders.dev/?width=42&height=42&text=${action2.fungible_info.symbol}&bgColor=%23cccccc&textColor=%23182449`; + }} + /> + + +

+ {(action2 as Transfer).direction === 'in' ? '+ ' : '- '} + {action2.quantity.float.toFixed(3) + ' '} + {action2.fungible_info.symbol} + +
{currencyFormat.format((action2 as Transfer).value)} +
+

+
+
+ )} +
+ + +
+ {tx.attributes.application_metadata?.icon?.url !== undefined && ( + + {tx.attributes.application_metadata.name} + + )} + {tx.attributes.application_metadata?.icon?.url === undefined && tx?.attributes?.application_metadata?.contract_address && ( + + + {getSplitedAddress(tx.attributes.application_metadata.contract_address)} + + + )} + + {tx.attributes.application_metadata?.name} + +
+
+ + + +

+ + {new Date(tx.attributes.mined_at).toLocaleDateString()}
+ {new Date(tx.attributes.mined_at).toLocaleTimeString()} +
+

+
+
+ +
+
+ ); +} diff --git a/src/components/ui/WalletTxEntitySkeleton.tsx b/src/components/ui/WalletTxEntitySkeleton.tsx new file mode 100644 index 00000000..473b52d4 --- /dev/null +++ b/src/components/ui/WalletTxEntitySkeleton.tsx @@ -0,0 +1,100 @@ +import React from "react"; +import { + IonGrid, + IonRow, + IonCol, + IonItem, + IonAvatar, + IonSkeletonText, + IonLabel, + IonText, +} from "@ionic/react"; + +interface Props { + itemCounts?: number; +} + +export const WalletTxEntitySkeleton: React.FC = ({ itemCounts }) => { + return ( + + + + {/* Skeleton item */} + {Array.from({ length: itemCounts ? itemCounts : 5 }).map( + (_, index) => ( + + + + +
+ + + +
+ +
+ + +
+ + + + +
+
+ + +
+ +
+
+ + +
+ +
+
+
+
+
+ ) + )} +
+
+
+ ); +}; diff --git a/src/constants/chains.ts b/src/constants/chains.ts index 9f672ff8..132eb3af 100644 --- a/src/constants/chains.ts +++ b/src/constants/chains.ts @@ -2,7 +2,7 @@ import { ChainId } from "@aave/contract-helpers"; // Define Network enum that represents supported networks export enum NETWORK { - bitcoin = 1000, + bitcoin = 128, mainnet = 1, polygon = 137, avalanche = 43114, @@ -14,8 +14,15 @@ export enum NETWORK { solana = 1399811149, base = 8453, scroll = 534352, + /** + * HERE ADD TESTNETS + */ + sepolia = 11155111, + goerli = 5, } +export type chainType = 'evm' | 'cosmos' | 'bitcoin' | 'solana' | 'polkadot'; + export interface IChain { id: number; value: string; @@ -24,219 +31,221 @@ export interface IChain { nativeSymbol?: string; logo?: string; testnet?: boolean; - type: 'evm'|'cosmos'|'bitcoin'|'solana'|'polkadot'; -}; + type: chainType; +} -const CHAINS_DISABLED = [ - NETWORK.cosmos, - // NETWORK.avalanche, - NETWORK.polkadot, -] +const CHAINS_DISABLED = [NETWORK.cosmos, NETWORK.polkadot, NETWORK.avalanche]; -export const CHAIN_AVAILABLES: IChain[] = [ +export const ALL_CHAINS: IChain[] = [ { id: NETWORK.mainnet, - value: 'eth', - name: 'Ethereum', - nativeSymbol: 'ETH', - logo: '/assets/cryptocurrency-icons/eth.svg', - rpcUrl: [ - {primary: false, url: 'https://eth-mainnet-public.unifra.io'}, - {primary: true, url: "https://rpc.ankr.com/eth"} - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "eth", + name: "Ethereum", + nativeSymbol: "ETH", + logo: "/assets/cryptocurrency-icons/eth.svg", + rpcUrl: + [ + { primary: false, url: "https://eth-mainnet-public.unifra.io" }, + { primary: true, url: "https://rpc.ankr.com/eth" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", }, { id: NETWORK.binancesmartchain, - value: 'bsc', - name: 'Binance smart chain', - nativeSymbol: 'BNB', - logo: '/assets/cryptocurrency-icons/bnb.svg', - rpcUrl: [ - {primary: false, url: 'https://rpc.ankr.com/bsc'}, - {primary: true, url: "https://binance.llamarpc.com"} - ].find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "bsc", + name: "Binance smart chain", + nativeSymbol: "BNB", + logo: "/assets/cryptocurrency-icons/bnb.svg", + rpcUrl: + [ + { primary: false, url: "https://rpc.ankr.com/bsc" }, + { primary: true, url: "https://1rpc.io/bnb" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", }, - // { - // id: 250, - // value: 'fantom', - // name: 'Fantom', - // nativeSymbol: 'FTM', - // logo: '/assets/cryptocurrency-icons/eth.svg' - // }, - // { - // id: 43114, - // value: 'avalanche', - // name: 'Avalanche', - // nativeSymbol: 'AVAX' - // }, { id: NETWORK.polygon, - value: 'polygon', - name: 'Polygon', - nativeSymbol: 'MATIC', - logo: '/assets/cryptocurrency-icons/matic.svg', - rpcUrl: [ - {primary: false, url: 'https://polygon-rpc.com'}, - {primary: true, url: "https://rpc.ankr.com/polygon"} - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "polygon", + name: "Polygon", + nativeSymbol: "MATIC", + logo: "/assets/cryptocurrency-icons/matic.svg", + rpcUrl: + [ + { primary: false, url: "https://polygon-rpc.com" }, + { primary: true, url: "https://rpc.ankr.com/polygon" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", }, { id: NETWORK.arbitrum, - value: 'arbitrum', - name: 'Arbitrum', - nativeSymbol: 'ARB', - logo: '/assets/icons/arb.svg', - rpcUrl: [ - {primary: true, url: 'https://arbitrum.llamarpc.com'}, - {primary: false, url: "https://rpc.ankr.com/arbitrum_one"} - ].find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "arbitrum", + name: "Arbitrum", + nativeSymbol: "ARB", + logo: "/assets/icons/arb.svg", + rpcUrl: + [ + { primary: true, url: "https://1rpc.io/arb" }, + { primary: false, url: "https://rpc.ankr.com/arbitrum_one" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", }, { id: NETWORK.optimism, - value: 'optimism', - name: 'Optimism', - nativeSymbol: 'OP', - logo: '/assets/icons/op.svg', - rpcUrl: [ - {primary: false, url:'https://mainnet.optimism.io'}, - {primary: true, url: "https://rpc.ankr.com/optimism"} - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "optimism", + name: "Optimism", + nativeSymbol: "OP", + logo: "/assets/icons/op.svg", + rpcUrl: + [ + { primary: false, url: "https://mainnet.optimism.io" }, + { primary: true, url: "https://rpc.ankr.com/optimism" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", }, { id: NETWORK.base, - value: 'base', - name: 'Base', - nativeSymbol: 'ETH', - logo: '/assets/icons/base.svg', - rpcUrl: [ - {primary: false, url: 'https://endpoints.omniatech.io/v1/base/mainnet/public'}, - {primary: true, url: "https://base.llamarpc.com"} - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "base", + name: "Base", + nativeSymbol: "ETH", + logo: "/assets/icons/base.svg", + rpcUrl: + [ + { + primary: false, + url: "https://endpoints.omniatech.io/v1/base/mainnet/public", + }, + { primary: true, url: "https://1rpc.io/base" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", }, { id: NETWORK.scroll, - value: 'scroll', - name: 'Scroll', - nativeSymbol: 'ETH', - logo: '/assets/icons/scroll.svg', - rpcUrl: [ - {primary: false, url: 'https://scroll-mainnet.public.blastapi.io'}, - {primary: true, url: "https://1rpc.io/scroll"} - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "scroll", + name: "Scroll", + nativeSymbol: "ETH", + logo: "/assets/icons/scroll.svg", + rpcUrl: + [ + { primary: false, url: "https://scroll-mainnet.public.blastapi.io" }, + { primary: true, url: "https://1rpc.io/scroll" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", }, { id: NETWORK.cosmos, - value: 'cosmos', - name: 'Cosmos', - nativeSymbol: 'ATOM', - logo: '/assets/cryptocurrency-icons/atom.svg', - rpcUrl: [ - {primary: true, url:'https://rpc.cosmos.network:26657'}, - {primary: false, url: "https://cosmos-rpc.publicnode.com:443"}, - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'cosmos', + value: "cosmos", + name: "Cosmos", + nativeSymbol: "ATOM", + logo: "/assets/cryptocurrency-icons/atom.svg", + rpcUrl: + [ + { primary: true, url: "https://rpc.cosmos.network:26657" }, + { primary: false, url: "https://cosmos-rpc.publicnode.com:443" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "cosmos", }, { id: NETWORK.avalanche, - value: 'avalanche', - name: 'Avalanche', - nativeSymbol: 'AVAX', - logo: '/assets/cryptocurrency-icons/avax.svg', - rpcUrl: [ - {primary: false, url:'https://avalanche-c-chain.publicnode.com'}, - {primary: true, url: "https://rpc.ankr.com/avalanche"} - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'evm', + value: "avalanche", + name: "Avalanche", + nativeSymbol: "AVAX", + logo: "/assets/cryptocurrency-icons/avax.svg", + rpcUrl: + [ + { primary: false, url: "https://avalanche-c-chain.publicnode.com" }, + { primary: true, url: "https://rpc.ankr.com/avalanche" }, + ].find((rpc) => rpc.primary)?.url || "", + type: "evm", + }, + { + id: NETWORK.solana, + value: "solana", + name: "Solana", + nativeSymbol: "SOL", + logo: "/assets/cryptocurrency-icons/sol.svg", + rpcUrl: + [{ primary: true, url: "https://api.devnet.solana.com" }].find( + (rpc) => rpc.primary + )?.url || "", + type: "solana", }, - // testnets - // { - // id: 5, - // value: 'eth_goerli', - // name: 'Goerli', - // testnet: true, - // rpcUrl: "https://rpc.ankr.com/eth_goerli", - // }, - // { - // id: 80001, - // value: 'polygon_mumbai', - // name: 'mumbai', - // testnet: true, - // rpcUrl: "https://rpc.ankr.com/polygon_mumbai", - // }, - // { - // id: 43113, - // value: 'avalanche_fuji', - // name: 'Fuji', - // }, { id: NETWORK.bitcoin, - name: 'Bitcoin', - value: 'bitcoin', - nativeSymbol: 'BTC', - rpcUrl: [ - {url: '84-30-190-204.cable.dynamic.v4.ziggo.nl', primary: false}, - {url: 'https://rpc.coinsdo.net/btc', primary: true} - ].find( - (rpc) => rpc.primary - )?.url||'', - type: 'bitcoin', - logo: '/assets/cryptocurrency-icons/btc.svg', + name: "Bitcoin", + value: "bitcoin", + nativeSymbol: "BTC", + rpcUrl: + [ + { url: "84-30-190-204.cable.dynamic.v4.ziggo.nl", primary: false }, + { url: "https://rpc.coinsdo.net/btc", primary: true }, + ].find((rpc) => rpc.primary)?.url || "", + type: "bitcoin", + logo: "/assets/cryptocurrency-icons/btc.svg", + }, + + /** + * HERE ADD TESTNETS + */ + { + id: NETWORK.sepolia, + value: "sepolia", + name: "sepolia", + nativeSymbol: "ETH", + logo: "/assets/cryptocurrency-icons/eth.svg", + rpcUrl: "https://rpc.ankr.com/eth_sepolia", + type: "evm", + testnet: true, }, { - id: NETWORK.solana, - value: 'solana', - name: 'Solana', - nativeSymbol: 'SOL', - logo: '/assets/cryptocurrency-icons/sol.svg', - rpcUrl: [ - {primary: true, url: "https://api.devnet.solana.com"} - ] - .find( - (rpc) => rpc.primary - )?.url||'', - type: 'solana', + id: NETWORK.goerli, + value: "eth_goerli", + name: "Goerli", + testnet: true, + logo: "/assets/cryptocurrency-icons/eth.svg", + rpcUrl: "https://rpc.ankr.com/eth_goerli", + type: "evm", }, -] -.filter(c => !CHAINS_DISABLED.includes(c.id)) as IChain[]; + // { + // id: 43113, + // value: 'avalanche_fuji', + // name: 'Fuji', + // }, +]; -const NETWORK_DEFAULT = NETWORK.optimism; -export const CHAIN_DEFAULT = CHAIN_AVAILABLES.find(c => c.id === NETWORK_DEFAULT) || { - id: NETWORK_DEFAULT, name: 'default', value: 'default', rpcUrl: '', type: 'evm' +export const CHAIN_AVAILABLES: IChain[] = ALL_CHAINS +.filter((c) => + // PROD: only mainnets + // LOCAL: only testnets + // DEV: all + process.env.NEXT_PUBLIC_APP_IS_PROD === "true" + ? !c.testnet + : process.env.NEXT_PUBLIC_APP_IS_LOCAL === "true" + ? c.testnet + : true +) +.filter((c) => !CHAINS_DISABLED.includes(c.id)) as IChain[]; + +// PROD: optimism +// LOCAL: sepolia +// DEV: optimism +const NETWORK_DEFAULT = + process.env.NEXT_PUBLIC_APP_IS_PROD === "true" + ? NETWORK.optimism + : process.env.NEXT_PUBLIC_APP_IS_LOCAL === "false" + ? NETWORK.optimism + : NETWORK.sepolia; + +export const CHAIN_DEFAULT = CHAIN_AVAILABLES.find( + (c) => c.id === NETWORK_DEFAULT +) || { + id: NETWORK_DEFAULT, + name: "default", + value: "default", + rpcUrl: "", + type: "evm", }; export const minBaseTokenRemainingByNetwork: Record = { [ChainId.optimism]: "0.0001", [ChainId.arbitrum_one]: "0.0001", -}; \ No newline at end of file +}; diff --git a/src/containers/AuthWithLinkContainer.tsx b/src/containers/AuthWithLinkContainer.tsx new file mode 100644 index 00000000..da696203 --- /dev/null +++ b/src/containers/AuthWithLinkContainer.tsx @@ -0,0 +1,62 @@ +import web3Connector from "@/servcies/firebase-web3-connect"; +import { FirebaseWeb3Connect } from "@hexaonelabs/firebase-web3connect"; +import { IonContent, IonPage, useIonAlert, useIonLoading } from "@ionic/react"; +import { useEffect } from "react"; + +export default function AuthWithLinkContainer() { + const [presentLoader, dismissLoader] = useIonLoading(); + const [presentAlert] = useIonAlert(); + + useEffect(() => { + const connectFromEmailLink = FirebaseWeb3Connect.isConnectWithLink(); + if (!connectFromEmailLink) { + presentAlert({ + backdropDismiss: false, + header: "Error", + subHeader: "Authentication failed.", + message: + "Unable to access to this page without email connection link. Restart application & try again.", + }); + return () => {}; + } + // display loader + presentLoader({ + message: "Authenticate with email link...", + }) + // call connetWithLink() + .then(async () => await web3Connector.connectWithLink()) + // hide loader + .then(async () => await dismissLoader()) + // display success message + .then(async () => + await presentAlert({ + backdropDismiss: false, + header: "Authentication", + subHeader: "Success", + message: "Close this page & go back to the app.", + }) + ) + // handle error + .catch(async (error) => { + // dismiss loader + await dismissLoader(); + // display alert + await presentAlert({ + backdropDismiss: false, + header: "Error", + subHeader: "Authentication failed.", + message: + (error as Error)?.message || + "Unable to authenticate. Restart application & try again.", + buttons: ["ok"], + }); + }); + return () => {}; + }, []); + + return ( + + + + ); +} diff --git a/src/containers/BuyWithFiat.tsx b/src/containers/BuyWithFiat.tsx index 6a720aea..1d5956dc 100644 --- a/src/containers/BuyWithFiat.tsx +++ b/src/containers/BuyWithFiat.tsx @@ -22,7 +22,7 @@ export default function BuyWithFiat(props: { -

Buy

+ Buy
(null); const chain = @@ -49,7 +48,7 @@ export const DepositContainer = (props: { const [presentSelectNetwork, dismissSelectNetwork] = useIonModal(() => ( )); @@ -119,7 +118,7 @@ export const DepositContainer = (props: { -

Deposit

+ Deposit
void; +}) { + const { setIsMagicMigrationModalOpen } = props; + + return ( + <> + + + Hexa Lite Update + + + + + + +

+ We're thrilled to announce the launch of our new Wallet + solution! 🎉 +

+ +

+ 100% non-custodial, now you have complete + control over your Wallet & can manage all your financial assets securely. +

+

+ Migration Guide with 2 steps +

+ + + + 1: Magic Link + + +
    +
  • + Go to{" "} + + https://wallet.magic.link + + . +
  • +
  • Connect to your Wallet with usual method.
  • +
  • Click you avatar on top left of the wallet card.
  • +
  • + Click on Wallet secret phrase. +
  • +
  • Get you Wallet secret phrase.
  • +
+
+
+ + + + 2: Hexa Lite + + +
    +
  • + Back to HexaLite App, click Connect button & select Connect Wallet âž¡ Import secret seed{" "} + option. +
  • +
  • Use you secret seed & connect with Google.
  • +
  • + Backup your secret seed phrase to ensure that you never + loose your wallet access. +
  • +
+
+
+ + +

+ Congrate! +
+ Now you're ready to enjoy DeFi services with full non-custodial Wallet. +

+

+ Hexa Lite Team +

+
+
+
+
+
+ + + setIsMagicMigrationModalOpen(false)} + > + OK + + + + + ); +} diff --git a/src/containers/TransferContainer.tsx b/src/containers/TransferContainer.tsx index ef42af0c..a92e7aad 100644 --- a/src/containers/TransferContainer.tsx +++ b/src/containers/TransferContainer.tsx @@ -7,41 +7,29 @@ import { IonCol, IonContent, IonFab, - IonFabButton, + IonFooter, IonGrid, IonHeader, IonIcon, IonInput, - IonItem, IonLabel, - IonList, - IonListHeader, IonModal, - IonPopover, IonRow, - IonText, + IonSpinner, IonTitle, IonToolbar, + useIonAlert, } from "@ionic/react"; -import { chevronDown, close, scan } from "ionicons/icons"; -import { SymbolIcon } from "../components/SymbolIcon"; -import { - Dispatch, - SetStateAction, - useEffect, - useMemo, - useRef, - useState, -} from "react"; -import { CHAIN_AVAILABLES, CHAIN_DEFAULT } from "@/constants/chains"; -import { getReadableAmount } from "@/utils/getReadableAmount"; -import { InputInputEventDetail, IonInputCustomEvent } from "@ionic/core"; -import { Html5Qrcode } from "html5-qrcode"; -const isNumberKey = (evt: React.KeyboardEvent) => { - var charCode = evt.which ? evt.which : evt.keyCode; - return !(charCode > 31 && (charCode < 48 || charCode > 57)); -}; +import { useEffect, useRef, useState } from "react"; + +import { Html5Qrcode } from "html5-qrcode"; +import { CheckIcon } from "@/components/ui/CheckIcon/CheckIcon"; +import { CrossIcon } from "@/components/ui/CrossIcon/CrossIcon"; +import { close, scan } from "ionicons/icons"; +import { InputAssetWithDropDown } from "@/components/ui/InputAssetWithDropDown/InputAssetWithDropDown"; +import { WarningBox } from "@/components/WarningBox"; +import { OverlayEventDetail } from "@ionic/react/dist/types/components/react-component-lib/interfaces"; const scanQrCode = async ( html5QrcodeScanner: Html5Qrcode @@ -65,7 +53,8 @@ const scanQrCode = async ( // get prefered back camera if available or load the first one const cameraId = - cameras.find((c) => c.label.toLowerCase().includes("rear"))?.id || cameras[0].id; + cameras.find((c) => c.label.toLowerCase().includes("rear"))?.id || + cameras[0].id; console.log(">>", cameraId, cameras); // start scanner const config = { @@ -167,224 +156,9 @@ const ScanModal = (props: { ); }; -const InputAssetWithDropDown = (props: { - assets: IAsset[]; - inputFromAmount: number; - setInputFromAmount: Dispatch>; - setInputFromAsset: Dispatch>; -}) => { - const { assets, setInputFromAmount, inputFromAmount, setInputFromAsset } = - props; - const [errorMessage, setErrorMessage] = useState(); - const [selectedAsset, setSelectedAsset] = useState(assets[0]); - const [isLoading, setIsLoading] = useState(false); - const [popoverOpen, setPopoverOpen] = useState(false); - // const popover = useRef(null); - - useEffect(() => { - if (selectedAsset) { - setInputFromAsset(selectedAsset); - } - return () => {}; - }); - - const maxBalance = useMemo(() => { - // round to the lower tenth - return Math.floor(selectedAsset?.balance * 10000) / 10000; - }, [selectedAsset]); - - const handleInputChange = async ( - e: IonInputCustomEvent - ) => { - let value = Number((e.target as any).value || 0); - if (maxBalance && value > maxBalance) { - (e.target as any).value = maxBalance; - value = maxBalance; - } - if (value <= 0) { - setErrorMessage(() => undefined); - // UI loader control - setIsLoading(() => false); - return; - } - setInputFromAmount(() => value); - setErrorMessage(() => undefined); - // UI loader control - setIsLoading(() => false); - }; - - return ( - <> - - - -
{ - $event.stopPropagation(); - // set position - // popover.current!.event = $event; - // open popover - setPopoverOpen(() => true); - }} - > -
- - -
- -
- -

{selectedAsset?.symbol}

-
- { - $event.stopPropagation(); - setInputFromAmount(() => selectedAsset?.balance || 0); - }} - > - Max: {maxBalance} - -
-
-
- -
- { - if (isNumberKey(e)) { - setIsLoading(() => true); - } - }} - onIonInput={(e) => handleInputChange(e)} - /> -
-
-
-
- - setPopoverOpen(false)} - className="modalAlert" - > - - -

Available assets

-
-
- - {assets - .filter((a) => a.balance > 0) - .map((asset, index) => ( - { - setPopoverOpen(() => false); - setSelectedAsset(asset); - setInputFromAsset(asset); - setInputFromAmount(() => 0); - setErrorMessage(() => undefined); - // setQuote(() => undefined); - console.log({ selectedAsset }); - }} - > -
- -
- - {asset.symbol} -
- - - { - CHAIN_AVAILABLES.find((c) => c.id === asset?.chain?.id) - ?.name - } - - -
-
- {Number(asset?.balance).toFixed(6)} -
- - - {getReadableAmount( - +asset?.balance, - Number(asset?.priceUsd), - "No deposit" - )} - - -
-
- ))} -
-
- - ); -}; - export const TransferContainer = (props: { dismiss: () => Promise }) => { - const { - walletAddress, - isMagicWallet, - assets, - loadAssets, - transfer, - switchNetwork, - currentNetwork, - } = Store.useState(getWeb3State); + const { assets, loadAssets, transfer, switchNetwork, currentNetwork } = + Store.useState(getWeb3State); const [inputFromAmount, setInputFromAmount] = useState(0); const [inputToAddress, setInputToAddress] = useState( undefined @@ -392,43 +166,93 @@ export const TransferContainer = (props: { dismiss: () => Promise }) => { const [inputFromAsset, setInputFromAsset] = useState( undefined ); - const [isScanModalOpen, setIsScanModalOpen] = useState(false); - const [isLoading, setIsLoading] = useState(false); + const [isScanModalOpen, setIsScanModalOpen] = useState(false); + const [isLoading, setIsLoading] = useState(false); + const [isSuccess, setIsSuccess] = useState(undefined); + const [errorMessage, setErrorMessage] = useState( + undefined + ); + const [openConfirm, closeConfirm] = useIonAlert() const isValid = - inputFromAmount > 0 && + inputFromAmount > 0 && + inputFromAmount <= (inputFromAsset?.balance || 0) && inputToAddress && inputToAddress.length > 0 && inputFromAsset?.contractAddress; const handleSend = async () => { - console.log("handleSend: ", { + console.log("[INFO] handleSend: ", { inputFromAmount, inputToAddress, inputFromAsset, }); + const {detail: {role}}: CustomEvent> = await new Promise(resolve => { + openConfirm({ + header: 'Confirm', + message: ` + You are about to send ${inputFromAmount} ${inputFromAsset?.symbol} to the EVM ${inputFromAsset?.chain?.name} network address ${inputToAddress}. + `, + buttons: [ + { + text: 'cancel', + role: 'cancel', + cssClass: 'danger' + }, + { + text: 'OK', + role: 'ok' + } + ], + onDidDismiss: ($event)=> { + resolve($event); + } + }); + + }); + if (role !== 'ok') { + return; + } if (inputFromAmount && inputToAddress && inputFromAsset?.contractAddress) { - if ( - inputFromAsset?.chain?.id && - inputFromAsset?.chain?.id !== currentNetwork - ) { - await switchNetwork(inputFromAsset?.chain?.id); + try { + if ( + inputFromAsset?.chain?.id && + inputFromAsset?.chain?.id !== currentNetwork + ) { + await switchNetwork(inputFromAsset?.chain?.id); + } + await transfer({ + inputFromAmount, + inputToAddress, + inputFromAsset: inputFromAsset.contractAddress, + }); + // toggle state + setIsSuccess(true); + setIsLoading(false); + setErrorMessage(undefined); + await Promise.all([ + // ensure waiting to display check animation + new Promise((resolve) => setTimeout(resolve, 3000)), + // finalize with reload asset list + loadAssets(true), + ]); + // close modal + props.dismiss(); + } catch (error: any) { + // toggle state + setIsSuccess(false); + setIsLoading(false); + setErrorMessage(error?.message || "Error while transfer token"); } - await transfer({ - inputFromAmount, - inputToAddress, - inputFromAsset: inputFromAsset.contractAddress, - }); - // finalize with reload asset list - await loadAssets(true); } }; + return ( <> -

Send token

+ Send token
Promise }) => {
- - - - -

- Currently only support native token transfer -

-
-
- - + {isSuccess === undefined && ( + <> + + + +

Token

+
+ a.balance > 0)} + inputFromAmount={inputFromAmount} + setInputFromAmount={setInputFromAmount} + setInputFromAsset={setInputFromAsset} + /> +
+ + +

EVM Destination address

+
+ + + + { + setInputToAddress( + () => $event.detail.value || undefined + ); + }} + /> + + + { + setIsScanModalOpen(() => true); + }} + > + + + + + + { + if (data) { + setInputToAddress(() => data); + } + setIsScanModalOpen(() => false); + }} + /> +
+
+ + )} + + {isSuccess === true && ( + <> + -

Token

-
- a.type === "NATIVE")} - inputFromAmount={inputFromAmount} - setInputFromAmount={setInputFromAmount} - setInputFromAsset={setInputFromAsset} - /> -
- - + + +
+ + )} + + {isSuccess === false && errorMessage && ( + <> + -

Destination address

- - - - - { - setInputToAddress( - () => $event.detail.value || undefined - ); - }} - /> - - - { - setIsScanModalOpen(() => true); - }} - > - - - - - - { - if (data) { - setInputToAddress(() => data); - } - setIsScanModalOpen(() => false); - }} - /> - - + + + +
+ + )} + + {inputFromAmount > (inputFromAsset?.balance || 0) && ( + <> + + + +

+ You don't have enough funds to complete the transaction. +

+
+
+
+ + )} +
+
+ + + {isSuccess === false && ( + { + props.dismiss() + }} + >Cancel and retry + )} + + {isSuccess === undefined && ( + <> Promise }) => { setIsLoading(false); }} > - Send + {isLoading === true ? ( + <> + Waiting + confirmation + + ) : ( + "Send" + )} - - - - + + )} + {isSuccess === true && ( + <> + { + props.dismiss(); + }} + > + OK + + + )} + + ); }; diff --git a/src/containers/desktop/SwapContainer.tsx b/src/containers/desktop/SwapContainer.tsx index e22f94ad..4b01ed65 100644 --- a/src/containers/desktop/SwapContainer.tsx +++ b/src/containers/desktop/SwapContainer.tsx @@ -7,6 +7,7 @@ import { useIonToast, } from "@ionic/react"; import { + HiddenUI, RouteExecutionUpdate, WidgetConfig, WidgetEvent, @@ -16,7 +17,7 @@ import type { Route } from "@lifi/sdk"; import { useEffect } from "react"; import { useLoader } from "../../context/LoaderContext"; import { CHAIN_AVAILABLES, CHAIN_DEFAULT, NETWORK } from "../../constants/chains"; -import { ethers } from "ethers"; +import { Wallet, ethers } from "ethers"; import { LiFiWidgetDynamic } from "../../components/LiFiWidgetDynamic"; import { LIFI_CONFIG } from "../../servcies/lifi.service"; // import { SquidWidgetDynamic } from "@/components/SquidWidgetDynamic"; @@ -28,7 +29,7 @@ import { getWeb3State } from "@/store/selectors"; export default function SwapContainer() { const { - web3Provider, + signer, currentNetwork, walletAddress, connectWallet, @@ -98,10 +99,9 @@ export default function SwapContainer() { const chain = CHAIN_AVAILABLES.find((chain) => chain.id === currentNetwork); switch (true) { case chain?.type === "evm": { - const signer = - web3Provider instanceof ethers.providers.Web3Provider && walletAddress - ? web3Provider?.getSigner() - : undefined; + const defaultChain = process.env.NEXT_PUBLIC_APP_IS_LOCAL === 'true' + ? NETWORK.goerli + : currentNetwork || CHAIN_DEFAULT.id; // load environment config const widgetConfig: WidgetConfig = { ...LIFI_CONFIG, @@ -111,12 +111,11 @@ export default function SwapContainer() { try { await displayLoader(); await connectWallet(); - if (!(web3Provider instanceof ethers.providers.Web3Provider)) { + if (!(signer instanceof ethers.Signer)) { throw new Error( - "[ERROR] Only support ethers.providers.Web3Provider" + "[ERROR] Only support ethers.Signer" ); } - const signer = web3Provider?.getSigner(); console.log("signer", signer); if (!signer) { throw new Error("Signer not found"); @@ -127,22 +126,7 @@ export default function SwapContainer() { } catch (error: any) { // Log any errors that occur during the connection process hideLoader(); - await presentToast({ - message: `[ERROR] Connect Failed with reason: ${ - error?.message || error - }`, - color: "danger", - buttons: [ - { - text: "x", - role: "cancel", - handler: () => { - dismissToast(); - }, - }, - ], - }); - throw new Error("handleConnect:" + error?.message); + return error; } }, disconnect: async () => { @@ -171,12 +155,19 @@ export default function SwapContainer() { }); } }, - signer, + signer: signer || undefined, }, + hiddenUI: [ + ...(LIFI_CONFIG?.hiddenUI as any[]), + HiddenUI.WalletMenu, + HiddenUI.ToAddress, + // HiddenUI.DrawerButton, + // HiddenUI.DrawerCloseButton + ], // set source chain to Polygon - fromChain: currentNetwork || CHAIN_DEFAULT.id, + fromChain: defaultChain, // set destination chain to Optimism - toChain: currentNetwork || CHAIN_DEFAULT.id, + toChain: defaultChain, // set source token to ETH (Ethereum) fromToken: "0x0000000000000000000000000000000000000000", }; diff --git a/src/containers/desktop/TokenDetailDesktopContainer.tsx b/src/containers/desktop/TokenDetailDesktopContainer.tsx index d6468edb..bb111a1e 100644 --- a/src/containers/desktop/TokenDetailDesktopContainer.tsx +++ b/src/containers/desktop/TokenDetailDesktopContainer.tsx @@ -6,6 +6,8 @@ import { IonAvatar, IonBadge, IonButton, + IonCard, + IonCardContent, IonChip, IonCol, IonContent, @@ -33,16 +35,28 @@ import { ethers } from "ethers"; import Store from "@/store"; import { getWeb3State } from "@/store/selectors"; import { CHAIN_AVAILABLES } from "@/constants/chains"; -import { airplane, chevronDown, close, closeSharp, download, paperPlane, repeat } from "ionicons/icons"; -import { DataItem } from "@/components/ui/LightChart"; -import { getTokenHistoryPrice } from "@/utils/getTokenHistoryPrice"; -import { TokenInfo, getTokenInfo } from "@/utils/getTokenInfo"; +import { + airplane, + chevronDown, + close, + closeSharp, + download, + paperPlane, + repeat, +} from "ionicons/icons"; +import { DataItem, SeriesData, SeriesMarkerData } from "@/components/ui/LightChart"; +import { TokenInfo } from '@/servcies/coingecko.service'; import { numberFormat } from "@/utils/numberFormat"; import { currencyFormat } from "@/utils/currencyFormat"; import { TokenDetailDescription } from "@/components/ui/TokenDetailDescription"; import { TokenDetailMarketDetail } from "@/components/ui/TokenDetailMarketData"; import { isStableAsset } from "@/utils/isStableAsset"; import { Currency } from "@/components/ui/Currency"; +import { NetworkTokenDetailCard } from "@/components/ui/NetworkTokenDetailCard/NetworkTokenDetailCard"; +import { getAllocationRatioInPercent } from "@/utils/getAllocationRatioInPercent"; +import { formatTxsAsSeriemarker } from "@/servcies/zerion.service"; +import { CoingeckoAPI } from "@/servcies/coingecko.service"; +import { TxsList } from "@/components/ui/TsxList/TxsList"; const LightChart = lazy(() => import("@/components/ui/LightChart")); @@ -66,25 +80,29 @@ export const TokenDetailDesktopContainer = (props: { setState: (state: any) => void; }) => { const { data, dismiss } = props; - const { walletAddress } = Store.useState(getWeb3State); - const [dataChartHistory, setDataChartHistory] = useState([]); + const { walletAddress, txs } = Store.useState(getWeb3State); + const [dataChartHistory, setDataChartHistory] = useState(new Map()); + const [txsChartHistory, setTxsChartHistory] = useState(new Map()); const [tokenInfo, setTokenInfo] = useState(undefined); const [isInfoOpen, setInfoOpen] = useState(false); + const [isAccOpen, setIsAccOpen] = useState(false); + const [tokentPrice, setTokentPrice] = useState(tokenInfo?.market_data?.current_price?.usd || + data.priceUsd); + + const filteredTxs = txs.filter((tx) => { + return tx.attributes.transfers.some((transfer) => { + return transfer.fungible_info.symbol === data.symbol; + }); + }); useEffect(() => { if (!walletAddress) return; - getTxsFromAddress(walletAddress); - getTokenHistoryPrice(props.data.symbol).then((prices) => { - const data: DataItem[] = prices.map(([time, value]: string[]) => { - const dataItem = { - time: new Date(time).toISOString().split("T").shift() || "", - value: Number(value), - }; - return dataItem; - }); - setDataChartHistory(() => data.slice(0, data.length - 1)); + const TxsSerie = formatTxsAsSeriemarker(filteredTxs); + setTxsChartHistory(()=> TxsSerie); + CoingeckoAPI.getTokenHistoryPrice(props.data.symbol).then((prices) => { + setDataChartHistory(() => prices); }); - getTokenInfo(props.data.symbol).then((tokenInfo) => + CoingeckoAPI.getTokenInfo(props.data.symbol).then((tokenInfo) => setTokenInfo(() => tokenInfo) ); }, [walletAddress]); @@ -123,8 +141,11 @@ export const TokenDetailDesktopContainer = (props: { > - - + + {data.symbol} { @@ -157,7 +181,8 @@ export const TokenDetailDesktopContainer = (props: {

- { tokenInfo?.market_data?.price_change_percentage_24h_in_currency?.usd && ( + {tokenInfo?.market_data + ?.price_change_percentage_24h_in_currency?.usd && ( - ({tokenInfo.market_data.price_change_percentage_24h_in_currency.usd.toFixed( - 2 - )} - % /24h) + ( + {tokenInfo.market_data.price_change_percentage_24h_in_currency.usd.toFixed( + 2 + )} + % /24h) )}

{isStableAsset(data.symbol) ? ( - { - setInfoOpen(()=> true); - }} > + onClick={() => { + setInfoOpen(() => true); + }} + > stable - ) : ''} - - - - { - props.setState({ isTransferModalOpen: true }); - }}> - - Send - - { - props.setState({ isDepositModalOpen: true }); - }}> - - Deposit - - - - - - - -
- -
- - - -

Networks details

-
-
- {data.assets - .sort((a, b) => - a.chain && b.chain - ? a.chain.id - b.chain.id - : a.balance + b.balance - ) - .map((token, index) => ( - - - c.id === token.chain?.id - )?.logo - } - alt={token.symbol} - style={{ transform: "scale(1.01)" }} - onError={(event) => { - ( - event.target as any - ).src = `https://images.placeholders.dev/?width=42&height=42&text=${token.symbol}&bgColor=%23000000&textColor=%23182449`; - }} - /> - - -

{token.chain?.name}

-
- - { numberFormat.format(token.balance)} {token.symbol} -
- - - - - -
-
- ))} -
-
-
-
-
-
+ ) : ( + "" + )} +
+
+
+ + + + + { + props.setState({ isTransferModalOpen: true }); + }} + > + + Send + + { + props.setState({ isDepositModalOpen: true }); + }} + > + + Deposit + + + + + + + +
setIsAccOpen(()=> !isAccOpen)}> + + {isAccOpen ? 'Hide' : 'Display'} Wallet details + + +
+ + + {data.assets + .sort((a, b) => + a.chain && b.chain + ? a.chain.id - b.chain.id + : a.balance + b.balance + ) + .map((token, index) => ( + + + + ))} + + +
+
- + - - }> + + + + + } + > -

+

{props.data.symbol} / USD - 1 {data.symbol} = {currencyFormat.format(tokenInfo?.market_data?.current_price?.usd||data.priceUsd)} + 1 {data.symbol} ={" "} + {currencyFormat.format( + tokentPrice + )}

- + { + if (action === 'leave') { + setTokentPrice(tokenInfo?.market_data?.current_price?.usd || + data.priceUsd); + } else { + setTokentPrice((payload as any)?.price) + } + }} />
+ {/* TXs list if existing tx */} + {filteredTxs.length > 0 + ? ( + + + +

Transaction history

+
+
+ +
+
) + : null} + {tokenInfo && ( - + - + @@ -328,7 +379,12 @@ export const TokenDetailDesktopContainer = (props: {

Market datas from Coingeeko API -
Last update: {new Date(tokenInfo?.market_data?.last_updated||new Date ().toLocaleDateString()).toLocaleString()} +
+ Last update:{" "} + {new Date( + tokenInfo?.market_data?.last_updated || + new Date().toLocaleDateString() + ).toLocaleString()}

@@ -355,7 +411,7 @@ export const TokenDetailDesktopContainer = (props: { setInfoOpen(false) } + onClick={() => setInfoOpen(false)} > @@ -363,27 +419,31 @@ export const TokenDetailDesktopContainer = (props: { -

- What is a stablecoin? -

+

What is a stablecoin?

- Stablecoins are a type of cryptocurrency whose value is pegged to another asset, such as a fiat currency or gold, to maintain a stable price. + Stablecoins are a type of cryptocurrency whose value is + pegged to another asset, such as a fiat currency or gold, to + maintain a stable price.

- They strive to provide an alternative to the high volatility of popular cryptocurrencies, making them potentially more suitable for common transactions. + They strive to provide an alternative to the high volatility + of popular cryptocurrencies, making them potentially more + suitable for common transactions.

- Stablecoins can be utilized in various blockchain-based financial services and can even be used to pay for goods and services. + Stablecoins can be utilized in various blockchain-based + financial services and can even be used to pay for goods and + services.

diff --git a/src/containers/desktop/WalletDesktopContainer.tsx b/src/containers/desktop/WalletDesktopContainer.tsx index 02ec8382..ff445eaf 100644 --- a/src/containers/desktop/WalletDesktopContainer.tsx +++ b/src/containers/desktop/WalletDesktopContainer.tsx @@ -1,9 +1,10 @@ -import { card, download, eyeOffOutline, eyeOutline, paperPlane } from "ionicons/icons"; +import { card, download, eyeOffOutline, eyeOutline, grid, gridOutline, gridSharp, image, list, logoUsd, paperPlane, ticket, ticketOutline, time } from "ionicons/icons"; import WalletBaseComponent, { WalletComponentProps, } from "../../components/base/WalletBaseContainer"; import { IonButton, + IonButtons, IonCard, IonCardContent, IonCol, @@ -13,9 +14,11 @@ import { IonModal, IonRow, IonSearchbar, + IonSegment, + IonSegmentButton, IonText, } from "@ionic/react"; -import ConnectButton from "@/components/ConnectButton"; +import ConnectButton from "@/components/ui/ConnectButton"; import Store from "@/store"; import { getAppSettings, getWeb3State } from "@/store/selectors"; import { TokenDetailDesktopContainer } from "./TokenDetailDesktopContainer"; @@ -24,6 +27,10 @@ import { WalletAssetEntity } from "@/components/ui/WalletAssetEntity"; import { Currency } from "@/components/ui/Currency"; import { patchAppSettings } from "@/store/actions"; import { ToggleHideCurrencyAmount } from "@/components/ui/ToggleHideCurrencyAmount"; +import { WalletTxEntity } from "@/components/ui/WalletTxEntity"; +import { TxsList } from "@/components/ui/TsxList/TxsList"; +import { NftsList } from "@/components/ui/NftsList/NftsList"; +import { getAllocationRatioInPercent } from "@/utils/getAllocationRatioInPercent"; class WalletDesktopContainer extends WalletBaseComponent { constructor(props: WalletComponentProps) { @@ -128,7 +135,7 @@ class WalletDesktopContainer extends WalletBaseComponent { > { super.handleBuyWithFiat(true); }} @@ -170,7 +177,7 @@ class WalletDesktopContainer extends WalletBaseComponent { > { super.handleDepositClick() }} @@ -179,7 +186,7 @@ class WalletDesktopContainer extends WalletBaseComponent { - + @@ -219,108 +226,170 @@ class WalletDesktopContainer extends WalletBaseComponent { {/* wrapper to display card with assets items */} {this.state.assetGroup.length > 0 && ( <> - - + + { this.handleSearchChange(e); }} /> + +
+ this.setState(state => ({ + ...state, + currentView: 'tokens' + }))}> + + + this.setState(state => ({ + ...state, + currentView: 'nfts' + }))}> + + + this.setState(state => ({ + ...state, + currentView: 'txs' + }))}> + + +
+
- - - - - - - - Asset - - - - - - - - - Price - - - - - Balance - - - - - Value - - - - - - - - {this.state.assetGroup - .filter((asset) => - this.state.filterBy - ? asset.symbol - .toLowerCase() - .includes(this.state.filterBy.toLowerCase()) - : true - ) - .map((asset, index) => { - return ( - - this.handleTokenDetailClick(asset) - } - asset={asset} - key={index} - /> - ); - })} + + {/* tokens view */} + {this.state.currentView === 'tokens' && ( + + + {/* Header List */} + + + + + Asset + + + + + + + + + Wallet % + + + + + Price USD + + + + + Balance + + + + + Value USD + + + + + + + + {this.state.assetGroup + .filter((asset) => + this.state.filterBy + ? asset.symbol + .toLowerCase() + .includes(this.state.filterBy.toLowerCase()) + : true + ) + .map((asset, index) => { + return ( + + this.handleTokenDetailClick(asset) + } + asset={asset} + allocationRatioInPercent={getAllocationRatioInPercent(asset.balanceUsd, this.state.totalBalance)} + key={index} + /> + ); + })} - {(this.state.assetGroup.filter((asset) => - this.state.filterBy - ? asset.symbol - .toLowerCase() - .includes(this.state.filterBy.toLowerCase()) - : true - ).length === 0) && ( -

Assets not found in your wallet

- )} -
+ {(this.state.assetGroup.filter((asset) => + this.state.filterBy + ? asset.symbol + .toLowerCase() + .includes(this.state.filterBy.toLowerCase()) + : true + ).length === 0) && ( +

Assets not found in your wallet

+ )} +
+ )} + {/* txs view */} + {this.state.currentView === 'txs' && ( + + + + )} + {/* nfts view */} + {this.state.currentView === 'nfts' && ( + + + + )}
)} diff --git a/src/containers/index.ts b/src/containers/index.ts new file mode 100644 index 00000000..d637e335 --- /dev/null +++ b/src/containers/index.ts @@ -0,0 +1,20 @@ + +import { lazy } from "react"; + +export const LeaderboardContainer = lazy(() => import("@/containers/desktop/LeaderboardContainer")); +export const WalletDesktopContainer = lazy(() => import("@/containers/desktop/WalletDesktopContainer")); +export const SwapContainer = lazy(() => import("@/containers/desktop/SwapContainer")); +export const DefiContainer = lazy(() => import("@/containers/desktop/DefiContainer")); +export const EarnContainer = lazy(() => import("@/containers/desktop/EarnContainer")); +export const AvailablePlatformsContainer = lazy(() => import("@/containers/desktop/AvailablePlatformsContainer")); +export const AboutContainer = lazy(() => import("@/containers/desktop/AboutContainer")); +export const BuyWithFiatContainer = lazy(() => import("@/containers/BuyWithFiat")); +export const WalletMobileContainer = lazy( + () => import("@/containers/mobile/WalletMobileContainer") +); +export const WelcomeMobileContainer = lazy( + () => import("@/containers/mobile/WelcomeMobileContainer") + ); +export const MagicMigrationContainer = lazy(()=> import('@/containers/MagicMigrationContainer')) + +export const AuthWithLinkContainer = lazy(() => import('@/containers/AuthWithLinkContainer')); diff --git a/src/containers/mobile/SwapMobileContainer.tsx b/src/containers/mobile/SwapMobileContainer.tsx index a542dffe..e6551021 100644 --- a/src/containers/mobile/SwapMobileContainer.tsx +++ b/src/containers/mobile/SwapMobileContainer.tsx @@ -44,7 +44,7 @@ export const SwapMobileContainer = (props: { dismiss: ()=> void; }) => { const { - web3Provider, + signer, currentNetwork, walletAddress, connectWallet, @@ -88,10 +88,6 @@ export const SwapMobileContainer = (props: { return () => widgetEvents.all.clear(); }, [widgetEvents]); - const signer = - web3Provider instanceof ethers.providers.Web3Provider && walletAddress - ? web3Provider?.getSigner() - : undefined; // load environment config const widgetConfig: WidgetConfig = { ...LIFI_CONFIG, @@ -102,6 +98,7 @@ export const SwapMobileContainer = (props: { ...(LIFI_CONFIG?.hiddenUI as any[]), HiddenUI.History, HiddenUI.WalletMenu, + HiddenUI.ToAddress, // HiddenUI.DrawerButton, // HiddenUI.DrawerCloseButton ], @@ -111,12 +108,6 @@ export const SwapMobileContainer = (props: { try { await displayLoader(); await connectWallet(); - if (!(web3Provider instanceof ethers.providers.Web3Provider)) { - throw new Error( - "[ERROR] Only support ethers.providers.Web3Provider" - ); - } - const signer = web3Provider?.getSigner(); console.log("signer", signer); if (!signer) { throw new Error("Signer not found"); @@ -127,22 +118,7 @@ export const SwapMobileContainer = (props: { } catch (error: any) { // Log any errors that occur during the connection process hideLoader(); - await presentToast({ - message: `[ERROR] Connect Failed with reason: ${ - error?.message || error - }`, - color: "danger", - buttons: [ - { - text: "x", - role: "cancel", - handler: () => { - dismissToast(); - }, - }, - ], - }); - throw new Error("handleConnect:" + error?.message); + return error; } }, disconnect: async () => { @@ -171,7 +147,7 @@ export const SwapMobileContainer = (props: { }); } }, - signer, + signer: signer || undefined, }, // set source chain to Polygon fromChain: props?.token?.assets?.[0]?.chain?.id || CHAIN_DEFAULT.id, diff --git a/src/containers/mobile/TokenDetailMobileContainer.tsx b/src/containers/mobile/TokenDetailMobileContainer.tsx index 7bc21111..b872baa3 100644 --- a/src/containers/mobile/TokenDetailMobileContainer.tsx +++ b/src/containers/mobile/TokenDetailMobileContainer.tsx @@ -34,13 +34,18 @@ import Store from "@/store"; import { getWeb3State } from "@/store/selectors"; import { CHAIN_AVAILABLES } from "@/constants/chains"; import { airplane, chevronDown, close, closeSharp, download, paperPlane } from "ionicons/icons"; -import { DataItem } from "@/components/ui/LightChart"; -import { getTokenHistoryPrice } from "@/utils/getTokenHistoryPrice"; -import { TokenInfo, getTokenInfo } from "@/utils/getTokenInfo"; +import { DataItem, SeriesData, SeriesMarkerData } from "@/components/ui/LightChart"; +import { TokenInfo } from '@/servcies/coingecko.service'; import { TokenDetailMarketDetail } from "@/components/ui/TokenDetailMarketData"; import { TokenDetailDescription } from "@/components/ui/TokenDetailDescription"; import { isStableAsset } from "@/utils/isStableAsset"; import { Currency } from "@/components/ui/Currency"; +import { NetworkTokenDetailCard } from "@/components/ui/NetworkTokenDetailCard/NetworkTokenDetailCard"; +import { getAllocationRatioInPercent } from "@/utils/getAllocationRatioInPercent"; +import { formatTxsAsSeriemarker } from "@/servcies/zerion.service"; +import { CoingeckoAPI } from "@/servcies/coingecko.service"; +import { TxsList } from "@/components/ui/TsxList/TxsList"; +import { currencyFormat } from "@/utils/currencyFormat"; const LightChart = lazy(() => import("@/components/ui/LightChart")); @@ -65,25 +70,31 @@ export const TokenDetailMobileContainer = (props: { setIsSwapModalOpen: (state: boolean) => void; }) => { const { data, dismiss } = props; - const { walletAddress } = Store.useState(getWeb3State); - const [dataChartHistory, setDataChartHistory] = useState([]); + const { walletAddress, txs } = Store.useState(getWeb3State); + const [dataChartHistory, setDataChartHistory] = useState(new Map()); + const [txsChartHistory, setTxsChartHistory] = useState(new Map()); const [tokenInfo, setTokenInfo] = useState(undefined); const [isInfoOpen, setInfoOpen] = useState(false); + const [isAccOpen, setIsAccOpen] = useState(false); + const [chartInterval, setChartInterval] = useState< "1D"|"1W"|"1M"|"1Y">('1M') + + const filteredTxs = txs.filter((tx) => { + return tx.attributes.transfers.some((transfer) => { + return transfer.fungible_info.symbol === data.symbol; + }); + }); + + const [tokentPrice, setTokentPrice] = useState(tokenInfo?.market_data?.current_price?.usd || + data.priceUsd); useEffect(() => { if (!walletAddress) return; - getTxsFromAddress(walletAddress); - getTokenHistoryPrice(props.data.symbol).then((prices) => { - const data: DataItem[] = prices.map(([time, value]: string[]) => { - const dataItem = { - time: new Date(time).toISOString().split("T").shift() || "", - value: Number(value), - }; - return dataItem; - }); - setDataChartHistory(() => data.slice(0, data.length - 1)); + const TxsSerie = formatTxsAsSeriemarker(filteredTxs); + setTxsChartHistory(()=> TxsSerie); + CoingeckoAPI.getTokenHistoryPrice(props.data.symbol).then((prices) => { + setDataChartHistory(() => prices); }); - getTokenInfo(props.data.symbol).then((tokenInfo) => + CoingeckoAPI.getTokenInfo(props.data.symbol).then((tokenInfo) => setTokenInfo(() => tokenInfo) ); }, [walletAddress]); @@ -130,7 +141,7 @@ export const TokenDetailMobileContainer = (props: { - + -

+

{data.balance.toFixed(6)} {data.symbol}

@@ -195,82 +206,40 @@ export const TokenDetailMobileContainer = (props: { ) : ''}
- - - - - -
- -
- - - -

Networks details

-
-
- {data.assets - .sort((a, b) => - a.chain && b.chain - ? a.chain.id - b.chain.id - : a.balance + b.balance - ) - .map((token, index) => ( - - - c.id === token.chain?.id - )?.logo - } - alt={token.symbol} - style={{ transform: "scale(1.01)" }} - onError={(event) => { - ( - event.target as any - ).src = `https://images.placeholders.dev/?width=42&height=42&text=${token.symbol}&bgColor=%23000000&textColor=%23182449`; - }} - /> - - -

{token.chain?.name}

-
- - {token.balance.toFixed(6)} {token.symbol} -
- - - - - -
-
- ))} -
-
-
-
-
-
+
+
+
+ + + + + + +
setIsAccOpen(()=> !isAccOpen)}> + + {isAccOpen ? 'Hide' : 'Display'} Wallet details + + +
+ + + {data.assets + .sort((a, b) => + a.chain && b.chain + ? a.chain.id - b.chain.id + : a.balance + b.balance + ) + .map((token, index) => ( + + + + ))} + + +
+
@@ -281,24 +250,85 @@ export const TokenDetailMobileContainer = (props: { .....}> - - - - 1 {data.symbol} = $ {(tokenInfo?.market_data?.current_price?.usd||data.priceUsd).toFixed(2)} - - + + + + +

+ {props.data.symbol} / USD + + 1 {data.symbol} ={" "} + {currencyFormat.format( + tokentPrice + )} + +

+
+
+ +
+ + {["1D", "1W", "1M", "1Y"].map((interval: any, index: number) => ( + setChartInterval(()=> interval)} + > + {interval} + + ))} + +
+
+
+
+ { + if (action === 'leave') { + setTokentPrice(tokenInfo?.market_data?.current_price?.usd || + data.priceUsd); + } else { + setTokentPrice((payload as any)?.price) + } + }} />
+ {/* TXs list if existing tx */} + {filteredTxs.length > 0 + ? ( + + + +

Transaction history

+
+
+ +
+
) + : null} + + {/* Token detail information */} - {tokenInfo && ( + {tokenInfo ? ( <> @@ -307,7 +337,7 @@ export const TokenDetailMobileContainer = (props: { - )} + ): null}

diff --git a/src/containers/mobile/WalletMobileContainer.tsx b/src/containers/mobile/WalletMobileContainer.tsx index 69a5d454..cd608c4f 100644 --- a/src/containers/mobile/WalletMobileContainer.tsx +++ b/src/containers/mobile/WalletMobileContainer.tsx @@ -37,6 +37,8 @@ import { IonRefresherContent, RefresherEventDetail, IonChip, + IonSegment, + IonSegmentButton, } from "@ionic/react"; import { card, download, paperPlane, repeat, settings, settingsOutline } from "ionicons/icons"; import { useState } from "react"; @@ -49,9 +51,10 @@ import { currencyFormat } from "@/utils/currencyFormat"; import { isStableAsset } from "@/utils/isStableAsset"; import { Currency } from "@/components/ui/Currency"; import { ToggleHideCurrencyAmount } from "@/components/ui/ToggleHideCurrencyAmount"; +import { TxsList } from "@/components/ui/TsxList/TxsList"; +import { NftsList } from "@/components/ui/NftsList/NftsList"; interface WalletMobileComProps { - isMagicWallet: boolean; isSwapModalOpen: SelectedTokenDetail | boolean | undefined; setIsSwapModalOpen: ( value?: SelectedTokenDetail | boolean | undefined @@ -94,6 +97,16 @@ class WalletMobileContainer extends WalletBaseComponent< } render() { + const assetGroup = this.state.assetGroup + .filter((asset) => + this.state.filterBy + ? asset.symbol + .toLowerCase() + .includes(this.state.filterBy.toLowerCase()) + : true + ) + .sort((a, b) => (a.balanceUsd > b.balanceUsd ? -1 : 1)); + return ( <> @@ -150,7 +163,7 @@ class WalletMobileContainer extends WalletBaseComponent< - + @@ -191,11 +204,40 @@ class WalletMobileContainer extends WalletBaseComponent<

{ this.handleSearchChange(event); }} >
+ {this.state.totalBalance > 0 && ( + + this.setState(state => ({ + ...state, + currentView: 'tokens' + }))}> + Assets + + this.setState(state => ({ + ...state, + currentView: 'nfts' + }))}> + NFTs + + this.setState(state => ({ + ...state, + currentView: 'txs' + }))}> + History + + + )}
)} @@ -214,7 +256,7 @@ class WalletMobileContainer extends WalletBaseComponent< {this.state.totalBalance <= 0 && ( - super.handleBuyWithFiat(true)}> + super.handleBuyWithFiat(true)}> @@ -280,119 +322,128 @@ class WalletMobileContainer extends WalletBaseComponent< className="ion-no-padding" style={{ maxWidth: "950px", margin: "auto" }} > - - - {this.state.assetGroup - .filter((asset) => - this.state.filterBy - ? asset.symbol - .toLowerCase() - .includes(this.state.filterBy.toLowerCase()) - : true - ) - .sort((a, b) => (a.balanceUsd > b.balanceUsd ? -1 : 1)) - .map((asset, index) => ( - - { - console.log("handleTokenDetailClick: ", asset); - this.handleTokenDetailClick(asset); - }} - > - + + {assetGroup + .map((asset, index) => ( + + { + console.log("handleTokenDetailClick: ", asset); + this.handleTokenDetailClick(asset); }} > - {asset.symbol} { - ( - event.target as any - ).src = `https://images.placeholders.dev/?width=42&height=42&text=${asset.symbol}&bgColor=%23000000&textColor=%23182449`; + - - - -

- {asset.symbol} -

-
- -

- {asset.name} -

-
-
- {isStableAsset(asset.symbol) ? ( - stable - ) : ''} - -

- -
+ > + {asset.symbol} { + ( + event.target as any + ).src = `https://images.placeholders.dev/?width=42&height=42&text=${asset.symbol}&bgColor=%23000000&textColor=%23182449`; + }} + /> + + + +

+ {asset.symbol} +

+
- {asset.balance.toFixed(6)} +

+ {asset.name} +

-

- -
- { - // close the sliding item after clicking the option - (event.target as HTMLElement) - .closest("ion-item-sliding") - ?.close(); - }} - > - { - this.handleTransferClick(true); - }} - > - - - { - this.setIsSwapModalOpen(asset); + + {isStableAsset(asset.symbol) ? ( + stable + ) : ''} + +

+ +
+ + {asset.balance.toFixed(6)} + +

+
+
+ { + // close the sliding item after clicking the option + (event.target as HTMLElement) + .closest("ion-item-sliding") + ?.close(); }} > - - - -
- ))} -
-
+ { + this.handleTransferClick(true); + }} + > + + + { + this.setIsSwapModalOpen(asset); + }} + > + + + + + ))} + +
+ )} + + {/* txs view */} + {this.state.currentView === 'txs' && ( + + + + )} + + {/* nfts view */} + {this.state.currentView === 'nfts' && ( + + + + )}
)} @@ -476,7 +527,7 @@ const withStore = ( ) => { // use named function to prevent re-rendering failure return function WalletMobileContainerWithStore() { - const { walletAddress, assets, isMagicWallet, loadAssets } = + const { walletAddress, assets, loadAssets } = Store.useState(getWeb3State); const [isSettingOpen, setIsSettingOpen] = useState(false); const [isAlertOpen, setIsAlertOpen] = useState(false); @@ -486,7 +537,6 @@ const withStore = ( return ( - {!walletAddress && ( + {walletAddress === undefined + ? ( + + ) + : ( )}
diff --git a/src/context/LoaderContext.tsx b/src/context/LoaderContext.tsx index b4815ff4..94608052 100644 --- a/src/context/LoaderContext.tsx +++ b/src/context/LoaderContext.tsx @@ -8,12 +8,12 @@ import { useIonLoading } from "@ionic/react"; // Define the type for the user context. type LoaderContextType = { isVisible: boolean; - display: () => Promise; + display: (msg?: string) => Promise; hide: () => Promise; }; const LoaderContext = createContext({ isVisible: false, - display: () => Promise.resolve(), + display: (msg?: string) => Promise.resolve(), hide: () => Promise.resolve(), }) diff --git a/src/interfaces/nft.interface.ts b/src/interfaces/nft.interface.ts new file mode 100644 index 00000000..68edd633 --- /dev/null +++ b/src/interfaces/nft.interface.ts @@ -0,0 +1,6 @@ +import { IChain } from "@/constants/chains"; +import { IAnkrNTFResponse } from "@/servcies/ankr.service"; + +export type INFT = (IAnkrNTFResponse & { + chain: IChain; +}); \ No newline at end of file diff --git a/src/interfaces/tx.interface.ts b/src/interfaces/tx.interface.ts new file mode 100644 index 00000000..51ef9f5e --- /dev/null +++ b/src/interfaces/tx.interface.ts @@ -0,0 +1,137 @@ +export enum TxType { + ['0x0'] = 'Natif', +} + +export interface TxInterface1 { + timestamp: Date; + nonce: number; + blockNumber: number; + from: string; + to: string; + gas: number; + gasPrice: number; + input: string; + transactionIndex: string; + blockHash: string; + value: string; + type: string; + cumulativeGasUsed: number; + gasUsed: number; + hash: string; + status: number; + blockchain: string; +} + +export interface TxInterface { + type: string; + id: string; + attributes: TxAttributes; + relationships: Relationships; +} + +export interface TxAttributes { + operation_type: string; + hash: string; + mined_at_block: number; + mined_at: string; + sent_from: string; + sent_to: string; + status: string; + nonce: number; + fee: Fee; + transfers: Transfer[]; + approvals: Approval[]; + application_metadata: TxApplicationMetadata; + flags: AttributesFlags; +} + +export interface TxApplicationMetadata { + name: string; + icon: Icon; + contract_address: string; + method: Method; +} + +export interface Icon { + url: string; +} + +export interface Method { + id: string; + name: string; +} + +export interface Approval { + fungible_info: FungibleInfo; + quantity: Quantity; + sender: string; +} + +export interface FungibleInfo { + name: string; + symbol: string; + icon: Icon | null; + flags: FungibleInfoFlags; + implementations: Implementation[]; +} + +export interface FungibleInfoFlags { + verified: boolean; +} + +export interface Implementation { + chain_id: string; + address: string; + decimals: number; +} + +export interface Quantity { + int: string; + decimals: number; + float: number; + numeric: string; +} + +export interface Fee { + fungible_info: FungibleInfo; + quantity: Quantity; + price: number; + value: number; +} + +export interface AttributesFlags { + is_trash: boolean; +} + +export interface Transfer { + fungible_info: FungibleInfo; + direction: string; + quantity: Quantity; + value: number; + price: number; + sender: string; + recipient: string; +} + +export interface Relationships { + chain: Chain; + dapp: Dapp; +} + +export interface Chain { + links: Links; + data: Data; +} + +export interface Data { + type: string; + id: string; +} + +export interface Links { + related: string; +} + +export interface Dapp { + data: Data; +} diff --git a/src/interfaces/web3.interface.ts b/src/interfaces/web3.interface.ts index 17a3c9ff..f48d262b 100644 --- a/src/interfaces/web3.interface.ts +++ b/src/interfaces/web3.interface.ts @@ -1,5 +1,5 @@ import { StargateClient } from "@cosmjs/stargate"; -import { ethers } from "ethers"; -import { Connection as SolanaClient } from '@solana/web3.js'; +import { Signer as EVMSigner } from "ethers"; +import { Connection as SolanaClient, Signer as SolSigner } from '@solana/web3.js'; -export type Web3ProviderType = ethers.providers.Web3Provider | StargateClient | SolanaClient; // | Avalanche; +export type Web3SignerType = EVMSigner // | SolSigner; \ No newline at end of file diff --git a/src/lib/assets/svg/download-outline.svg b/src/lib/assets/svg/download-outline.svg new file mode 100644 index 00000000..f9af237e --- /dev/null +++ b/src/lib/assets/svg/download-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lib/assets/svg/extension-puzzle-outline.svg b/src/lib/assets/svg/extension-puzzle-outline.svg new file mode 100644 index 00000000..f37b76a1 --- /dev/null +++ b/src/lib/assets/svg/extension-puzzle-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lib/assets/svg/extension-puzzle.svg b/src/lib/assets/svg/extension-puzzle.svg new file mode 100644 index 00000000..5c3ad1ce --- /dev/null +++ b/src/lib/assets/svg/extension-puzzle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lib/assets/svg/key-outline.svg b/src/lib/assets/svg/key-outline.svg new file mode 100644 index 00000000..65aa8853 --- /dev/null +++ b/src/lib/assets/svg/key-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lib/assets/svg/wallet-outline.svg b/src/lib/assets/svg/wallet-outline.svg new file mode 100644 index 00000000..0089d6d7 --- /dev/null +++ b/src/lib/assets/svg/wallet-outline.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lib/assets/svg/wallet.svg b/src/lib/assets/svg/wallet.svg new file mode 100644 index 00000000..7f1c9b0e --- /dev/null +++ b/src/lib/assets/svg/wallet.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/lib/constant.ts b/src/lib/constant.ts new file mode 100644 index 00000000..dc791a98 --- /dev/null +++ b/src/lib/constant.ts @@ -0,0 +1,31 @@ +// enum of available signin methods +export enum SigninMethod { + Google = 'connect-google', + Email = 'connect-email', + EmailLink = 'connect-email-link', + Wallet = 'connect-wallet' +} + +export const DEFAULT_SIGNIN_METHODS: SigninMethod[] = [ + SigninMethod.Google, + SigninMethod.Email, + SigninMethod.EmailLink, + SigninMethod.Wallet +]; + +export enum KEYS { + AUTH_SIGNATURE_KEY = 'hexa-signature', + AUTH_SIGNATURE_VALUE = 'hexa-signature-value', + STORAGE_PRIVATEKEY_KEY = 'hexa-private-key', + STORAGE_SEED_KEY = 'hexa-seed-key', + STORAGE_SECRET_KEY = 'hexa-secret', + STORAGE_BACKUP_KEY = 'hexa-backup', + STORAGE_SKIP_BACKUP_KEY = 'hexa-skip', + STORAGE_EMAIL_FOR_SIGNIN_KEY = 'hexa-connect-email-for-sign-in', + URL_QUERYPARAM_FINISH_SIGNUP = 'finishSignUp', + STORAGE_AUTH_METHOD_KEY = 'hexa-auth-method' +} + +export const MAX_SKIP_BACKUP_TIME = 15 * 60 * 1000; // 15 minutes + +export * from '@/constants/chains'; \ No newline at end of file diff --git a/src/lib/index.ts b/src/lib/index.ts new file mode 100644 index 00000000..fbdc8584 --- /dev/null +++ b/src/lib/index.ts @@ -0,0 +1,6 @@ +import { SigninMethod } from './constant'; +import { KEYS, CHAIN_AVAILABLES, NETWORK } from './constant'; +import { parseApiKey } from './utils'; + +export * from './sdk'; +export { KEYS, SigninMethod, CHAIN_AVAILABLES, NETWORK, parseApiKey }; diff --git a/src/lib/interfaces/auth-provider.interface.ts b/src/lib/interfaces/auth-provider.interface.ts new file mode 100644 index 00000000..55fe26f1 --- /dev/null +++ b/src/lib/interfaces/auth-provider.interface.ts @@ -0,0 +1,23 @@ +import { Auth, User } from 'firebase/auth'; + +type Unsubscribe = () => void; + +// type User = { uid: string; isAnonymous: boolean }; +type UserCredential = { user: User }; + +export interface IAuthProvider { + signinWithGoogle: () => Promise; + sendLinkToEmail: (email: string, ops?: { url?: string }) => Promise; + signInWithLink: () => Promise; + signInAsAnonymous: () => Promise; + signInWithEmailPwd: ( + email: string, + password: string, + privateKey?: string + ) => Promise; + signOut: () => Promise; + getOnAuthStateChanged: (cb: (user: User | null) => void) => Unsubscribe; + getCurrentUserAuth: () => Promise; + updateUserAndTriggerStateChange: () => Promise; + initialize: (auth: Auth, ops?: string) => void; +} diff --git a/src/lib/interfaces/dialog-element.interface.ts b/src/lib/interfaces/dialog-element.interface.ts new file mode 100644 index 00000000..8100624a --- /dev/null +++ b/src/lib/interfaces/dialog-element.interface.ts @@ -0,0 +1,86 @@ +import { DialogUIOptions } from './sdk.interface'; + +export type WalletConnectType = + | 'browser-extension' + | 'import-privatekey' + | 'import-seed'; + +export type FirebaseWeb3ConnectDialogElement = HTMLElement & { + ops: DialogUIOptions | undefined; + + /** + * Method that reset the dialog element + */ + reset(): void; + + /** + * Method that display the dialog element to the user + */ + showModal(): void; + + /** + * Method that hide the dialog element from the user + */ + hideModal(): void; + + /** + * Method that remove a spinner and display a check icon to the user + */ + toggleSpinnerAsCheck(message?: string): Promise; + + /** + * Method that remove spinner and display a cross icon + * with an optional message to the user + * @param message + */ + toggleSpinnerAsCross(message?: string): Promise; + + /** + * Methods that display a prompt to the user + * and return the user's response as a string. + */ + promptPassword(): Promise; + + /** + * Methods that display a prompt to the user + * and return the user's response as Object `{password: string; email: string;}` + */ + promptEmailPassword(ops?: { + hideEmail?: boolean; + hidePassword?: boolean; + }): Promise<{ password?: string; email?: string }>; + + /** + * Methods that display a prompt to the user to backup their wallet + * and return the user's response as Object. + */ + promptBackup(): Promise<{ + withEncryption?: boolean | undefined; + skip?: boolean | undefined; + }>; + + /** + * Method that display prompt to user before signout + * to request backup of wallet seed phrase + */ + promptSignoutWithBackup(): Promise<{ + withEncryption?: boolean | undefined; + skip?: boolean | undefined; + clearStorage?: boolean; + cancel?: boolean; + }>; + + /** + * Methods that display a prompt to the user to select the wallet type + * that they want to connect with. + * This method returns the user's response as a string. + */ + promptWalletType(): Promise; + + /** + * Methods that display a prompt to the user to select the authentication method + * that they want to connect with. + * @info This method is under development and will be available in future releases. + */ + promptAuthMethods(): Promise; +}; diff --git a/src/lib/interfaces/sdk.interface.ts b/src/lib/interfaces/sdk.interface.ts new file mode 100644 index 00000000..3e1122ef --- /dev/null +++ b/src/lib/interfaces/sdk.interface.ts @@ -0,0 +1,29 @@ +import { SigninMethod } from '../constant'; +import { IStorageProvider } from './storage-provider.interface'; + +export type SDKApiKey = string; + +export type DialogUIOptions = { + integrator?: string; + logoUrl?: string; + template?: { + primaryColor?: string; + secondaryColor?: string; + backgroundColor?: string; + }; + isLightMode?: boolean; + enabledSigninMethods?: SigninMethod[]; + ops?: { + authProvider?: { + authEmailUrl?: string; + }; + }; +}; + +export type SDKOptions = { + dialogUI?: Omit; + chainId?: number; + rpcUrl?: string; + enabledSigninMethods?: SigninMethod[]; + storageService?: IStorageProvider; +}; diff --git a/src/lib/interfaces/storage-provider.interface.ts b/src/lib/interfaces/storage-provider.interface.ts new file mode 100644 index 00000000..d3ffead3 --- /dev/null +++ b/src/lib/interfaces/storage-provider.interface.ts @@ -0,0 +1,8 @@ +export interface IStorageProvider { + initialize(apiKey?: string): Promise; + getItem(key: string): Promise; + setItem(key: string, value: string): Promise; + removeItem(key: string): Promise; + clear(): Promise; + getUniqueID(): string; +} diff --git a/src/lib/interfaces/storage-service.interface.ts b/src/lib/interfaces/storage-service.interface.ts new file mode 100644 index 00000000..ed370940 --- /dev/null +++ b/src/lib/interfaces/storage-service.interface.ts @@ -0,0 +1,7 @@ +import { IStorageProvider } from './storage-provider.interface'; + +export interface IStorageService extends Omit { + isExistingPrivateKeyStored(): Promise; + executeBackup(requestBackup: boolean, secret?: string): Promise; + initialize(storageProvider: IStorageProvider, apiKey?: string): Promise; +} diff --git a/src/lib/interfaces/walllet-provider.interface.ts b/src/lib/interfaces/walllet-provider.interface.ts new file mode 100644 index 00000000..e7ae6843 --- /dev/null +++ b/src/lib/interfaces/walllet-provider.interface.ts @@ -0,0 +1,9 @@ +import { Web3Wallet } from '../networks/web3-wallet'; + +export interface IWalletProvider { + connectWithExternalWallet: (ops?: { + chainId?: number; + }) => Promise; + generateWalletFromMnemonic: (ops: T) => Promise; + generateDID: (address: string) => string; +} diff --git a/src/lib/networks/bitcoin.ts b/src/lib/networks/bitcoin.ts new file mode 100644 index 00000000..072bc359 --- /dev/null +++ b/src/lib/networks/bitcoin.ts @@ -0,0 +1,142 @@ +import { generateMnemonic, mnemonicToSeedSync } from 'bip39'; +import { BIP32Factory } from 'bip32'; +import * as bitcoin from 'bitcoinjs-lib'; +import ecc from '@bitcoinerlab/secp256k1'; +import { Web3Wallet } from './web3-wallet'; +import { TransactionResponse } from '@ethersproject/abstract-provider'; +import { IWalletProvider } from '../interfaces/walllet-provider.interface'; +import { Logger } from '../utils'; + +const generateDID = (address: string) => { + return `did:ethr:${address}`; +}; + +class BTCWallet extends Web3Wallet { + public chainId: number; + private _mnemonic!: string; + + constructor( + mnemonic: string, + network: bitcoin.Network = bitcoin.networks.bitcoin, + derivationPath: string = "m/44'/0'/0'/0/0" + ) { + super(); + if (!mnemonic) { + throw new Error('Mnemonic is required to generate wallet'); + } + const bip32 = BIP32Factory(ecc); + const seed = mnemonicToSeedSync(mnemonic); + const path = derivationPath; + // generate key pair + const { privateKey, publicKey } = bip32.fromSeed(seed).derivePath(path); + if (!privateKey || !publicKey) { + throw new Error('Failed to generate key pair'); + } + // generate address + const { address } = bitcoin.payments.p2pkh({ + pubkey: publicKey, + network + }); + // check if address is generated + if (!address) { + throw new Error('Failed to generate wallet'); + } + // set wallet properties + this.address = address; + this.publicKey = publicKey.toString('hex'); + this._privateKey = privateKey.toString('hex'); + this.chainId = network.wif; + this._mnemonic = mnemonic; + } + + sendTransaction(tx: unknown): Promise { + Logger.log('sendTransaction', tx); + throw new Error('Method not implemented.'); + } + + signTransaction(tx: unknown): Promise { + Logger.log('signTransaction', tx); + throw new Error('Method not implemented.'); + } + + async signMessage(message: string): Promise { + Logger.log('signMessage', message); + // Sign the message with the private key + const bufferMsg = Buffer.from(message, 'utf-8'); + const hash = bitcoin.crypto.sha256(bufferMsg); + // generate KeyPair from private key + const keyPair = this._generateKeyPair(); + const signature = keyPair.sign(hash); + Logger.log(`Signature: ${signature.toString('base64')}\n`); + return signature.toString('base64'); + } + + verifySignature(message: string, signature: string): boolean { + if (!this.address) { + throw new Error('Address is required to verify signature'); + } + const bufferMsg = Buffer.from(message, 'utf-8'); + const hash = bitcoin.crypto.sha256(bufferMsg); + // generate KeyPair from private key + const keyPair = this._generateKeyPair(); + const isValid = keyPair.verify(hash, Buffer.from(signature, 'base64')); + return isValid; + } + + async switchNetwork(chainId: number): Promise { + Logger.log('switchNetwork', chainId); + throw new Error('Method not implemented.'); + } + + async getSigner(): Promise { + Logger.log('getSigner'); + throw new Error('Method not implemented.'); + } + + private _generateKeyPair() { + if (!this._mnemonic) { + throw new Error('Mnemonic is required to sign message'); + } + const seed = mnemonicToSeedSync(this._mnemonic); + const path = "m/44'/0'/0'/0/0"; + // generate key pair + const bip32 = BIP32Factory(ecc); + const keyPair = bip32.fromSeed(seed).derivePath(path); + if (!keyPair) { + throw new Error('Failed to generate key pair'); + } + return keyPair; + } +} + +const generateWalletFromMnemonic = async (ops: { + mnemonic?: string; + derivationPath?: string; + network?: bitcoin.Network; +}): Promise => { + const { mnemonic = generateMnemonic(), derivationPath, network } = ops; + if (derivationPath) { + const purpose = derivationPath?.split('/')[1]; + if (purpose !== "44'") { + throw new Error('Invalid derivation path '); + } + } + const wallet = new BTCWallet(mnemonic, network, derivationPath); + return wallet; +}; + +const btcWallet: Readonly< + IWalletProvider<{ + mnemonic?: string; + derivationPath?: string; + network?: bitcoin.Network; + }> +> = Object.freeze({ + connectWithExternalWallet: async () => { + throw new Error('Method not implemented.'); + }, + generateWalletFromMnemonic, + generateDID +}); + +export default btcWallet; diff --git a/src/lib/networks/evm.ts b/src/lib/networks/evm.ts new file mode 100755 index 00000000..5a985dad --- /dev/null +++ b/src/lib/networks/evm.ts @@ -0,0 +1,289 @@ +import { Wallet, utils, providers, Contract, constants, Signer } from 'ethers'; +import { CHAIN_AVAILABLES, CHAIN_DEFAULT } from '../constant'; +import { generateMnemonic, validateMnemonic } from 'bip39'; +import { IWalletProvider } from '../interfaces/walllet-provider.interface'; +import { Web3Wallet } from './web3-wallet'; +import { Logger } from '../utils'; +// import cryptoRandomString from 'crypto-random-string'; +// const generatePrivateKey = () => { +// // Générer une clé privée aléatoire de 32 octets +// return cryptoRandomString({ length: 64, type: 'hex' }); +// }; + +// Generate a DID from an Ethereum address +const generateDID = (address: string) => { + return `did:ethr:${address}`; +}; + +class EVMWallet extends Web3Wallet { + public did!: string; + public chainId: number; + + constructor(mnemonic: string, provider: providers.JsonRpcProvider) { + super(); + if (!mnemonic) { + throw new Error('Mnemonic is required to generate wallet'); + } + const _w = Wallet.fromMnemonic(mnemonic); + const _wallet = new Wallet(_w.privateKey, provider); + const wallet = _wallet.connect(provider); + this.address = wallet.address; + this.publicKey = wallet.publicKey; + this._privateKey = wallet.privateKey; + this.did = generateDID(this.address); + this.provider = provider; + this.chainId = provider.network.chainId; + } + + async switchNetwork(chainId: number): Promise { + if (this.chainId === chainId) { + return; + } + const chain = CHAIN_AVAILABLES.find(c => c.id === chainId); + if (!chain) { + throw new Error('Chain not available'); + } + if (!this.provider) { + throw new Error('Provider not available'); + } + const provider = new providers.JsonRpcProvider(chain.rpcUrl, chain.id); + this.provider = provider; + this.chainId = chainId; + } + + async sendTransaction(tx: { + to: string; + value: string; + contractAddress: string; + }): Promise { + if (!this._privateKey) { + throw new Error('Private key is required to send token'); + } + const { + to: destination, + value: decimalAmount, + contractAddress = constants.AddressZero + } = tx; + try { + const wallet = new Wallet(this._privateKey, this.provider); + // Check if the receiver address is the same as the token contract address + if (destination.toLowerCase() === contractAddress.toLowerCase()) { + // Sending tokens to the token contract address + throw new Error( + 'Sending tokens to ERC20 contract address is not allowed.' + ); + } + const amount = utils.parseUnits(decimalAmount.toString()); // Convert 1 ether to wei + + let tx; + // Check if the token address is the same as the native ETH address + if ( + contractAddress.toLowerCase() === constants.AddressZero.toLowerCase() + ) { + Logger.log('[INFO] Sending native token'); + tx = await wallet.sendTransaction({ + to: destination, + value: amount + }); + } else { + Logger.log('[INFO] Sending erc20 token'); + // ABI (Application Binary Interface) of the ERC20 token contract + const tokenABI = [ + // Standard ERC20 functions + 'function balanceOf(address) view returns (uint)', + 'function transfer(address to, uint amount) returns (boolean)' + ]; + const wallet = new Wallet(this._privateKey, this.provider); + // Load the ERC20 token contract + const tokenContract = new Contract(contractAddress, tokenABI, wallet); + // Convert amount to wei if necessary + // (depends on the token's decimal precision) + // Call the transfer function of the ERC20 token contract + tx = await tokenContract.transfer(destination, amount); + } + Logger.log('[INFO] Transaction Hash:', tx.hash); + const receipt = await tx.wait(); + Logger.log('[INFO] Transaction confirmed'); + return receipt; + } catch (error) { + Logger.error('[ERROR] _sendToken:', error); + throw error; + } + } + + async signMessage(message: string): Promise { + if (!this._privateKey) { + throw new Error('Private key is required to sign message'); + } + const wallet = new Wallet(this._privateKey, this.provider); + return wallet.signMessage(message); + } + + async signTransaction( + message: providers.TransactionRequest + ): Promise { + if (!this._privateKey) { + throw new Error('Private key is required to sign transaction'); + } + const wallet = new Wallet(this._privateKey, this.provider); + return wallet.signTransaction(message); + } + + async getSigner(): Promise { + if (!this._privateKey) { + throw new Error('Private key is required to get signer'); + } + if (!this.provider) { + throw new Error('Provider is required to get signer'); + } + const eoaWallet = new Wallet(this._privateKey, this.provider); + const signer = eoaWallet.connect(this.provider); + return signer as Signer; + } + + verifySignature(message: string, signature: string): boolean { + if (!this.publicKey) { + throw new Error('Public key is required to verify signature'); + } + return utils.verifyMessage(message, signature) === this.address; + } +} + +class ExternalEVMWallet extends Web3Wallet { + public chainId: number; + public externalProvider!: providers.Web3Provider; + private _signer!: Signer; + + constructor( + public readonly provider: providers.Web3Provider, + fromInitializer: boolean = false + ) { + super(); + if (!fromInitializer) { + throw new Error('Use create method to initialize ExternalEVMWallet'); + } + this.chainId = provider?.network?.chainId; + this.externalProvider = provider; + this._signer = provider.getSigner(); + } + + static async create(chainId: number) { + // get current account + const externalProvider = new providers.Web3Provider( + (window as unknown as WindowWithEthereumProvider).ethereum + ); + await externalProvider.send('eth_requestAccounts', []); + // build wallet + const wallet = new ExternalEVMWallet(externalProvider, true); + // switch to default chain + if (wallet.externalProvider?.network?.chainId !== chainId || !wallet.chainId) { + await wallet.switchNetwork(chainId); + } + wallet.chainId = chainId; + wallet.address = await wallet._signer.getAddress(); + return wallet; + } + + async switchNetwork(chainId: number): Promise { + const chain = CHAIN_AVAILABLES.find(c => c.id === chainId); + if (!chain) { + throw new Error('Chain not available'); + } + if (chain.type !== 'evm') { + throw new Error('Only EVM chain is supported with external wallet.'); + } + const chainIdAsHex = utils.hexValue(chainId); + await this.externalProvider.send('wallet_switchEthereumChain', [ + { chainId: chainIdAsHex } + ]); + this.chainId = chainId; + } + async sendTransaction(tx: utils.Deferrable) { + return this._signer.sendTransaction(tx); + } + + async signMessage(message: string) { + return this._signer.signMessage(message); + } + + async signTransaction(tx: utils.Deferrable) { + return this._signer.signTransaction(tx); + } + + async getSigner(): Promise { + return this._signer as Signer; + } + + verifySignature(message: string, signature: string) { + return utils.verifyMessage(message, signature) === this.address; + } +} + +const generateWalletFromMnemonic = async ( + ops: { + mnemonic?: string; + chainId?: number; + } = {} +) => { + const { mnemonic = generateMnemonic(), chainId } = ops; + // validate mnemonic + if (!validateMnemonic(mnemonic)) { + throw new Error('Invalid mnemonic'); + } + const chain = CHAIN_AVAILABLES.find(c => c.id === chainId) || CHAIN_DEFAULT; + const provider = new providers.JsonRpcProvider(chain.rpcUrl, chain.id); + const web3Wallet = new EVMWallet(mnemonic, provider); + return web3Wallet; +}; + +// const generateWalletFromPrivateKey = async ( +// privateKey: string, +// chainId?: number +// ): Promise => { +// if (!utils.isHexString(privateKey)) { +// throw new Error('Invalid private key'); +// } + +// const chain = CHAIN_AVAILABLES.find(c => c.id === chainId) || CHAIN_DEFAULT; +// const provider = new providers.JsonRpcProvider(chain.rpcUrl, chain.id); +// const wallet = new EVMWallet(privateKey, provider); +// return wallet; +// // const ethrDid = generateDID(wallet.address); +// // return { +// // privateKey: wallet.privateKey, +// // publicKey: wallet.publicKey, +// // address: wallet.address, +// // provider +// // }; +// }; + +interface WindowWithEthereumProvider extends Window { + ethereum: providers.ExternalProvider; +} + +const connectWithExternalWallet = async (ops?: { + chainId?: number; +}): Promise => { + // check if metamask/browser extension is installed + if (!(window as unknown as WindowWithEthereumProvider).ethereum) { + throw new Error(` + No web3 wallet extension found. + Install browser extensions like Metamask or Rabby wallet to connect with the app using your existing or hardware wallet. + `); + } + // return object fromated as Web3Wallet + const wallet = await ExternalEVMWallet.create( + ops?.chainId || CHAIN_DEFAULT.id + ); + return wallet; +}; + +const evmWallet: Readonly< + IWalletProvider<{ mnemonic?: string; chainId?: number }> +> = Object.freeze({ + connectWithExternalWallet, + generateWalletFromMnemonic, + generateDID +}); + +export default evmWallet; diff --git a/src/lib/networks/solana.ts b/src/lib/networks/solana.ts new file mode 100644 index 00000000..0260ff24 --- /dev/null +++ b/src/lib/networks/solana.ts @@ -0,0 +1,205 @@ +import { generateMnemonic, mnemonicToSeedSync } from 'bip39'; +import { + Connection, + Keypair, + LAMPORTS_PER_SOL, + PublicKey, + SystemProgram, + Transaction, + TransactionResponse, + sendAndConfirmTransaction +} from '@solana/web3.js'; +import { + getOrCreateAssociatedTokenAccount, + transfer as transferToken, + getMint +} from '@solana/spl-token'; +import { derivePath } from 'ed25519-hd-key'; +import * as bs58 from 'bs58'; +import { Web3Wallet } from './web3-wallet'; +import { IWalletProvider } from '../interfaces/walllet-provider.interface'; +import { NETWORK } from '../constant'; +import { Logger } from '../utils'; + +declare type bs58 = any; + +const generateDID = (address: string) => { + return `did:ethr:${address}`; +}; + +class SolanaWallet extends Web3Wallet { + private _rpcUrl: string = ''; + public chainId: number = NETWORK.solana; + + constructor(mnemonic: string, derivationPath: string = "m/44'/501'/0'/0'") { + super(); + if (!mnemonic) { + throw new Error('Mnemonic is required to generate wallet'); + } + const seed = mnemonicToSeedSync(mnemonic); + const path = derivationPath; + const derivedSeed = derivePath(path, seed as unknown as string).key; + // generate key pair + const { publicKey, secretKey } = Keypair.fromSeed(derivedSeed); + const privateKey = bs58.encode(secretKey); + if (!privateKey || !publicKey) { + throw new Error('Failed to generate key pair'); + } + // generate address + const address = publicKey.toBase58(); + // check if address is generated + if (!address) { + throw new Error('Failed to generate wallet'); + } + // set wallet properties + this.address = address; + this.publicKey = publicKey.toString(); + this._privateKey = privateKey; + } + + async sendTransaction(tx: { + recipientAddress: string; + amount: number; + tokenAddress?: string; + }): Promise { + Logger.log('sendTransaction', tx); + if (!this._privateKey) { + throw new Error('Private key is required to send transaction'); + } + const connection = this._getConnection(this._rpcUrl); + + const recipient = new PublicKey(tx.recipientAddress); + let secretKey; + let signature; + + if (this._privateKey.split(',').length > 1) { + secretKey = new Uint8Array( + this._privateKey.split(',') as Iterable + ); + } else { + secretKey = bs58.decode(this._privateKey); + } + + const from = Keypair.fromSecretKey(secretKey, { + skipValidation: true + }); + + if (tx.tokenAddress) { + // Get token mint + const mint = await getMint(connection, new PublicKey(tx.tokenAddress)); + + // Get the token account of the from address, and if it does not exist, create it + const fromTokenAccount = await getOrCreateAssociatedTokenAccount( + connection, + from, + mint.address, + from.publicKey + ); + + // Get the token account of the recipient address, and if it does not exist, create it + const recipientTokenAccount = await getOrCreateAssociatedTokenAccount( + connection, + from, + mint.address, + recipient + ); + + signature = await transferToken( + connection, + from, + fromTokenAccount.address, + recipientTokenAccount.address, + from.publicKey, + LAMPORTS_PER_SOL * tx.amount + ); + } else { + const transaction = new Transaction().add( + SystemProgram.transfer({ + fromPubkey: from.publicKey, + toPubkey: recipient, + lamports: LAMPORTS_PER_SOL * tx.amount + }) + ); + + // Sign transaction, broadcast, and confirm + signature = await sendAndConfirmTransaction(connection, transaction, [ + from + ]); + } + + const txRecipe = await connection.getTransaction(signature); + if (!txRecipe) { + throw new Error('Transaction not found'); + } + return { + ...txRecipe + }; + } + + signTransaction(tx: unknown): Promise { + Logger.log('signTransaction', tx); + throw new Error('Method not implemented.'); + } + + async signMessage(message: string): Promise { + Logger.log('signMessage', message); + throw new Error('Method not implemented.'); + } + + verifySignature(message: string, signature: string): boolean { + Logger.log('[INFO]: verifySignature:', { message, signature }); + if (!this.address) { + throw new Error('Address is required to verify signature'); + } + throw new Error('Method not implemented.'); + } + + async switchNetwork(chainId: number): Promise { + Logger.log('switchNetwork', chainId); + throw new Error('Method not implemented.'); + } + + async getSigner(): Promise { + return this._getConnection(this._rpcUrl) as Connection; + } + + private _getConnection = (rpcUrl?: string): Connection => { + const connection = this._provider(rpcUrl); + + return connection; + }; + + private _provider(rpcUrl?: string) { + return new Connection(rpcUrl as string); + } +} + +const generateWalletFromMnemonic = async (ops: { + mnemonic?: string; + derivationPath?: string; +}): Promise => { + const { mnemonic = generateMnemonic(), derivationPath } = ops; + if (derivationPath) { + const purpose = derivationPath?.split('/')[1]; + if (purpose !== "44'") { + throw new Error('Invalid derivation path '); + } + } + const wallet = new SolanaWallet(mnemonic, derivationPath); + return wallet; +}; + +const solanaWallet: Readonly< + IWalletProvider<{ + mnemonic?: string; + derivationPath?: string; + }> +> = Object.freeze({ + connectWithExternalWallet: async () => { + throw new Error('Method not implemented.'); + }, + generateWalletFromMnemonic, + generateDID +}); + +export default solanaWallet; diff --git a/src/lib/networks/web3-wallet.ts b/src/lib/networks/web3-wallet.ts new file mode 100644 index 00000000..d76a4fb9 --- /dev/null +++ b/src/lib/networks/web3-wallet.ts @@ -0,0 +1,16 @@ +import { providers } from 'ethers'; + +export abstract class Web3Wallet { + public address!: string; + public publicKey: string | undefined; + public provider: providers.JsonRpcProvider | undefined; + protected _privateKey: string | undefined; + public abstract chainId: number; + + public abstract getSigner(): Promise; + abstract sendTransaction(tx: unknown): Promise; + abstract signTransaction(tx: unknown): Promise; + abstract signMessage(message: string): Promise; + abstract verifySignature(message: string, signature: string): boolean; + abstract switchNetwork(chainId: number): Promise; +} diff --git a/src/lib/providers/auth/firebase.ts b/src/lib/providers/auth/firebase.ts new file mode 100755 index 00000000..85f0fbe9 --- /dev/null +++ b/src/lib/providers/auth/firebase.ts @@ -0,0 +1,206 @@ +// Import the functions you need from the SDKs you need +// import { FirebaseOptions, initializeApp } from 'firebase/app'; +// TODO: Add SDKs for Firebase products that you want to use +// https://firebase.google.com/docs/web/setup#available-libraries +import { + GoogleAuthProvider, + signInWithPopup, + sendSignInLinkToEmail, + isSignInWithEmailLink, + signInWithEmailLink, + signInAnonymously, + signOut as signOutFormFirebase, + Auth, + // onAuthStateChanged as onAuthStateChangedFirebase, + User, + // browserPopupRedirectResolver, + signInWithEmailAndPassword, + createUserWithEmailAndPassword, + sendEmailVerification, + getAdditionalUserInfo, + onIdTokenChanged + // updateCurrentUser, + // beforeAuthStateChanged, + // getAdditionalUserInfo +} from 'firebase/auth'; +import { IAuthProvider } from '../../interfaces/auth-provider.interface'; +import { KEYS } from '../../constant'; +import { Logger } from '../../utils'; + +let auth!: Auth; + +const signinWithGoogle = async () => { + // Initialize Firebase Google Auth + const provider = new GoogleAuthProvider(); + const credential = await signInWithPopup( + auth, + provider + // browserPopupRedirectResolver + ); + if (!credential) { + throw new Error('Credential not found'); + } + // TODO: implement this + const { isNewUser } = getAdditionalUserInfo(credential) || {}; + if (!isNewUser) { + // await signOut(); + // throw new Error(`auth/google-account-already-in-use`); + } + return credential.user; +}; + +const sendLinkToEmail = async ( + email: string, + ops?: { + url?: string; + } +) => { + const url = + ops?.url || + `${window.location.origin}/?${KEYS.URL_QUERYPARAM_FINISH_SIGNUP}=true`; + const actionCodeSettings = { + // URL you want to redirect back to. The domain (www.example.com) for this + // URL must be in the authorized domains list in the Firebase Logger. + url, + // This must be true. + handleCodeInApp: true + // dynamicLinkDomain: 'example.page.link' + }; + // Initialize Firebase email Auth + + // await setPersistence(auth, browserLocalPersistence); + await sendSignInLinkToEmail(auth, email, actionCodeSettings); + // The link was successfully sent. Inform the user. + // Save the email locally so you don't need to ask the user for it again + // if they open the link on the same device. + window.localStorage.setItem(KEYS.STORAGE_EMAIL_FOR_SIGNIN_KEY, email); +}; + +const signInWithLink = async () => { + if (!isSignInWithEmailLink(auth, window.location.href)) { + return undefined; + } + Logger.log( + '[INFO] FirebaseWeb3Connect - signInWithLink: ', + window.location.href + ); + // Additional state parameters can also be passed via URL. + // This can be used to continue the user's intended action before triggering + // the sign-in operation. + // Get the email if available. This should be available if the user completes + // the flow on the same device where they started it. + let email = window.localStorage.getItem(KEYS.STORAGE_EMAIL_FOR_SIGNIN_KEY); + if (!email) { + // User opened the link on a different device. To prevent session fixation + // attacks, ask the user to provide the associated email again. For example: + email = window.prompt('Please provide your email for confirmation'); + } + if (!email) { + throw new Error('No email provided'); + } + + // The client SDK will parse the code from the link for you. + const credential = await signInWithEmailLink( + auth, + email, + window.location.href + ); //.catch(err => err) + // You can check if the user is new or existing: + // result.additionalUserInfo.isNewUser + // Clear email from storage. + window.localStorage.removeItem(KEYS.STORAGE_EMAIL_FOR_SIGNIN_KEY); + return credential; +}; + +const signInAsAnonymous = async () => { + return await signInAnonymously(auth); +}; + +const signInWithEmailPwd = async (email: string, password: string) => { + let user!: User; + try { + // Create user with email and password + const credential = await createUserWithEmailAndPassword( + auth, + email, + password + ); + user = credential.user; + if (!user.emailVerified) { + await sendEmailVerification(user); + } + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (error: any) { + console.log('[ERROR] auth with email pwd: ', error, { + code: error?.code, + message: error?.message + }); + if ( + error?.code === 'auth/email-already-in-use' || + error?.code === 'auth/network-request-failed' + ) { + const credential = await signInWithEmailAndPassword( + auth, + email, + password + ); + user = credential.user; + return user; + } + + // TODO: implement this to prevent user from creating new account if email already in use + // if (error?.code === 'auth/email-already-in-use' && privateKey) { + // const credential = await signInWithEmailAndPassword( + // auth, + // email, + // password + // ); + // user = credential.user; + // return user; + // } + throw error; + } + if (!user) { + throw new Error('User not found'); + } + return user; +}; + +const signOut = async () => { + await signOutFormFirebase(auth); +}; + +const initialize = (_auth: Auth) => { + auth = _auth; + // Object.freeze(auth); +}; + +const getOnAuthStateChanged = (cb: (user: User | null) => void) => { + return onIdTokenChanged(auth, user => cb(user)); + // return onAuthStateChangedFirebase(auth, user => cb(user)); +}; + +const getCurrentUserAuth = async () => { + return auth.currentUser; +}; + +const updateUserAndTriggerStateChange = async () => { + const user = auth.currentUser; + // update if user is connected + await user?.getIdToken(true); +}; + +const FirebaseAuthProvider: IAuthProvider = { + signinWithGoogle, + sendLinkToEmail, + signInWithLink, + signInAsAnonymous, + signInWithEmailPwd, + signOut, + getOnAuthStateChanged, + getCurrentUserAuth, + updateUserAndTriggerStateChange, + initialize +}; + +export default FirebaseAuthProvider; diff --git a/src/lib/providers/crypto/crypto.ts b/src/lib/providers/crypto/crypto.ts new file mode 100644 index 00000000..d07b3dd5 --- /dev/null +++ b/src/lib/providers/crypto/crypto.ts @@ -0,0 +1,316 @@ +import { Logger } from '../../utils'; + +export default class Crypto { + // iterations: It must be a number and should be set as high as possible. + // So, the more is the number of iterations, the more secure the derived key will be, + // but in that case it takes greater amount of time to complete. + // number of interation - the value of 2145 is randomly chosen + private static iteration = 1000; + + // algorithm - AES 256 GCM Mode + private static encryptionAlgorithm = 'AES-GCM'; + + // random initialization vector length + private static ivLength = 12; + + // random salt length + private static saltLength = 16; + + // digest: It is a digest algorithms of string type. + private static digest = 'SHA-256'; + + // text encoder + private static enc = new TextEncoder(); + + // text decoder + private static dec = new TextDecoder(); + + /** + * + * @param u8 + * @returns + */ + private static base64Encode(u8: Uint8Array): string { + return btoa(String.fromCharCode.apply(undefined, Array.from(u8))); + } + + /** + * + * @param str + * @returns + */ + private static base64Decode(str: string): Uint8Array { + return Uint8Array.from(atob(str), c => c.charCodeAt(0)); + } + + /** + * + * @param secretKey + * @returns + */ + private static getPasswordKey(secretKey: string): Promise { + return window.crypto.subtle.importKey( + 'raw', + Crypto.enc.encode(secretKey), + 'PBKDF2', + false, + ['deriveKey'] + ); + } + + /** + * + * @param passwordKey + * @param salt + * @param iteration + * @param digest + * @param encryptionAlgorithm + * @param keyUsage + * @returns + */ + private static deriveKey( + passwordKey: CryptoKey, + salt: Uint8Array, + iteration: number, + digest: string, + encryptionAlgorithm: string, + keyUsage: ['encrypt'] | ['decrypt'] + ): Promise { + return window.crypto.subtle.deriveKey( + { + name: 'PBKDF2', + salt, + iterations: iteration, + hash: digest + }, + passwordKey, + { + name: encryptionAlgorithm, + length: 256 + }, + false, + keyUsage + ); + } + + /** + * + * @param secretKey + * @param data + * @returns + */ + public static async encrypt( + secretKey: string, + data: string + ): Promise { + try { + // generate random salt + const salt = window.crypto.getRandomValues( + new Uint8Array(Crypto.saltLength) + ); + + // How to transport IV ? + // Generally the IV is prefixed to the ciphertext or calculated using some kind of nonce on both sides. + const iv = window.crypto.getRandomValues(new Uint8Array(Crypto.ivLength)); + + // create master key from secretKey + // The method gives an asynchronous Password-Based Key Derivation + // Create a password based key (PBKDF2) that will be used to derive the AES-GCM key used for encryption + const passwordKey = await Crypto.getPasswordKey(secretKey); + + // to derive a secret key from a master key for encryption + // Create an AES-GCM key using the PBKDF2 key and a randomized salt value. + const aesKey = await Crypto.deriveKey( + passwordKey, + salt, + Crypto.iteration, + Crypto.digest, + Crypto.encryptionAlgorithm, + ['encrypt'] + ); + + // create a Cipher object, with the stated algorithm, key and initialization vector (iv). + // @algorithm - AES 256 GCM Mode + // @key + // @iv + // @options + // Encrypt the input data using the AES-GCM key and a randomized initialization vector (iv). + const encryptedContent = await window.crypto.subtle.encrypt( + { + name: Crypto.encryptionAlgorithm, + iv + }, + aesKey, + Crypto.enc.encode(data) + ); + + // convert encrypted string to buffer + const encryptedContentArr: Uint8Array = new Uint8Array(encryptedContent); + + // create buffer array with length [salt + iv + encryptedContentArr] + const buff: Uint8Array = new Uint8Array( + salt.byteLength + iv.byteLength + encryptedContentArr.byteLength + ); + + // set salt at first postion + buff.set(salt, 0); + + // set iv at second postion + buff.set(iv, salt.byteLength); + // set encrypted at third postion + buff.set(encryptedContentArr, salt.byteLength + iv.byteLength); + // encode the buffer array + const base64Buff: string = Crypto.base64Encode(buff); + + // return encrypted string + return base64Buff; + } catch (error) { + // if any expection occurs + Logger.error(`Error - ${error}`); + return ''; + } + } + + /** + * + * @param secretKey + * @param ciphertext + * @returns + */ + public static async decrypt(secretKey: string, ciphertext: string) { + try { + // Creates a new Buffer containing the given JavaScript string {str} + const encryptedDataBuff = Crypto.base64Decode(ciphertext); + + // extract salt from encrypted data + const salt = encryptedDataBuff.slice(0, Crypto.saltLength); + + // extract iv from encrypted data + const iv = encryptedDataBuff.slice( + Crypto.saltLength, + Crypto.saltLength + Crypto.ivLength + ); + + // extract encrypted text from encrypted data + const data = encryptedDataBuff.slice(Crypto.saltLength + Crypto.ivLength); + + // create master key from secretKey + // The method gives an asynchronous Password-Based Key Derivation + // Create a password based key (PBKDF2) that will be used to derive the AES-GCM key used for decryption. + const passwordKey = await Crypto.getPasswordKey(secretKey); + + // to derive a secret key from a master key for decryption + // Create an AES-GCM key using the PBKDF2 key and the salt from the ArrayBuffer. + const aesKey = await Crypto.deriveKey( + passwordKey, + salt, + Crypto.iteration, + Crypto.digest, + Crypto.encryptionAlgorithm, + ['decrypt'] + ); + + // Return the buffer containing the value of cipher object. + // Decrypt the input data using the AES-GCM key and the iv from the ArrayBuffer. + const decryptedContent = await window.crypto.subtle.decrypt( + { + name: Crypto.encryptionAlgorithm, + iv + }, + aesKey, + data + ); + + // Returns the result of running encoding's decoder. + return Crypto.dec.decode(decryptedContent); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + } catch (error: any) { + // // if any expection occurs + // Logger.error(`Error - ${error}`); + // return ""; + throw new Error( + error?.message || + 'Error while decrypting data.
Invalid secret or content.' + ); + } + } + + public static async signMessageFromPassword( + password: string, + message: string + ): Promise { + // generate key thath allow signature + const key = await window.crypto.subtle.importKey( + 'raw', + Crypto.enc.encode(password), + { name: 'HMAC', hash: { name: 'SHA-256' } }, + false, + ['sign'] + ); + const signature = await window.crypto.subtle.sign( + { + name: 'HMAC', + hash: { name: 'SHA-256' } + }, + key, + Crypto.enc.encode(message) + ); + return Crypto.base64Encode(new Uint8Array(signature)); + } + + public static async verifySignatureFromPassword( + password: string, + message: string, + signature: string + ): Promise { + const key = await window.crypto.subtle.importKey( + 'raw', + Crypto.enc.encode(password), + { name: 'HMAC', hash: { name: 'SHA-256' } }, + false, + ['verify'] + ); + const result = await window.crypto.subtle.verify( + { + name: 'HMAC', + hash: { name: 'SHA-256' } + }, + key, + new Uint8Array(Crypto.base64Decode(signature)), + Crypto.enc.encode(message) + ); + return result; + } + + /** + * @deprecated + */ + public static async generatePrivateKeyFromPassword( + password: string + ): Promise { + const passwordKey = await window.crypto.subtle.importKey( + 'raw', + Crypto.enc.encode(password), + 'PBKDF2', + false, + ['deriveBits'] + ); + + const salt = window.crypto.getRandomValues( + new Uint8Array(Crypto.saltLength) + ); + + const key = await window.crypto.subtle.deriveBits( + { + name: 'PBKDF2', + salt, + iterations: Crypto.iteration, + hash: Crypto.digest + }, + passwordKey, + 256 + ); + + return Crypto.base64Encode(new Uint8Array(key)); + } +} diff --git a/src/lib/providers/crypto/password.ts b/src/lib/providers/crypto/password.ts new file mode 100644 index 00000000..22034d08 --- /dev/null +++ b/src/lib/providers/crypto/password.ts @@ -0,0 +1,26 @@ +import Crypto from './crypto'; +import { KEYS } from '../../constant'; +import { storageService } from '../../services/storage.service'; + +export const passwordValidationOrSignature = (value: string) => ({ + execute: async () => { + const privateKey = await storageService.isExistingPrivateKeyStored(); + const signature = await storageService.getItem(KEYS.AUTH_SIGNATURE_KEY); + if (privateKey && signature) { + const isSignatureValid = await Crypto.verifySignatureFromPassword( + value, + KEYS.AUTH_SIGNATURE_VALUE, + signature + ); + if (!isSignatureValid) { + throw new Error('Invalid password'); + } + } else { + const signature = await Crypto.signMessageFromPassword( + value, + KEYS.AUTH_SIGNATURE_VALUE + ); + await storageService.setItem(KEYS.AUTH_SIGNATURE_KEY, signature); + } + } +}); diff --git a/src/lib/providers/storage/firebase.ts b/src/lib/providers/storage/firebase.ts new file mode 100644 index 00000000..ce2eec7f --- /dev/null +++ b/src/lib/providers/storage/firebase.ts @@ -0,0 +1,43 @@ +import { FirebaseApp } from 'firebase/app'; +import { Database, getDatabase, ref, set as setData, get as getDoc } from 'firebase/database'; + +const _params: { + db: Database | undefined; + ops: { + collectionName: string; + }; +} = { + db: undefined, + ops: { collectionName: '_logs-users' } +}; + +export const initialize = ( + app: FirebaseApp, + ops?: { + usersCollectionName?: string; + } +) => { + _params.db = getDatabase(app); + if (ops) { + _params.ops = Object.freeze({ + ..._params.ops, + ...ops + } as const); + } + Object.freeze(_params); + Object.seal(_params); +}; + +export const set = async (refUrl: string, data: unknown) => { + if (!_params.db) throw new Error('Database not initialized'); + const dbRef = ref(_params.db, `${_params.ops.collectionName}/${refUrl}`); + return await setData(dbRef, data); +}; + +export const get = async (refUrl: string) => { + if (!_params.db) throw new Error('Database not initialized'); + const dbRef = ref(_params.db, `${_params.ops.collectionName}/${refUrl}`); + // check doc exists + const snapshot = await getDoc(dbRef); + return snapshot.exists() ? snapshot.val() : null; +} \ No newline at end of file diff --git a/src/lib/providers/storage/fleek.ts b/src/lib/providers/storage/fleek.ts new file mode 100644 index 00000000..881e2361 --- /dev/null +++ b/src/lib/providers/storage/fleek.ts @@ -0,0 +1,29 @@ +import { FleekSdk, ApplicationAccessTokenService } from '@fleekxyz/sdk'; + +let fleekSdk!:FleekSdk; + +const initialize = Object.freeze((clientId: string) => { + const applicationService = new ApplicationAccessTokenService({ + clientId, + }); + fleekSdk = new FleekSdk({ accessTokenService: applicationService }); +}); + +const uploadToIPFS = Object.freeze(async (filename: string, content: Buffer) => { + if (!fleekSdk) { + throw new Error('Fleek SDK not initialized'); + } + const result = await fleekSdk.ipfs().add({ + path: filename, + content: content, + }) + + return result +}); + +const FleekStorageProvider = { + initialize, + uploadToIPFS, +} + +export default FleekStorageProvider; \ No newline at end of file diff --git a/src/lib/providers/storage/local.ts b/src/lib/providers/storage/local.ts new file mode 100644 index 00000000..49dc3581 --- /dev/null +++ b/src/lib/providers/storage/local.ts @@ -0,0 +1,139 @@ +import { IStorageProvider } from '../../interfaces/storage-provider.interface'; +import Crypto from '../crypto/crypto'; + +const generateBucketNameUsingWebGlSignature = () => { + const res = []; + const canvas = document.createElement('canvas'); + const gl = canvas.getContext('webgl2'); + res.push(gl?.getParameter(gl.RENDERER)); + res.push(gl?.getParameter(gl.VENDOR)); + const dbgRenderInfo = gl?.getExtension('WEBGL_debug_renderer_info'); + res.push(dbgRenderInfo?.UNMASKED_RENDERER_WEBGL); + res.push(dbgRenderInfo?.UNMASKED_VENDOR_WEBGL); + const encoded = new TextEncoder().encode(res.join('')); + return btoa(String.fromCharCode(...Array.from(encoded))); +}; + +const generateUIDUsingCanvasID = (): string => { + const canvas = document.createElement('canvas'); + canvas.height = 100; + canvas.width = 800; + const ctx = canvas.getContext('2d'); + if (ctx !== null) { + ctx.font = '30px Arial'; + ctx?.fillText('Hello World', 20, 90); + } + return canvas.toDataURL().split(',').pop() as string; +}; + +export const Environment = Object.freeze({ + applyEncryption: () => (process.env.NEXT_PUBLIC_APP_IS_PROD === 'true' ? true : false), + bucketName: generateBucketNameUsingWebGlSignature() +}); + +const isStringified = Object.freeze((input: string = '') => { + try { + return JSON.parse(input); + } catch { + return input; + } +}); + +class LocalStorage implements IStorageProvider { + private _uid!: string; + private _inMemoryDB?: Map; + + public async initialize() { + const uid = generateUIDUsingCanvasID().slice(0, 16); + this._uid = uid; + await this._getDatabase(); + } + + private async _getDatabase() { + if (!this._inMemoryDB) { + const jsonString = + window.localStorage.getItem(Environment.bucketName) || undefined; + const data = + Environment.applyEncryption() && this._uid && jsonString + ? await Crypto.decrypt(this._uid, jsonString) + : jsonString; + const arrayOfData = isStringified(data); + this._inMemoryDB = new Map(arrayOfData); + } + return this._inMemoryDB as Map; + } + + private async _saveDatabase() { + if (!this._inMemoryDB) { + throw new Error('Database not initialized'); + } + const jsonString = JSON.stringify(Array.from(this._inMemoryDB.entries())); + const data = + Environment.applyEncryption() && this._uid && jsonString + ? await Crypto.encrypt(this._uid, jsonString) + : jsonString; + window.localStorage.setItem(Environment.bucketName, data); + } + + public getUniqueID(): string { + return this._uid; + } + + /** + * + * @param key + * @returns + */ + public async getItem(key: string): Promise { + const result = await this._getDatabase().then(db => db.get(key)); + return result || null; + } + + /** + * + * @param key + * @param value + */ + public async setItem(key: string, value: string): Promise { + if (!this._inMemoryDB) { + throw new Error('Database not initialized'); + } + this._inMemoryDB.set(key, value); + await this._saveDatabase(); + } + + /** + * + * @param key + */ + public async removeItem(key: string) { + if (!this._inMemoryDB) { + throw new Error('Database not initialized'); + } + this._inMemoryDB.delete(key); + await this._saveDatabase(); + if (this._inMemoryDB.size === 0) { + window.localStorage.removeItem(Environment.bucketName); + } + } + + /** + * + * @param keys + */ + public async removeItems(keys: string[]) { + for (const key of keys) await this.removeItem(key); + } + + /** + * + */ + public async clear() { + this._inMemoryDB = new Map(); + window.localStorage.clear(); + } +} + +const storageProvider: IStorageProvider = new LocalStorage(); + +export default storageProvider; diff --git a/src/lib/providers/storage/localforage.ts b/src/lib/providers/storage/localforage.ts new file mode 100644 index 00000000..b68d5059 --- /dev/null +++ b/src/lib/providers/storage/localforage.ts @@ -0,0 +1,126 @@ +import { IStorageProvider } from '../../interfaces/storage-provider.interface'; +import { Storage } from '@ionic/storage'; +import Crypto from '../crypto/crypto'; + +const generateBucketNameUsingWebGlSignature = () => { + const res = []; + const canvas = document.createElement('canvas'); + const gl = canvas.getContext('webgl2'); + res.push(gl?.getParameter(gl.RENDERER)); + res.push(gl?.getParameter(gl.VENDOR)); + const dbgRenderInfo = gl?.getExtension('WEBGL_debug_renderer_info'); + res.push(dbgRenderInfo?.UNMASKED_RENDERER_WEBGL); + res.push(dbgRenderInfo?.UNMASKED_VENDOR_WEBGL); + const encoded = new TextEncoder().encode(res.join('')); + return btoa(String.fromCharCode(...Array.from(encoded))); +}; + +const generateUIDUsingCanvasID = (): string => { + const canvas = document.createElement('canvas'); + canvas.height = 100; + canvas.width = 800; + const ctx = canvas.getContext('2d'); + if (ctx !== null) { + ctx.font = '30px Arial'; + ctx?.fillText('Hello World', 20, 90); + } + return canvas.toDataURL().split(',').pop() as string; +}; + +const Environment = Object.freeze({ + applyEncryption: () => (process.env.NEXT_PUBLIC_APP_IS_PROD === 'true' ? true : false), + bucketName: generateBucketNameUsingWebGlSignature() +}); + +const isStringified = Object.freeze((input: string = '') => { + try { + return JSON.parse(input); + } catch { + return input; + } +}); + +class LocalForageStorage implements IStorageProvider { + private _uid!: string; + private _inMemoryDB?: Map; + private _provider?: Storage; + + private async _getDatabase() { + if (!this._inMemoryDB) { + const values = + await this._provider?.get(Environment.bucketName) || undefined; + const data = + Environment.applyEncryption() && this._uid && values + ? JSON.parse(await Crypto.decrypt(this._uid, values)) + : values; + const arrayOfData = isStringified(data); + console.log(arrayOfData); + this._inMemoryDB = new Map(arrayOfData); + } + return this._inMemoryDB as Map; + } + + private async _saveDatabase() { + if (!this._inMemoryDB) { + throw new Error('Database not initialized'); + } + const values = Array.from(this._inMemoryDB.entries()); + const data = + Environment.applyEncryption() && this._uid && values + ? await Crypto.encrypt(this._uid, JSON.stringify(values)) + : values; + await this._provider?.set(Environment.bucketName, data); + } + + async initialize(apiKey?: string | undefined): Promise { + this._uid = generateUIDUsingCanvasID().slice(0, 16); + const dbKey = Environment.bucketName; + this._provider = new Storage({ + dbKey + }); + await this._provider.create(); + await this._getDatabase(); + } + + getUniqueID(): string { + return this._uid; + } + + async getItem(key: string): Promise { + const result = await this._getDatabase().then((db) => db.get(key)); + return result || null; + } + + async setItem(key: string, value: string): Promise { + if (!this._inMemoryDB) { + throw new Error('Database not initialized'); + } + this._inMemoryDB.set(key, value); + await this._saveDatabase(); + } + + async removeItem(key: string): Promise { + if (!this._inMemoryDB) { + throw new Error('Database not initialized'); + } + this._inMemoryDB.delete(key); + await this._saveDatabase(); + if (this._inMemoryDB.size === 0) { + await this._provider?.remove(Environment.bucketName); + } + } + + async removesItems(keys: string[]): Promise { + for (const key of keys) await this.removeItem(key); + } + + async clear(): Promise { + this._inMemoryDB = new Map(); + await this._provider?.clear(); + } + +} + +const storageProvider: IStorageProvider = new LocalForageStorage(); + +export default storageProvider; \ No newline at end of file diff --git a/src/lib/sdk.ts b/src/lib/sdk.ts new file mode 100644 index 00000000..2902ecfa --- /dev/null +++ b/src/lib/sdk.ts @@ -0,0 +1,746 @@ +import authProvider from './providers/auth/firebase'; +import storageProvider from './providers/storage/localforage'; +import './ui/dialog-element/dialogElement'; +import { + addAndWaitUIEventsResult, + setupSigninDialogElement +} from './ui/dialog-element'; +import { + CHAIN_AVAILABLES, + CHAIN_DEFAULT, + DEFAULT_SIGNIN_METHODS, + KEYS, + MAX_SKIP_BACKUP_TIME, + NETWORK, + SigninMethod +} from './constant'; +// import { parseApiKey } from './utils'; +import { generateMnemonic, initWallet } from './services/wallet.service.ts'; + +import { Auth } from 'firebase/auth'; +import { SDKOptions } from './interfaces/sdk.interface'; +import { storageService } from './services/storage.service'; +import { Web3Wallet } from './networks/web3-wallet'; +import Crypto from './providers/crypto/crypto'; +import { Logger } from './utils'; +import { + initialize as initializeRealtimeDB, + set, get +} from './providers/storage/firebase'; +import { authWithExternalWallet } from './services/auth.servcie'; +import { FirebaseWeb3ConnectDialogElement } from './interfaces/dialog-element.interface'; +import { passwordValidationOrSignature } from './providers/crypto/password'; + +export class FirebaseWeb3Connect { + private readonly _apiKey!: string; + private _ops?: SDKOptions; + private _encryptedSecret!: string | undefined; + private _uid!: string | undefined; + private _cloudBackupEnabled!: boolean | undefined; + private _wallet!: Web3Wallet | undefined; + private _wallets: Web3Wallet[] = []; + private _requestSignout: boolean = false; + + get provider() { + return this._wallet?.provider; + } + + get userInfo() { + return this._wallet + ? { + address: this._wallet.address, + publicKey: this._wallet.publicKey, + chainId: this._wallet.chainId, + uid: this._uid, + cloudBackupEnabled: this._cloudBackupEnabled + } + : null; + } + + get wallet() { + return this._wallet; + } + + constructor(auth: Auth, apiKey: string, ops?: SDKOptions) { + this._apiKey = apiKey; // parseApiKey(apiKey.slice(2)); + this._ops = { + enabledSigninMethods: DEFAULT_SIGNIN_METHODS, + ...ops + }; + // initialize service dependencies + authProvider.initialize(auth); + // set storage.uid + storageService.initialize(this._ops?.storageService || storageProvider); + // init realtimeDatabase users collection + initializeRealtimeDB(auth.app); + // check if window is available and HTMLDialogElement is supported + if (!window || !window.HTMLDialogElement) { + throw new Error( + '[ERROR] FirebaseWeb3Connect: HTMLDialogElement not supported' + ); + } + Logger.log(`[INFO] FirebaseWeb3Connect initialized and ready!`, { + config: this._ops, + isProd: process.env.NEXT_PUBLIC_APP_IS_PROD, + apiKey: this._apiKey, + auth + }); + } + + static isConnectWithLink() { + // check special paramettre in url + const isSignInWithLink = window.location.search.includes( + KEYS.URL_QUERYPARAM_FINISH_SIGNUP + ); + if (!isSignInWithLink) { + return false; + } else { + return true; + } + } + + public async connectWithLink() { + if (!FirebaseWeb3Connect.isConnectWithLink()) { + return; + } + try { + authProvider.signInWithLink(); + } catch (error: unknown) { + Logger.error( + '[ERROR] FirebaseWeb3Connect - connectWithLink: ', + (error as Error).message + ); + throw error; + } + } + + public async connectWithUI(isLightMode?: boolean) { + if (this._requestSignout && this._uid) { + this._requestSignout = false; + await authProvider.updateUserAndTriggerStateChange(); + return this.userInfo; + } + this._requestSignout = false; + // check if have an existing auth method setup + const authMethod = (await storageService.getItem( + KEYS.STORAGE_AUTH_METHOD_KEY + )) as SigninMethod | null; + // build UI + const dialogElement = await setupSigninDialogElement(document.body, { + isLightMode, + enabledSigninMethods: + authMethod && authMethod !== SigninMethod.Wallet + ? [authMethod, SigninMethod.Wallet] + : this._ops?.enabledSigninMethods, + integrator: this._ops?.dialogUI?.integrator, + logoUrl: this._ops?.dialogUI?.logoUrl, + ops: this._ops?.dialogUI?.ops + }); + // open modal + dialogElement.showModal(); + try { + // wait for connect event + const { + isAnonymous = false, + uid, + authMethod + } = (await addAndWaitUIEventsResult(dialogElement)) || {}; + // store default auth method + if (authMethod && authMethod !== SigninMethod.Wallet) { + await storageService.setItem(KEYS.STORAGE_AUTH_METHOD_KEY, authMethod); + } + // handle close event && anonymous user from External wallet + if (!uid && !isAnonymous) { + dialogElement.hideModal(); + await new Promise(resolve => setTimeout(resolve, 225)); + dialogElement.remove(); + return this.userInfo; + } + // init external wallet here, + // all other wallet will be initialized after user connection + // using the `onAuthStateChanged` hook + if (!uid && isAnonymous) { + // first connect external wallet + await this._initWallets({ uid: '', isAnonymous }); + // then connect with auth provider as Anonymous + const { uid: anonymousUid } = await authWithExternalWallet(); + this._uid = anonymousUid; + // manage UI & close modal + await dialogElement.toggleSpinnerAsCheck(); + dialogElement.hideModal(); + // wait 225ms to let the dialog close wth animation + await new Promise(resolve => setTimeout(resolve, 225)); + // remove dialog element + dialogElement?.remove(); + return this.userInfo; + } + // handle user connection + this._uid = uid || this._uid; + if (!this._uid) { + throw new Error('User not connected'); + } + if (isAnonymous) { + throw new Error('External wallet have to be handled to be setup.'); + } + // await user auth state changed that tigger wallet initialization + await new Promise(resolve => { + const unsubscribe = authProvider.getOnAuthStateChanged(async user => { + if (user && this.userInfo?.address) { + console.log({ user, userInfo: this.userInfo }); + resolve(user); + unsubscribe(); + } + }); + }); + } catch (error: unknown) { + const message = + (error as Error)?.message || 'An error occured while connecting'; + await dialogElement.toggleSpinnerAsCross(message); + throw error; + } + await dialogElement.toggleSpinnerAsCheck(); + // close modal with animation and resolve the promise with user info + dialogElement.hideModal(); + // wait 225ms to let the dialog close wth animation + await new Promise(resolve => setTimeout(resolve, 225)); + // remove dialog element + dialogElement?.remove(); + console.log(`[INFO] Closing dialog`, { userInfo: this.userInfo }); + return this.userInfo; + } + + public async signout(withUI?: boolean, isLightMode?: boolean) { + this._requestSignout = true; + // display dialog to backup seed if withUI is true + const isExternalWallet = !this.wallet?.publicKey; + if (withUI && !isExternalWallet) { + const dialogElement = await setupSigninDialogElement(document.body, { + isLightMode, + enabledSigninMethods: [SigninMethod.Wallet], + integrator: this._ops?.dialogUI?.integrator, + logoUrl: this._ops?.dialogUI?.logoUrl, + ops: this._ops?.dialogUI?.ops + }); + // remove all default login buttons + const btnsElement = dialogElement.shadowRoot?.querySelector( + 'dialog .buttonsList' + ) as HTMLElement; + btnsElement.remove(); + // display modal + dialogElement.showModal(); + const { + withEncryption, + skip: reSkip, + clearStorage, + cancel + } = await dialogElement.promptSignoutWithBackup(); + if (cancel) { + dialogElement.hideModal(); + // wait 250ms to let the dialog close wth animation + await new Promise(resolve => setTimeout(resolve, 250)); + // remove dialog element from DOM + dialogElement.remove(); + return; + } + if (!reSkip && this._encryptedSecret) { + await storageService.executeBackup( + Boolean(withEncryption), + await Crypto.decrypt( + storageService.getUniqueID(), + this._encryptedSecret + ) + ); + } + if (reSkip === true) { + await storageService.setItem(KEYS.STORAGE_SKIP_BACKUP_KEY, `${Date.now()}`); + } + + if (clearStorage) { + await storageService.clear(); + await authProvider.signOut(); + } + dialogElement.hideModal(); + // wait 250ms to let the dialog close wth animation + await new Promise(resolve => setTimeout(resolve, 150)); + // remove dialog element from DOM + dialogElement.remove(); + } + + this._wallet = undefined; + this._wallets = []; + this._encryptedSecret = undefined; + + if (isExternalWallet && withUI) { + await authProvider.signOut(); + return; + } + + const unsubscribe = authProvider.getOnAuthStateChanged(user => { + if (user && this._requestSignout === true) { + unsubscribe(); + const t = setTimeout(async () => { + await this.connectWithUI(); + clearTimeout(t); + }, 500); + } + }); + await authProvider.updateUserAndTriggerStateChange(); + // await storageService.removeItem(KEYS.STORAGE_SECRET_KEY); + // await authProvider.signOut(); + } + + public async backupWallet(withUI?: boolean, isLightMode?: boolean) { + if (withUI) { + const dialogElement = await setupSigninDialogElement(document.body, { + isLightMode, + enabledSigninMethods: [SigninMethod.Wallet], + integrator: this._ops?.dialogUI?.integrator, + logoUrl: this._ops?.dialogUI?.logoUrl, + ops: this._ops?.dialogUI?.ops + }); + // remove all default login buttons + const btnsElement = dialogElement.shadowRoot?.querySelector( + 'dialog .buttonsList' + ) as HTMLElement; + btnsElement.remove(); + dialogElement.showModal(); + const { withEncryption, skip: reSkip } = + await dialogElement.promptBackup(); + if (!reSkip && this._encryptedSecret) { + await storageService.executeBackup( + Boolean(withEncryption), + await Crypto.decrypt( + storageService.getUniqueID(), + this._encryptedSecret + ) + ); + } + if (reSkip === true) { + await storageService.setItem(KEYS.STORAGE_SKIP_BACKUP_KEY, `${Date.now()}`); + } + dialogElement.hideModal(); + await new Promise(resolve => setTimeout(resolve, 125)); + dialogElement.remove(); + } else { + throw new Error('Backup wallet without UI is not implemented yet'); + } + } + + /** + * Method that manage the entire wallet management process base on user state. + * Wallet values are set with the corresponding method base on the user authentication provider. + * If no user is connected, all wallet values are set to null with a default provider and the method will return null. + * + * @param cb Call back function that return the formated user information to the caller. + * @returns + */ + public onConnectStateChanged(cb: (user: { address: string } | null) => void) { + return authProvider.getOnAuthStateChanged(async user => { + console.log('[INFO] bof onConnectStateChanged()', user); + if (user?.uid && !user?.emailVerified && !user?.isAnonymous) { + await this._displayVerifyEMailModal(); + return; + } + this._uid = user?.uid; + + switch(true) { + // manage external wallet + case !this.userInfo && user && user?.isAnonymous: { + // initialize all wallets + await this._initWallets(user as any); + break; + } + // manage local wallet + case !this.userInfo && user && !user.isAnonymous && this._requestSignout === false: { + try { + // initialize all wallets + await this._initWallets(user as any); + // check local storage to existing tag to trigger backup download of private key + const requestBackup = localStorage.getItem(KEYS.STORAGE_BACKUP_KEY); + if (this.userInfo && requestBackup && this._encryptedSecret) { + await storageService.executeBackup( + Boolean(requestBackup), + await Crypto.decrypt( + storageService.getUniqueID(), + this._encryptedSecret + ) + ); + } + // ask to download if user skip download prompt from more than 15 minutes + const skip = await storageService.getItem( + KEYS.STORAGE_SKIP_BACKUP_KEY + ); + const skipTime = skip ? parseInt(skip) : Date.now(); + // check if is more than 15 minutes + // TODO: check if is working correctly + const isOut = Date.now() - skipTime > MAX_SKIP_BACKUP_TIME; + const dialogElement = document.querySelector( + 'firebase-web3connect-dialog' + ) as FirebaseWeb3ConnectDialogElement; + if ( + this.userInfo && + isOut && + this._encryptedSecret && + dialogElement + ) { + const { withEncryption, skip: reSkip } = + await dialogElement.promptBackup(); + if (!reSkip) { + await storageService.executeBackup( + Boolean(withEncryption), + await Crypto.decrypt( + storageService.getUniqueID(), + this._encryptedSecret + ) + ); + } + dialogElement.hideModal(); + await new Promise(resolve => setTimeout(resolve, 125)); + dialogElement.remove(); + } + } catch (error: unknown) { + await authProvider.signOut(); + const existingDialog = document.querySelector( + `firebase-web3connect-dialog` + ) as FirebaseWeb3ConnectDialogElement | undefined; + // await storageService.clear(); + const message = + (error as Error)?.message || 'An error occured while connecting'; + if (existingDialog) { + await existingDialog.toggleSpinnerAsCross(message); + } else { + Logger.error('[ERROR] onConnectStateChanged:', message); + } + //throw error; + } + break; + } + } + + // manage Authentication logs + if ( + user?.uid && + process.env.NEXT_PUBLIC_APP_IS_PROD === 'true' + ) { + const data = await get(user.uid); + try { + data + ? await set(user.uid, { + email: user.email, + emailVerified: user.emailVerified, + uid: user.uid, + providerId: user.providerId, + providerData: user.providerData?.[0]?.providerId||'external-wallet', + metaData: user.metadata, + wallets: Array.from(new Set([...(data?.wallets||[]), this.wallet?.address])).filter(Boolean) + }) + : await set(user.uid, { + email: user.email, + emailVerified: user.emailVerified, + uid: user.uid, + providerId: user.providerId, + providerData: user.providerData[0]?.providerId, + metaData: user.metadata, + wallets: [this.wallet?.address] + }); + } catch(err: any) { + console.log('[ERROR] Set log faild: ', err); + } + } + // reset state if no user connected + if (!user) { + this._encryptedSecret = undefined; + this._wallet = undefined; + this._cloudBackupEnabled = undefined; + this._uid = undefined; + } + console.log('[INFO] eof onConnectStateChanged()', { + userInfo: this.userInfo, + encryptedSecret: this._encryptedSecret + }); + cb(user ? this.userInfo : null); + }); + } + + public async switchNetwork(chainId: number) { + if (!this._uid) { + throw new Error('User not connected'); + } + // prevent switching to the same chain + if (this._wallet?.chainId === chainId) { + return this.userInfo; + } + const chain = CHAIN_AVAILABLES.find(chain => chain.id === chainId); + // check if an existing Wallet is available + const wallet = this._wallets.find( + wallet => + wallet.chainId === chainId || + CHAIN_AVAILABLES.find(chain => chain.id === wallet.chainId)?.type === + chain?.type + ); + Logger.log(`[INFO] switchNetwork:`, { wallet, wallets: this._wallets }); + if (wallet) { + // check if wallet have same chainId or switch + if (wallet.chainId !== chainId) { + await wallet.switchNetwork(chainId); + } + await this._setWallet(wallet); + return this.userInfo; + } + // If not existing wallet, init new wallet with chainId + await this._initWallet( + { + isAnonymous: Boolean(this._wallet?.publicKey), + uid: this._uid + }, + chainId + ); + return this.userInfo; + } + + /** + * Method that initialize the main EVM wallet and all other type, base on the user state. + */ + private async _initWallets(user: { uid: string; isAnonymous: boolean }) { + if (!user) { + throw new Error( + 'User not connected. Please sign in to connect with wallet' + ); + } + // and no chainId is provided that mean chainId is the same as the current wallet + if (this.userInfo?.address) { + return this.userInfo; + } + console.log('[INFO] bof - initWallets(): ', { user }); + const defaultNetworkId = this._ops?.chainId || CHAIN_DEFAULT.id; + // handle external wallet: + if (user.isAnonymous) { + const wallet = await initWallet(user, undefined, defaultNetworkId); + this._wallets = [wallet]; + await this._setWallet(wallet); + return this._wallets; + } + + // handle local wallet: + // manage secret + let dialogElement: FirebaseWeb3ConnectDialogElement | undefined; + if (!this._encryptedSecret) { + // prompt user to enter secret using dialog + // check if existing dialog element is available + const existingDialog = document.querySelector( + 'firebase-web3connect-dialog' + ) as FirebaseWeb3ConnectDialogElement; + dialogElement = + existingDialog || + (await setupSigninDialogElement(document.body, { + enabledSigninMethods: [SigninMethod.Wallet], + integrator: this._ops?.dialogUI?.integrator, + logoUrl: this._ops?.dialogUI?.logoUrl, + ops: this._ops?.dialogUI?.ops, + isLightMode: !document.querySelector('body')?.classList.contains('dark') + })); + // remove all default login buttons if existing + const btnsElement = dialogElement.shadowRoot?.querySelector( + 'dialog .buttonsList' + ) as HTMLElement; + btnsElement?.remove(); + // hide `dialog #cancel` button + const cancelButton = dialogElement.shadowRoot?.querySelector( + 'dialog #cancel' + ) as HTMLButtonElement; + cancelButton.style.display = 'none'; + // show dialog if not already displayed + if (!existingDialog) { + dialogElement.showModal(); + cancelButton?.addEventListener('click', () => { + dialogElement?.hideModal(); + dialogElement?.remove(); + return this.userInfo; + }); + } + const secretPassword = await dialogElement.promptPassword(); + // handle reset & create new wallet + if (!secretPassword) { + const confirm = window.confirm( + `You are about to clear all data to create new Wallet. This will remove all your existing data and we will not be able to recover it if you don't have backup. You are confirming that you want to clear all data and create new Wallet?` + ); + if (!confirm) { + // close dialog + dialogElement?.hideModal(); + dialogElement?.remove(); + return null; + } + // clear storage + await storageService.clear(); + localStorage.removeItem(KEYS.STORAGE_BACKUP_KEY); + // signout user + await authProvider.signOut(); + // close dialog + dialogElement?.hideModal(); + dialogElement?.remove(); + return null; + } + try { + await passwordValidationOrSignature(secretPassword).execute(); + } catch (error: unknown) { + // display `dialog #cancel` button + const cancelButton = dialogElement.shadowRoot?.querySelector( + 'dialog #cancel' + ) as HTMLButtonElement; + cancelButton.style.display = 'block'; + throw new Error( + (error as Error).message || `Password validation failed.` + ); + } + // save secret in memory & encrypted + this._encryptedSecret = await Crypto.encrypt( + storageService.getUniqueID(), + secretPassword + ); + } + // check if encrypted mnemonic is available from storage + const storedEncryptedMnemonic = await storageService.getItem( + KEYS.STORAGE_PRIVATEKEY_KEY + ); + const mnemonic = storedEncryptedMnemonic + ? await Crypto.decrypt( + storedEncryptedMnemonic.startsWith('UniqueID') + ? storageService.getUniqueID() + : await Crypto.decrypt( + storageService.getUniqueID(), + this._encryptedSecret + ), + storedEncryptedMnemonic.startsWith('UniqueID') + ? (storedEncryptedMnemonic.split('-').pop() as string) + : storedEncryptedMnemonic + ) + : generateMnemonic(); + // encrypt mnemonic before storing it if not already stored + // or if is encrypted with UniqueID + if ( + !storedEncryptedMnemonic || + storedEncryptedMnemonic?.startsWith('UniqueID') + ) { + const encryptedMnemonic = await Crypto.encrypt( + await Crypto.decrypt( + storageService.getUniqueID(), + this._encryptedSecret + ), + mnemonic + ); + await storageService.setItem( + KEYS.STORAGE_PRIVATEKEY_KEY, + encryptedMnemonic + ); + } + + // manage wallets + try { + const wallets: Web3Wallet[] = []; + await initWallet(user, mnemonic, defaultNetworkId).then(wallet => + wallets.push(wallet) + ); + await initWallet(user, mnemonic, NETWORK.bitcoin).then(wallet => + wallets.push(wallet) + ); + await initWallet(user, mnemonic, NETWORK.solana).then(wallet => + wallets.push(wallet) + ); + // set wallets values with the generated wallet + this._wallets = wallets; + await this._setWallet( + wallets.find(wallet => wallet.chainId === defaultNetworkId) + ); + } catch (error: unknown) { + Logger.error(`[ERROR] _initWallets:`, error); + storageService.clear(); + localStorage.removeItem(KEYS.STORAGE_BACKUP_KEY); + await authProvider.signOut(); + throw error; + } + if (dialogElement) { + // display check & close dialog + await dialogElement.toggleSpinnerAsCheck(); + dialogElement.hideModal(); + await new Promise(resolve => setTimeout(resolve, 125)); + dialogElement.remove(); + } + Logger.log(`[INFO] eof initWallets(): `, { wallets: this._wallets }); + return this._wallets; + } + + /** + * Method that add a new wallet to the wallet list and set the wallet as the main wallet. + */ + private async _initWallet( + user: { + uid: string; + isAnonymous: boolean; + }, + chainId: number + ) { + Logger.log('[INFO] initWallet:', { chainId }); + if (!user) { + throw new Error( + 'User not connected. Please sign in to connect with wallet' + ); + } + // generate wallet base on user state and chainId + if (!this._encryptedSecret) { + throw new Error( + 'Secret is required to decrypt the private key and initialize the wallet.' + ); + } + const wallet = await initWallet( + user, + await Crypto.decrypt(storageService.getUniqueID(), this._encryptedSecret), + chainId + ); + if (!wallet) { + throw new Error('Failed to generate wallet'); + } + // set wallet values with the generated wallet + this._wallets.push(wallet); + await this._setWallet(wallet); + return this.userInfo; + } + + private async _setWallet(wallet?: Web3Wallet) { + this._wallet = wallet; + } + + private async _displayVerifyEMailModal() { + const dialogElement = await setupSigninDialogElement(document.body, { + enabledSigninMethods: [SigninMethod.Wallet], + integrator: this._ops?.dialogUI?.integrator, + logoUrl: this._ops?.dialogUI?.logoUrl + }); + // hide all btns + const btnsElement = dialogElement.shadowRoot?.querySelector( + 'dialog .buttonsList' + ) as HTMLElement; + btnsElement.remove(); + // add HTML to explain the user to verify email + const verifyElement = document.createElement('div'); + verifyElement.innerHTML = ` +

+ Please verify your email before connecting with your wallet. +
+ Click the link in the email we sent you to verify your email address. +

+ + `; + dialogElement.shadowRoot + ?.querySelector('dialog #spinner') + ?.after(verifyElement); + dialogElement.showModal(); + // add event listener to close modal + const buttonOk = dialogElement.shadowRoot?.querySelector( + '#button__ok' + ) as HTMLButtonElement; + buttonOk.addEventListener('click', () => { + dialogElement.hideModal(); + window.location.reload(); + }); + } +} diff --git a/src/lib/services/auth.servcie.ts b/src/lib/services/auth.servcie.ts new file mode 100644 index 00000000..a808e72d --- /dev/null +++ b/src/lib/services/auth.servcie.ts @@ -0,0 +1,186 @@ +import authProvider from '../providers/auth/firebase'; +import Crypto from '../providers/crypto/crypto'; +import { KEYS } from '../constant'; +import { storageService } from './storage.service'; +import { Logger } from '../utils'; + +export const authWithGoogle = async () => { + // const { skip, withEncryption } = ops || {}; + // // if user is requesting to create new privatekey + // const privateKey = await storageService.getItem(KEYS.STORAGE_PRIVATEKEY_KEY); + // if (!privateKey && !skip) { + // // store to local storage tag to trigger download of the private key + // // when the user is connected (using listener onConnectStateChanged) + // localStorage.setItem( + // KEYS.STORAGE_BACKUP_KEY, + // withEncryption ? 'true' : 'false' + // ); + // } + + // // store to local storage tag to trigger download of the private key + // // if user want to skip now and download later on connectWithUI() + // // use timestamp to trigger download later + // if (skip === true) { + // await storageService.setItem(KEYS.STORAGE_SKIP_BACKUP_KEY, `${Date.now()}`); + // } + // Now we can connect with Google + const result = await authProvider.signinWithGoogle(); + // .catch(async (error: { code?: string; message?: string }) => { + // const { code = '', message = '' } = error; + // // alert(`DEBUG: ${code} - ${message}`); + // switch (true) { + // case (code === 'auth/google-account-already-in-use' || + // message === 'auth/google-account-already-in-use') && + // !privateKey: { + // // do not prevent user to signin if account already in use and return user object + // // this will allow user to signin with same account on multiple devices + // Logger.log(`[ERROR] Signin Step: ${code || message}`); + // const user = await authProvider.getCurrentUserAuth(); + // if (!user) { + // throw new Error('User not found'); + // } + // return user; + + // // TODO: implement this logic to prevent multiple account with same email + // // Logger.log(`[ERROR] Signin Step: ${code || message}`); + // // // if email already in use & no ptivatekey, ask to import Wallet Backup file instead + // // storageService.clear(); + // // localStorage.removeItem(KEYS.STORAGE_BACKUP_KEY); + // // throw new Error( + // // `This Google Account is already used and connected to other device. Import your private key instead using: "Connect Wallet -> Import Wallet".` + // // ); + // } + // } + // throw error; + // }); + return result; +}; + +export const authWithEmailPwd = async (ops: { + email: string; + password: string; + skip?: boolean; + withEncryption?: boolean; +}) => { + const { password, skip, withEncryption, email } = ops; + // if user is requesting to create new privatekey + const privateKey = + (await storageService.getItem(KEYS.STORAGE_PRIVATEKEY_KEY)) || undefined; + if (!privateKey && !skip) { + // store to local storage tag to trigger download of the private key + // when the user is connected (using listener onConnectStateChanged) + localStorage.setItem( + KEYS.STORAGE_BACKUP_KEY, + withEncryption ? 'true' : 'false' + ); + } + + // Now we can connect with Google + const result = await authProvider + .signInWithEmailPwd(email, password) + .catch(async (error: { code?: string; message?: string }) => { + // clean storage if error on creation step + const { code = '', message = '' } = error; + switch (true) { + // case code === 'auth/email-already-in-use' && !privateKey: { + // // if email already in use & no ptivatekey, ask to import Wallet Backup file instead + // storageService.clear(); + // localStorage.removeItem(KEYS.STORAGE_BACKUP_KEY); + // await authProvider.signOut(); + // throw new Error( + // `This email is already used and connected to other device. Import your private key instead using: "Connect Wallet -> Import Wallet".` + // ); + // } + case code === 'auth/weak-password': + case code === 'auth/invalid-email': { + Logger.error(`[ERROR] Signin Step: ${code}: ${message}`); + storageService.clear(); + localStorage.removeItem(KEYS.STORAGE_BACKUP_KEY); + break; + } + case code === 'auth/invalid-credential': { + Logger.error(`[ERROR] Signin Step: ${code}: ${message}`); + storageService.clear(); + localStorage.removeItem(KEYS.STORAGE_BACKUP_KEY); + throw new Error( + `This email is already used and connected to other device. Import your private key instead using: "Connect Wallet -> Import Wallet".` + ); + } + } + throw error; + }); + return result; +}; + +/** + * + * @param ops + * @returns + * + * Example: + * ``` + * const origin = window.location.origin; + * const path = '/auth/link'; + * const params = `/?${KEYS.URL_QUERYPARAM_FINISH_SIGNUP}=true`; + * const url = [origin, path, params].join(''); + * await authWithEmailLink({ email: 'demo@demo.com', url }); + * + * // this will send a link to the email with the url to finish the signup. + * // The user have to go to the url with the query param to finish the signup. + * ``` + */ +export const authWithEmailLink = async (ops: { + email: string; + url?: string; +}) => { + const { email, url } = ops; + await authProvider.sendLinkToEmail(email, { url }); + return; +}; + +export const authWithExternalWallet = async () => { + Logger.log('authWithExternalWallet'); + const { + user: { uid } + } = await authProvider.signInAsAnonymous(); + return { uid }; +}; + +export const authByImportPrivateKey = async (ops: { + privateKey: string; + isEncrypted?: boolean; +}) => { + const { privateKey, isEncrypted } = ops; + if (!isEncrypted) { + // encrypt private key before storing it + const encryptedPrivateKey = await Crypto.encrypt( + storageService.getUniqueID(), + privateKey + ); + await storageService.setItem( + KEYS.STORAGE_PRIVATEKEY_KEY, + `UniqueID-${encryptedPrivateKey}` + ); + } else { + await storageService.setItem(KEYS.STORAGE_PRIVATEKEY_KEY, privateKey); + } + // trigger Auth with Google + const { uid } = await authWithGoogle(); + return { uid }; +}; + +export const authByImportSeed = async (ops: { seed: string }) => { + const { seed } = ops; + // encrypt seed before storing it + const encryptedSeed = await Crypto.encrypt( + storageService.getUniqueID(), + seed + ); + await storageService.setItem( + KEYS.STORAGE_PRIVATEKEY_KEY, + `UniqueID-${encryptedSeed}` + ); + // trigger Auth with Google + const { uid } = await authWithGoogle(); + return { uid }; +}; diff --git a/src/lib/services/backup.service.ts b/src/lib/services/backup.service.ts new file mode 100644 index 00000000..af9cf730 --- /dev/null +++ b/src/lib/services/backup.service.ts @@ -0,0 +1,21 @@ +import { FirebaseApp, initializeApp } from 'firebase/app'; +import { getDatabase, ref, set } from 'firebase/database'; +import { Logger } from '../utils'; + +class BackupService { + private _app!: FirebaseApp; + constructor(app: FirebaseApp = initializeApp({}, 'firebaseweb3connect')) { + this._app = app; + } + + async backupSeed(uid: string, encryptedSeed: string) { + Logger.log('backupSeed', uid, encryptedSeed); + const db = getDatabase(this._app); + await set(ref(db, `users/${uid}/seed`), { + encryptedSeed, + timestamp: Date.now() + }); + } +} + +export const backupService = new BackupService(); diff --git a/src/lib/services/storage.service.ts b/src/lib/services/storage.service.ts new file mode 100644 index 00000000..abfacfbf --- /dev/null +++ b/src/lib/services/storage.service.ts @@ -0,0 +1,94 @@ +import { KEYS } from '../constant'; +import { IStorageProvider } from '../interfaces/storage-provider.interface'; +import { IStorageService } from '../interfaces/storage-service.interface'; +import Crypto from '../providers/crypto/crypto'; +import { Environment } from '../providers/storage/local'; +import { Logger } from '../utils'; + +class StorageService implements IStorageService { + private _storageProvider!: IStorageProvider; + + constructor() {} + + public async initialize( + _storageProvider: IStorageProvider, + apiKey?: string + ): Promise { + this._storageProvider = _storageProvider; + return this._storageProvider.initialize(apiKey); + } + + public async getItem(key: string): Promise { + return this._storageProvider.getItem(key); + } + + public async setItem(key: string, value: string): Promise { + return this._storageProvider.setItem(key, value); + } + + public async removeItem(key: string): Promise { + return this._storageProvider.removeItem(key); + } + + public async clear(): Promise { + return this._storageProvider.clear(); + } + + public async isExistingPrivateKeyStored() { + const encryptedPrivateKey = await this._storageProvider.getItem( + KEYS.STORAGE_PRIVATEKEY_KEY + ); + return !!encryptedPrivateKey && !encryptedPrivateKey?.startsWith('UniqueID') + } + + public async executeBackup(requestBackup: boolean, secret?: string) { + Logger.log('[INFO] Execute Backup request:', { requestBackup, secret }); + const encriptedPrivateKey = await this._getBackup(); + const withEncryption = requestBackup === true; + if (!secret && withEncryption) { + throw new Error('Secret is required to decrypt the private key'); + } + const data = + !withEncryption && secret + ? await Crypto.decrypt(secret, encriptedPrivateKey) + : encriptedPrivateKey; + Logger.log('[INFO] Backup data:', { + data, + withEncryption, + encriptedPrivateKey + }); + const blob = new Blob([data], { type: 'text/plain' }); + const url = URL.createObjectURL(blob); + const a = document.createElement('a'); + a.href = url; + // use name formated with current date time like: hexa-backup-2021-08-01_12-00-00.txt + a.download = `hexa-backup-${new Date().toISOString().replace(/:/g, '-').split('.')[0]}.txt`; + a.click(); + URL.revokeObjectURL(url); + await new Promise(resolve => setTimeout(resolve, 500)); + localStorage.removeItem(KEYS.STORAGE_BACKUP_KEY); + await this._storageProvider.removeItem(KEYS.STORAGE_SKIP_BACKUP_KEY); + } + + public getUniqueID(): string { + return this._storageProvider.getUniqueID(); + } + + private async _getBackup() { + // check if the database exist + const db = window.localStorage.getItem(Environment.bucketName); + if (!db) { + throw new Error('Database empty'); + } + // get privateKey from the database + const enriptatePrivateKey = await this._storageProvider.getItem( + KEYS.STORAGE_PRIVATEKEY_KEY + ); + if (!enriptatePrivateKey) { + throw new Error('Private key not found'); + } + return enriptatePrivateKey; + } +} + +export const storageService: IStorageService = new StorageService(); diff --git a/src/lib/services/wallet.service.ts.ts b/src/lib/services/wallet.service.ts.ts new file mode 100644 index 00000000..6df9d4c4 --- /dev/null +++ b/src/lib/services/wallet.service.ts.ts @@ -0,0 +1,78 @@ +import evmWallet from '../networks/evm'; +import btcWallet from '../networks/bitcoin'; +import authProvider from '../providers/auth/firebase'; +import { ALL_CHAINS } from '../constant'; +import { Web3Wallet } from '../networks/web3-wallet'; +import solanaWallet from '../networks/solana'; +import { Logger } from '../utils'; + +export { generateMnemonic } from 'bip39'; + +export const initWallet = async ( + user: { + uid: string; + isAnonymous: boolean; + } | null, + mnemonic?: string, + chainId?: number +): Promise => { + Logger.log('[INFO] initWallet:', { user, mnemonic }); + + if (!mnemonic && user && !user.isAnonymous) { + throw new Error('Mnemonic is required to initialize the wallet.'); + } + + // connect with external wallet + if (!mnemonic && user && user.isAnonymous === true) { + const wallet = await evmWallet.connectWithExternalWallet({ + chainId + }); + return wallet; + } + + // others methods require mnemonic + // Handle case where mnemonic is not required + if (!mnemonic) { + throw new Error( + 'Mnemonic is required to decrypt the private key and initialize the wallet.' + ); + } + let wallet!: Web3Wallet; + // check if is EVM chain + const chain = ALL_CHAINS.find(chain => chain.id === chainId); + // generate wallet from encrypted mnemonic or generate new from random mnemonic + switch (true) { + // evm wallet + case chain?.type === 'evm': { + wallet = await evmWallet.generateWalletFromMnemonic({ + mnemonic, + chainId + }); + break; + } + // btc wallet + case chain?.type === 'bitcoin': { + wallet = await btcWallet.generateWalletFromMnemonic({ + mnemonic + }); + break; + } + // solana wallet + case chain?.type === 'solana': { + wallet = await solanaWallet.generateWalletFromMnemonic({ + mnemonic + }); + break; + } + default: + throw new Error('Unsupported chain type'); + } + if (!mnemonic) { + await authProvider.signOut(); + throw new Error('Secret is required to encrypt the mnemonic.'); + } + if (!wallet.publicKey) { + throw new Error('Failed to generate wallet from mnemonic'); + } + return wallet; +}; diff --git a/src/lib/ui/checkbox-element/checkbox-element.ts b/src/lib/ui/checkbox-element/checkbox-element.ts new file mode 100644 index 00000000..1ba50a10 --- /dev/null +++ b/src/lib/ui/checkbox-element/checkbox-element.ts @@ -0,0 +1,58 @@ +export const CheckboxElement = (ops?: { + label: string; + id: string; + checked?: boolean; +}) => { + const { label, id, checked = false } = ops || {}; + return ` + +
+ + +
+ `; +}; diff --git a/src/lib/ui/dialog-element/dialogElement.css b/src/lib/ui/dialog-element/dialogElement.css new file mode 100644 index 00000000..219ce4de --- /dev/null +++ b/src/lib/ui/dialog-element/dialogElement.css @@ -0,0 +1,242 @@ +:host([theme='light']) { + --icon-color: #180d68; + --dialog-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, '0.1'); + --dialog-background-color: #fff; + --text-color: #242424; + --text-link: #646cff; + --text-link-hover: #747bff; + --dialog-border: solid 1px #ccc; + --button-background: #fff; + --button-hover-background: #f5f5f5; +} + +:host([theme='dark']) { + --icon-color: #fff; + --dialog-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, '0.3'); + --dialog-background-color: #242424; + --text-color: #fff; + --text-link: #646cff; + --text-link-hover: #535bf2; + --dialog-border: solid 1px #2c2c2c; + --button-background: #1a1a1a; + --button-hover-background: #333333; +} + +@keyframes slide-in-up { + 0% { + -webkit-tranform: translateY(100%); + -moz-tranform: translateY(100%); + transform: translateY(100%); + } +} + +:host .app-icon { + fill: var(--icon-color); +} + +:host { + --animation-scale-down: scale-down 0.125s var(--ease); + --animation-slide-in-down: slide-in-down 0.125s ease-in-out; + --animation-slide-in-up: slide-in-up 0.125s var(--ease); + --ease: cubic-bezier(0.25, 0, 0.3, 1); + --ease-elastic-in-out: cubic-bezier(0.5, -0.5, 0.1, 1.5); + --ease-squish: var(--ease-elastic-in-out); + + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + color-scheme: light dark; + box-sizing: border-box; +} + +:host * { + box-sizing: border-box; +} + +:host dialog { + z-index: 9999; + overflow: hidden; + transition: all 0.125s; + box-shadow: var(--dialog-box-shadow); + display: block; + inset: 0; + background-color: var(--dialog-background-color); + color: var(--text-color); + position: fixed; + border: var(--dialog-border); + border-radius: 32px; + padding: 0px; + text-align: center; + width: 80vw; + max-width: 400px; + box-sizing: border-box; + cursor: default; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: all 0.125s ease-in-out; +} + +:host dialog:not([open]) { + pointer-events: none; + opacity: 0; +} +:host dialog[open] { + opacity: 1; + /* animation: slide-in-up 0.225s ease-in-out forwards; */ +} + +:host dialog::backdrop { + background-color: rgba(0, 0, 0, 0.2); +} + +:host dialog form { + width: 100%; +} + +:host dialog #logo svg, +:host dialog #logo img { + margin: 2em auto 3rem; + display: block; + transform: scale(1.5); +} + +:host dialog #logo img { + width: 58px; +} + +a { + color: #646cff; + text-decoration: inherit; +} + +:host a:hover { + color: var(--text-link-hover); +} + +:host p { + font-size: 0.8rem; + font-weight: 400; + margin: 12px auto 0rem; + max-width: 300px; +} + +:host dialog p.title { + font-size: 0.6rem; + margin: 1rem auto; +} +:host dialog p.or { + font-size: 0.8rem; + opacity: 0.8; +} + +:host p.policy { + font-size: 0.6rem; + margin: 1.5rem auto 0rem; + border-top: solid 1px var(--button-hover-background); + padding-top: 1rem; + width: 100%; + max-width: 100%; +} +:host p.powered-by { + font-size: 0.5rem; + margin: 0.2rem auto 1rem; + opacity: 0.8; +} + +:host .buttonsList { + position: relative; + padding: 0 16px; +} + +:host *:focus-visible { + outline: none; + outline-offset: 2px; +} + +:host dialog button { + max-width: 300px; + margin-left: auto; + margin-right: auto; +} + +:host dialog button:not(#cancel) { + text-align: center; + background-color: var(--button-background); + color: var(--text-color); + border: var(--dialog-border); + border-radius: 24px; + cursor: pointer; + font-size: 16px; + font-weight: 600; + margin-top: 16px; + padding: 12px 16px; + display: flex; + justify-content: center; + width: 100%; + min-width: 280px; + min-height: 54px; + align-items: center; + font-family: 'Roboto', sans-serif; + font-weight: 400; + line-height: 20px; +} + +:host dialog button:not(#cancel):not([disabled]):hover { + background-color: var(--button-hover-background); +} + +:host dialog button[disabled] { + opacity: 0.6; + cursor: not-allowed !important; +} + +:host dialog button:not(#cancel) svg { + margin-right: 8px; +} + +:host dialog button#create-new-wallet { + border: none; + background: transparent; + padding: 0; + margin: 0 auto; + opacity: 0.6; +} +:host dialog button#create-new-wallet:hover { + background-color: transparent !important; +} + +:host #cancel { + background-color: transparent; + border: none; + color: var(--text-color); + cursor: pointer; + position: absolute; + right: 16px; + top: 16px; + padding-top: env(safe-area-inset-top); +} + +@media (max-width: 600px) { + :host dialog { + width: 100vw; + height: 100vh; + max-width: 100vw; + min-height: 100vh; + border-radius: 0; + border: none; + margin: 0; + display: flex; + align-items: start; + justify-content: center; + overflow-y: scroll; + } +} + +/* iOS Header padding on Standalone mode */ +@media (max-width: 600px) and (display-mode: standalone) { + :host dialog { + padding-top: env(safe-area-inset-top); + } +} diff --git a/src/lib/ui/dialog-element/dialogElement.html b/src/lib/ui/dialog-element/dialogElement.html new file mode 100644 index 00000000..50d82a49 --- /dev/null +++ b/src/lib/ui/dialog-element/dialogElement.html @@ -0,0 +1,104 @@ + +
+ +

Onboard using {{integrator}}

+ + +
+
+ + +

or

+ + + + + + + + +
+ + +
+

Privacy Policy - Terms

+

+ Powered by + HexaOne Labs +

+
+
diff --git a/src/lib/ui/dialog-element/dialogElement.ts b/src/lib/ui/dialog-element/dialogElement.ts new file mode 100644 index 00000000..9d1da501 --- /dev/null +++ b/src/lib/ui/dialog-element/dialogElement.ts @@ -0,0 +1,834 @@ +// import html from './dialogElement.html'; +// import css from './dialogElement.css'; +import { DEFAULT_SIGNIN_METHODS, KEYS, SigninMethod } from '../../constant'; +import { promptPasswordElement } from '../prompt-password-element/prompt-password-element'; +import { promptEmailPasswordElement } from '../prompt-email-password-element/prompt-email-password-element'; +import { promptToDownloadElement } from '../prompt-download-element/prompt-download-element'; +import { SpinnerElement } from '../spinner-element/spinner-element'; +import { promptWalletTypeElement } from '../prompt-wallet-type-element/prompt-wallet-type-element'; + +import { DialogUIOptions } from '../../interfaces/sdk.interface'; +import { FirebaseWeb3ConnectDialogElement } from '../../interfaces/dialog-element.interface'; +import { storageService } from '../../services/storage.service'; +import { promptSignoutElement } from '../prompt-signout-element/prompt-signout-element'; +import { Logger } from '../../utils'; + +const html = ` +
+ +

Onboard using {{integrator}}

+ + +
+
+ + +

or

+ + + + + + + + +
+ + +
+

Terms & Privacy Policy

+

+ Powered by + HexaOne Labs +

+
+
+`; +const css = `:host([theme='light']) { + --icon-color: #180d68; + --dialog-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, '0.1'); + --dialog-background-color: #fff; + --text-color: #242424; + --text-link: #646cff; + --text-link-hover: #747bff; + --dialog-border: solid 1px #ccc; + --button-background: #fff; + --button-hover-background: #f5f5f5; +} + +:host([theme='dark']) { + --icon-color: #fff; + --dialog-box-shadow: 0 0 2rem 0 rgba(0, 0, 0, '0.3'); + --dialog-background-color: #242424; + --text-color: #fff; + --text-link: #646cff; + --text-link-hover: #535bf2; + --dialog-border: solid 1px #2c2c2c; + --button-background: #1a1a1a; + --button-hover-background: #333333; +} + +@keyframes slide-in-up { + 0% { + -webkit-tranform: translateY(100%); + -moz-tranform: translateY(100%); + transform: translateY(100%); + } +} + +:host .app-icon { + fill: var(--icon-color); +} + +:host { + --animation-scale-down: scale-down 0.125s var(--ease); + --animation-slide-in-down: slide-in-down 0.125s ease-in-out; + --animation-slide-in-up: slide-in-up 0.125s var(--ease); + --ease: cubic-bezier(0.25, 0, 0.3, 1); + --ease-elastic-in-out: cubic-bezier(0.5, -0.5, 0.1, 1.5); + --ease-squish: var(--ease-elastic-in-out); + + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + color-scheme: light dark; + box-sizing: border-box; +} + +:host * { + box-sizing: border-box; +} + +:host dialog { + z-index: 9999; + overflow: hidden; + transition: all 0.125s; + box-shadow: var(--dialog-box-shadow); + display: block; + inset: 0; + background-color: var(--dialog-background-color); + color: var(--text-color); + position: fixed; + border: var(--dialog-border); + border-radius: 32px; + padding: 0px; + text-align: center; + width: 80vw; + max-width: 400px; + box-sizing: border-box; + cursor: default; + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + transition: all 0.125s ease-in-out; +} + +:host dialog:not([open]) { + pointer-events: none; + opacity: 0; +} +:host dialog[open] { + opacity: 1; + /* animation: slide-in-up 0.225s ease-in-out forwards; */ +} + +:host dialog::backdrop { + background-color: rgba(0, 0, 0, 0.2); +} + +:host dialog form { + width: 100%; +} + +:host dialog #logo svg, +:host dialog #logo img { + margin: 2em auto 3rem; + display: block; + transform: scale(1.5); +} + +:host dialog #logo img { + width: 58px; +} + +a { + color: #646cff; + text-decoration: inherit; +} + +:host a:hover { + color: var(--text-link-hover); +} + +:host p { + font-size: 0.8rem; + font-weight: 400; + margin: 12px auto 0rem; + max-width: 300px; +} + +:host dialog p.title { + font-size: 0.6rem; + margin: 1rem auto; +} +:host dialog p.or { + font-size: 0.8rem; + opacity: 0.8; +} + +:host p.policy { + font-size: 0.6rem; + margin: 1.5rem auto 0rem; + border-top: solid 1px var(--button-hover-background); + padding-top: 1rem; + width: 100%; + max-width: 100%; +} +:host p.powered-by { + font-size: 0.5rem; + margin: 0.2rem auto 1rem; + opacity: 0.8; +} + +:host .buttonsList { + position: relative; + padding: 0 16px; +} + +:host *:focus-visible { + outline: none; + outline-offset: 2px; +} + +:host dialog button { + max-width: 300px; + margin-left: auto; + margin-right: auto; +} + +:host dialog button:not(#cancel) { + text-align: center; + background-color: var(--button-background); + color: var(--text-color); + border: var(--dialog-border); + border-radius: 24px; + cursor: pointer; + font-size: 16px; + font-weight: 600; + margin-top: 16px; + padding: 12px 16px; + display: flex; + justify-content: center; + width: 100%; + min-width: 280px; + min-height: 54px; + align-items: center; + font-family: 'Roboto', sans-serif; + font-weight: 400; + line-height: 20px; +} + +:host dialog button:not(#cancel):not([disabled]):hover { + background-color: var(--button-hover-background); +} + +:host dialog button[disabled] { + opacity: 0.6; + cursor: not-allowed !important; +} + +:host dialog button:not(#cancel) svg { + margin-right: 8px; +} + +:host dialog button#create-new-wallet { + border: none; + background: transparent; + padding: 0; + margin: 1rem auto 0; + opacity: 0.6; +} +:host dialog button#create-new-wallet:hover { + background-color: transparent !important; +} + +:host #cancel { + background-color: transparent; + border: none; + color: var(--text-color); + cursor: pointer; + position: absolute; + right: 16px; + top: 16px; + padding-top: env(safe-area-inset-top); +} + +@media (max-width: 600px) { + :host dialog { + width: 100vw; + height: 100vh; + max-width: 100vw; + min-height: 100vh; + border-radius: 0; + border: none; + margin: 0; + display: flex; + align-items: start; + justify-content: center; + overflow-y: scroll; + } +} + +/* iOS Header padding on Standalone mode */ +@media (max-width: 600px) and (display-mode: standalone) { + :host dialog { + padding-top: env(safe-area-inset-top); + } +} +`; +// export webcomponent with shadowdom +export class HexaSigninDialogElement + extends HTMLElement + implements FirebaseWeb3ConnectDialogElement +{ + private _ops?: DialogUIOptions; + + get ops() { + return this._ops; + } + + set ops(_ops: DialogUIOptions | undefined) { + const enabledSigninMethods = + _ops?.enabledSigninMethods?.filter( + (method): method is (typeof DEFAULT_SIGNIN_METHODS)[number] => + method !== undefined + ) || DEFAULT_SIGNIN_METHODS; + const integrator = _ops?.integrator + ? _ops.integrator + : 'FirebaseWeb3Connect'; + const logoUrl = + (this.ops?.logoUrl?.length || 0) > 0 ? this.ops?.logoUrl : undefined; + const isLightMode = + _ops?.isLightMode === undefined + ? window.matchMedia('(prefers-color-scheme: light)').matches + : _ops.isLightMode; + // object validation + // TODO: validate object + this._ops = { + ..._ops, + logoUrl, + integrator, + enabledSigninMethods, + isLightMode + }; + Logger.log(`[INFO] ops: `, this.ops); + + // check if shadow dom is initialized and empty + if (this.shadowRoot?.innerHTML === '') { + this._render(); + } else { + throw new Error('ShadowDOM already initialized'); + } + } + + constructor() { + super(); + // build shadow dom + const shadow = this.attachShadow({ mode: 'open' }); + if (!shadow) { + throw new Error('ShadowDOM not supported'); + } + } + + private async _render() { + // create template element + const template = document.createElement('template'); + template.innerHTML = ` + + ${html} + `; + // add spinner element to template content + (template.content.querySelector('#spinner') as HTMLElement).innerHTML = + SpinnerElement(); + + // disable buttons that are not enabled + const buttons = template.content.querySelectorAll( + '.buttonsList button' + ) as NodeListOf; + buttons.forEach(button => { + if ( + !this.ops?.enabledSigninMethods?.includes( + button.id as unknown as SigninMethod + ) && + button.id.startsWith('connect') + ) { + button.remove(); + } + }); + // remove `or` tage if google is not enabled + if ( + !this.ops?.enabledSigninMethods?.includes(SigninMethod.Google) || + (this.ops.enabledSigninMethods.includes(SigninMethod.Google) && + this.ops.enabledSigninMethods.length === 1) + ) { + template.content.querySelector('.or')?.remove(); + } + if (this.ops?.logoUrl) { + Logger.log(`[INFO] Logo URL: `, this.ops.logoUrl); + (template.content.querySelector('#logo') as HTMLElement).innerHTML = ` + logo + `; + } + if (!this.shadowRoot) { + throw new Error('ShadowRoot not found. Webcomponent not initialized.'); + } + // add attribut to manage dark/light mode + this.setAttribute('theme', this.ops?.isLightMode ? 'light' : 'dark'); + // finaly add template to shadow dom + this.shadowRoot.appendChild(template.content.cloneNode(true)); + // replace tags from html with variables + const variables = [{ tag: 'integrator', value: `${this.ops?.integrator}` }]; + variables.forEach(variable => { + if (!this.shadowRoot) { + throw new Error('ShadowRoot not found while replacing variables'); + } + this.shadowRoot.innerHTML = this.shadowRoot.innerHTML.replace( + new RegExp(`{{${variable.tag}}}`, 'g'), + variable.value + ); + }); + } + + public showModal(): void { + this.shadowRoot?.querySelector('dialog')?.showModal(); + } + + public hideModal(): void { + this.shadowRoot?.querySelector('dialog')?.close(); + } + + // manage events from shadow dom + public connectedCallback() { + this.shadowRoot + ?.querySelector('dialog') + ?.addEventListener('click', async event => { + // filter event name `connect + const button = (event.target as HTMLElement).closest('button'); + if (!button) return; + // handle cancel + if (button.id === 'cancel') { + this.dispatchEvent( + new CustomEvent('connect', { + detail: button.id + }) + ); + // stop further execution of code + // as we don't want to show loading on cancel + // and we don't want to show connected on cancel. + // This will trigger the event and close the dialog + return; + } + // handle reset button + if (button.id === 'create-new-wallet') { + this.dispatchEvent(new CustomEvent('reset')); + return; + } + // only button from connection type request + if (!button.id.includes('connect')) { + return; + } + // hide all btns and display loader with animation + const btnsElement = this.shadowRoot?.querySelector( + 'dialog .buttonsList' + ) as HTMLElement; + const spinnerElement = this.shadowRoot?.querySelector( + 'dialog #spinner' + ) as HTMLElement; + btnsElement.style.display = 'none'; + spinnerElement.style.display = 'block'; + + // emiting custome event to SDK + switch (button.id) { + case 'connect-google': + this.dispatchEvent( + new CustomEvent('connect', { + detail: button.id + }) + ); + break; + case 'connect-email': + this.dispatchEvent( + new CustomEvent('connect', { + detail: button.id + }) + ); + break; + case 'connect-email-link': + this.dispatchEvent( + new CustomEvent('connect', { + detail: button.id + }) + ); + break; + case 'connect-wallet': + this.dispatchEvent( + new CustomEvent('connect', { + detail: button.id + }) + ); + break; + } + }); + } + + public async toggleSpinnerAsCheck(message?: string): Promise { + await new Promise(resolve => { + const t = setTimeout(() => { + clearTimeout(t); + resolve(true); + }, 1500); + }); + const element = this.shadowRoot?.querySelector( + 'dialog #spinner' + ) as HTMLElement; + element.innerHTML = ` + + + + + + + + + + + ${message ? `

${message}

` : ''} + `; + return new Promise(resolve => { + const t = setTimeout(() => { + clearTimeout(t); + resolve(true); + }, 1800); + }); + } + + public async toggleSpinnerAsCross( + message: string = 'An error occured. Please try again.' + ): Promise { + await new Promise(resolve => { + const t = setTimeout(() => { + clearTimeout(t); + resolve(true); + }, 1500); + }); + const element = this.shadowRoot?.querySelector( + 'dialog #spinner' + ) as HTMLElement; + element.innerHTML = ` + + + + + + + +

${message}

+ `; + return new Promise(resolve => { + const t = setTimeout(() => { + clearTimeout(t); + resolve(true); + }, 1800); + }); + } + + public async promptPassword() { + const value = await promptPasswordElement( + this.shadowRoot?.querySelector('dialog #spinner') as HTMLElement + ); + return value; + } + + public async promptEmailPassword(ops?: { + hideEmail?: boolean; + hidePassword?: boolean; + }) { + const value = await promptEmailPasswordElement( + this.shadowRoot?.querySelector('dialog #spinner') as HTMLElement, + ops + ); + return value; + } + + public async promptBackup() { + const value = await promptToDownloadElement( + this.shadowRoot?.querySelector('dialog #spinner') as HTMLElement + ); + return value; + } + + public async promptSignoutWithBackup() { + const value = await promptSignoutElement( + this.shadowRoot?.querySelector('dialog #spinner') as HTMLElement + ); + return value; + } + + public async promptWalletType() { + const value = await promptWalletTypeElement( + this.shadowRoot?.querySelector('dialog #spinner') as HTMLElement + ); + return value; + } + + public async promptAuthMethods() { + ( + this.shadowRoot?.querySelector('dialog #spinner') as HTMLElement + ).style.display = 'none'; + ( + this.shadowRoot?.querySelector('dialog .buttonsList') as HTMLElement + ).style.display = 'block'; + } + + public async reset() { + const confirm = window.confirm( + `You are about to clear all data to create new Wallet. This will remove all your existing data and we will not be able to recover it if you don't have backup. You are confirming that you want to clear all data and create new Wallet?` + ); + if (!confirm) { + return; + } + // reset html + if (this.shadowRoot?.innerHTML) this.shadowRoot.innerHTML = ''; + this._ops = { + ...this._ops, + enabledSigninMethods: DEFAULT_SIGNIN_METHODS + }; + await this._render(); + // add event listener + this.connectedCallback(); + // remove "Create new Wallet" button if no auth method is enabled + const authMethod = await storageService.getItem( + KEYS.STORAGE_AUTH_METHOD_KEY + ); + if (!authMethod) { + this.shadowRoot?.querySelector('#create-new-wallet')?.remove(); + } + this.showModal(); + } +} diff --git a/src/lib/ui/dialog-element/index.ts b/src/lib/ui/dialog-element/index.ts new file mode 100644 index 00000000..d974a5a4 --- /dev/null +++ b/src/lib/ui/dialog-element/index.ts @@ -0,0 +1,289 @@ +import { FirebaseWeb3ConnectDialogElement } from '../../interfaces/dialog-element.interface'; +import { DialogUIOptions } from '../../interfaces/sdk.interface'; +import { HexaSigninDialogElement } from './dialogElement'; +import { KEYS, SigninMethod } from '../../constant'; +import { + authByImportPrivateKey, + authWithGoogle, + authWithEmailPwd, + authByImportSeed, + authWithEmailLink +} from '../../services/auth.servcie'; +import { promptImportPrivatekeyElement } from '../prompt-import-privatekey-element/prompt-import-privatekey-element'; +import { storageService } from '../../services/storage.service'; +import { promptImportSeedElement } from '../prompt-import-seed-element/prompt-import-seed-element'; +import { Logger } from '../../utils'; +import authProvider from '../../providers/auth/firebase'; + +const setupSigninDialogElement = async ( + ref: HTMLElement = document.body, + ops: DialogUIOptions +) => { + // check if element already defined + if (!customElements.get('firebase-web3connect-dialog')) { + customElements.define( + 'firebase-web3connect-dialog', + HexaSigninDialogElement + ); + } + // create dialog element with options as props + const dialogElement = document.createElement( + 'firebase-web3connect-dialog' + ) as FirebaseWeb3ConnectDialogElement; + // add `ops` as property + dialogElement.ops = ops; + ref.appendChild(dialogElement); + // remove "Create new Wallet" button if no auth method is enabled + const authMethod = await storageService.getItem(KEYS.STORAGE_AUTH_METHOD_KEY); + if (!authMethod) { + dialogElement.shadowRoot?.querySelector('#create-new-wallet')?.remove(); + } + return dialogElement; +}; + +const addAndWaitUIEventsResult = ( + dialogElement: FirebaseWeb3ConnectDialogElement +): Promise< + | { + uid?: string; + isAnonymous?: boolean; + authMethod: SigninMethod; + } + | undefined +> => { + return new Promise( + ( + resolve: ( + value: + | { + uid?: string; + isAnonymous?: boolean; + authMethod: SigninMethod; + } + | undefined + ) => void, + reject: (err: Error) => void + ) => { + // listen to connect event + dialogElement.addEventListener('connect', async e => { + const detail = (e as CustomEvent).detail; + Logger.log(`[INFO] connect event: `, detail); + // exclude cancel event { + if (detail === 'cancel') { + dialogElement.hideModal(); + await new Promise(resolve => setTimeout(resolve, 225)); + dialogElement.remove(); + resolve(undefined); + return; + } + // handle type of connection request + if (detail === 'connect-google') { + try { + ( + dialogElement.shadowRoot?.querySelector( + 'dialog #spinner' + ) as HTMLElement + ).style.display = 'block'; + // use service to request connection with google + const { uid } = await authWithGoogle(); + // await dialogElement.toggleSpinnerAsCheck(); + resolve({ + uid, + authMethod: detail as SigninMethod + }); + } catch (error: unknown) { + const message = + (error as Error)?.message || + 'An error occured. Please try again.'; + reject(new Error(`${message}`)); + return; + } + } + if (detail === 'connect-email') { + try { + const { password, email } = + await dialogElement.promptEmailPassword(); + if (!password || !email) { + throw new Error('Email and password are required to connect'); + } + // prompt to download private key if not already stored + const privateKey = await storageService.getItem( + KEYS.STORAGE_PRIVATEKEY_KEY + ); + const { withEncryption, skip } = !privateKey + ? await dialogElement.promptBackup() + : { withEncryption: false, skip: true }; + // use service to request connection with google + const { uid } = await authWithEmailPwd({ + email, + password, + skip, + withEncryption + }); + // await dialogElement.toggleSpinnerAsCheck(); + + resolve({ + uid, + authMethod: detail as SigninMethod + }); + } catch (error: unknown) { + const message = + (error as Error)?.message || + 'An error occured. Please try again.'; + reject(new Error(`${message}`)); + return; + } + } + if (detail === 'connect-email-link') { + // check if request coming from `standalone` browser app + const isStandaloneBrowserApp = window.matchMedia( + '(display-mode: standalone)' + ).matches; + // Standalone mode is not supported close the dialog as Cancel mode + if (isStandaloneBrowserApp) { + await new Promise(resolve => setTimeout(resolve, 225)); + alert(`Sorry this feature is not yet available in standalone mode. Please use "Connect with Google" or use this signin method from native browser instead.`); + dialogElement.hideModal(); + await new Promise(resolve => setTimeout(resolve, 225)); + dialogElement.remove(); + resolve(undefined); + return; + } + const { email } = await dialogElement.promptEmailPassword({ + hidePassword: true + }); + if (!email) { + reject(new Error('Email is required to connect')); + return; + } + try { + await authWithEmailLink({ + email, + url: dialogElement?.ops?.ops?.authProvider?.authEmailUrl + }); + // display message into DOM conatainer + // add HTML to explain the user to click on the link that will authenticate him + const finalStepElement = document.createElement('div'); + finalStepElement.innerHTML = ` +

+ Please check your email & click on the link to authenticate. +

+

+ Once authenticated, you will be prompted to provide a password + to lock your Wallet account from unauthorized access +

+ `; + dialogElement.shadowRoot + ?.querySelector('dialog #spinner') + ?.after(finalStepElement); + // listen to auth state change to manage dialog content + const unsubscribe = authProvider.getOnAuthStateChanged( + async user => { + if (user) { + finalStepElement.remove(); + unsubscribe(); + resolve({ + uid: user.uid, + isAnonymous: user.isAnonymous, + authMethod: detail as SigninMethod + }); + } + } + ); + } catch (error: unknown) { + dialogElement.hideModal(); + const message = + (error as Error)?.message || + 'An error occured. Please try again.'; + reject( + new Error(`Error while connecting with ${detail}: ${message}`) + ); + } + return; + } + if (detail === 'connect-wallet') { + try { + const walletType = await dialogElement.promptWalletType(); + Logger.log(`[INFO] Wallet type: `, walletType); + switch (walletType) { + case 'browser-extension': { + // const { uid } = await authWithExternalWallet(); + // await dialogElement.toggleSpinnerAsCheck(); + resolve({ + uid: undefined, + isAnonymous: true, + authMethod: detail as SigninMethod + }); + break; + } + case 'import-seed': { + // import seed + const { seed } = await promptImportSeedElement( + dialogElement?.shadowRoot?.querySelector( + '#spinner' + ) as HTMLElement + ); + Logger.log(`[INFO] Import seed: `, { + seed + }); + if (!seed) { + throw new Error('Seed is required to connect'); + } + const { uid } = await authByImportSeed({ + seed + }); + resolve({ + uid, + authMethod: detail as SigninMethod + }); + break; + } + case 'import-privatekey': { + // import private key and request password + const { privateKey, isEncrypted } = + await promptImportPrivatekeyElement( + dialogElement?.shadowRoot?.querySelector( + '#spinner' + ) as HTMLElement + ); + Logger.log(`[INFO] Import private key: `, { + privateKey, + isEncrypted + }); + if (!privateKey) { + throw new Error('Private key is required to connect'); + } + const { uid } = await authByImportPrivateKey({ + privateKey, + isEncrypted + }); + resolve({ + uid, + authMethod: detail as SigninMethod + }); + break; + } + default: + throw new Error('Invalid wallet type'); + } + } catch (error: unknown) { + const message = + (error as Error)?.message || + 'An error occured. Please try again.'; + reject(new Error(`Error while connecting: ${message}`)); + } + } + }); + dialogElement.addEventListener('reset', async () => { + await storageService.clear(); + dialogElement.reset(); + }); + } + ); +}; + +export { + HexaSigninDialogElement, + setupSigninDialogElement, + addAndWaitUIEventsResult +}; diff --git a/src/lib/ui/prompt-download-element/prompt-download-element.css b/src/lib/ui/prompt-download-element/prompt-download-element.css new file mode 100644 index 00000000..17c2e978 --- /dev/null +++ b/src/lib/ui/prompt-download-element/prompt-download-element.css @@ -0,0 +1,3 @@ +.button__skip { + cursor: pointer; +} diff --git a/src/lib/ui/prompt-download-element/prompt-download-element.ts b/src/lib/ui/prompt-download-element/prompt-download-element.ts new file mode 100644 index 00000000..e1ce91bc --- /dev/null +++ b/src/lib/ui/prompt-download-element/prompt-download-element.ts @@ -0,0 +1,81 @@ +import { CheckboxElement } from '../checkbox-element/checkbox-element'; +// import css from './prompt-download-element.css'; + +const css = `.button__skip { + cursor: pointer; +} +`; + +export const promptToDownloadElement = async ( + ref: HTMLElement +): Promise<{ + withEncryption?: boolean; + skip?: boolean; +}> => { + const container = document.createElement('div'); + container.classList.add('prompt-container'); + ref.after(container); + ref.style.display = 'none'; + + return new Promise(resolve => { + container.innerHTML = ` + +

+ + Backup your wallet PrivateKey + +

+

+ Download your backup file. We don't keep any copies of your private key, so make sure to keep it safe! + It's the only way to recover your wallet. +

+ + ${CheckboxElement({ + label: 'Encrypt backup file', + id: 'toggle__encription', + checked: true + })} + + + +

skip

+ `; + + const toggleEncription = container.querySelector( + '#toggle__encription' + ) as HTMLInputElement; + const buttonSkip = container.querySelector( + '.button__skip' + ) as HTMLButtonElement; + buttonSkip.addEventListener('click', e => { + e.preventDefault(); + resolve({ + skip: true + }); + container.remove(); + ref.style.display = 'block'; + }); + + const buttonDownload = container.querySelector( + '#button__download' + ) as HTMLButtonElement; + buttonDownload.addEventListener('click', async () => { + resolve({ + withEncryption: toggleEncription.checked + }); + container.remove(); + ref.style.display = 'block'; + }); + + // manage dialog close btn + const mainCloseBtn = ref.closest('dialog')?.querySelector('#cancel'); + if (mainCloseBtn) { + mainCloseBtn.addEventListener('click', e => { + e.preventDefault(); + resolve({ skip: true }); + container.remove(); + ref.style.display = 'block'; + }); + } + }); +}; diff --git a/src/lib/ui/prompt-email-password-element/prompt-email-password-element.ts b/src/lib/ui/prompt-email-password-element/prompt-email-password-element.ts new file mode 100644 index 00000000..a16dc10f --- /dev/null +++ b/src/lib/ui/prompt-email-password-element/prompt-email-password-element.ts @@ -0,0 +1,157 @@ +import { storageService } from '../../services/storage.service'; + +const isValideInputs = ( + inputs: { + inputPassword: HTMLInputElement; + inputEmail?: HTMLInputElement; + }, + ops?: { + hideEmail?: boolean; + hidePassword?: boolean; + } +) => { + const { inputPassword, inputEmail } = inputs; + const { hideEmail, hidePassword } = ops || {}; + const minPasswordLength = 6; + const maxPasswordLength = 32; + const isValidEmail = hideEmail ? true : inputEmail?.checkValidity(); + const isValidPassword = hidePassword + ? true + : !hidePassword && + inputPassword?.value.length >= minPasswordLength && + inputPassword?.value.length <= maxPasswordLength; + return isValidEmail && isValidPassword; +}; + +export const promptEmailPasswordElement = async ( + ref: HTMLElement, + ops?: { + hideEmail?: boolean; + hidePassword?: boolean; + } +): Promise<{ + password?: string; + email?: string; +}> => { + const { hideEmail, hidePassword } = ops || {}; + console.log({ hideEmail, hidePassword }); + const minPasswordLength = 4; + const maxPasswordLength = 32; + const isCreating = !(await storageService.isExistingPrivateKeyStored()); + + return new Promise(resolve => { + const container = document.createElement('div'); + container.classList.add('prompt-container'); + const html = ` + +
+ ${isCreating ? '

Create a new Wallet

' : '

Connect to your Wallet

'} +

+ ${ + isCreating + ? `Enter your ${hideEmail ? '' : 'email '}${hidePassword ? '' : '& password'} to create a new wallet. ${hidePassword ? '' : `The password you enter will only be used to authenticate you.`}` + : `Enter your ${hideEmail ? '' : 'email '}${hidePassword ? '' : '& password'}` + } +

+
+ ${ + hideEmail + ? '' + : `` + } + ${ + hidePassword + ? '' + : `` + } + + + `; + container.innerHTML = html; + ref.after(container); + ref.style.display = 'none'; + + const inputPassword = container.querySelector( + '.prompt__input.password' + ) as HTMLInputElement; + const inputEmail = container.querySelector( + '.prompt__input.email' + ) as HTMLInputElement; + const button = container.querySelector( + '.prompt__button' + ) as HTMLButtonElement; + + // manage validation of input to enable button + inputPassword?.addEventListener('input', () => { + const isValid = isValideInputs({ inputPassword, inputEmail }, ops); + button.disabled = !isValid; + }); + inputEmail?.addEventListener('input', () => { + const isValid = isValideInputs({ inputPassword, inputEmail }, ops); + button.disabled = !isValid; + }); + + button.addEventListener('click', () => { + resolve({ + password: inputPassword?.value, + email: inputEmail?.value + }); + container.remove(); + // prevent flash ui. ref will be hiden to display backup step + // if is creating wallet. This is why we dont switch to display block + // if (!isCreating) { + ref.style.display = 'block'; + // } + }); + }); +}; diff --git a/src/lib/ui/prompt-import-privatekey-element/prompt-import-privatekey-element.ts b/src/lib/ui/prompt-import-privatekey-element/prompt-import-privatekey-element.ts new file mode 100644 index 00000000..c724f3bd --- /dev/null +++ b/src/lib/ui/prompt-import-privatekey-element/prompt-import-privatekey-element.ts @@ -0,0 +1,71 @@ +import { CheckboxElement } from '../checkbox-element/checkbox-element'; + +export const promptImportPrivatekeyElement = async ( + ref: HTMLElement +): Promise<{ + privateKey: string; + isEncrypted: boolean; +}> => { + const container = document.createElement('div'); + container.classList.add('prompt-container'); + ref.after(container); + ref.style.display = 'none'; + container.innerHTML = ` +
+

+ Import Privatekey backup file
+ & Authenticate with Google to continue +

+
+ ${CheckboxElement({ + label: 'Encrypted backup file', + id: 'toggle__encription' + })} + + +
+ `; + + const buttonImportPrivatekey = container.querySelector( + '#button__import_privatekey' + ) as HTMLButtonElement; + const inputImportFile = container.querySelector( + '#input__import_file' + ) as HTMLInputElement; + const toggleEncription = container.querySelector( + '#toggle__encription' + ) as HTMLInputElement; + + const resutl = await new Promise<{ + privateKey: string; + isEncrypted: boolean; + }>((resolve, reject) => { + buttonImportPrivatekey.addEventListener('click', e => { + e.preventDefault(); + inputImportFile.click(); + }); + + inputImportFile.addEventListener('change', async () => { + const file = inputImportFile.files?.[0]; + if (!file) return; + try { + const content = await file.text(); + const isEncrypted = toggleEncription.checked; + resolve({ + privateKey: content, + isEncrypted + }); + container.remove(); + ref.style.display = 'block'; + } catch (error) { + reject(error); + container.remove(); + ref.style.display = 'block'; + } + }); + }); + + return resutl; +}; diff --git a/src/lib/ui/prompt-import-seed-element/prompt-import-seed-element.css b/src/lib/ui/prompt-import-seed-element/prompt-import-seed-element.css new file mode 100644 index 00000000..948b7de0 --- /dev/null +++ b/src/lib/ui/prompt-import-seed-element/prompt-import-seed-element.css @@ -0,0 +1,31 @@ +.prompt__message { + margin-bottom: 1.5rem; +} +.prompt__message h4 { + margin: 0 auto -0.7rem; + font-size: 1.3em; +} +#input__seed, +#input__password { + display: block; + min-height: 50px; + width: 100%; + max-width: 300px; + margin: 0rem auto 0.5rem; + text-align: center; + color: var(--text-color); + background: var(--button-background); + border: var(--dialog-border); + border-radius: 12px; + padding: 12px 16px; + font-size: 1em; + font-family: inherit; +} + +#input__seed { + min-height: 110px; +} +#input__seed::placeholder { + text-align: center; + transform: translateY(50%); +} diff --git a/src/lib/ui/prompt-import-seed-element/prompt-import-seed-element.ts b/src/lib/ui/prompt-import-seed-element/prompt-import-seed-element.ts new file mode 100644 index 00000000..7cb6b54d --- /dev/null +++ b/src/lib/ui/prompt-import-seed-element/prompt-import-seed-element.ts @@ -0,0 +1,79 @@ +// import css from './prompt-import-seed-element.css'; + +const css = `.prompt__message { + margin-bottom: 1.5rem; +} +.prompt__message h4 { + margin: 0 auto -0.7rem; + font-size: 1.3em; +} +#input__seed, +#input__password { + display: block; + min-height: 50px; + width: 100%; + max-width: 300px; + margin: 0rem auto 0.5rem; + text-align: center; + color: var(--text-color); + background: var(--button-background); + border: var(--dialog-border); + border-radius: 12px; + padding: 12px 16px; + font-size: 1em; + font-family: inherit; +} + +#input__seed { + min-height: 110px; +} +#input__seed::placeholder { + text-align: center; + transform: translateY(50%); +} +`; + +export const promptImportSeedElement = async ( + ref: HTMLElement +): Promise<{ + seed: string; +}> => { + const container = document.createElement('div'); + container.classList.add('prompt-container'); + ref.after(container); + ref.style.display = 'none'; + container.innerHTML = ` + +
+

Import Secret Seed

+

Access your Wallet with secret seed & authenticate with Google. +

+

+ The password you enter will encrypts your seed & gives access to your funds. Please store your password in a safe place. We don’t keep your information & can’t restore it. +

+
+
+
+ +
+ +
+ `; + + const inputSeed = container.querySelector('#input__seed') as HTMLInputElement; + const buttonImportSeed = container.querySelector( + '#button__import_seed' + ) as HTMLButtonElement; + + return new Promise(resolve => { + buttonImportSeed.addEventListener('click', () => { + resolve({ + seed: inputSeed.value, + }); + container.remove(); + ref.style.display = 'block'; + }); + }); +}; diff --git a/src/lib/ui/prompt-password-element/prompt-password-element.ts b/src/lib/ui/prompt-password-element/prompt-password-element.ts new file mode 100644 index 00000000..a2ea7ac9 --- /dev/null +++ b/src/lib/ui/prompt-password-element/prompt-password-element.ts @@ -0,0 +1,165 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ +import { storageService } from '../../services/storage.service'; + +export const promptPasswordElement = async ( + ref: HTMLElement +): Promise => { + const minPasswordLength = 6; + const maxPasswordLength = 32; + + const isCreating = !(await storageService.isExistingPrivateKeyStored()); + console.log('isCreating', isCreating); + const isValideInputs = (value: string, confirmeValue?: string) => { + if (!confirmeValue) { + return ( + value.length > minPasswordLength - 1 && + value.length < maxPasswordLength - 1 + ); + } + return ( + value.length >= minPasswordLength - 1 && + confirmeValue?.length > minPasswordLength - 1 && + value === confirmeValue && + value.length < maxPasswordLength - 1 + ); + }; + + const focusNextInput = (input: HTMLInputElement) => { + // focus next input + const next = input.nextElementSibling as HTMLInputElement | null; + if (next) { + next.focus(); + } else { + input.blur(); + } + }; + + return new Promise(resolve => { + const container = document.createElement('div'); + container.classList.add('prompt-container'); + const html = ` + +
+ ${isCreating ? '

Create a new Wallet

' : '

Connect to your Wallet

'} +

${ + isCreating ? 'Protect your Wallet with a password' : 'Welcome back!' + }

+

+ ${ + isCreating + ? `The password you enter encrypts your private key & gives access to your funds. Please store your password in a safe place. We don’t keep your information & can’t restore it.` + : `Unlock with your password.` + } +

+
+
+ + + + + + +
+ + ${ + !isCreating + ? `` + : '' + } + + `; + container.innerHTML = html; + ref.after(container); + ref.style.display = 'none'; + + const inputs = Array.from( + container.querySelectorAll('.prompt__input.single') + ) as HTMLInputElement[]; + const button = container.querySelector( + '.prompt__button' + ) as HTMLButtonElement; + button.addEventListener('click', () => { + resolve(inputs.map(i => i.value).join('')); + container.remove(); + // prevent flash ui. ref will be hiden to display backup step + // if is creating wallet. This is why we dont switch to display block + // if (!isCreating) { + // ref.style.display = 'block'; + // } + ref.style.display = 'block'; + }); + + // manage validation of input to enable button + for (let index = 0; index < inputs.length; index++) { + const input = inputs[index]; + input.addEventListener('focus', e => { + // clear input value on focus and prevent autofill & preventDefault + e.preventDefault(); + input.value = ''; + const isValid = isValideInputs(inputs.map(i => i.value).join('')); + button.disabled = !isValid; + }); + input.addEventListener('input', () => { + if (input.value !== '' && input.value.length === 1) { + focusNextInput(input); + } + const isValid = isValideInputs(inputs.map(i => i.value).join('')); + button.disabled = !isValid; + }); + } + + // manage reset & create new wallet + const createBtn = container.querySelector( + '#create-new-wallet' + ) as HTMLButtonElement; + createBtn?.addEventListener('click', () => { + resolve(null); + container.remove(); + ref.style.display = 'block'; + }); + }); +}; diff --git a/src/lib/ui/prompt-signout-element/prompt-signout-element.css b/src/lib/ui/prompt-signout-element/prompt-signout-element.css new file mode 100644 index 00000000..21c0ff57 --- /dev/null +++ b/src/lib/ui/prompt-signout-element/prompt-signout-element.css @@ -0,0 +1,10 @@ +.button__skip { + cursor: pointer; +} +p.information { + margin: 12px auto 16px; + border: solid 1px rgb(255, 217, 0); + background: rgb(255 215 0 / 25%); + padding: 0.5rem 0.25rem; + border-radius: 3px; +} diff --git a/src/lib/ui/prompt-signout-element/prompt-signout-element.ts b/src/lib/ui/prompt-signout-element/prompt-signout-element.ts new file mode 100644 index 00000000..aa8ec5f6 --- /dev/null +++ b/src/lib/ui/prompt-signout-element/prompt-signout-element.ts @@ -0,0 +1,103 @@ +import { CheckboxElement } from '../checkbox-element/checkbox-element'; +// import css from './prompt-signout-element.css'; + +const css = `.button__skip { + cursor: pointer; +} +p.information { + margin: 12px auto 16px; + border: solid 1px rgb(255, 217, 0); + background: rgb(255 215 0 / 25%); + padding: 0.5rem 0.25rem; + border-radius: 3px; +} +`; + +export const promptSignoutElement = async ( + ref: HTMLElement, + ops?: { + html?: string; + } +): Promise<{ + withEncryption?: boolean; + skip?: boolean; + clearStorage?: boolean; + cancel?: boolean; +}> => { + const { html } = ops || {}; + const container = document.createElement('div'); + container.classList.add('prompt-container'); + ref.after(container); + ref.style.display = 'none'; + + return new Promise(resolve => { + container.innerHTML = ` + + ${ + html || + ` +

+ Signout +

+

+ You are about to signout from your Wallet and your Private Key still remains encrypted on this device unless you remove it. +

+ ${CheckboxElement({ + label: 'Download encrypted backup file', + id: 'toggle__download', + checked: true + })} + ${CheckboxElement({ + label: 'Remove data from device', + id: 'toggle__clear_data' + })} + + + +

cancel

+ ` + } + + `; + + const toggleDownload = container.querySelector( + '#toggle__download' + ) as HTMLInputElement; + const toggleClear = container.querySelector( + '#toggle__clear_data' + ) as HTMLInputElement; + const buttonCancel = container.querySelector( + '.button__cancel' + ) as HTMLButtonElement; + buttonCancel.addEventListener('click', e => { + e.preventDefault(); + resolve({ cancel: true }); + container.remove(); + ref.style.display = 'block'; + }); + + const buttonDownload = container.querySelector( + '#button__signout' + ) as HTMLButtonElement; + buttonDownload.addEventListener('click', async () => { + resolve({ + withEncryption: toggleDownload.checked, + skip: !toggleDownload.checked ? true : false, + clearStorage: toggleClear.checked + }); + container.remove(); + ref.style.display = 'block'; + }); + + // manage dialog close btn + const mainCloseBtn = ref.closest('dialog')?.querySelector('#cancel'); + if (mainCloseBtn) { + mainCloseBtn.addEventListener('click', e => { + e.preventDefault(); + resolve({ cancel: true }); + container.remove(); + ref.style.display = 'block'; + }); + } + }); +}; diff --git a/src/lib/ui/prompt-wallet-type-element/prompt-wallet-type-element.css b/src/lib/ui/prompt-wallet-type-element/prompt-wallet-type-element.css new file mode 100644 index 00000000..a95f0e19 --- /dev/null +++ b/src/lib/ui/prompt-wallet-type-element/prompt-wallet-type-element.css @@ -0,0 +1,14 @@ + +.prompt__wallet_type button { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; +} + +.prompt__wallet_type button svg { + width: 28px; + height: 28px; + color: var(--text-color); +} diff --git a/src/lib/ui/prompt-wallet-type-element/prompt-wallet-type-element.ts b/src/lib/ui/prompt-wallet-type-element/prompt-wallet-type-element.ts new file mode 100644 index 00000000..3761aace --- /dev/null +++ b/src/lib/ui/prompt-wallet-type-element/prompt-wallet-type-element.ts @@ -0,0 +1,85 @@ +// import extensionIcon from '../../assets/svg/extension-puzzle-outline.svg'; +// import downloadIcon from '../../assets/svg/download-outline.svg'; +// import keyOutlineIcon from '../../assets/svg/key-outline.svg'; +// import css from './prompt-wallet-type-element.css'; + +const extensionIcon = ``; +const downloadIcon = ``; +const keyOutlineIcon = ``; + +const css = ` +.prompt__wallet_type button { + display: flex; + align-items: center; + justify-content: center; + width: 100%; + height: 100%; +} + +.prompt__wallet_type button svg { + width: 28px; + height: 28px; + color: var(--text-color); +} +`; + +export const promptWalletTypeElement = async ( + ref: HTMLElement +): Promise<'browser-extension' | 'import-privatekey' | 'import-seed'> => { + const container = document.createElement('div'); + container.classList.add('prompt-container'); + ref.after(container); + ref.style.display = 'none'; + container.innerHTML = ` + +
+ + + +
+ `; + + const buttonExternalWallet = container.querySelector( + '#button__external_wallet' + ) as HTMLButtonElement; + const buttonImportWallet = container.querySelector( + '#button__import_wallet' + ) as HTMLButtonElement; + const buttonImportSeed = container.querySelector( + '#button__import_seed' + ) as HTMLButtonElement; + + return new Promise(resolve => { + buttonExternalWallet.addEventListener('click', () => { + resolve('browser-extension'); + container.remove(); + ref.style.display = 'block'; + }); + + buttonImportWallet.addEventListener('click', () => { + // request `import-seed` or `import-privatekey` + // based on user selection + // this will be handled in the next step + resolve('import-privatekey'); + container.remove(); + // ref.style.display = 'block'; + }); + + buttonImportSeed.addEventListener('click', () => { + resolve('import-seed'); + container.remove(); + ref.style.display = 'block'; + }); + }); +}; diff --git a/src/lib/ui/spinner-element/spinner-element.ts b/src/lib/ui/spinner-element/spinner-element.ts new file mode 100644 index 00000000..02cabbe4 --- /dev/null +++ b/src/lib/ui/spinner-element/spinner-element.ts @@ -0,0 +1,103 @@ +export const SpinnerElement = () => { + return ` + + + + + `; +}; diff --git a/src/lib/utils.ts b/src/lib/utils.ts new file mode 100644 index 00000000..f97b48db --- /dev/null +++ b/src/lib/utils.ts @@ -0,0 +1,50 @@ +export const parseApiKey = (hex: string) => { + // converte hex string to utf-8 string + if (!hex || hex.length <= 0) { + throw new Error('Unexisting API key'); + } + const json = Buffer.from(hex, 'hex').toString('utf-8'); + const apiKey = JSON.parse(json); + return apiKey as any; +}; + +/** + * Logger function + */ +export const Logger = { + // eslint-disable-next-line @typescript-eslint/no-explicit-any + log: (...args: any[]) => { + if (process.env.NEXT_PUBLIC_APP_IS_PROD === 'true') { + return; + } + console.log(...args); + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + error: (...args: any[]) => { + if (process.env.NEXT_PUBLIC_APP_IS_PROD === 'true') { + return; + } + console.error(...args); + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + warn: (...args: any[]) => { + if (process.env.NEXT_PUBLIC_APP_IS_PROD === 'true') { + return; + } + console.warn(...args); + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + info: (...args: any[]) => { + if (process.env.NEXT_PUBLIC_APP_IS_PROD === 'true') { + return; + } + console.info(...args); + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + debug: (...args: any[]) => { + if (process.env.NEXT_PUBLIC_APP_IS_PROD === 'true') { + return; + } + console.debug(...args); + } +}; diff --git a/src/lib/vite-env.d.ts b/src/lib/vite-env.d.ts new file mode 100755 index 00000000..55f00d62 --- /dev/null +++ b/src/lib/vite-env.d.ts @@ -0,0 +1,11 @@ +// /// + +// // https://medium.com/@sampsonjoliver/importing-html-files-from-typescript-bd1c50909992 +// declare module '*.html' { +// const value: string; +// export default value +// } +// declare module '*.css' { +// const value: string; +// export default value +// } \ No newline at end of file diff --git a/src/network/Avalanche.ts b/src/network/Avalanche.ts deleted file mode 100644 index d77c7dbd..00000000 --- a/src/network/Avalanche.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Magic } from 'magic-sdk'; -import { AvalancheExtension } from '@magic-ext/avalanche'; -import { Avalanche, BinTools, Buffer, BN } from '@avalabs/avalanchejs'; - -import { MagicWalletUtils } from "./MagicWallet"; -import { CHAIN_DEFAULT, NETWORK } from "../constants/chains"; -import { RPC_NODE_OPTIONS } from "../servcies/magic"; - -// // The EVM (Ethereum Virtual Machine) class extends the abstract MagicWallet class -// export class EVM extends MagicWallet { -// // Web3 instance to interact with the Ethereum blockchain -// web3Provider: Avalanche | null = null; - -// // The network for this class instance -// public network: NETWORK; - -// constructor(network: NETWORK) { -// super(); -// // Setting the network type -// this.network = network; -// // Calling the initialize method from MagicWallet -// this.initialize(); -// } - -// // Asynchronous method to initialize the Web3 instance -// async initializeWeb3(): Promise { -// const RPC_NODE = RPC_NODE_OPTIONS.find((n) => n.chainId === this.network); -// // const provider = await this.magic?.wallet.getProvider(); // Get the provider from the magic -// this.web3Provider = new Avalanche(RPC_NODE?.rpcUrl, 443, 'https', 4, 'X'); // Initializing the Web3 instance -// } - -// } diff --git a/src/network/Bitcoin.ts b/src/network/Bitcoin.ts deleted file mode 100644 index 376ad220..00000000 --- a/src/network/Bitcoin.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { BitcoinExtension } from "@magic-ext/bitcoin"; -import { MagicWalletUtils } from "./MagicWallet"; -import { NETWORK } from "@/constants/chains"; -import { RPC_NODE_OPTIONS, getMagic } from "@/servcies/magic"; - - -export class BitcoinWalletUtils extends MagicWalletUtils { - - public web3Provider: null = null; - public isMagicWallet = true; - - constructor(network: NETWORK) { - super(); - this.network = network; - } - - async _initializeWeb3() { - console.log(`[INFO] Bitcoin: initializeWeb3...`); - const magic = await getMagic({chainId: this.network}); - const RPC_NODE = RPC_NODE_OPTIONS.find((n) => n.chainId === this.network); - if (!RPC_NODE) { - throw new Error("RPC Node config fail. Incorect params, "); - } - // get account address and wallet type - try { - const info = await magic.user.getInfo() || undefined; - this.walletAddress = info?.publicAddress|| undefined; - } catch (error) { - console.log('error', error); - } - } - - async loadBalances() { - throw new Error("loadBalances() - Method not implemented."); - } - - async sendToken(destination: string, decimalAmount: number, contactAddress: string) { - throw new Error("sendToken() - Method not implemented."); - } -} \ No newline at end of file diff --git a/src/network/Cosmos.ts b/src/network/Cosmos.ts deleted file mode 100644 index ada8de3e..00000000 --- a/src/network/Cosmos.ts +++ /dev/null @@ -1,138 +0,0 @@ -import { SDKBase } from "@magic-sdk/provider" -import { CosmosExtension } from '@magic-ext/cosmos'; -import { StargateClient } from '@cosmjs/stargate'; - -import { MagicWalletUtils } from "./MagicWallet"; -import { CHAIN_DEFAULT, NETWORK } from "../constants/chains"; -import { RPC_NODE_OPTIONS, getMagic } from "../servcies/magic"; -import { IAsset } from "../interfaces/asset.interface"; - -// // The EVM (Ethereum Virtual Machine) class extends the abstract MagicWallet class -// export class Cosmos extends MagicWallet { -// // Web3 instance to interact with the Ethereum blockchain -// web3Provider: StargateClient|null = null; - -// // The network for this class instance -// public network: NETWORK; - -// public assets: IAsset[] = []; - -// constructor(network: NETWORK) { -// super(); -// // Setting the network type -// this.network = network; -// // Calling the initialize method from MagicWallet -// this.initialize(); -// } - -// // Asynchronous method to initialize the Web3 instance -// async initializeWeb3(): Promise { -// const RPC_NODE = RPC_NODE_OPTIONS.find((n) => n.chainId === this.network); -// if (!RPC_NODE) { -// throw new Error("RPC Node config fail. Incorect params, "); -// } -// this.web3Provider = await StargateClient.connect(RPC_NODE?.rpcUrl); -// } - -// public override async connect() { -// // prompt to get email -// const email = prompt('Enter your email'); -// if (!email) { -// throw new Error("User not logged in"); -// } -// try { -// await this.loginWithOTP(email); -// const infos = await this.getInfo(); -// console.log("connect infos", infos); -// this.walletAddress = infos?.publicAddress; -// // this.assets = await this._fetchUserAssets(); -// } catch (error) { -// console.log("connect error", error); -// } -// } - -// protected async _fetchUserAssets(): Promise { -// return []; -// // const { publicAddress } = (await this.getInfo()) || {}; -// // if (!publicAddress) return []; -// // const assets = await fetchUserAssets(publicAddress); -// // if (!assets) return []; -// // return assets; -// } - - -// public async sendTx(ops: { -// toAddress: string; -// amount: number; -// }): Promise { -// if (!this.walletAddress) { -// throw new Error("User not logged in"); -// } -// const {toAddress, amount } = ops; -// const message = [ -// { -// typeUrl: '/cosmos.bank.v1beta1.MsgSend', -// value: { -// fromAddress: this.walletAddress, -// toAddress, -// amount: [ -// { -// amount: String(amount), -// denom: 'atom', -// }, -// ], -// }, -// }, -// ]; -// const fee = { -// amount: [{ denom: 'uatom', amount: '500' }], -// gas: '200000', -// }; -// if (!this._magicExtention) { -// throw new Error("Magic extention not found"); -// } -// const signTransactionResult = await this._magicExtention.sign(message, fee); -// console.log('signTransactionResult', signTransactionResult); -// return signTransactionResult; -// } -// } - -/** - * Cosmos Wallet Utils - * Support for Cosmos Wallet - * StargateClient docs: https://cosmos.github.io/cosmjs/latest/stargate/classes/StargateClient.html - */ -export class CosmosWalletUtils extends MagicWalletUtils { - - public web3Provider: StargateClient | null = null; - public isMagicWallet = true; - constructor(network: NETWORK) { - super(); - this.network = network; - } - - async _initializeWeb3() { - const magic = await getMagic({chainId: this.network}); - const RPC_NODE = RPC_NODE_OPTIONS.find((n) => n.chainId === this.network); - if (!RPC_NODE) { - throw new Error("RPC Node config fail. Incorect params, "); - } - const web3Provider = await StargateClient.connect(RPC_NODE?.rpcUrl); - // this.web3Provider = web3Provider; - // get account address and wallet type - try { - const info = await magic.user.getInfo() || undefined; - this.walletAddress = info?.publicAddress|| undefined; - } catch (error) { - console.log('error', error); - } - } - - async loadBalances() { - throw new Error("loadBalances() - Method not implemented."); - } - - async sendToken(destination: string, decimalAmount: number, contactAddress: string) { - throw new Error("sendToken() - Method not implemented."); - } -} \ No newline at end of file diff --git a/src/network/EVM.ts b/src/network/EVM.ts deleted file mode 100644 index dabb8b1b..00000000 --- a/src/network/EVM.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { ethers } from "ethers"; -import { NETWORK } from "../constants/chains"; -import { getTokensBalances } from "../servcies/ankr.service"; -import { MagicWalletUtils } from "./MagicWallet"; -import { getMagic } from "@/servcies/magic"; -import { getTokensPrice } from "@/servcies/lifi.service"; - -/** - * Function tha takes wallet address and fetches all assets for that wallet - * using Ankr API. It also fetches token price from LiFi API if Ankr response contains - * token with balance > 0 && balanceUsd === 0 && priceUsd === 0 - * This ensures that all tokens have price in USD and the total balance is calculated correctly - * for each token that user has in the wallet. - */ -const fetchUserAssets = async (walletAddress: string, force?: boolean) => { - console.log(`[INFO] fetchUserAssets()`, walletAddress); - if (!walletAddress) return null; - const assets = await getTokensBalances([], walletAddress, force); - // remove elements with 0 balance and add to new arrany using extracting - const assetWithBalanceUsd = [], - assetsWithoutBalanceUsd = []; - for (let i = 0; i < assets.length; i++) { - const asset = assets[i]; - (asset.balanceUsd === 0 && asset.balance > 0) - ? assetsWithoutBalanceUsd.push(asset) - : assetWithBalanceUsd.push(asset); - } - // get token price for tokens without balanceUsd - const tokenWithbalanceUsd = await getTokensPrice(assetsWithoutBalanceUsd); - return [ - ...assetWithBalanceUsd, - ...tokenWithbalanceUsd - ]; -}; - -export class EVMWalletUtils extends MagicWalletUtils { - public web3Provider: ethers.providers.Web3Provider | null = null; - public isMagicWallet: boolean = true; - - constructor(network: NETWORK) { - super(); - this.network = network; - } - - async _initializeWeb3() { - const magic = await getMagic({ chainId: this.network }); - const provider = await magic.wallet.getProvider(); - const web3Provider = new ethers.providers.Web3Provider(provider, "any"); - this.web3Provider = web3Provider; - // detect if is metamask and set correct network - if ( - web3Provider?.connection?.url === "metamask" || - web3Provider.provider.isMetaMask - ) { - this.isMagicWallet = false; - await this._setMetamaskNetwork(); - } else { - this.isMagicWallet = true; - } - // get account address and wallet type - try { - const signer = web3Provider?.getSigner(); - this.walletAddress = (await signer?.getAddress()) || undefined; - } catch (error) { - console.error( - "[ERROR] User is not connected. Unable to get wallet address.", - error - ); - // return; - } - } - - async loadBalances(force?: boolean) { - if (!this.walletAddress) return; - const assets = await fetchUserAssets(this.walletAddress, force); - if (!assets) return; - this.assets = assets; - } - - async sendToken(destination: string, decimalAmount: number, contactAddress: string) { - if(!this.web3Provider) { - throw new Error("Web3Provider is not initialized"); - } - try { - console.log({ - destination, decimalAmount, contactAddress - }) - const signer = this.web3Provider.getSigner(); - const from = await signer.getAddress(); - const amount = ethers.utils.parseUnits(decimalAmount.toString(), 18); // Convert 1 ether to wei - const contract = new ethers.Contract(contactAddress, ["function transfer(address, uint256)"], signer); - - const data = contract.interface.encodeFunctionData("transfer", [destination, amount] ); - - const tx = await signer.sendTransaction({ - to: destination, - value: amount, - // data - }); - const receipt = await tx.wait(); - // // Load token contract - // const tokenContract = new ethers.Contract(contactAddress, ['function transfer(address, uint256)'], signer); - - // // Send tokens to recipient - // const transaction = await tokenContract.transfer(destination, amount); - // const receipt = await transaction.wait(); - // console.log(receipt); - - - - //Define the data parameter - // const data = contract.interface.encodeFunctionData("transfer", [destination, amount] ) - // const tx = await signer.sendTransaction({ - // to: contactAddress, - // from, - // value: ethers.utils.parseUnits("0.000", "ether"), - // data: data - // }); - // // const tx = await contract.transfer(destination, amount); - // // Wait for transaction to be mined - // const receipt = await tx.wait(); - return receipt; - } catch (err: any) { - console.error(err); - throw new Error("Error during sending token"); - } - } - - private async _setMetamaskNetwork() { - if (!this.web3Provider) { - throw new Error("Web3Provider is not initialized"); - } - // check current network is same as selected network - const network = await this.web3Provider.getNetwork(); - if (network.chainId === this.network) { - return; - } - // switch network with ether - try { - await this.web3Provider.send("wallet_switchEthereumChain", [ - { chainId: ethers.utils.hexValue(this.network) }, - ]); - } catch (error) { - throw new Error( - `Error during network setting. Please switch to ${this.network} network and try again.` - ); - } - } - - async estimateGas() { - // const limit = await provider.estimateGas({ - // from: signer.address, - // to: tokenContract, - // value: ethers.utils.parseUnits("0.000", "ether"), - // data: data - - // }); - } -} diff --git a/src/network/MagicWallet.ts b/src/network/MagicWallet.ts deleted file mode 100644 index c8384dd1..00000000 --- a/src/network/MagicWallet.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { CHAIN_DEFAULT, NETWORK } from "../constants/chains"; -import { connect, disconnect } from "../servcies/magic"; -import { IAsset } from "../interfaces/asset.interface"; -import { Web3ProviderType } from "@/interfaces/web3.interface"; - - -// Abstract class to handle magic network-specific operations -export abstract class MagicWalletUtils { - - public get walletAddress():string|undefined { - return this._walletAddress; - }; - public set walletAddress(walletAddress: string | undefined) { - this._walletAddress = walletAddress; - } - public get network(): NETWORK { - return this._network; - }; - public set network(network: NETWORK) { - this._network = network; - } - public get assets(): IAsset[] { - return this._assets; - }; - public set assets(assets: IAsset[]) { - this._assets = assets; - } - private _walletAddress: string | undefined; - private _network!: NETWORK; - private _assets: IAsset[] = []; - - public abstract web3Provider: Web3ProviderType | null; - public abstract isMagicWallet: boolean; - public abstract loadBalances(force?: boolean): Promise; - public abstract sendToken(destination: string, decimalAmount: number, contactAddress: string): Promise; - protected abstract _initializeWeb3(): Promise; - - /** - * Static method to create MagicWallet instance based on network type - * @param network Chain ID as number - * @returns - */ - public static async create(network: NETWORK = CHAIN_DEFAULT.id): Promise { - let walletUtil: MagicWalletUtils; - switch (network) { - // case NETWORK.avalanche: { - // const { Avalanche } = require("./Avalanche"); - // return new Avalanche(network); - // break; - // } - case NETWORK.bitcoin: { - const { BitcoinWalletUtils } = require("./Bitcoin"); - walletUtil = new BitcoinWalletUtils(network); - break; - } - case NETWORK.cosmos: { - const { CosmosWalletUtils } = require("./Cosmos"); - walletUtil = new CosmosWalletUtils(network); - break; - } - case NETWORK.solana: { - const { SolanaWalletUtils } = require("./Solana"); - walletUtil = new SolanaWalletUtils(network); - break; - } - default: { - const { EVMWalletUtils } = require("./EVM"); - walletUtil = new EVMWalletUtils(network); - break; - } - } - await walletUtil._initializeWeb3(); - return walletUtil; - } - - async connect(ops?: { - email: string; - }) { - const address = await connect(ops); - if (!address) { - throw new Error("Connect wallet fail"); - } - await this._initializeWeb3(); - this.walletAddress = address; - return this.walletAddress; - } - - async disconnect() { - this.walletAddress = undefined; - this.assets = []; - return disconnect(); - } - -} \ No newline at end of file diff --git a/src/network/Solana.ts b/src/network/Solana.ts deleted file mode 100644 index 300f9f54..00000000 --- a/src/network/Solana.ts +++ /dev/null @@ -1,49 +0,0 @@ - - -import { Connection, Transaction} from '@solana/web3.js'; -import { MagicWalletUtils } from "./MagicWallet"; -import { RPC_NODE_OPTIONS, getMagic } from "../servcies/magic"; -import { IAsset } from "../interfaces/asset.interface"; -import { NETWORK } from '@/constants/chains'; - -/** - * Solana Wallet Utils - * Support for Solana Wallet - */ -export class SolanaWalletUtils extends MagicWalletUtils { - - public web3Provider: Connection | null = null; - public isMagicWallet: boolean = true; - constructor(network: NETWORK) { - super(); - this.network = network; - } - - async _initializeWeb3() { - console.log(`[INFO] Solana: initializeWeb3...`); - const magic = await getMagic({chainId: this.network}); - const RPC_NODE = RPC_NODE_OPTIONS.find((n) => n.chainId === this.network); - if (!RPC_NODE) { - throw new Error("RPC Node config fail. Incorect params, "); - } - const web3Provider = new Connection(RPC_NODE?.rpcUrl); - this.web3Provider = web3Provider; - // get account address and wallet type - try { - const info = await magic.user.getInfo() || undefined; - console.log('[INFO] Solana: user info', info); - - this.walletAddress = info?.publicAddress|| undefined; - } catch (error) { - console.log('error', error); - } - } - - async loadBalances() { - throw new Error("loadBalances() - Method not implemented."); - } - - async sendToken(destination: string, decimalAmount: number, contactAddress: string) { - throw new Error("sendToken() - Method not implemented."); - } -} \ No newline at end of file diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index 915204f0..e8c98c22 100755 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -41,7 +41,7 @@ function MyApp({ Component, pageProps }: AppProps) { - + @@ -130,7 +130,23 @@ function MyApp({ Component, pageProps }: AppProps) { - + {/* */} + {process.env.NEXT_PUBLIC_APP_IS_PROD !== 'true' && (<> +
+ {process.env.NEXT_PUBLIC_APP_IS_LOCAL === 'true' && (<>[ENV] LOCAL: Using fake data.)} + {process.env.NEXT_PUBLIC_APP_IS_LOCAL === 'false' && + process.env.NEXT_PUBLIC_APP_IS_PROD === 'false' && (<>[ENV] DEV: Using you own API Keys)} +
+ )} ); } diff --git a/src/pool/Aave.pool.ts b/src/pool/Aave.pool.ts index 999840c2..18fd7ae9 100644 --- a/src/pool/Aave.pool.ts +++ b/src/pool/Aave.pool.ts @@ -8,7 +8,7 @@ import { supplyWithPermit, withdraw, } from "@/servcies/aave.service"; -import { Web3ProviderType } from "@/interfaces/web3.interface"; +import { Web3SignerType } from "@/interfaces/web3.interface"; export interface IAavePool extends IMarketPool { readonly unborrowedLiquidity: string; @@ -87,20 +87,20 @@ export class AavePool extends MarketPool implements IAavePool { public async deposit( amount: number, - provider: Web3ProviderType + signer: Web3SignerType ): Promise { // handle invalid amount if (isNaN(amount) || amount <= 0) { throw new Error("Invalid amount. Value must be greater than 0."); } - if (!(provider instanceof ethers.providers.Web3Provider)) { - throw new Error("No EVM web3Provider"); + if (!signer) { + throw new Error("No EVM signer"); } const markets = getMarkets(this.chainId); // call method const { chainId, aTokenAddress, underlyingAsset } = this; const params = { - provider: provider as ethers.providers.Web3Provider, + signer, reserve: { chainId, aTokenAddress, underlyingAsset }, amount: amount.toString(), onBehalfOf: undefined, @@ -118,7 +118,7 @@ export class AavePool extends MarketPool implements IAavePool { public async withdraw( amount: number, - provider: Web3ProviderType + signer: Web3SignerType ): Promise { // handle invalid amount if (isNaN(amount) || amount <= 0) { @@ -126,14 +126,14 @@ export class AavePool extends MarketPool implements IAavePool { "[INFO] AavePool.withdraw() Invalid amount. Value must be greater than 0." ); } - if (!(provider instanceof ethers.providers.Web3Provider)) { - throw new Error("[INFO] AavePool.withdraw() No EVM web3Provider"); + if (!signer) { + throw new Error("[INFO] AavePool.withdraw() No EVM signer"); } const markets = getMarkets(this.chainId); const { underlyingAsset, aTokenAddress } = this; // call method const params = { - provider: provider as ethers.providers.Web3Provider, + signer, reserve: { underlyingAsset, aTokenAddress }, amount: amount.toString(), onBehalfOf: undefined, @@ -151,7 +151,7 @@ export class AavePool extends MarketPool implements IAavePool { public async borrow( amount: number, - provider: Web3ProviderType + signer: Web3SignerType ): Promise { // handle invalid amount if (isNaN(amount) || amount <= 0) { @@ -159,15 +159,15 @@ export class AavePool extends MarketPool implements IAavePool { "[INFO] AavePool.borrow() Invalid amount. Value must be greater than 0." ); } - if (!(provider instanceof ethers.providers.Web3Provider)) { - throw new Error("[INFO] AavePool.borrow() No EVM web3Provider"); + if (!signer) { + throw new Error("[INFO] AavePool.borrow() No EVM signer"); } const markets = getMarkets(this.chainId); // call method const { underlyingAsset } = this; // call method const params = { - provider, + signer, reserve: { underlyingAsset }, amount: amount.toString(), onBehalfOf: undefined, @@ -185,21 +185,21 @@ export class AavePool extends MarketPool implements IAavePool { public async repay( amount: number, - provider: Web3ProviderType + signer: Web3SignerType ): Promise { // handle invalid amount if (isNaN(amount) || amount <= 0) { throw new Error("Invalid amount. Value must be greater than 0."); } - if (!(provider instanceof ethers.providers.Web3Provider)) { - throw new Error("[INFO] AavePool.borrow() No EVM web3Provider"); + if (!signer) { + throw new Error("[INFO] AavePool.borrow() No EVM signer"); } const markets = getMarkets(this.chainId); // call method const { underlyingAsset } = this; // call method const params = { - provider: provider as ethers.providers.Web3Provider, + signer, reserve: { underlyingAsset }, amount: amount.toString(), onBehalfOf: undefined, diff --git a/src/pool/Market.pool.ts b/src/pool/Market.pool.ts index 085f84e6..1a851d20 100644 --- a/src/pool/Market.pool.ts +++ b/src/pool/Market.pool.ts @@ -1,6 +1,7 @@ import { IMarketPool } from "@/interfaces/reserve.interface"; import { IAavePool } from "./Aave.pool"; -import { Web3ProviderType } from "@/interfaces/web3.interface"; +import { Web3SignerType } from "@/interfaces/web3.interface"; +import { ethers } from "ethers"; export abstract class MarketPool implements IMarketPool { readonly id: string; @@ -40,10 +41,10 @@ export abstract class MarketPool implements IMarketPool { public borrowBalance: number; - public abstract deposit(amount: number, provider: Web3ProviderType): Promise; - public abstract withdraw(amount: number, provider: Web3ProviderType): Promise; - public abstract borrow(amount: number, provider: Web3ProviderType): Promise; - public abstract repay(amount: number, provider: Web3ProviderType): Promise; + public abstract deposit(amount: number, signer: ethers.Signer): Promise; + public abstract withdraw(amount: number, signer: ethers.Signer): Promise; + public abstract borrow(amount: number, signer: ethers.Signer): Promise; + public abstract repay(amount: number, signer: ethers.Signer): Promise; constructor(pool: IMarketPool) { this.id = pool.id; diff --git a/src/servcies/aave.service.ts b/src/servcies/aave.service.ts index dda6ee4e..0adff11d 100644 --- a/src/servcies/aave.service.ts +++ b/src/servcies/aave.service.ts @@ -7,7 +7,7 @@ import { UiPoolDataProvider, WalletBalanceProvider, } from "@aave/contract-helpers"; -import { ethers } from "ethers"; +import { Signer, Wallet, ethers, providers } from "ethers"; import * as MARKETS from "@bgd-labs/aave-address-book"; import { FormatReserveUSDResponse, @@ -19,15 +19,15 @@ import { ChainId } from "@aave/contract-helpers"; import { CHAIN_AVAILABLES } from "../constants/chains"; import { IUserSummary } from "../interfaces/reserve.interface"; import { IAavePool } from "@/pool/Aave.pool"; +import web3Connector from "./firebase-web3-connect"; const submitTransaction = async (ops: { - provider: ethers.providers.Web3Provider; // Signing transactions requires a wallet provider + signer: Signer; // Signing transactions requires a wallet provider tx: EthereumTransactionTypeExtended; }) => { - const { provider, tx } = ops; + const { signer, tx } = ops; const extendedTxData = await tx.tx(); const { from, ...txData } = extendedTxData; - const signer = provider.getSigner(from); const txResponse = await signer.sendTransaction({ ...txData, value: txData.value || undefined, @@ -42,16 +42,16 @@ const submitTransaction = async (ops: { * @returns */ const submitMultiplesTransaction = async (ops: { - provider: ethers.providers.Web3Provider; // Signing transactions requires a wallet provider + signer: Signer; // Signing transactions requires a wallet provider txs: EthereumTransactionTypeExtended[]; }) => { - const { provider, txs } = ops; + const { signer, txs } = ops; let txResponses: ethers.providers.TransactionResponse[] = []; for (let i = 0; i < txs.length; i++) { const tx = txs[i]; console.log("submit tx: ", i, tx); const txResponse = await submitTransaction({ - provider, + signer, tx, }); txResponses.push(txResponse); @@ -69,20 +69,22 @@ export const fetchTVL = async (reserves: {totalLiquidityUSD: string;}[]): Promis }; export const supply = async (ops: { - provider: ethers.providers.Web3Provider; + signer: Signer; // Signing transactions requires a wallet provider reserve: Pick; amount: string; onBehalfOf?: string; poolAddress: string; gatewayAddress: string; }) => { - const { provider, reserve: {underlyingAsset}, amount, onBehalfOf, poolAddress, gatewayAddress } = + const { signer, reserve: {underlyingAsset}, amount, onBehalfOf, poolAddress, gatewayAddress } = ops; - const pool = new Pool(provider, { + if(!signer.provider) { + throw new Error('Provider not available'); + } + const pool = new Pool(signer.provider, { POOL: poolAddress, WETH_GATEWAY: gatewayAddress, }); - const signer = provider.getSigner(); const user = await signer?.getAddress(); let txs: EthereumTransactionTypeExtended[]; try { @@ -98,7 +100,7 @@ export const supply = async (ops: { } console.log("txs: ", txs); const txResponses: ethers.providers.TransactionResponse[] = await submitMultiplesTransaction({ - provider, + signer, txs, }); console.log("result: ", txResponses); @@ -108,21 +110,24 @@ export const supply = async (ops: { }; export const supplyWithPermit = async (ops: { - provider: ethers.providers.Web3Provider; + signer: Signer; reserve: Pick; amount: string; onBehalfOf?: string; poolAddress: string; gatewayAddress: string; }) => { - const { provider, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = + const { signer, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = ops; - const pool = new Pool(provider, { + if(!signer.provider) { + throw new Error('Provider not available'); + } + const pool = new Pool(signer.provider, { POOL: poolAddress, WETH_GATEWAY: gatewayAddress, }); // handle incorrect network - const network = await provider.getNetwork(); + const network = await signer.provider.getNetwork(); if (network.chainId !== reserve.chainId) { throw new Error( `Incorrect network, please switch to ${CHAIN_AVAILABLES.find( @@ -130,13 +135,11 @@ export const supplyWithPermit = async (ops: { )?.name}` ); } - const signer = provider.getSigner(); const user = await signer?.getAddress(); const tokenAdress = reserve.underlyingAsset; // create timestamp of 10 minutes from now const deadline = `${new Date().setMinutes(new Date().getMinutes() + 10)}`; - - const isTestnet = provider.network?.chainId === 5 || provider.network?.chainId === 80001 || false; + const isTestnet = network?.chainId === 5 || network?.chainId === 80001 || false; const havePermitConfig = permitByChainAndToken[network.chainId]?.[tokenAdress] || false; if (!havePermitConfig || isTestnet) { @@ -150,9 +153,9 @@ export const supplyWithPermit = async (ops: { amount, deadline, }); - console.log("dataToSign: ", dataToSign); - - const signature = await provider.send("eth_signTypedData_v4", [ + console.log("dataToSign: ", dataToSign, web3Connector.currentWallet()); + + const signature = await web3Connector.currentWallet()?.provider?.send("eth_signTypedData_v4", [ user, dataToSign, ]); @@ -169,7 +172,7 @@ export const supplyWithPermit = async (ops: { console.log("txs: ", txs); const txResponses: ethers.providers.TransactionResponse[] = await submitMultiplesTransaction({ - provider, + signer, txs, }); console.log("result: ", txResponses); @@ -178,22 +181,23 @@ export const supplyWithPermit = async (ops: { }; export const withdraw = async (ops: { - provider: ethers.providers.Web3Provider; + signer: Signer; reserve: Pick; amount: string; onBehalfOf?: string; poolAddress: string; gatewayAddress: string; }) => { - const { provider, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = + const { signer, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = ops; - - const pool = new Pool(provider, { + if(!signer.provider) { + throw new Error('Provider not available'); + } + const pool = new Pool(signer.provider, { POOL: poolAddress, WETH_GATEWAY: gatewayAddress, }); - const signer = provider.getSigner(); const user = await signer?.getAddress(); /* @@ -212,7 +216,7 @@ export const withdraw = async (ops: { }); const txResponses: ethers.providers.TransactionResponse[] = await submitMultiplesTransaction({ - provider, + signer, txs, }); console.log("result: ", txResponses); @@ -220,24 +224,25 @@ export const withdraw = async (ops: { }; export const borrow = async (ops: { - provider: ethers.providers.Web3Provider; + signer: Signer; reserve:Pick; amount: string; onBehalfOf?: string; poolAddress: string; gatewayAddress: string; }) => { - const { provider, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = + const { signer, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = ops; - - const pool = new Pool(provider, { + if(!signer.provider) { + throw new Error('Provider not available'); + } + const pool = new Pool(signer.provider, { POOL: poolAddress, WETH_GATEWAY: gatewayAddress, }); console.log("pool: ", pool); - const signer = provider.getSigner(); const currentAccount = await signer?.getAddress(); const txs = await pool.borrow({ @@ -250,7 +255,7 @@ export const borrow = async (ops: { console.log("txs: ", txs); const txResponses: ethers.providers.TransactionResponse[] = await submitMultiplesTransaction({ - provider, + signer, txs, }); console.log("result: ", txResponses); @@ -260,24 +265,25 @@ export const borrow = async (ops: { }; export const repay = async (ops: { - provider: ethers.providers.Web3Provider; + signer: Signer; reserve: Pick; amount: string; onBehalfOf?: string; poolAddress: string; gatewayAddress: string; }) => { - const { provider, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = + const { signer, reserve, amount, onBehalfOf, poolAddress, gatewayAddress } = ops; - - const pool = new Pool(provider, { + if(!signer.provider) { + throw new Error('Provider not available'); + } + const pool = new Pool(signer.provider, { POOL: poolAddress, WETH_GATEWAY: gatewayAddress, }); console.log("pool: ", pool); - const signer = provider.getSigner(); const currentAccount = await signer?.getAddress(); const txs = await pool.repay({ @@ -290,7 +296,7 @@ export const repay = async (ops: { console.log("txs: ", txs); const txResponses: ethers.providers.TransactionResponse[] = await submitMultiplesTransaction({ - provider, + signer, txs, }); console.log("result: ", txResponses); @@ -305,14 +311,8 @@ export const getMarkets = (chainId: number) => { return MARKETS.AaveV3Ethereum; case chainId === MARKETS.AaveV3Polygon.CHAIN_ID: return MARKETS.AaveV3Polygon; - case chainId === MARKETS.AaveV3Mumbai.CHAIN_ID: - return MARKETS.AaveV3Mumbai; - case chainId === MARKETS.AaveV3Fuji.CHAIN_ID: - return MARKETS.AaveV3Fuji; case chainId === MARKETS.AaveV3Arbitrum.CHAIN_ID: return MARKETS.AaveV3Arbitrum; - case chainId === MARKETS.AaveV3ArbitrumGoerli.CHAIN_ID: - return MARKETS.AaveV3ArbitrumGoerli; case chainId === MARKETS.AaveV3Optimism.CHAIN_ID: return MARKETS.AaveV3Optimism; case chainId === MARKETS.AaveV3Avalanche.CHAIN_ID: @@ -325,13 +325,23 @@ export const getMarkets = (chainId: number) => { return MARKETS.AaveV3Base; case chainId === MARKETS.AaveV3Scroll.CHAIN_ID: return MARKETS.AaveV3Scroll; + /** + * HERE TESTNETS + */ + case chainId === MARKETS.AaveV3ArbitrumGoerli.CHAIN_ID: + return MARKETS.AaveV3ArbitrumGoerli; + case chainId === MARKETS.AaveV3Sepolia.CHAIN_ID: + return MARKETS.AaveV3Sepolia; + case chainId === MARKETS.AaveV3Mumbai.CHAIN_ID: + return MARKETS.AaveV3Mumbai; + case chainId === MARKETS.AaveV3Fuji.CHAIN_ID: + return MARKETS.AaveV3Fuji; default: throw new Error(`ChainId ${chainId} not supported`); } }; export const getPools = async (ops: { - // provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider; market: MARKETTYPE; currentTimestamp: number; }) => { @@ -479,7 +489,7 @@ export const getContractData = async (ops: { }; const getWalletBalance = async (ops: { - provider: ethers.providers.Web3Provider | ethers.providers.JsonRpcProvider; + provider: ethers.providers.JsonRpcProvider; market: MARKETTYPE; user: string | null; currentTimestamp: number; @@ -604,16 +614,20 @@ export const getUserSummaryAndIncentives = async (ops: { export type MARKETTYPE = | typeof MARKETS.AaveV3Ethereum | typeof MARKETS.AaveV3Polygon - | typeof MARKETS.AaveV3Mumbai | typeof MARKETS.AaveV3Avalanche - | typeof MARKETS.AaveV3Fuji | typeof MARKETS.AaveV3Arbitrum | typeof MARKETS.AaveV3ArbitrumGoerli | typeof MARKETS.AaveV3Optimism | typeof MARKETS.AaveV3BNB | typeof MARKETS.AaveV3PolygonZkEvm | typeof MARKETS.AaveV3Base - | typeof MARKETS.AaveV3Scroll; + | typeof MARKETS.AaveV3Scroll + /** + * HERE TESTNETS + */ + | typeof MARKETS.AaveV3Mumbai + | typeof MARKETS.AaveV3Fuji + | typeof MARKETS.AaveV3Sepolia; export const permitByChainAndToken: { [chainId: number]: Record; diff --git a/src/servcies/ankr.service.ts b/src/servcies/ankr.service.ts index 955ef635..0962f14f 100644 --- a/src/servcies/ankr.service.ts +++ b/src/servcies/ankr.service.ts @@ -1,5 +1,6 @@ import { IAsset } from "@/interfaces/asset.interface"; import { IChain, CHAIN_AVAILABLES } from "../constants/chains"; +import { TxInterface } from "@/interfaces/tx.interface"; interface IAnkrTokenReponse { blockchain: string; @@ -16,7 +17,57 @@ interface IAnkrTokenReponse { contractAddress?: string; } +interface AnkrTransactionResponseInterface { + v: string; + r: string; + s: string; + nonce: string; + blockNumber: string; + from: string; + to: string; + gas: string; + gasPrice: string; + input: string; + transactionIndex: string; + blockHash: string; + value: string; + type: string; + cumulativeGasUsed: string; + gasUsed: string; + hash: string; + status: string; + blockchain: string; + timestamp: string; +} +// Generated by https://quicktype.io + +export interface IAnkrNTFResponse { + blockchain: string; + name: string; + tokenId: string; + tokenUrl: string; + imageUrl: string; + collectionName: string; + symbol: string; + contractType: string; + contractAddress: string; +} + const fake_data = [ + { + blockchain: "sepolia", + tokenName: "Link", + tokenSymbol: "LINK", + tokenDecimals: 18, + tokenType: "ERC20", + holderAddress: "0x475ef9fb4f8d43b63ac9b22fa41fd4db8a103550", + contractAddress: "0xf8fb3713d459d7c1018bd0a49d19b4c44290ebe5", + balance: "100", + balanceRawInteger: "100000000000000000000", + balanceUsd: "2000", + tokenPrice: "20", + thumbnail: "", + }, { blockchain: "optimism", tokenName: "Ether", @@ -45,6 +96,82 @@ const fake_data = [ thumbnail: "", }, ]; +const fake_nft_data = [ + { + "blockchain": "sepolia", + "name": "", + "tokenId": "12", + "tokenUrl": "https://treatdao.com/api/nft/12", + "imageUrl": "", + "collectionName": "Treat NFT Minter", + "symbol": "TreatNFTMinter", + "contractType": "ERC1155", + "contractAddress": "0x36f8f51f65fe200311f709b797baf4e193dd0b0d", + "quantity": "1" + }, + { + "blockchain": "sepolia", + "name": "India", + "tokenId": "531", + "tokenUrl": "https://airxnft.herokuapp.com/api/token/531", + "imageUrl": "https://ipfs.io/ipfs/QmXxSCFNTNLLrJfBJyi9uT5PFTbx1HDbd6qZxrrSchi4aG", + "collectionName": "Aircoins Metaverse", + "symbol": "AIRx", + "contractType": "ERC721", + "contractAddress": "0x025983cd3530f78b71b4874eb5272c189b357e61", + "traits": [ + { + "trait_type": "Property TYPE", + "value": "Command Center" + } + ] + }, + { + "blockchain": "sepolia", + "name": "vitalik.cloud", + "tokenId": "73906452355594127029039375271145516945927406532858726769026903911185640775143", + "tokenUrl": "https://md.namefi.io/vitalik.cloud", + "imageUrl": "https://md.namefi.io/svg/vitalik.cloud/image.svg", + "collectionName": "NamefiNFT", + "symbol": "NFNFT", + "contractType": "ERC721", + "contractAddress": "0x0000000000cf80e7cf8fa4480907f692177f8e06", + "traits": [ + { + "trait_type": "Is Locked", + "value": "🔓 Unlocked" + }, + { + "trait_type": "Is Frozen", + "value": "false" + }, + { + "trait_type": "Top Level Domain (TLD)", + "value": "cloud" + }, + { + "trait_type": "TLD Length", + "value": "5" + }, + { + "trait_type": "Second Level Domain (TLD)", + "value": "vitalik" + }, + { + "trait_type": "SLD Length", + "value": "7" + }, + { + "trait_type": "Is IDN", + "value": "false" + }, + { + "trait_type": "Expiration Date", + "value": "2024-10-11" + } + ] + } +]; const formatingTokensBalances = ( assets: IAnkrTokenReponse[], @@ -72,6 +199,21 @@ const formatingTokensBalances = ( }); }; +const formatingNFTsBalances = ( + assets: IAnkrNTFResponse[], + chainsList: IChain[] +): (IAnkrNTFResponse & {chain: IChain})[] => { + const result = assets.map((asset) => { + return { + ...asset, + chain: chainsList.find((c) => c.value === asset.blockchain) + }; + }) + //.filter((asset) => asset.chain !== undefined); + + return result as (IAnkrNTFResponse & {chain: IChain})[]; +} + const getCachedData = async (key: string, force?: boolean) => { const data = localStorage.getItem(key); if (!data) { @@ -113,9 +255,9 @@ export const getTokensBalances = async ( : CHAIN_AVAILABLES.filter((availableChain) => chainIds.find((c) => c === availableChain.id) ); - // return fake_data for DEV mode - if (process.env.NEXT_PUBLIC_APP_IS_PROD === "false") { - console.log("[INFO] DEV mode return fake data"); + // return fake_data for LOCAL mode + if (process.env.NEXT_PUBLIC_APP_IS_LOCAL === 'true') { + console.log("[INFO] LOCAL mode return fake data"); const balances = formatingTokensBalances(fake_data, chainsList); return balances; } @@ -154,3 +296,123 @@ export const getTokensBalances = async ( await setCachedData(KEY, balances); return balances; }; + +/** + * Doc url: https://api-docs.ankr.com/reference/post_ankr-getnftsbyowner + * @param chainIds array of chain ids + * @param address wallet address to get balances + * @param force to get data from API + * @returns object with balances property that contains an array of TokenInterface + */ +export const getNFTsBalances = async ( + chainIds: number[], + address: string, + force?: boolean // force to get data from API +): Promise<(IAnkrNTFResponse & { + chain: IChain; +})[]> => { + const chainsList = + chainIds.length <= 0 + ? CHAIN_AVAILABLES + : CHAIN_AVAILABLES.filter((availableChain) => + chainIds.find((c) => c === availableChain.id) + ); + // return fake_data for LOCAL mode + if (process.env.NEXT_PUBLIC_APP_IS_LOCAL === 'true') { + console.log("[INFO] LOCAL mode return fake data"); + const nfts: any[] = fake_nft_data; + return formatingNFTsBalances(nfts, chainsList); + } + const KEY = `hexa-ankr-nft-service-${address}`; + const cachedData = await getCachedData(KEY, force); + console.log("cachedData:", cachedData); + if (cachedData) { + return cachedData; + } + const APP_ANKR_APIKEY = process.env.NEXT_PUBLIC_APP_ANKR_APIKEY; + const blockchain = chainsList + .filter(({ type }) => type === "evm") + .map(({ value }) => value); + const url = `https://rpc.ankr.com/multichain/${APP_ANKR_APIKEY}/?ankr_getNFTsByOwner=`; + const options: RequestInit = { + method: "POST", + headers: { + accept: "application/json", + "content-type": "application/json", + }, + body: JSON.stringify({ + jsonrpc: "2.0", + method: "ankr_getNFTsByOwner", + params: { + blockchain, + walletAddress: address, + }, + id: 1, + }), + }; + const res = await fetch(url, options); + const assets = (await res.json())?.result?.assets||[]; + const balances = formatingNFTsBalances(assets, chainsList); + console.log("[INFO] {ankrFactory} getNFTsBalances(): ", balances); + await setCachedData(KEY, balances); + return balances; +} + +// export const getTransactionsHistory = async ( +// chainIds: number[], +// address: string +// ) => { +// const KEY = `hexa-ankr-service-txs-${address}`; +// const cachedData = await getCachedData(KEY); +// console.log("cachedData:", cachedData); +// if (cachedData) { +// return cachedData; +// } +// const url = `https://rpc.ankr.com/multichain/${process.env.NEXT_PUBLIC_APP_ANKR_APIKEY}/?ankr_getTransactionsByAddress=`; +// const blockchain = CHAIN_AVAILABLES +// .filter(({testnet}) => !testnet) +// .filter(({ type }) => type === "evm") +// .map(({ value }) => value); +// // fromTimestamp = Beginning of a time period starting 30 days ago. UNIX timestamp. +// const fromTimestamp = Math.floor(Date.now() / 10000) - 30 * 24 * 60 * 60; +// const toTimestamp = Math.floor(Date.now() / 1000); +// const options: RequestInit = { +// method: "POST", +// headers: { +// accept: "application/json", +// "content-type": "application/json", +// }, +// body: JSON.stringify({ +// jsonrpc: "2.0", +// method: "ankr_getTransactionsByAddress", +// params: { +// blockchain, +// address: [address], +// fromTimestamp, +// toTimestamp, +// descOrder: true, +// }, +// id: 1, +// }), +// }; +// const res = await fetch(url, options); +// const transactions: AnkrTransactionResponseInterface[] = +// (await res.json())?.result?.transactions || []; +// // convert transaction.timestamp to Date +// const txs: TxInterface[] = transactions.map((tx) => { +// return { +// ...tx, +// blockNumber: parseInt(tx.blockNumber), +// cumulativeGasUsed: parseInt(tx.cumulativeGasUsed), +// gas: parseInt(tx.gas), +// gasPrice: parseInt(tx.gasPrice), +// gasUsed: parseInt(tx.gasUsed), +// nonce: parseInt(tx.nonce), +// status: parseInt(tx.status), +// timestamp: new Date(parseInt(tx.timestamp) * 1000) +// }; +// }); +// await setCachedData(KEY, txs); +// console.log("[INFO] {ankrFactory} getTransactionsHistory(): ", txs); +// return txs; +// }; diff --git a/src/servcies/coingecko.service.ts b/src/servcies/coingecko.service.ts new file mode 100644 index 00000000..49dcebef --- /dev/null +++ b/src/servcies/coingecko.service.ts @@ -0,0 +1,176 @@ +import { SeriesData } from "@/components/ui/LightChart"; + +export type TokenInfo = { + description: {en: string}; + categories: string[]; + image: { + thumb: string; + small: string; + large: string; + }; + market_data: { + ath: {usd: number}; + ath_change_percentage: {usd: number}; + ath_date: { usd: string }; + atl: {usd: number}; + atl_change_percentage: {usd: number}; + atl_date: { usd: string }; + circulating_supply: number; + current_price: { usd: number }; + fully_diluted_valuation: { usd: number }; + high_24h: { usd: number }; + last_updated: string; + low_24h: { usd: number }; + market_cap: { usd: number }; + market_cap_change_24h: number; + market_cap_change_24h_in_currency: { usd: number }; + market_cap_change_percentage_24h: number; + market_cap_change_percentage_24h_in_currency: { usd: number }; + market_cap_fdv_ratio: number; + market_cap_rank: number; + max_supply: number; + price_change_24h: number; + price_change_24h_in_currency: { usd: number }; + price_change_percentage_1h_in_currency: { usd: number }; + price_change_percentage_1y_in_currency: { usd: number }; + price_change_percentage_7d_in_currency: { usd: number }; + price_change_percentage_14d_in_currency: { usd: number }; + price_change_percentage_24h_in_currency: { usd: number }; + price_change_percentage_30d_in_currency: { usd: number }; + price_change_percentage_60d_in_currency: { usd: number }; + price_change_percentage_200d_in_currency: { usd: number }; + total_supply: number; + total_value_locked: number|null; + total_volume: { usd: number }; + }; + sentiment_votes_down_percentage: number; + sentiment_votes_up_percentage: number; + +}; + +export class CoingeckoAPI { + + static options?:RequestInit = process.env.NEXT_PUBLIC_APP_IS_PROD === 'true' + ? { + headers: new Headers({ + 'x-cg-demo-api-key': process.env.NEXT_PUBLIC_APP_COINGECKO_APIKEY + }) + } + : undefined; + + /** + * Method to get Coingecko token id from symbol + * @param symbol + * @returns + */ + static async getTokenId(symbol: string) { + // convert symbol to coingeeko id + const responseList = localStorage.getItem('hexa-lite-coingeeko/coinList'); + let data; + if (responseList) { + data = JSON.parse(responseList); + } else { + const fetchResponse = await fetch(`https://api.coingecko.com/api/v3/coins/list`, this.options); + data = await fetchResponse.json(); + localStorage.setItem('hexa-lite-coingeeko/coinList', JSON.stringify(data)); + } + const coin: {id?: string} = data.find( + (c: any) => + c.symbol.toLowerCase() === symbol.toLowerCase() + && !c.name.toLowerCase().includes('bridged') + ); + return coin?.id; + } + + /** + * Method to get coin market chart data + * @param id + * @param interval + */ + static async getTokenHistoryPrice( + symbol: string, + intervals: ('1D' | '1W' | '1M' | '1Y')[] = ['1D','1W','1M', '1Y'] + ): Promise{ + // convert symbol to coingeeko id + const coinId = await CoingeckoAPI.getTokenId(symbol); + if (!coinId) return new Map() as SeriesData; + + const seriesData: SeriesData = new Map(); + for (let index = 0; index < intervals.length; index++) { + const interval = intervals[index]; + + const responseToken = localStorage.getItem(`hexa-lite-coingeeko/coin/${coinId}/market_chart?interval=${interval}`); + const jsonData = JSON.parse(responseToken||'{}'); + const isDeadlineReach = (Date.now() - jsonData.timestamp) > (60 * 1000 * 30); + if (responseToken && !isDeadlineReach && jsonData.data) { + seriesData.set(interval, jsonData.data); + } else { + const days = interval === '1D' ? 1 : interval === '1W' ? 7 : interval === '1M' ? 30 : 365; + const dataInterval = interval === '1D' ? '' : interval === '1W' ? '' : interval === '1M' ? '' : '&interval=daily'; + const url = `https://api.coingecko.com/api/v3/coins/${coinId}/market_chart?vs_currency=usd&days=${days}${dataInterval}`; + const result = await fetch(url, this.options) + .then((res) => res.json()) + .catch((error) => ({prices: []})); + const prices = (result?.prices as number[][]||[]); + const data = prices + .map(([time, value]: number[]) => { + const dataItem = { + time: time / 1000|| "", + value: Number(value), + }; + return dataItem; + }) + // remove latest element + .slice(0, -1) + // remove duplicates + .filter((item, index, self) => index === self.findIndex((t) => t.time === item.time)); + seriesData.set(interval, data); + localStorage.setItem(`hexa-lite-coingeeko/coin/${coinId}/market_chart?interval=${interval}`, JSON.stringify({ + data, + timestamp: Date.now() + })); + } + } + return seriesData; + } + /** + * Method to get token info: description, market data, community data + * @param symbol + * @returns + */ + static async getTokenInfo(symbol: string) { + const tokenId = await CoingeckoAPI.getTokenId(symbol); + if (!tokenId) return undefined; + // check localstorage if data is stored from less than 1 day + const response = localStorage.getItem(`hexa-lite-coingeeko/coin/${tokenId}/info`); + const jsonData = JSON.parse(response||'{}'); + const isDeadlineReach = (Date.now() - jsonData.timestamp) > (60 * 1000 * 60 * 24); + let tokenInfo; + if (response && !isDeadlineReach && jsonData.data) { + tokenInfo = jsonData.data; + } else { + // fetch data from coingecko + tokenInfo = await fetch(`https://api.coingecko.com/api/v3/coins/${tokenId}?market_data=true&community_data=true`, this.options) + .then((res) => res.json()); + localStorage.setItem(`hexa-lite-coingeeko/coin/${tokenId}/info`, JSON.stringify({ + data: tokenInfo, + timestamp: Date.now() + })); + } + return tokenInfo as TokenInfo; + } + + /** + * Method to get simple price of a token + * @param id + * @param vs_currencies + * @returns + */ + static async getSimplePrice(id: string, vs_currencies: string) { + const response = await fetch( + `https://api.coingecko.com/api/v3/simple/price?ids=${id}&vs_currencies=${vs_currencies}`, this.options + ); + const json = await response.json(); + return json[id]?.[vs_currencies]; + } +} \ No newline at end of file diff --git a/src/servcies/firebase-web3-connect.ts b/src/servcies/firebase-web3-connect.ts new file mode 100644 index 00000000..e5e3390b --- /dev/null +++ b/src/servcies/firebase-web3-connect.ts @@ -0,0 +1,209 @@ +import { FirebaseWeb3Connect } from '@/lib'; +import { auth } from '@/firebase-config'; +import { CHAIN_AVAILABLES, CHAIN_DEFAULT } from '@/constants/chains'; +import { TxInterface } from '@/interfaces/tx.interface'; +import { getTransactionsHistory } from './zerion.service'; +import { IAsset } from '@/interfaces/asset.interface'; +import { getNFTsBalances, getTokensBalances } from './ankr.service'; +import { getTokensPrice } from './lifi.service'; +import { Signer, utils } from 'ethers'; +import { INFT } from '@/interfaces/nft.interface'; + +/** + * Function tha takes wallet address and fetches all assets for that wallet + * using Ankr API. It also fetches token price from LiFi API if Ankr response contains + * token with balance > 0 && balanceUsd === 0 && priceUsd === 0 + * This ensures that all tokens have price in USD and the total balance is calculated correctly + * for each token that user has in the wallet. + */ +const fetchEVMAssets = async (walletAddress: string, force?: boolean) => { + console.log(`[INFO] fetchUserAssets()`, walletAddress); + if (!walletAddress) return null; + const assets = await getTokensBalances([], walletAddress, force); + // remove elements with 0 balance and add to new arrany using extracting + const assetWithBalanceUsd = [], + assetsWithoutBalanceUsd = []; + for (let i = 0; i < assets.length; i++) { + const asset = assets[i]; + (asset.balanceUsd === 0 && asset.balance > 0) + ? assetsWithoutBalanceUsd.push(asset) + : assetWithBalanceUsd.push(asset); + } + // get token price for tokens without balanceUsd + const tokenWithbalanceUsd = await getTokensPrice(assetsWithoutBalanceUsd); + return [ + ...assetWithBalanceUsd, + ...tokenWithbalanceUsd + ]; +}; + +const origin = window.location.origin; +const path = '/auth/link'; +const params = `/?finishSignUp=true`; +const EMAIL_LINK_URL = [origin, path, params].join(''); + +/** + * Web3Connector class that wraps FirebaseWeb3Connect class + * that provides methods to connect, disconnect, switch accross networks and + * get signer for the connected wallet. + * It also provides methods to load balances and transactions for the connected wallet + * and also provides methods to listen to connect state changes. + */ +class Web3Connector { + + private readonly _connector = new FirebaseWeb3Connect(auth, 'APIKEY', { + chainId: CHAIN_DEFAULT.id, + dialogUI: { + integrator: 'Hexa Lite', + ops: { + authProvider: { + authEmailUrl: EMAIL_LINK_URL + } + } + } + }); + + async connect(){ + const isLightmode = !document.querySelector('body')?.classList.contains('dark'); + const { address } = await this._connector.connectWithUI(isLightmode) || {}; + if (!address) { + throw new Error('Connect wallet fail'); + } + return address; + } + + async connectWithLink() { + await this._connector.connectWithLink(); + } + + async disconnect(){ + const isLightmode = !document.querySelector('body')?.classList.contains('dark'); + await this._connector.signout(true, isLightmode); + return true; + } + wallets(){ + return [this._connector.wallet]; + } + async switchNetwork(chainId: number){ + await this._connector.switchNetwork(chainId); + } + currentWallet(){ + return this._connector.wallet; + } + + async getSigner(): Promise { + try { + const signer = await this._connector.wallet?.getSigner(); + return signer; + } catch (error) { + return undefined; + } + } + + async getNetworkFeesAsUSD(): Promise { + // get ethers network fees using ethers.js + const signer = await this.getSigner(); + if (!signer) { + throw new Error('Signer not available'); + } + const network = await signer.provider?.getNetwork(); + if (!network) { + throw new Error('Network not available'); + } + // get network fees in USD + const networkFees = await signer.provider?.getFeeData(); + if (!networkFees || !networkFees.gasPrice || !networkFees.maxFeePerGas) { + throw new Error('Network fees not available'); + } + // get network fees in ETH + const totalFee = utils.formatUnits( + networkFees.gasPrice.add(networkFees.maxFeePerGas), 'gwei' + ); + // const response = await fetch('https://api.coingecko.com/api/v3/coins/ethereum'); + // const result = await response.json(); + // const ethPriceUSD = result?.market_data?.current_price?.usd as number||0; + // const total = ethPriceUSD * Number(totalFee); + return Number(totalFee).toFixed(0) + ' Gwei'; + } + + onConnectStateChanged(callback: (user: { + address: string; + } | null) => void){ + this._connector.onConnectStateChanged(callback); + } + + async loadBalances(force?: boolean){ + const assets: IAsset[] = []; + for (const wallet of this.wallets()) { + if (!wallet) { + return assets; + } + const chain = CHAIN_AVAILABLES.find((chain) => chain.id === wallet.chainId); + switch (true) { + // evm wallet type + case chain?.type === 'evm': { + const evmAssets = await fetchEVMAssets(wallet.address, force)||[]; + assets.push(...evmAssets); + break; + } + default: + break + } + } + return assets; + }; + + async loadTxs(force?: boolean) { + const txs: TxInterface[] = []; + for (const wallet of this.wallets()) { + if (!wallet) { + return txs; + } + const chain = CHAIN_AVAILABLES.find((chain) => chain.id === wallet.chainId); + switch (true) { + // evm wallet type + case chain?.type === 'evm': { + const result = await getTransactionsHistory(wallet.address); + txs.push(...result); + break; + } + default: + break + } + } + return txs; + } + + async loadNFTs(force?: boolean) { + const nfts: INFT[] = []; + for (const wallet of this.wallets()) { + if (!wallet) { + return nfts; + } + const chain = CHAIN_AVAILABLES.find((chain) => chain.id === wallet.chainId); + switch (true) { + // evm wallet type + case chain?.type === 'evm': { + const evmAssets = await getNFTsBalances([], wallet.address, force)||[]; + nfts.push(...evmAssets); + break; + } + default: + break + } + } + return nfts; + + } + + async backupWallet() { + const isLightmode = !document.querySelector('body')?.classList.contains('dark'); + return this._connector.backupWallet(true, isLightmode); + + } + +} +const web3Connector = new Web3Connector(); + +// export default instance +export default web3Connector; diff --git a/src/servcies/lifi.service.ts b/src/servcies/lifi.service.ts index 651f294d..420d4eb8 100644 --- a/src/servcies/lifi.service.ts +++ b/src/servcies/lifi.service.ts @@ -764,9 +764,8 @@ export const fakeQuote = { */ export const sendTransaction = async ( quote: LiFiQuoteResponse, - provider: ethers.providers.Web3Provider + signer: ethers.providers.JsonRpcSigner ) => { - const signer = provider.getSigner(); const tx = await signer.sendTransaction(quote.transactionRequest); const receipt = await tx.wait(); return receipt; @@ -778,7 +777,7 @@ export const sendTransaction = async ( */ export const checkAndSetAllowance = async ( - provider: ethers.providers.Web3Provider, + signer: ethers.providers.JsonRpcSigner, tokenAddress: string, approvalAddress: string, amount: string @@ -787,7 +786,6 @@ export const checkAndSetAllowance = async ( if (tokenAddress === ethers.constants.AddressZero) { return; } - const signer = provider.getSigner(); const erc20 = new Contract(tokenAddress, ERC20_ABI, signer); const address = await signer.getAddress(); const allowance = await erc20.allowance(address, approvalAddress); @@ -811,7 +809,7 @@ export const swapWithLiFi = async ( fromAmount: string; fromAddress: string; }, - provider: ethers.providers.Web3Provider + signer: ethers.providers.JsonRpcSigner ) => { const quote = await getQuote( ops.fromChain, @@ -822,12 +820,12 @@ export const swapWithLiFi = async ( ops.fromAddress ); await checkAndSetAllowance( - provider, + signer, quote.action.fromToken.address, quote.estimate.approvalAddress, quote.action.fromAmount ); - const receipt = await sendTransaction(quote, provider); + const receipt = await sendTransaction(quote, signer); return receipt; }; @@ -875,11 +873,12 @@ export const getTokensPrice = async (tokens: IAsset[]) => { tokensResponse = responseData.tokens; } } catch (error) { - throw error; + // throw error; + tokensResponse = {}; } const tokenWithPrice: IAsset[] = []; for (const token of tokens) { - const index = tokensResponse[token.chain?.id as number].findIndex( + const index = tokensResponse?.[token.chain?.id as number].findIndex( (t) => t.symbol === token.symbol ); if (index > -1) { @@ -926,16 +925,16 @@ export const LIFI_CONFIG = Object.freeze({ secondary: "rgba(var(--ion-text-color-rgb), 0.6)", }, background: { - paper: "rgb(var(--item-background-shader-rgb))", // green + paper: "rgb(var(--lifi-paper-background-rgb))", // green // default: '#182449', }, primary: { main: "#0090FF", - contrastText: "rgb(var(--ion-text-color.rgb))", + contrastText: "rgb(var(--ion-text-color-rgb))", }, secondary: { main: "#4CCCE6", - contrastText: "rgb(var(--ion-text-color.rgb))", + contrastText: "rgb(var(--ion-text-color-rgb))", }, }, }, diff --git a/src/servcies/magic-web3-connect.ts b/src/servcies/magic-web3-connect.ts new file mode 100644 index 00000000..e69de29b diff --git a/src/servcies/zerion.service.ts b/src/servcies/zerion.service.ts new file mode 100644 index 00000000..098324dc --- /dev/null +++ b/src/servcies/zerion.service.ts @@ -0,0 +1,113 @@ +import { SeriesData, SeriesMarkerData } from "@/components/ui/LightChart"; +import { TxInterface } from "@/interfaces/tx.interface"; +import { SeriesMarker, Time } from "lightweight-charts"; + +export const formatTxsAsSeriemarker = (txs: TxInterface[]): SeriesMarkerData => { + // only `in` and `out` transfers form `symbol` token + const filteredTxs = txs.filter((tx) => + tx.attributes.transfers[0].direction === "in" || tx.attributes.transfers[0].direction === "out" + ); + const serieData:SeriesMarkerData = new Map(); + serieData.set("1D", []); + serieData.set("1W", []); + serieData.set("1M", []); + serieData.set("1Y", []); + const now = new Date(); + const oneDay = 24 * 60 * 60 * 1000; + const oneWeek = 7 * oneDay; + const oneMonth = 30 * oneDay; + const oneYear = 365 * oneDay; + const today = now.getTime(); + const oneDayAgo = today - oneDay; + const oneWeekAgo = today - oneWeek; + const oneMonthAgo = today - oneMonth; + const oneYearAgo = today - oneYear; + + // loop over txs and create SeriesMarkerData + filteredTxs + .forEach((tx) => { + // `tx.attributes.mined_at` as `2024-06-20` + const txDate = new Date(tx.attributes.mined_at).getTime(); + const time = new Date(tx.attributes.mined_at).toISOString().split('T').shift()||``; + // SeriesMarker