diff --git a/package-lock.json b/package-lock.json index 105f26a..0f428a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,16 +8,16 @@ "name": "front-aleph-account-page", "version": "0.10.4", "dependencies": { - "@aleph-front/core": "^1.22.4", - "@aleph-sdk/account": "^1.0.3", - "@aleph-sdk/avalanche": "^1.0.3", - "@aleph-sdk/client": "^1.0.6", - "@aleph-sdk/core": "^1.0.3", - "@aleph-sdk/ethereum": "^1.0.3", - "@aleph-sdk/evm": "^1.0.3", - "@aleph-sdk/message": "^1.0.6", - "@aleph-sdk/solana": "^1.0.3", - "@aleph-sdk/superfluid": "^1.0.6", + "@aleph-front/core": "^1.24.2", + "@aleph-sdk/account": "^1.2.0", + "@aleph-sdk/avalanche": "^1.2.0", + "@aleph-sdk/client": "^1.2.4", + "@aleph-sdk/core": "^1.2.0", + "@aleph-sdk/ethereum": "^1.2.0", + "@aleph-sdk/evm": "^1.2.0", + "@aleph-sdk/message": "^1.3.0", + "@aleph-sdk/solana": "^1.2.1", + "@aleph-sdk/superfluid": "^1.2.0", "@fortawesome/fontawesome-svg-core": "^6.3.0", "@hookform/resolvers": "^3.1.1", "@types/node": "18.14.1", @@ -56,10 +56,43 @@ "typescript": "^5.4.5" } }, + "../aleph-sdk-ts/packages/client": { + "name": "@aleph-sdk/client", + "version": "1.2.4", + "extraneous": true, + "license": "MIT", + "devDependencies": { + "@types/sha.js": "^2.4.4" + }, + "peerDependencies": { + "@aleph-sdk/account": "^1.x.x", + "@aleph-sdk/core": "^1.x.x", + "@aleph-sdk/message": "^1.x.x" + } + }, + "../aleph-sdk-ts/packages/message": { + "name": "@aleph-sdk/message", + "version": "1.3.0", + "extraneous": true, + "license": "MIT", + "dependencies": { + "axios": "^1.5.1", + "form-data": "^4.0.0", + "sha.js": "^2.4.11" + }, + "devDependencies": { + "@types/sha.js": "^2.4.4" + }, + "peerDependencies": { + "@aleph-sdk/account": "^1.x.x", + "@aleph-sdk/core": "^1.x.x", + "@aleph-sdk/evm": "^1.x.x" + } + }, "node_modules/@aleph-front/core": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/@aleph-front/core/-/core-1.22.4.tgz", - "integrity": "sha512-5UXx4rEvwDWygIyNPP6yRevrrlF7ZMigCB24AzFZ4ezyWn999zi/I7TReUgIkTpLGy4/s2Xhli7OrxIaGVIjhw==", + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/@aleph-front/core/-/core-1.26.0.tgz", + "integrity": "sha512-ICx+xs+0leW5RVPCAdHMPK6X+6Hel66H8ruEB1On7IJQy3ZbdOvmMgv+U1wJvrhPJPTeyLj/xXjBU3sDUjcccA==", "dependencies": { "@monaco-editor/react": "^4.4.6", "react-infinite-scroll-hook": "^4.1.1", @@ -78,18 +111,44 @@ "twin.macro": "^3.x" } }, + "node_modules/@aleph-front/core/node_modules/transition-hook": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/transition-hook/-/transition-hook-1.5.2.tgz", + "integrity": "sha512-zVW5wP+hzOCk56jU5V5GAIsuaf+gZv43pzxyimXQ74JnD1yoprxTfzoPjr0yjC/Mrc9JyCh3Wb6UhXD+8dlO4w==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + } + }, "node_modules/@aleph-sdk/account": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@aleph-sdk/account/-/account-1.0.3.tgz", - "integrity": "sha512-LVeY3bJ5pg1JxQpnIB7f1Dz4TVN1SuJeI4dFKJy/71r6foF1zUxzWt+dbedc1zhOspjlgf5oU6gsXZrkzUGLhQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/account/-/account-1.2.0.tgz", + "integrity": "sha512-JjVQFYm+/tfddJXjYbup6FZf8Lsn7VtNNandOV9L2+0x7RWtRydrgDb2UuFE4JaJS7UYQTzLmgAFL6LqVoQNsA==", "peerDependencies": { "@aleph-sdk/core": "^1.x.x" } }, "node_modules/@aleph-sdk/avalanche": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@aleph-sdk/avalanche/-/avalanche-1.0.3.tgz", - "integrity": "sha512-GscbaEm34Ps2nDqqvfYir6O57PDpbkNvan2v4RXuy6Eb3ZzgkoOQumYRw+biDGI97cvQmin26xEFMfkPX6TBlw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/avalanche/-/avalanche-1.2.0.tgz", + "integrity": "sha512-ZKt/lsoMHoYroK9xb8p2QnnPEu7LyJ+eSvmXz2FrE3N4+7zgIsj2OvViM90Y/2rQPB5gM90zx1sM/Oqtpspt+A==", + "dependencies": { + "eciesjs": "^0.4.6", + "sha.js": "^2.4.11" + }, + "peerDependencies": { + "@aleph-sdk/account": "^1.x.x", + "@aleph-sdk/core": "^1.x.x", + "@aleph-sdk/evm": "^1.x.x", + "avalanche": "^3.15.3", + "ethers": "^5.x.x" + } + }, + "node_modules/@aleph-sdk/base": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/base/-/base-1.2.0.tgz", + "integrity": "sha512-qm2LPi1KilAlVSCvg96itYBt3FyMgLQ25C6ZMQNceyTZBr8p1v3MX24YdjM5fjIdLaRnT7TPSwyNskNgHJeh8g==", + "peer": true, "dependencies": { "eciesjs": "^0.4.6", "sha.js": "^2.4.11" @@ -97,15 +156,16 @@ "peerDependencies": { "@aleph-sdk/account": "^1.x.x", "@aleph-sdk/core": "^1.x.x", + "@aleph-sdk/ethereum": "^1.x.x", "@aleph-sdk/evm": "^1.x.x", "avalanche": "^3.15.3", "ethers": "^5.x.x" } }, "node_modules/@aleph-sdk/client": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@aleph-sdk/client/-/client-1.0.6.tgz", - "integrity": "sha512-wYqzDy0uYrZrJL2CyScZOR8UfjGtfBGkZkuc4cwLSkwNXtvp2zt+OL8G4jZGMHUNn4M7dEKHKQn/C51nhGfvMw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@aleph-sdk/client/-/client-1.2.4.tgz", + "integrity": "sha512-364ec9psownNxoCr9KANalsjKZjsUs2T5+AoSf8G8ec9bP/HmSZ0LUnVwdq/SUM2glo3J7WWRGp50LYupCs5VA==", "peerDependencies": { "@aleph-sdk/account": "^1.x.x", "@aleph-sdk/core": "^1.x.x", @@ -113,14 +173,14 @@ } }, "node_modules/@aleph-sdk/core": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@aleph-sdk/core/-/core-1.0.3.tgz", - "integrity": "sha512-+enhpR4U7jcEvKDRPuaQo2+Qxw2L0ZEDGLtDsKiwpBqYaNHkreCtTpD0gZy+eNulpFYLifv5q8FE6m+Hvvc9OA==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/core/-/core-1.2.0.tgz", + "integrity": "sha512-DF4IE15c/yzq1q1l7IA+mfY1VkeIWLQfxAjUPxfJnjtjobIMhGAgjhIRFJu6vbvkSetmShgmGeN/r1D8wHKhrQ==" }, "node_modules/@aleph-sdk/ethereum": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@aleph-sdk/ethereum/-/ethereum-1.0.3.tgz", - "integrity": "sha512-hxpLUpogRawyOXVTBXq0tHh/jQLLB/9FC6sMuuxGSiN5sYHIwimM8tTDkroAFTcrNVx7m6veagcIVSvm/YfERA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/ethereum/-/ethereum-1.2.0.tgz", + "integrity": "sha512-P/UmEyegEMOgYAqlj59L0ce3wXzMl9DmrFKcr8WT/wxbg4mwrH77lk60mUsgxY0Vx00rZNOBWgZ862uaQXo55Q==", "dependencies": { "bip39": "^3.1.0", "eciesjs": "^0.4.6" @@ -133,9 +193,9 @@ } }, "node_modules/@aleph-sdk/evm": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@aleph-sdk/evm/-/evm-1.0.3.tgz", - "integrity": "sha512-JaCsuRszxrZy+PGTE9svXst1+RkCbiAIYHtA5HNwD+Ow35NixjqxaxcqlK4UnRSYvIs/2y16YuN8+69jnSg+qw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/evm/-/evm-1.2.0.tgz", + "integrity": "sha512-DA1HCcwtsr2S7GnNI2+zAAgTHtts3V5GOCz8eoJW9EPsGBN0P2K1AZ2XrMrkjJYcg568aeKY9717ayN6cAiu3g==", "dependencies": { "@metamask/eth-sig-util": "^7.0.1", "ethereumjs-util": "^7.1.5" @@ -147,9 +207,9 @@ } }, "node_modules/@aleph-sdk/message": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@aleph-sdk/message/-/message-1.0.6.tgz", - "integrity": "sha512-Hzv+uBN0aaYIaavZqwT8WT04+Y0WJO/uApqNmyqaSq7ZY39eiLZt+s96HeTnOSevFCUKInEETVQtdlha/TsTOA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/message/-/message-1.3.0.tgz", + "integrity": "sha512-CYvMX3cd5Ld4PrnknT8Xy7apMM7E2ctyXTh/a96NzCvWUNq3eVxtsGqFsCBt54H1fxm9djDfJmr4K2JPt9PVKg==", "dependencies": { "axios": "^1.5.1", "form-data": "^4.0.0", @@ -157,13 +217,14 @@ }, "peerDependencies": { "@aleph-sdk/account": "^1.x.x", - "@aleph-sdk/core": "^1.x.x" + "@aleph-sdk/core": "^1.x.x", + "@aleph-sdk/evm": "^1.x.x" } }, "node_modules/@aleph-sdk/solana": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@aleph-sdk/solana/-/solana-1.0.3.tgz", - "integrity": "sha512-dU05Hzt8g5f7foWQaur35KTwFelgA7pYsACADbn7X+EH8g0dbL6wPse+we314zhnPMxMtkOarDB5sbJenB9yPg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@aleph-sdk/solana/-/solana-1.2.1.tgz", + "integrity": "sha512-lvCu6nAOCj35Q4eLIjZl66v3gDEpbb/VTvHLul3SlcMIRnnyIUyesD/mP8sL8zW21sB8152g1iHkPitgDx6abg==", "dependencies": { "bs58": "^5.0.0", "tweetnacl": "^1.0.3" @@ -175,26 +236,14 @@ "@solana/web3.js": "^1.90.0" } }, - "node_modules/@aleph-sdk/solana/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/@aleph-sdk/solana/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/@aleph-sdk/superfluid": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@aleph-sdk/superfluid/-/superfluid-1.0.6.tgz", - "integrity": "sha512-eScDFCxUyswrOnXulR42CctIVyGGgov/cOCFxsqjcsGCXyHRRwOp/kyhH2rEuySJUene9xXvtoaBHphObd1rCg==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@aleph-sdk/superfluid/-/superfluid-1.2.0.tgz", + "integrity": "sha512-amXZrY7ZdeUHE2us3KiFLSDcNoimg9I1JMC6GDYpM2zRKGNQLJwYQp+cXUGwSTh4rFykRXg/Wdfvo/MAw3usQg==", "peerDependencies": { "@aleph-sdk/account": "^1.x.x", "@aleph-sdk/avalanche": "^1.x.x", + "@aleph-sdk/base": "^1.x.x", "@aleph-sdk/core": "^1.x.x", "@aleph-sdk/evm": "^1.x.x", "@superfluid-finance/sdk-core": "^0.6.12", @@ -613,9 +662,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", - "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -710,6 +759,19 @@ "@openzeppelin/test-helpers": "^0.5.10" } }, + "node_modules/@ecies/ciphers": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.2.tgz", + "integrity": "sha512-ylfGR7PyTd+Rm2PqQowG08BCKA22QuX8NzrL+LxAAvazN10DMwdJ2fWwAzRj05FI/M8vNFGm3cv9Wq/GFWCBLg==", + "engines": { + "bun": ">=1", + "deno": ">=2", + "node": ">=16" + }, + "peerDependencies": { + "@noble/ciphers": "^1.0.0" + } + }, "node_modules/@emotion/is-prop-valid": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.0.tgz", @@ -748,12 +810,30 @@ "ripemd160": "^2.0.2" } }, + "node_modules/@ensdomains/address-encoder/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, "node_modules/@ensdomains/address-encoder/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, + "node_modules/@ensdomains/address-encoder/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "peer": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@ensdomains/ens": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", @@ -1603,42 +1683,42 @@ } }, "node_modules/@fortawesome/free-brands-svg-icons": { - "version": "6.5.1", - "resolved": "https://npm.fontawesome.com/@fortawesome/free-brands-svg-icons/-/6.5.1/free-brands-svg-icons-6.5.1.tgz", - "integrity": "sha512-093l7DAkx0aEtBq66Sf19MgoZewv1zeY9/4C7vSKPO4qMwEsW/2VYTUTpBtLwfb9T2R73tXaRDPmE4UqLCYHfg==", + "version": "6.7.2", + "resolved": "https://npm.fontawesome.com/@fortawesome/free-brands-svg-icons/-/6.7.2/free-brands-svg-icons-6.7.2.tgz", + "integrity": "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==", "peer": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.1" + "@fortawesome/fontawesome-common-types": "6.7.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/free-brands-svg-icons/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.5.1", - "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.5.1/fontawesome-common-types-6.5.1.tgz", - "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==", + "version": "6.7.2", + "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.7.2/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", "peer": true, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/pro-regular-svg-icons": { - "version": "6.5.1", - "resolved": "https://npm.fontawesome.com/@fortawesome/pro-regular-svg-icons/-/6.5.1/pro-regular-svg-icons-6.5.1.tgz", - "integrity": "sha512-Rd7Q7Vff68l/YtFKB4EJW/YJ5eXYk7TqejyDTapOI1sn3/AFMEc8CVCOsPfi4+6qGrJy16hlNvgpigIy5gkW7A==", + "version": "6.7.2", + "resolved": "https://npm.fontawesome.com/@fortawesome/pro-regular-svg-icons/-/6.7.2/pro-regular-svg-icons-6.7.2.tgz", + "integrity": "sha512-cJolK4K/s56mHAqOyno24SmjviHqSqG9ZfckBKCpWjJlgDexi61EfET5wWbmmEot6/BqasFjw9S6tudFQUL/PQ==", "peer": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.1" + "@fortawesome/fontawesome-common-types": "6.7.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/pro-regular-svg-icons/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.5.1", - "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.5.1/fontawesome-common-types-6.5.1.tgz", - "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==", + "version": "6.7.2", + "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.7.2/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", "peer": true, "engines": { "node": ">=6" @@ -1658,21 +1738,21 @@ } }, "node_modules/@fortawesome/sharp-solid-svg-icons": { - "version": "6.5.1", - "resolved": "https://npm.fontawesome.com/@fortawesome/sharp-solid-svg-icons/-/6.5.1/sharp-solid-svg-icons-6.5.1.tgz", - "integrity": "sha512-IYRaD4FKokprj63Qu+blYXgLioPFQx3ecimYk8ENd4cpySOYgP8tPRy5TSSq0udkXKAjfkeYUAXhQ88OD0qyiw==", + "version": "6.7.2", + "resolved": "https://npm.fontawesome.com/@fortawesome/sharp-solid-svg-icons/-/6.7.2/sharp-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-RQGnMRGpVUAT6HtELU57ZxIBsbYFC60+qfwlyOBjnK/wwQLy0KiYo+GdBYHmnpefMXjotTk5Lp9zPXb2Lnhd4Q==", "peer": true, "dependencies": { - "@fortawesome/fontawesome-common-types": "6.5.1" + "@fortawesome/fontawesome-common-types": "6.7.2" }, "engines": { "node": ">=6" } }, "node_modules/@fortawesome/sharp-solid-svg-icons/node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.5.1", - "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.5.1/fontawesome-common-types-6.5.1.tgz", - "integrity": "sha512-GkWzv+L6d2bI5f/Vk6ikJ9xtl7dfXtoRu3YGE6nq0p/FFqA1ebMOAWg3XgRyb0I6LYyYkiAo+3/KrwuBp8xG7A==", + "version": "6.7.2", + "resolved": "https://npm.fontawesome.com/@fortawesome/fontawesome-common-types/-/6.7.2/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", "peer": true, "engines": { "node": ">=6" @@ -1793,12 +1873,31 @@ } }, "node_modules/@metamask/abi-utils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.2.tgz", - "integrity": "sha512-B/A1dY/w4F/t6cDHUscklO6ovb/ztFsrsTXFd8QlqSByk/vyy+QbPE3VVpmmyI/7RX+PA1AJcvBdzCIz+r9dVQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@metamask/abi-utils/-/abi-utils-2.0.4.tgz", + "integrity": "sha512-StnIgUB75x7a7AgUhiaUZDpCsqGp7VkNnZh2XivXkJ6mPkE83U8ARGQj5MbRis7VJY8BC5V1AbB1fjdh0hupPQ==", "dependencies": { - "@metamask/utils": "^8.0.0", - "superstruct": "^1.0.3" + "@metamask/superstruct": "^3.1.0", + "@metamask/utils": "^9.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@metamask/abi-utils/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.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", + "uuid": "^9.0.1" }, "engines": { "node": ">=16.0.0" @@ -1865,13 +1964,13 @@ } }, "node_modules/@metamask/eth-sig-util": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-7.0.2.tgz", - "integrity": "sha512-DhTDMNEtED0ihIc4Tysm6qUJTvArCdgSTeeJWdo526W/cAk5mrSAvEYYgv8idAiBumDtcPWGimMTaB7MvY64bg==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-7.0.3.tgz", + "integrity": "sha512-PAtGnOkYvh90k2lEZldq/FK7GTLF6WxE+2bV85PoA3pqlJnmJCAY62tuvxHSwnVngSKlc4mcNvjnUg2eYO6JGg==", "dependencies": { "@ethereumjs/util": "^8.1.0", - "@metamask/abi-utils": "^2.0.2", - "@metamask/utils": "^8.1.0", + "@metamask/abi-utils": "^2.0.4", + "@metamask/utils": "^9.0.0", "@scure/base": "~1.1.3", "ethereum-cryptography": "^2.1.2", "tweetnacl": "^1.0.3" @@ -1880,6 +1979,25 @@ "node": "^16.20 || ^18.16 || >=20" } }, + "node_modules/@metamask/eth-sig-util/node_modules/@metamask/utils": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-9.3.0.tgz", + "integrity": "sha512-w8CVbdkDrVXFJbfBSlDfafDR6BAkpDmv1bC1UJVCoVny5tW2RKAdn9i68Xf7asYT4TnUhl/hN4zfUiKQq9II4g==", + "dependencies": { + "@ethereumjs/tx": "^4.2.0", + "@metamask/superstruct": "^3.1.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", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@metamask/json-rpc-engine": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@metamask/json-rpc-engine/-/json-rpc-engine-8.0.2.tgz", @@ -1977,6 +2095,14 @@ "node": ">=12.0.0" } }, + "node_modules/@metamask/superstruct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@metamask/superstruct/-/superstruct-3.1.0.tgz", + "integrity": "sha512-N08M56HdOgBfRKkrgCMZvQppkZGcArEop3kixNEtVbJKm6P9Cfg0YkI6X0s1g78sNrj2fWUwvJADdZuzJgFttA==", + "engines": { + "node": ">=16.0.0" + } + }, "node_modules/@metamask/utils": { "version": "8.4.0", "resolved": "https://registry.npmjs.org/@metamask/utils/-/utils-8.4.0.tgz", @@ -2245,6 +2371,17 @@ "node": ">= 10" } }, + "node_modules/@noble/ciphers": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.1.3.tgz", + "integrity": "sha512-Ygv6WnWJHLLiW4fnNDC1z+i13bud+enXOFRBlpxI+NJliPWx5wdR+oWlTjLuBPTqjUjtHXtjkU6w3kuuH6upZA==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/@noble/curves": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", @@ -2371,6 +2508,7 @@ "version": "0.5.16", "resolved": "https://registry.npmjs.org/@openzeppelin/test-helpers/-/test-helpers-0.5.16.tgz", "integrity": "sha512-T1EvspSfH1qQO/sgGlskLfYVBbqzJR23SZzYl/6B2JnT4EhThcI85UpvDk0BkLWKaDScQTabGHt4GzHW+3SfZg==", + "deprecated": "Package no longer maintained. Consider using @nomicfoundation/hardhat-chai-matchers and @nomicfoundation/hardhat-network-helpers instead.", "peer": true, "dependencies": { "@openzeppelin/contract-loader": "^0.6.2", @@ -2386,9 +2524,9 @@ } }, "node_modules/@openzeppelin/test-helpers/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/@openzeppelin/test-helpers/node_modules/chai-bn": { @@ -2777,14 +2915,14 @@ } }, "node_modules/@solana/web3.js": { - "version": "1.91.7", - "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.91.7.tgz", - "integrity": "sha512-HqljZKDwk6Z4TajKRGhGLlRsbGK4S8EY27DA7v1z6yakewiUY3J7ZKDZRxcqz2MYV/ZXRrJ6wnnpiHFkPdv0WA==", + "version": "1.98.0", + "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.98.0.tgz", + "integrity": "sha512-nz3Q5OeyGFpFCR+erX2f6JPt3sKhzhYcSycBCSPkWjzSVDh/Rr1FqTVMRe58FKO16/ivTUcuJjeS5MyBvpkbzA==", "peer": true, "dependencies": { - "@babel/runtime": "^7.23.4", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.3.3", + "@babel/runtime": "^7.25.0", + "@noble/curves": "^1.4.2", + "@noble/hashes": "^1.4.0", "@solana/buffer-layout": "^4.0.1", "agentkeepalive": "^4.5.0", "bigint-buffer": "^1.1.5", @@ -2793,41 +2931,77 @@ "bs58": "^4.0.1", "buffer": "6.0.3", "fast-stable-stringify": "^1.0.0", - "jayson": "^4.1.0", + "jayson": "^4.1.1", "node-fetch": "^2.7.0", - "rpc-websockets": "^7.5.1", - "superstruct": "^0.14.2" + "rpc-websockets": "^9.0.2", + "superstruct": "^2.0.2" } }, "node_modules/@solana/web3.js/node_modules/@noble/curves": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.0.tgz", - "integrity": "sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", "peer": true, "dependencies": { - "@noble/hashes": "1.4.0" + "@noble/hashes": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@solana/web3.js/node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@solana/web3.js/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", "peer": true, "engines": { - "node": ">= 16" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" } }, + "node_modules/@solana/web3.js/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "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==", + "peer": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/@solana/web3.js/node_modules/superstruct": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-0.14.2.tgz", - "integrity": "sha512-nPewA6m9mR3d6k7WkZ8N8zpTWfenFH3q9pA2PkuiZxINr9DKB2+40wEQf0ixn8VaGuJ78AB6iWOtStI+/4FKZQ==", - "peer": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", + "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", + "peer": true, + "engines": { + "node": ">=14.0.0" + } }, "node_modules/@stablelib/aead": { "version": "1.0.1", @@ -3210,9 +3384,9 @@ } }, "node_modules/@truffle/contract/node_modules/eth-lib/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/@truffle/contract/node_modules/ethers": { @@ -3233,9 +3407,9 @@ } }, "node_modules/@truffle/contract/node_modules/ethers/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/@truffle/contract/node_modules/eventemitter3": { @@ -3754,9 +3928,9 @@ } }, "node_modules/@truffle/interface-adapter/node_modules/eth-lib/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/@truffle/interface-adapter/node_modules/ethers": { @@ -3777,9 +3951,9 @@ } }, "node_modules/@truffle/interface-adapter/node_modules/ethers/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/@truffle/interface-adapter/node_modules/eventemitter3": { @@ -4246,9 +4420,9 @@ } }, "node_modules/@types/bn.js": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.5.tgz", - "integrity": "sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", "dependencies": { "@types/node": "*" } @@ -5830,9 +6004,9 @@ "peer": true }, "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", "peer": true }, "node_modules/accepts": { @@ -6167,9 +6341,9 @@ } }, "node_modules/asn1.js/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/assert": { @@ -6308,15 +6482,6 @@ "randombytes": "^2.0.1" } }, - "node_modules/avalanche/node_modules/isomorphic-ws": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", - "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", - "peer": true, - "peerDependencies": { - "ws": "*" - } - }, "node_modules/aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -6327,9 +6492,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.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", "peer": true }, "node_modules/axe-core": { @@ -6341,11 +6506,11 @@ } }, "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.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", "dependencies": { - "follow-redirects": "^1.15.0", + "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } @@ -6424,12 +6589,9 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", - "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } + "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/base64-js": { "version": "1.5.1", @@ -6480,9 +6642,9 @@ } }, "node_modules/big.js": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.1.tgz", - "integrity": "sha512-bCtHMwL9LeDIozFn+oNhhFoq+yQ3BNdnsLSASUxLciOb1vgvpHsIO1dsENiGMgbb4SkP5TrzWzRiLddn8ahVOQ==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-6.2.2.tgz", + "integrity": "sha512-y/ie+Faknx7sZA5MfGA2xKlu0GDv8RWrXGsmlteyJQ2lvoKv9GBK/fpRMc2qlSoBAgNxrixICFCBefIq8WCQpQ==", "peer": true, "engines": { "node": "*" @@ -6556,9 +6718,9 @@ "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "peer": true, "dependencies": { "bytes": "3.1.2", @@ -6569,7 +6731,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -6588,6 +6750,18 @@ "ms": "2.0.0" } }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -6595,12 +6769,12 @@ "peer": true }, "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "peer": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -6626,6 +6800,24 @@ "text-encoding-utf-8": "^1.0.2" } }, + "node_modules/borsh/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "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==", + "peer": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -6678,9 +6870,9 @@ } }, "node_modules/browserify": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.0.tgz", - "integrity": "sha512-SaHqzhku9v/j6XsQMRxPyBrSP3gnwmE27gLJYZgMT2GeK3J0+0toN+MnuNYDfHwVGQfLiMZ7KSNSIXHemy905w==", + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/browserify/-/browserify-17.0.1.tgz", + "integrity": "sha512-pxhT00W3ylMhCHwG5yfqtZjNnFuX5h2IJdaBfSo4ChaaBsIp9VLrEMQ1bHV+Xr1uLPXuNDDM1GlJkjli0qkRsw==", "peer": true, "dependencies": { "assert": "^1.4.0", @@ -6699,7 +6891,7 @@ "duplexer2": "~0.1.2", "events": "^3.0.0", "glob": "^7.1.0", - "has": "^1.0.0", + "hasown": "^2.0.0", "htmlescape": "^1.1.0", "https-browserify": "^1.0.0", "inherits": "~2.0.1", @@ -6776,13 +6968,17 @@ } }, "node_modules/browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.1.tgz", + "integrity": "sha512-YBjSAiTqM04ZVei6sXighu679a3SqWORA3qZTEqZImnlkDIFtKc6pNutpjyZ8RJTjQtuYfeetkxM11GwoYXMIQ==", "peer": true, "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" + "bn.js": "^5.2.1", + "randombytes": "^2.1.0", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/browserify-sign": { @@ -6807,9 +7003,9 @@ } }, "node_modules/browserify-sign/node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "peer": true, "dependencies": { "bn.js": "^4.11.9", @@ -6822,24 +7018,11 @@ } }, "node_modules/browserify-sign/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, - "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==", - "peer": true, - "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", @@ -6998,11 +7181,11 @@ } }, "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" + "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/bs58check": { @@ -7015,6 +7198,22 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/bs58check/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58check/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/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -7255,9 +7454,9 @@ } }, "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "peer": true, "dependencies": { "assertion-error": "^1.1.0", @@ -7266,7 +7465,7 @@ "get-func-name": "^2.0.2", "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -7326,21 +7525,25 @@ } }, "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", "peer": true, "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", + "parse5-parser-stream": "^7.1.2", + "undici": "^6.19.5", + "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=18.17" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" @@ -7455,17 +7658,6 @@ "ieee754": "^1.1.13" } }, - "node_modules/cids/node_modules/multibase": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", - "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", - "deprecated": "This module has been superseded by the multiformats module", - "peer": true, - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, "node_modules/cids/node_modules/multicodec": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", @@ -7477,41 +7669,16 @@ "varint": "^5.0.0" } }, - "node_modules/cids/node_modules/multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "peer": true, - "dependencies": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - } - }, - "node_modules/cids/node_modules/multihashes/node_modules/multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "deprecated": "This module has been superseded by the multiformats module", - "peer": true, - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/cids/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "peer": true - }, "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", + "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" + "inherits": "^2.0.4", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.10" } }, "node_modules/citty": { @@ -7834,58 +8001,6 @@ "multihashes": "^0.4.15" } }, - "node_modules/content-hash/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" - } - ], - "peer": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/content-hash/node_modules/multibase": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", - "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", - "deprecated": "This module has been superseded by the multiformats module", - "peer": true, - "dependencies": { - "base-x": "^3.0.8", - "buffer": "^5.5.0" - } - }, - "node_modules/content-hash/node_modules/multihashes": { - "version": "0.4.21", - "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", - "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", - "peer": true, - "dependencies": { - "buffer": "^5.5.0", - "multibase": "^0.7.0", - "varint": "^5.0.0" - } - }, - "node_modules/content-hash/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "peer": true - }, "node_modules/content-type": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", @@ -7902,9 +8017,9 @@ "peer": true }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "peer": true, "engines": { "node": ">= 0.6" @@ -7976,9 +8091,9 @@ } }, "node_modules/create-ecdh/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/create-hash": { @@ -8055,6 +8170,24 @@ "sha3": "^2.1.1" } }, + "node_modules/crypto-addr-codec/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/crypto-addr-codec/node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "peer": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -8367,9 +8500,9 @@ } }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "peer": true, "dependencies": { "type-detect": "^4.0.0" @@ -8592,9 +8725,9 @@ } }, "node_modules/diffie-hellman/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/dijkstrajs": { @@ -8776,22 +8909,53 @@ } }, "node_modules/eciesjs": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.6.tgz", - "integrity": "sha512-t0qLzGVKeATAA6X19hIeToxBVG8yvn/be/4XyJvTCBD53m2CK22cgzk+WW+pNYjEw5FGWZLNFoJte8lyZS/A/w==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.12.tgz", + "integrity": "sha512-DGejvMCihsRAmKRFQiL6KZDE34vWVd0gvXlykFq1aEzJy/rD65AVyAIUZKZOvgvaP9ATQRcHGEZV5DfgrgjA4w==", "dependencies": { - "@noble/ciphers": "^0.4.0", - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2" + "@ecies/ciphers": "^0.2.1", + "@noble/ciphers": "^1.0.0", + "@noble/curves": "^1.6.0", + "@noble/hashes": "^1.5.0" }, "engines": { - "node": ">=16.0.0" + "bun": ">=1", + "deno": ">=2", + "node": ">=16" } }, - "node_modules/eciesjs/node_modules/@noble/ciphers": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.4.1.tgz", - "integrity": "sha512-QCOA9cgf3Rc33owG0AYBB9wszz+Ul2kramWN8tXG44Gyciud/tbkEqvxRF/IpqQaBpRBNi9f4jdNxqB2CQCIXg==", + "node_modules/eciesjs/node_modules/@noble/curves": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", + "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", + "dependencies": { + "@noble/hashes": "1.6.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/eciesjs/node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", + "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/eciesjs/node_modules/@noble/hashes": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", + "engines": { + "node": "^14.21.3 || >=16" + }, "funding": { "url": "https://paulmillr.com/funding/" } @@ -8839,14 +9003,27 @@ "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" }, "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "peer": true, "engines": { "node": ">= 0.8" } }, + "node_modules/encoding-sniffer": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", + "peer": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "whatwg-encoding": "^3.1.1" + }, + "funding": { + "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" + } + }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", @@ -9706,9 +9883,9 @@ } }, "node_modules/eth-lib/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/eth-lib/node_modules/safe-buffer": { @@ -9746,21 +9923,21 @@ } }, "node_modules/ethereum-bloom-filters": { - "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==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", "peer": true, "dependencies": { "@noble/hashes": "^1.4.0" } }, "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", + "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", "peer": true, "engines": { - "node": ">= 16" + "node": "^14.21.3 || >=16" }, "funding": { "url": "https://paulmillr.com/funding/" @@ -9805,9 +9982,9 @@ } }, "node_modules/ethereumjs-tx/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/ethereumjs-tx/node_modules/ethereum-cryptography": { @@ -10026,37 +10203,37 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "peer": true, "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", - "cookie": "0.6.0", + "cookie": "0.7.1", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", - "finalhandler": "1.2.0", + "finalhandler": "1.3.1", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", - "qs": "6.11.0", + "qs": "6.13.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.2", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -10065,6 +10242,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -10083,12 +10264,12 @@ "peer": true }, "node_modules/express/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "peer": true, "dependencies": { - "side-channel": "^1.0.4" + "side-channel": "^1.0.6" }, "engines": { "node": ">=0.6" @@ -10278,13 +10459,13 @@ } }, "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "peer": true, "dependencies": { "debug": "2.6.9", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "on-finished": "2.4.1", "parseurl": "~1.3.3", @@ -10359,9 +10540,9 @@ "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" }, "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", "funding": [ { "type": "individual", @@ -10395,9 +10576,9 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -10748,9 +10929,9 @@ "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" }, "node_modules/graphql": { - "version": "16.8.1", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.8.1.tgz", - "integrity": "sha512-59LZHPdGZVh695Ud9lRzPBVTtlX9ZCV150Er2W43ro37wVof0ctenSaskPPjN7lVTIN8mSZt8PHUNKZuNQUuxw==", + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", "peer": true, "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" @@ -10884,16 +11065,15 @@ } }, "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.5.tgz", + "integrity": "sha512-vXm0l45VbcHEVlTCzs8M+s0VeYsB2lnlAaThoLKGXr3bE/VWDOelNUnycUPEhKEaXARL2TEFjBOyUiM6+55KBg==", "dependencies": { "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" + "safe-buffer": "^5.2.1" }, "engines": { - "node": ">=4" + "node": ">= 0.10" } }, "node_modules/hash.js": { @@ -10996,9 +11176,9 @@ } }, "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", { @@ -11010,8 +11190,8 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, "node_modules/http-cache-semantics": { @@ -11095,12 +11275,12 @@ } }, "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "peer": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { "node": ">=0.10.0" @@ -11270,6 +11450,15 @@ "node": ">=0.10.0" } }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "peer": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/iron-webcrypto": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.2.1.tgz", @@ -11744,9 +11933,9 @@ } }, "node_modules/isomorphic-ws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", - "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "peer": true, "peerDependencies": { "ws": "*" @@ -11759,9 +11948,9 @@ "peer": true }, "node_modules/jayson": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.0.tgz", - "integrity": "sha512-R6JlbyLN53Mjku329XoRT2zJAE6ZgOQ8f91ucYdMCD4nkGCF9kZSrcGXpHIU4jeKj58zUZke2p+cdQchU7Ly7A==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.1.3.tgz", + "integrity": "sha512-LtXh5aYZodBZ9Fc3j6f2w+MTNcnxteMOrb+QgIouguGOulWi0lieEkOUg+HkjjFs0DGoWDds6bi4E9hpNFLulQ==", "peer": true, "dependencies": { "@types/connect": "^3.4.33", @@ -11775,7 +11964,7 @@ "json-stringify-safe": "^5.0.1", "JSONStream": "^1.3.5", "uuid": "^8.3.2", - "ws": "^7.4.5" + "ws": "^7.5.10" }, "bin": { "jayson": "bin/jayson.js" @@ -11790,6 +11979,15 @@ "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", "peer": true }, + "node_modules/jayson/node_modules/isomorphic-ws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", + "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", + "peer": true, + "peerDependencies": { + "ws": "*" + } + }, "node_modules/jayson/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -11800,9 +11998,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==", "peer": true, "engines": { "node": ">=8.3.0" @@ -12444,10 +12642,13 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", - "peer": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, "node_modules/merge-stream": { "version": "2.0.0", @@ -12502,9 +12703,9 @@ } }, "node_modules/miller-rabin/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/mime": { @@ -12737,9 +12938,9 @@ } }, "node_modules/monaco-editor": { - "version": "0.45.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.45.0.tgz", - "integrity": "sha512-mjv1G1ZzfEE3k9HZN0dQ2olMdwIfaeAAjFiwNprLfYNRSz7ctv9XuCT7gPtBGrMUeV1/iZzYKj17Khu1hxoHOA==", + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", "peer": true }, "node_modules/motion": { @@ -12768,6 +12969,50 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, + "node_modules/multibase": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", + "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", + "deprecated": "This module has been superseded by the multiformats module", + "peer": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/multibase/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/multibase/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" + } + ], + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/multicodec": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", @@ -12778,11 +13023,60 @@ "varint": "^5.0.0" } }, - "node_modules/multicodec/node_modules/varint": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", - "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", - "peer": true + "node_modules/multihashes": { + "version": "0.4.21", + "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", + "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "peer": true, + "dependencies": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + } + }, + "node_modules/multihashes/node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/multihashes/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" + } + ], + "peer": true, + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/multihashes/node_modules/multibase": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", + "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", + "deprecated": "This module has been superseded by the multiformats module", + "peer": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } }, "node_modules/mz": { "version": "2.7.0", @@ -13410,19 +13704,6 @@ "node": ">= 0.10" } }, - "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==", - "peer": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/parse-headers": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", @@ -13447,24 +13728,36 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "peer": true, "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" } }, "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", + "peer": true, + "dependencies": { + "domhandler": "^5.0.3", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-parser-stream": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz", + "integrity": "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==", "peer": true, "dependencies": { - "domhandler": "^5.0.2", "parse5": "^7.0.0" }, "funding": { @@ -13544,9 +13837,9 @@ } }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "peer": true }, "node_modules/path-type": { @@ -13969,15 +14262,6 @@ "node": ">= 0.10" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "peer": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/proxy-compare": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", @@ -13989,10 +14273,16 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "peer": true + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "peer": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, "node_modules/public-encrypt": { "version": "4.0.3", @@ -14009,15 +14299,15 @@ } }, "node_modules/public-encrypt/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "peer": true, "dependencies": { "end-of-stream": "^1.1.0", @@ -14025,9 +14315,9 @@ } }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -14066,9 +14356,9 @@ } }, "node_modules/qs": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", - "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", "peer": true, "dependencies": { "side-channel": "^1.0.6" @@ -14189,6 +14479,18 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "peer": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -14733,13 +15035,16 @@ } }, "node_modules/rpc-websockets": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-7.10.0.tgz", - "integrity": "sha512-cemZ6RiDtYZpPiBzYijdOrkQQzmBCmug0E9SdRH2gIUNT15ql4mwCYWIp0VnSZq6Qrw/JkGUygp4PrK1y9KfwQ==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.0.4.tgz", + "integrity": "sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ==", "peer": true, "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" }, @@ -14752,6 +15057,36 @@ "utf-8-validate": "^5.0.2" } }, + "node_modules/rpc-websockets/node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "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==", + "peer": true + }, + "node_modules/rpc-websockets/node_modules/@types/ws": { + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", + "peer": true, + "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==", + "peer": true + }, "node_modules/rpc-websockets/node_modules/uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -14896,19 +15231,43 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "hasInstallScript": true, "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" } }, + "node_modules/secp256k1/node_modules/bn.js": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==" + }, + "node_modules/secp256k1/node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "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/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==" + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -14924,9 +15283,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "peer": true, "dependencies": { "debug": "2.6.9", @@ -14962,6 +15321,15 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -15001,15 +15369,15 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "peer": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -15118,10 +15486,13 @@ } }, "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", "peer": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15307,6 +15678,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", "peer": true, "dependencies": { "glob": "^7.1.3" @@ -15471,9 +15843,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", "peer": true }, "node_modules/split-on-first": { @@ -16595,15 +16967,6 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/transition-hook": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/transition-hook/-/transition-hook-1.5.2.tgz", - "integrity": "sha512-zVW5wP+hzOCk56jU5V5GAIsuaf+gZv43pzxyimXQ74JnD1yoprxTfzoPjr0yjC/Mrc9JyCh3Wb6UhXD+8dlO4w==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" - } - }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -16696,9 +17059,9 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -16762,9 +17125,9 @@ } }, "node_modules/type": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", - "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", + "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==", "peer": true }, "node_modules/type-check": { @@ -16779,9 +17142,9 @@ } }, "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "peer": true, "engines": { "node": ">=4" @@ -16906,6 +17269,15 @@ "undeclared-identifiers": "bin.js" } }, + "node_modules/undici": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", + "peer": true, + "engines": { + "node": ">=18.17" + } + }, "node_modules/unenv": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/unenv/-/unenv-1.9.0.tgz", @@ -17095,13 +17467,16 @@ } }, "node_modules/url": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", - "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.4.tgz", + "integrity": "sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==", "peer": true, "dependencies": { "punycode": "^1.4.1", - "qs": "^6.11.2" + "qs": "^6.12.3" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/url-set-query": { @@ -17229,6 +17604,12 @@ } } }, + "node_modules/varint": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/varint/-/varint-5.0.2.tgz", + "integrity": "sha512-lKxKYG6H03yCZUpAGOPOsMcGxd1RHCu1iKvEHYDPmTyq2HueGhD73ssNBqqQWfvYs04G9iUFRvmAVLW20Jw6ow==", + "peer": true + }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", @@ -17690,9 +18071,9 @@ } }, "node_modules/web3-eth-accounts/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==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", + "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", "peer": true }, "node_modules/web3-eth-accounts/node_modules/eth-lib": { @@ -18337,6 +18718,27 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, + "node_modules/whatwg-encoding": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", + "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", + "peer": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/whatwg-mimetype": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", + "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==", + "peer": true, + "engines": { + "node": ">=18" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", diff --git a/package.json b/package.json index 3256790..e40045f 100644 --- a/package.json +++ b/package.json @@ -11,16 +11,16 @@ "lint:fix": "next lint --fix" }, "dependencies": { - "@aleph-front/core": "^1.22.4", - "@aleph-sdk/account": "^1.0.3", - "@aleph-sdk/avalanche": "^1.0.3", - "@aleph-sdk/client": "^1.0.6", - "@aleph-sdk/core": "^1.0.3", - "@aleph-sdk/ethereum": "^1.0.3", - "@aleph-sdk/evm": "^1.0.3", - "@aleph-sdk/message": "^1.0.6", - "@aleph-sdk/solana": "^1.0.3", - "@aleph-sdk/superfluid": "^1.0.6", + "@aleph-front/core": "^1.24.2", + "@aleph-sdk/account": "^1.2.0", + "@aleph-sdk/avalanche": "^1.2.0", + "@aleph-sdk/client": "^1.2.4", + "@aleph-sdk/core": "^1.2.0", + "@aleph-sdk/ethereum": "^1.2.0", + "@aleph-sdk/evm": "^1.2.0", + "@aleph-sdk/message": "^1.3.0", + "@aleph-sdk/solana": "^1.2.1", + "@aleph-sdk/superfluid": "^1.2.0", "@fortawesome/fontawesome-svg-core": "^6.3.0", "@hookform/resolvers": "^3.1.1", "@types/node": "18.14.1", diff --git a/src/components/common/ExternalLink/cmp.tsx b/src/components/common/ExternalLink/cmp.tsx new file mode 100644 index 0000000..be4fc4d --- /dev/null +++ b/src/components/common/ExternalLink/cmp.tsx @@ -0,0 +1,32 @@ +import { memo } from 'react' +import { StyledExternalLink } from './styles' +import { ExternalLinkProps } from './types' +import { Icon } from '@aleph-front/core' + +export const ExternalLink = ({ + text, + href, + color, + typo, + underline, + ...props +}: ExternalLinkProps) => { + return ( + <> + + {text ? text : href} + + + > + ) +} +ExternalLink.displayName = 'ExternalLink' + +export default memo(ExternalLink) as typeof ExternalLink diff --git a/src/components/common/ExternalLink/index.ts b/src/components/common/ExternalLink/index.ts new file mode 100644 index 0000000..5047618 --- /dev/null +++ b/src/components/common/ExternalLink/index.ts @@ -0,0 +1,2 @@ +export { default } from './cmp' +export type { ExternalLinkProps } from './types' diff --git a/src/components/common/ExternalLink/styles.ts b/src/components/common/ExternalLink/styles.ts new file mode 100644 index 0000000..3ee2786 --- /dev/null +++ b/src/components/common/ExternalLink/styles.ts @@ -0,0 +1,17 @@ +import { CoreTheme, getTypoCss } from '@aleph-front/core' +import styled from 'styled-components' +import { css } from 'styled-components' + +export type StyledExternalLinkProps = { + $color?: keyof CoreTheme['color'] + $typo?: keyof CoreTheme['typo'] + $underline?: boolean +} + +export const StyledExternalLink = styled.a` + ${({ theme, $color = 'white', $typo, $underline = false }) => css` + color: ${theme.color[$color]}; + text-decoration: ${$underline ? 'underline' : 'none'}; + ${$typo ? getTypoCss($typo) : ''} + `} +` diff --git a/src/components/common/ExternalLink/types.ts b/src/components/common/ExternalLink/types.ts new file mode 100644 index 0000000..753e779 --- /dev/null +++ b/src/components/common/ExternalLink/types.ts @@ -0,0 +1,10 @@ +import { CoreTheme } from '@aleph-front/core' +import { AnchorHTMLAttributes } from 'react' + +export type ExternalLinkProps = AnchorHTMLAttributes & { + href: string + text?: string + color?: keyof CoreTheme['color'] + typo?: keyof CoreTheme['typo'] + underline?: boolean +} diff --git a/src/components/pages/earn/ComputeResourceNodeDetailPage/cmp.tsx b/src/components/pages/earn/ComputeResourceNodeDetailPage/cmp.tsx index 40cd583..1f2f52c 100644 --- a/src/components/pages/earn/ComputeResourceNodeDetailPage/cmp.tsx +++ b/src/components/pages/earn/ComputeResourceNodeDetailPage/cmp.tsx @@ -1,32 +1,14 @@ import { memo } from 'react' import Head from 'next/head' -import { useComputeResourceNodeDetailPage } from '@/hooks/pages/earn/useComputeResourceNodeDetailPage' -import { Button, Icon, NodeName, Tooltip } from '@aleph-front/core' -import { - ellipseAddress, - getAVAXExplorerURL, - getETHExplorerURL, - humanReadableSize, -} from '@/helpers/utils' -import Link from 'next/link' +import { useComputeResourceNodeDetailPage } from '@/hooks/pages/earn/ComputeResourceNodeDetailPage/useComputeResourceNodeDetailPage' +import { Button, Icon, Tabs } from '@aleph-front/core' import NodeDetailHeader from '@/components/common/NodeDetailHeader' -import Card2, { Card2Field } from '@/components/common/Card2' -import NodeDetailStatus from '@/components/common/NodeDetailStatus' -import NodeDecentralization from '@/components/common/NodeDecentralization' -import NodeDetailEditableField from '@/components/common/NodeDetailEditableField' -import NodeDetailLink from '@/components/common/NodeDetailLink' -import { apiServer } from '@/helpers/constants' -import Image from 'next/image' -import Price from '@/components/common/Price' -import ButtonLink from '@/components/common/ButtonLink' -import { StreamNotSupportedIssue } from '@/domain/node' -import { ThreeDots } from 'react-loader-spinner' -import { useTheme } from 'styled-components' -import { LinkedStatusDotIcon } from '@/components/common/NodeLinkedNodes' -// import InfoTooltipButton from '@/components/common/InfoTooltipButton' +import OverviewTabContent from './tabs/OverviewTabContent' +import PoliciesTabContent from './tabs/PoliciesTabContent' export const ComputeResourceNodeDetailPage = () => { const { + theme, node, nodesOnSameASN, baseLatency, @@ -42,6 +24,7 @@ export const ComputeResourceNodeDetailPage = () => { rewardCtrl, streamRewardCtrl, addressCtrl, + termsAndConditionsCtrl, asnTier, nodeSpecs, nodeIssue, @@ -49,15 +32,16 @@ export const ComputeResourceNodeDetailPage = () => { isLinked, isLinkableByUser, isUnlinkableByUser, - // nodeBenchmark, + tabId, + setTabId, + tabs, + handleRemovePolicies, handleRemove, handleSubmit, handleLink, handleUnlink, } = useComputeResourceNodeDetailPage() - const theme = useTheme() - return ( <> @@ -101,345 +85,42 @@ export const ComputeResourceNodeDetailPage = () => { )} - - - - - - - - - {node?.owner && ellipseAddress(node?.owner)} - - } - big - /> - - - {rewardCtrl.field.value && - ellipseAddress(rewardCtrl.field.value)} - - - } - big - /> - - - {streamRewardCtrl.field.value && - ellipseAddress(streamRewardCtrl.field.value)} - - - } - big - /> - - - {node?.address} - - - } - big - /> - - - - - - - {/* - CPU SPEED - - } - > - {nodeBenchmark?.cpu.benchmark.average.toFixed(1)}s - - ) - } - /> */} - - {/* - RAM SPEED - - } - > - {humanReadableSize(nodeBenchmark?.ram.speed || 0, 'MiB')} - /s - - ) - } - /> */} - - - - - <> - Create Instance - {nodeIssue === undefined && ( - - )} - > - - {!createInstanceUrl && ( - - {nodeIssue ? ( - - - Why is my node unavailable? - - - A node may be not eligible for PAYG for the - following reasons: - - - {nodeIssue === StreamNotSupportedIssue.IPV6 && ( - - IPv6 Egress Issue: The - node's compute resource (CRN) is unable - to establish an IPv6 egress connection. - - )} - {nodeIssue === - StreamNotSupportedIssue.MinSpecs && ( - - Minimum Specifications: The - node does not meet the required minimum - hardware or software specifications. - - )} - {nodeIssue === - StreamNotSupportedIssue.Version && ( - - Version Compatibility: Only - nodes with version 0.4.0 or higher are - eligible for selection. - - )} - {nodeIssue === - StreamNotSupportedIssue.RewardAddress && ( - - Stream Reward Configuration:{' '} - The node lacks a configured stream reward - address, which is necessary for operation. - - )} - - - } - > - - Not eligible for pay-as-you-go (PAYG) - - - - ) : ( - - Not eligible for pay-as-you-go (PAYG) - - )} - - )} - - - - - - - {nodesOnSameASN} - {!!asnTier && ( - - )} - - } - /> - - - - - - } - /> - - - - - - {!isLinked ? ( - <> - - - - {isLinkableByUser ? ( - - - link now - - - ) : ( - <>not linked> - )} - - > - ) : ( - <> - {node?.parentData && ( - <> - - - - - > - )} - {isUnlinkableByUser && ( - - - - )} - > - )} - - - - - - - {!!asnTier && ( - - )} - - {!!asnTier && ( - - There are {nodesOnSameASN} nodes on this ASN. Please consider - to migrate your node to a different ASN. - - )} - - - - {/* - - - */} - - - - - + + + + {tabId === 'overview' ? ( + + ) : tabId === 'policies' ? ( + + ) : ( + '' + )} > ) } diff --git a/src/components/pages/earn/ComputeResourceNodeDetailPage/tabs/OverviewTabContent.tsx b/src/components/pages/earn/ComputeResourceNodeDetailPage/tabs/OverviewTabContent.tsx new file mode 100644 index 0000000..fe2a7d4 --- /dev/null +++ b/src/components/pages/earn/ComputeResourceNodeDetailPage/tabs/OverviewTabContent.tsx @@ -0,0 +1,412 @@ +import { memo } from 'react' +import { Button, Icon, NodeName, Tooltip } from '@aleph-front/core' +import { + ellipseAddress, + getAVAXExplorerURL, + getETHExplorerURL, + humanReadableSize, +} from '@/helpers/utils' +import Link from 'next/link' +import Card2, { Card2Field } from '@/components/common/Card2' +import NodeDetailStatus from '@/components/common/NodeDetailStatus' +import NodeDecentralization from '@/components/common/NodeDecentralization' +import NodeDetailEditableField from '@/components/common/NodeDetailEditableField' +import NodeDetailLink from '@/components/common/NodeDetailLink' +import { apiServer } from '@/helpers/constants' +import Image from 'next/image' +import Price from '@/components/common/Price' +import ButtonLink from '@/components/common/ButtonLink' +import { StreamNotSupportedIssue } from '@/domain/node' +import { ThreeDots } from 'react-loader-spinner' +import { LinkedStatusDotIcon } from '@/components/common/NodeLinkedNodes' +import { UseComputeResourceNodeDetailPageReturn } from '@/hooks/pages/earn/ComputeResourceNodeDetailPage/useComputeResourceNodeDetailPage' + +export type OverviewTabContentProps = Pick< + UseComputeResourceNodeDetailPageReturn, + | 'theme' + | 'node' + | 'nodesOnSameASN' + | 'baseLatency' + | 'lastMetricsCheck' + | 'calculatedRewards' + | 'creationDate' + | 'isOwner' + | 'rewardCtrl' + | 'streamRewardCtrl' + | 'addressCtrl' + | 'asnTier' + | 'nodeSpecs' + | 'nodeIssue' + | 'createInstanceUrl' + | 'isLinked' + | 'isLinkableByUser' + | 'isUnlinkableByUser' + | 'handleLink' + | 'handleUnlink' +> + +export const OverviewTabContent = ({ + theme, + node, + nodesOnSameASN, + baseLatency, + lastMetricsCheck, + calculatedRewards, + creationDate, + isOwner, + rewardCtrl, + streamRewardCtrl, + addressCtrl, + asnTier, + nodeSpecs, + nodeIssue, + createInstanceUrl, + isLinked, + isLinkableByUser, + isUnlinkableByUser, + handleLink, + handleUnlink, +}: OverviewTabContentProps) => { + return ( + + + + + + + + + {node?.owner && ellipseAddress(node?.owner)} + + } + big + /> + + + {rewardCtrl.field.value && + ellipseAddress(rewardCtrl.field.value)} + + + } + big + /> + + + {streamRewardCtrl.field.value && + ellipseAddress(streamRewardCtrl.field.value)} + + + } + big + /> + + + {node?.address} + + + } + big + /> + + + + + + + {/* + CPU SPEED + + } + > + {nodeBenchmark?.cpu.benchmark.average.toFixed(1)}s + + ) + } + /> */} + + {/* + RAM SPEED + + } + > + {humanReadableSize(nodeBenchmark?.ram.speed || 0, 'MiB')} + /s + + ) + } + /> */} + + + + + <> + Create Instance + {nodeIssue === undefined && ( + + )} + > + + {!createInstanceUrl && ( + + {nodeIssue ? ( + + + Why is my node unavailable? + + + A node may be not eligible for PAYG for the + following reasons: + + + {nodeIssue === StreamNotSupportedIssue.IPV6 && ( + + IPv6 Egress Issue: The + node's compute resource (CRN) is unable to + establish an IPv6 egress connection. + + )} + {nodeIssue === StreamNotSupportedIssue.MinSpecs && ( + + Minimum Specifications: The + node does not meet the required minimum hardware + or software specifications. + + )} + {nodeIssue === StreamNotSupportedIssue.Version && ( + + Version Compatibility: Only + nodes with version 0.4.0 or higher are eligible + for selection. + + )} + {nodeIssue === + StreamNotSupportedIssue.RewardAddress && ( + + Stream Reward Configuration:{' '} + The node lacks a configured stream reward + address, which is necessary for operation. + + )} + + + } + > + + Not eligible for pay-as-you-go (PAYG) + + + + ) : ( + + Not eligible for pay-as-you-go (PAYG) + + )} + + )} + + + + + + + {nodesOnSameASN} + {!!asnTier && ( + + )} + + } + /> + + + + + + } + /> + + + + + + {!isLinked ? ( + <> + + + + {isLinkableByUser ? ( + + + link now + + + ) : ( + <>not linked> + )} + + > + ) : ( + <> + {node?.parentData && ( + <> + + + + + > + )} + {isUnlinkableByUser && ( + + + + )} + > + )} + + + + + + + {!!asnTier && ( + + )} + + {!!asnTier && ( + + There are {nodesOnSameASN} nodes on this ASN. Please consider to + migrate your node to a different ASN. + + )} + + + + {/* + + + */} + + + + + + ) +} +OverviewTabContent.displayName = 'OverviewTabContent' + +export default memo(OverviewTabContent) diff --git a/src/components/pages/earn/ComputeResourceNodeDetailPage/tabs/PoliciesTabContent.tsx b/src/components/pages/earn/ComputeResourceNodeDetailPage/tabs/PoliciesTabContent.tsx new file mode 100644 index 0000000..23ef800 --- /dev/null +++ b/src/components/pages/earn/ComputeResourceNodeDetailPage/tabs/PoliciesTabContent.tsx @@ -0,0 +1,126 @@ +import { memo } from 'react' +import { UseComputeResourceNodeDetailPageReturn } from '@/hooks/pages/earn/ComputeResourceNodeDetailPage/useComputeResourceNodeDetailPage' +import Card2, { Card2Field } from '@/components/common/Card2' +import { + Button, + Col, + ellipseText, + FileInput, + Icon, + Row, + Spinner, +} from '@aleph-front/core' +import ExternalLink from '@/components/common/ExternalLink' +import { usePoliciesTabContent } from '@/hooks/pages/earn/ComputeResourceNodeDetailPage/usePoliciesTabContent' + +export type PoliciesTabContentProps = Pick< + UseComputeResourceNodeDetailPageReturn, + 'termsAndConditionsCtrl' | 'handleRemovePolicies' | 'node' | 'isOwner' +> + +export const PoliciesTabContent = (props: PoliciesTabContentProps) => { + const { + isOwner, + documentName, + documentCID, + documentLink, + termsAndConditionsCtrl, + isLoadingHistoryMessages, + policiesHistory, + fileValue, + removePoliciesDisabled, + isCurrentVersion, + handleFileChange, + handleDownloadFile, + handleRemovePolicies, + } = usePoliciesTabContent(props) + + return ( + + + + + + + + + {isOwner && ( + <> + + + remove policies + + + + Max. file size is 100 MB + + > + )} + + + + History + + {isLoadingHistoryMessages ? ( + + ) : ( + policiesHistory && ( + + {Array.from(policiesHistory).map(([, policies], index) => ( + + + {isCurrentVersion(policies) + ? 'Now' + : policies.time.toLocaleDateString()} + + + handleDownloadFile( + policies.cid, + policies.name || policies.cid, + ) + } + target="_self" + /> + {/* Don't render left line only for last element */} + {index < policiesHistory.size - 1 && ( + + )} + + ))} + + ) + )} + + + + ) +} +PoliciesTabContent.displayName = 'PoliciesTabContent' + +export default memo(PoliciesTabContent) diff --git a/src/domain/connect/base.ts b/src/domain/connect/base.ts index e71b4d4..60b2f92 100644 --- a/src/domain/connect/base.ts +++ b/src/domain/connect/base.ts @@ -9,18 +9,19 @@ import { getAccountFromProvider as getSOLAccount, SOLAccount, } from '@aleph-sdk/solana' +import { getAccountFromProvider as getAVAXAccount } from '@aleph-sdk/avalanche' import { - getAccountFromProvider as getAVAXAccount, - AvalancheAccount, -} from '@aleph-sdk/avalanche' -import { createFromAvalancheAccount } from '@aleph-sdk/superfluid' + createFromEVMAccount, + isAccountSupported as isAccountPAYGCompatible, +} from '@aleph-sdk/superfluid' import Err from '../../helpers/errors' -import { Mutex, getERC20Balance, getSOLBalance, sleep } from '@/helpers/utils' +import { Mutex, getAddressBalance, sleep } from '@/helpers/utils' import { MetaMaskInpageProvider } from '@metamask/providers' import type { Provider as EthersProvider, CombinedProvider, } from '@web3modal/scaffold-utils/ethers' +import { EVMAccount } from '@aleph-sdk/evm' export { BlockchainId } @@ -249,12 +250,11 @@ export abstract class BaseConnectionProviderManager { } async getBalance(account: Account): Promise { - if (account instanceof AvalancheAccount) { + if (isAccountPAYGCompatible(account)) { try { - // @note: refactor in SDK calling init inside this method - const superfluidAccount = createFromAvalancheAccount(account) - await superfluidAccount.init() - + const superfluidAccount = await createFromEVMAccount( + account as EVMAccount, + ) const balance = await superfluidAccount.getALEPHBalance() return balance.toNumber() } catch (e) { @@ -262,11 +262,8 @@ export abstract class BaseConnectionProviderManager { return 0 } } - if (account instanceof ETHAccount) { - return getERC20Balance(account.address) - } - if (account instanceof SOLAccount) { - return getSOLBalance(account.address) + if (account instanceof ETHAccount || account instanceof SOLAccount) { + return getAddressBalance(account.address) } throw Err.ChainNotYetSupported diff --git a/src/domain/file.ts b/src/domain/file.ts index 9ac372b..7b76ded 100644 --- a/src/domain/file.ts +++ b/src/domain/file.ts @@ -1,6 +1,6 @@ import { Account } from '@aleph-sdk/account' import { apiServer, channel, defaultAccountChannel } from '@/helpers/constants' -import { MessageType, StoreMessage } from '@aleph-sdk/message' +import { ItemType, MessageType, StoreMessage } from '@aleph-sdk/message' import { AlephHttpClient, AuthenticatedAlephHttpClient, @@ -74,7 +74,7 @@ export class FileManager { const items = await this.sdkClient.getMessages({ messageTypes: [MessageType.store], addresses: [address], - pageSize: 1000, + pagination: 1000, }) const files = (items?.messages || []) as StoreMessage[] @@ -107,7 +107,9 @@ export class FileManager { } } - async uploadFile(fileObject: File): Promise { + async uploadFile( + fileObject: File, + ): Promise<{ contentItemHash: string; messageItemHash: string }> { if (!(this.sdkClient instanceof AuthenticatedAlephHttpClient)) throw new Error('Account needed to perform this action') @@ -117,8 +119,22 @@ export class FileManager { const message = await this.sdkClient.createStore({ channel, fileObject: buffer, + storageEngine: ItemType.ipfs, + metadata: { + name: fileObject.name, + format: fileObject.type, + }, }) - return message.content.item_hash + return { + contentItemHash: message.content.item_hash, + messageItemHash: message.item_hash, + } + } + + async downloadFile(fileHash: string): Promise { + const file = await this.sdkClient.downloadFile(fileHash) + + return new File([file], fileHash) } } diff --git a/src/domain/message.ts b/src/domain/message.ts index bbe6352..f6c8563 100644 --- a/src/domain/message.ts +++ b/src/domain/message.ts @@ -5,10 +5,11 @@ import { } from '@aleph-sdk/client' import Err from '../helpers/errors' import { apiServer, defaultAccountChannel } from '@/helpers/constants' +import { GetMessagesConfiguration, MessageType } from '@aleph-sdk/message' export class MessageManager { constructor( - protected account: Account, + protected account?: Account, protected channel = defaultAccountChannel, protected sdkClient: | AlephHttpClient @@ -20,9 +21,9 @@ export class MessageManager { /** * Returns an aleph program message for a given hash */ - async get(hash: string) { + async get(hash: string) { try { - const msg = await this.sdkClient.getMessage(hash) + const msg = await this.sdkClient.getMessage(hash) return msg } catch (error) { @@ -30,6 +31,19 @@ export class MessageManager { } } + /** + * Returns aleph program messages for a given configuration + */ + async getAll(config: GetMessagesConfiguration) { + try { + const msgs = await this.sdkClient.getMessages(config) + + return msgs + } catch (error) { + throw Err.RequestFailed(error) + } + } + /** * Deletes a VM using a forget message */ diff --git a/src/domain/node.ts b/src/domain/node.ts index abca75d..b8691b9 100644 --- a/src/domain/node.ts +++ b/src/domain/node.ts @@ -87,6 +87,7 @@ export type CRN = BaseNode & { metricsData?: CRNMetrics parentData?: CCN stream_reward?: string + terms_and_conditions?: string } export type AlephNode = CCN | CRN @@ -189,6 +190,7 @@ export type UpdateCCN = BaseUpdateNode & { export type UpdateCRN = BaseUpdateNode & { address?: string stream_reward?: string + terms_and_conditions?: string | File } export type UpdateAlephNode = UpdateCCN | UpdateCRN @@ -539,11 +541,27 @@ export class NodeManager { } if (details.picture instanceof File) { - details.picture = await this.fileManager.uploadFile(details.picture) + const { contentItemHash } = await this.fileManager.uploadFile( + details.picture, + ) + details.picture = contentItemHash } if (details.banner instanceof File) { - details.banner = await this.fileManager.uploadFile(details.banner) + const { contentItemHash } = await this.fileManager.uploadFile( + details.banner, + ) + details.banner = contentItemHash + } + + if ( + 'terms_and_conditions' in details && + details.terms_and_conditions instanceof File + ) { + const { messageItemHash } = await this.fileManager.uploadFile( + details.terms_and_conditions, + ) + details.terms_and_conditions = messageItemHash } const res = await this.sdkClient.createPost({ @@ -925,7 +943,7 @@ export class NodeManager { const res = await this.sdkClient.getPosts({ types: 'aleph-scoring-scores', addresses: [scoringAddress], - pageSize: 1, + pagination: 1, page: 1, }) @@ -939,7 +957,7 @@ export class NodeManager { const res = await this.sdkClient.getPosts({ types: 'aleph-network-metrics', addresses: [scoringAddress], - pageSize: 1, + pagination: 1, page: 1, }) diff --git a/src/domain/stake.ts b/src/domain/stake.ts index 1b81db2..cea6299 100644 --- a/src/domain/stake.ts +++ b/src/domain/stake.ts @@ -48,7 +48,7 @@ export class StakeManager { types: 'staking-rewards-distribution', addresses: [monitorAddress], tags: ['calculation'], - pageSize: 1, + pagination: 1, page: 1, }) @@ -68,7 +68,7 @@ export class StakeManager { types: 'staking-rewards-distribution', addresses: [senderAddress], tags: ['distribution'], - pageSize: 1, + pagination: 1, page: 1, }) diff --git a/src/helpers/schemas.ts b/src/helpers/schemas.ts index 51aca32..4fb6dc7 100644 --- a/src/helpers/schemas.ts +++ b/src/helpers/schemas.ts @@ -43,6 +43,7 @@ export const newCRNSchema = z.object({ }) // -------------------------- +const fileSchema = z.custom() export const imgFileSchema = z .custom((val) => val instanceof File, 'Invalid file type') @@ -82,4 +83,5 @@ export const updateCCNSchema = updateBaseNodeSchema.extend({ export const updateCRNSchema = updateBaseNodeSchema.extend({ address: optionalString(urlSchema), stream_reward: optionalString(ethereumAddressSchema), + terms_and_conditions: optionalStringSchema.or(fileSchema), }) diff --git a/src/helpers/utils.ts b/src/helpers/utils.ts index f773d33..d4c76ed 100644 --- a/src/helpers/utils.ts +++ b/src/helpers/utils.ts @@ -27,12 +27,12 @@ export const ellipseAddress = (address: string) => { } /** - * Get the Aleph balance for a given Ethereum address + * Get the Aleph balance for a given address * - * @param address An Ethereum address + * @param address An account address * returns The Aleph balance of the address */ -export const getERC20Balance = async (address: string) => { +export const getAddressBalance = async (address: string) => { try { const query = await fetch( `${apiServer}/api/v0/addresses/${address}/balance`, @@ -48,26 +48,6 @@ export const getERC20Balance = async (address: string) => { } } -/** - * Gets the Aleph balance for a given Solana address - * - * @param address A Solana address - * @returns The Aleph balance of the address - */ -export const getSOLBalance = async (address: string) => { - // FIXME: This is a temporary solution - try { - const query = await fetch( - `https://balance1.api.aleph.cloud/solana/${address}`, - ) - - const { balance } = await query.json() - return balance - } catch (error) { - throw Err.RequestFailed(error) - } -} - export function round(num: number, decimals = 2) { const pow = 10 ** decimals return Math.round((num + Number.EPSILON) * pow) / pow diff --git a/src/hooks/form/useEditComputeResourceNodeForm.tsx b/src/hooks/form/useEditComputeResourceNodeForm.tsx index b99eceb..c3ba778 100644 --- a/src/hooks/form/useEditComputeResourceNodeForm.tsx +++ b/src/hooks/form/useEditComputeResourceNodeForm.tsx @@ -50,6 +50,10 @@ export type UseEditComputeResourceNodeFormReturn = { UseEditComputeResourceNodeFormState, 'registration_url' > + termsAndConditionsCtrl: UseControllerReturn< + UseEditComputeResourceNodeFormState, + 'terms_and_conditions' + > errors: FieldErrors isDirty: boolean handleSubmit: (e: FormEvent) => Promise @@ -176,6 +180,11 @@ export function useEditComputeResourceNodeForm({ name: 'registration_url', }) + const termsAndConditionsCtrl = useController({ + control, + name: 'terms_and_conditions', + }) + return { values, control, @@ -189,6 +198,7 @@ export function useEditComputeResourceNodeForm({ authorizedCtrl, lockedCtrl, registrationUrlCtrl, + termsAndConditionsCtrl, errors, isDirty, handleSubmit, diff --git a/src/hooks/pages/earn/useComputeResourceNodeDetailPage.tsx b/src/hooks/pages/earn/ComputeResourceNodeDetailPage/useComputeResourceNodeDetailPage.tsx similarity index 87% rename from src/hooks/pages/earn/useComputeResourceNodeDetailPage.tsx rename to src/hooks/pages/earn/ComputeResourceNodeDetailPage/useComputeResourceNodeDetailPage.tsx index d1b715a..4d993d4 100644 --- a/src/hooks/pages/earn/useComputeResourceNodeDetailPage.tsx +++ b/src/hooks/pages/earn/ComputeResourceNodeDetailPage/useComputeResourceNodeDetailPage.tsx @@ -7,9 +7,9 @@ import { NodeManager, StreamNotSupportedIssue, } from '@/domain/node' -import { useRouter } from 'next/router' +import Router, { useRouter } from 'next/router' import { useComputeResourceNode } from '@/hooks/common/useComputeResourceNode' -import { useCallback, useMemo } from 'react' +import { useCallback, useMemo, useState } from 'react' import { UseNodeDetailReturn, useNodeDetail, @@ -29,6 +29,8 @@ import { consoleNewInstanceUrl } from '@/helpers/constants' import { convertByteUnits } from '@/helpers/utils' import { useRequestCRNIps } from '@/hooks/common/useRequestEntity/useRequestCRNIps' import { StakeManager } from '@/domain/stake' +import { TabsProps } from '@aleph-front/core' +import { DefaultTheme, useTheme } from 'styled-components' // import { useRequestCRNBenchmark } from '@/hooks/common/useRequestEntity/useRequestCRNBenchmark' export type UseComputeResourceNodeDetailPageProps = { @@ -37,6 +39,7 @@ export type UseComputeResourceNodeDetailPageProps = { export type UseComputeResourceNodeDetailPageReturn = UseNodeDetailReturn & UseEditComputeResourceNodeFormReturn & { + theme: DefaultTheme nodes?: CRN[] node?: CRN userNode?: CCN @@ -49,12 +52,17 @@ export type UseComputeResourceNodeDetailPageReturn = UseNodeDetailReturn & isLinked?: boolean isLinkableByUser?: boolean isUnlinkableByUser?: boolean + tabs: TabsProps['tabs'] + tabId: string + setTabId: (tab: string) => void + handleRemovePolicies: () => void handleRemove: () => void handleLink: () => Promise handleUnlink: () => Promise } export function useComputeResourceNodeDetailPage(): UseComputeResourceNodeDetailPageReturn { + const theme = useTheme() const router = useRouter() const { hash } = router.query @@ -84,6 +92,23 @@ export function useComputeResourceNodeDetailPage(): UseComputeResourceNodeDetail // ----------------------------- + const [tabId, setTabId] = useState('overview') + + const tabs: TabsProps['tabs'] = useMemo(() => { + return [ + { + id: 'overview', + name: 'Overview', + }, + { + id: 'policies', + name: 'Policies', + }, + ] + }, []) + + // ----------------------------- + const { isLinked: isLinkedCheck, isLinkableByUser: isLinkableByUserCheck, @@ -247,12 +272,23 @@ export function useComputeResourceNodeDetailPage(): UseComputeResourceNodeDetail picture: node?.picture, banner: node?.banner, address: node?.address, + terms_and_conditions: node?.terms_and_conditions, } }, [node]) const formProps = useEditComputeResourceNodeForm({ defaultValues }) + //@todo: implement this + const handleRemovePolicies = useCallback(async () => { + await nodeManager.updateComputeResourceNode({ + ...formProps.values, + terms_and_conditions: '', + }) + Router.reload() + }, [formProps.values, nodeManager]) + return { + theme, nodes, node, userNode, @@ -261,10 +297,13 @@ export function useComputeResourceNodeDetailPage(): UseComputeResourceNodeDetail nodeSpecs, nodeIssue, createInstanceUrl, - // nodeBenchmark, isLinked, isLinkableByUser, isUnlinkableByUser, + tabs, + tabId, + setTabId, + handleRemovePolicies, handleLink, handleUnlink, ...formProps, diff --git a/src/hooks/pages/earn/ComputeResourceNodeDetailPage/usePoliciesTabContent.ts b/src/hooks/pages/earn/ComputeResourceNodeDetailPage/usePoliciesTabContent.ts new file mode 100644 index 0000000..814a95f --- /dev/null +++ b/src/hooks/pages/earn/ComputeResourceNodeDetailPage/usePoliciesTabContent.ts @@ -0,0 +1,243 @@ +import { useCallback, useEffect, useMemo, useState } from 'react' +import { UseComputeResourceNodeDetailPageReturn } from '@/hooks/pages/earn/ComputeResourceNodeDetailPage/useComputeResourceNodeDetailPage' +import { apiServer } from '@/helpers/constants' +import { MessageManager } from '@/domain/message' +import { MessageType } from '@aleph-sdk/message' +import { FileManager } from '@/domain/file' + +export type usePoliciesTabContentProps = Pick< + UseComputeResourceNodeDetailPageReturn, + 'termsAndConditionsCtrl' | 'handleRemovePolicies' | 'node' | 'isOwner' +> + +export type usePoliciesTabContentReturn = { + isOwner?: boolean + documentName: string + documentCID: string + documentLink: string + policiesHistory: PoliciesHistory | undefined + termsAndConditionsCtrl: UseComputeResourceNodeDetailPageReturn['termsAndConditionsCtrl'] + isLoadingHistoryMessages: boolean + fileValue: any + removePoliciesDisabled: boolean + isCurrentVersion: (policies: PoliciesRecord) => boolean + handleFileChange: (files?: any) => void + handleDownloadFile: (fileHash: string, fileName: string) => Promise + handleRemovePolicies: () => void +} + +type PoliciesRecord = { + time: Date + cid: string + name: string +} +type PoliciesHistory = Map + +export function usePoliciesTabContent({ + node, + termsAndConditionsCtrl, + handleRemovePolicies, + ...props +}: usePoliciesTabContentProps): usePoliciesTabContentReturn { + const { + field: { onChange, value }, + } = termsAndConditionsCtrl + + // ----------------------------- + // States + + const [amendMessages, setAmendMessages] = useState() + const [isLoadingAmendMessages, setIsLoadingAmendMessages] = useState(true) + const [policiesHistory, setPoliciesHistory] = useState() + const [isLoadingHistoryMessages, setIsLoadingHistoryMessages] = useState(true) + + // ----------------------------- + // Memos + + const messageManager = useMemo(() => { + return new MessageManager() + }, []) + + const fileManager = useMemo(() => { + return new FileManager() + }, []) + + const currentPolicies = useMemo(() => { + if (!policiesHistory) return + + const lastPolicies = policiesHistory?.entries().next().value + if (!lastPolicies) return + + return lastPolicies[1] + }, [policiesHistory]) + + const documentName = useMemo( + () => (isLoadingHistoryMessages ? '' : currentPolicies?.name || ' '), + [isLoadingHistoryMessages, currentPolicies], + ) + + const documentCID = useMemo( + () => (isLoadingHistoryMessages ? '' : currentPolicies?.cid || ' '), + [isLoadingHistoryMessages, currentPolicies], + ) + + const documentLink = useMemo( + () => + isLoadingHistoryMessages + ? '' + : currentPolicies + ? `${apiServer}/api/v0/storage/raw/${currentPolicies?.cid}` + : ' ', + [isLoadingHistoryMessages, currentPolicies], + ) + + const removePoliciesDisabled = useMemo( + () => !policiesHistory?.size, + [policiesHistory], + ) + + // @todo: Refactor FileInputProps to accept File too + // Adjust the file value to match FileInputProps + const fileValue = useMemo(() => { + if (value instanceof File) { + return value as any + } + return undefined + }, [value]) + + // ----------------------------- + // Callbacks + + const isCurrentVersion = useCallback( + (policies: PoliciesRecord) => { + if (!currentPolicies) return false + + return policies === currentPolicies + }, + [currentPolicies], + ) + + // ----------------------------- + // Handlers + + // Adjust the onChange function to accept ExtFile | ExtFile[] | undefined + const handleFileChange = useCallback( + // eslint-disable-next-line @typescript-eslint/no-explicit-any + (files?: any) => { + const file = Array.isArray(files) ? files[0] : files + onChange(file) + }, + [onChange], + ) + + const handleDownloadFile = useCallback( + async (fileHash: string, fileName: string) => { + const downloadedFile = await fileManager.downloadFile(fileHash) + const customDownloadUrl = window.URL.createObjectURL(downloadedFile) + const a = document.createElement('a') + a.href = customDownloadUrl + a.download = fileName + document.body.appendChild(a) + a.click() + a.remove() + window.URL.revokeObjectURL(customDownloadUrl) + }, + [fileManager], + ) + + // ----------------------------- + // Effects + + // Fetch all amend messages related to the node + useEffect(() => { + const fetchMessages = async () => { + setIsLoadingAmendMessages(true) + if (!messageManager) return setAmendMessages(undefined) + if (!node) return setAmendMessages(undefined) + + try { + const { messages } = await messageManager?.getAll({ + messageTypes: [MessageType['post']], + refs: [node.hash], + addresses: [node.owner], + }) + + setAmendMessages(messages) + } catch (e) { + console.error(e) + } finally { + setIsLoadingAmendMessages(false) + } + } + + fetchMessages() + }, [messageManager, node]) + + // Fetch all policies messages related to the node + useEffect(() => { + const fetchMessages = async () => { + setIsLoadingHistoryMessages(true) + + if (isLoadingAmendMessages) return setPoliciesHistory(undefined) + if (!messageManager) return setPoliciesHistory(undefined) + if (!amendMessages) return setPoliciesHistory(undefined) + + try { + const history = new Map() + for (const message of amendMessages) { + const policiesMessageHash = + message.content?.content?.details.terms_and_conditions + + if (!policiesMessageHash) break + + let storeMessageContent + try { + const { content } = + await messageManager?.get(policiesMessageHash) + storeMessageContent = content + } catch (e) { + console.error(e) + } + + if (!storeMessageContent) continue + + history.set(policiesMessageHash, { + time: new Date(message.content.time * 1000), + cid: storeMessageContent.item_hash, + name: storeMessageContent.metadata?.name as string, + }) + } + + const sortedHistory = new Map( + Array.from(history).sort( + ([, { time: a }], [, { time: b }]) => b.getTime() - a.getTime(), + ), + ) + + setPoliciesHistory(sortedHistory) + } catch (e) { + console.error(e) + } finally { + setIsLoadingHistoryMessages(false) + } + } + + fetchMessages() + }, [amendMessages, isLoadingAmendMessages, messageManager]) + + return { + documentName, + documentCID, + documentLink, + policiesHistory, + termsAndConditionsCtrl, + isLoadingHistoryMessages, + fileValue, + removePoliciesDisabled, + isCurrentVersion, + handleFileChange, + handleDownloadFile, + handleRemovePolicies, + ...props, + } +}
- There are {nodesOnSameASN} nodes on this ASN. Please consider - to migrate your node to a different ASN. -
+ There are {nodesOnSameASN} nodes on this ASN. Please consider to + migrate your node to a different ASN. +