From 10b587ec0021c0a2cf5d8d401581822ab1d72ba6 Mon Sep 17 00:00:00 2001 From: Ice Date: Wed, 19 Feb 2025 19:52:10 +0100 Subject: [PATCH] chore: update async imports and try to minimise first import --- bun.lock | 192 ++++++++++++++-- .../src/helpers/walletAddressValidator.ts | 4 +- packages/plugins/src/chainflip/broker.ts | 20 -- packages/toolboxes/package.json | 203 +++++++++-------- .../src/cosmos/thorchainUtils/messages.ts | 18 +- .../src/cosmos/thorchainUtils/registry.ts | 15 +- .../toolboxes/src/cosmos/toolbox/thorchain.ts | 55 +++-- packages/toolboxes/src/cosmos/util.ts | 28 +-- packages/toolboxes/src/solana/index.ts | 4 +- packages/toolboxes/src/solana/toolbox.ts | 212 ++++++++++-------- packages/wallets/package.json | 2 +- packages/wallets/src/bitget/helpers.ts | 3 +- packages/wallets/src/ctrl/walletHelpers.ts | 3 +- packages/wallets/src/ledger/index.ts | 2 +- packages/wallets/src/phantom/index.ts | 7 +- packages/wallets/src/walletconnect/index.ts | 2 +- playgrounds/nextjs/package.json | 2 +- playgrounds/vite/package.json | 5 +- playgrounds/vite/src/App.tsx | 13 +- playgrounds/vite/src/Multisig/index.tsx | 3 +- playgrounds/vite/vite.config.ts | 16 +- 21 files changed, 486 insertions(+), 323 deletions(-) diff --git a/bun.lock b/bun.lock index 24fc304d3..55548b31a 100644 --- a/bun.lock +++ b/bun.lock @@ -52,7 +52,6 @@ "version": "2.2.17", "dependencies": { "@swapkit/core": "workspace:*", - "@swapkit/helpers": "workspace:*", "@swapkit/plugins": "workspace:*", "@swapkit/wallets": "workspace:*", }, @@ -143,7 +142,7 @@ "devDependencies": { "@types/ripemd160": "2.0.3", "@walletconnect/logger": "2.1.2", - "@walletconnect/types": "2.13.3", + "@walletconnect/types": "2.18.1", }, }, "playgrounds/nextjs": { @@ -204,7 +203,7 @@ "autoprefixer": "10.4.20", "global": "4.4.0", "node-polyfill-webpack-plugin": "4.1.0", - "postcss": "8.5.2", + "postcss": "8.5.3", "tailwindcss": "4.0.7", "typescript": "5.7.3", }, @@ -236,7 +235,10 @@ "vite-plugin-node-polyfills": "0.23.0", }, "devDependencies": { + "@react-scan/vite-plugin-react-scan": "0.1.3", "@vitejs/plugin-react": "4.3.4", + "react-scan": "0.1.3", + "rollup-plugin-visualizer": "5.14.0", "typescript": "5.7.3", "vite-plugin-top-level-await": "1.5.0", "vite-plugin-wasm": "3.4.1", @@ -323,6 +325,8 @@ "@babel/plugin-transform-modules-commonjs": ["@babel/plugin-transform-modules-commonjs@7.26.3", "", { "dependencies": { "@babel/helper-module-transforms": "^7.26.0", "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ=="], + "@babel/plugin-transform-react-jsx": ["@babel/plugin-transform-react-jsx@7.25.9", "", { "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-module-imports": "^7.25.9", "@babel/helper-plugin-utils": "^7.25.9", "@babel/plugin-syntax-jsx": "^7.25.9", "@babel/types": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw=="], + "@babel/plugin-transform-react-jsx-self": ["@babel/plugin-transform-react-jsx-self@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg=="], "@babel/plugin-transform-react-jsx-source": ["@babel/plugin-transform-react-jsx-source@7.25.9", "", { "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg=="], @@ -407,6 +411,10 @@ "@changesets/write": ["@changesets/write@0.4.0", "", { "dependencies": { "@changesets/types": "^6.1.0", "fs-extra": "^7.0.1", "human-id": "^4.1.1", "prettier": "^2.7.1" } }, "sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q=="], + "@clack/core": ["@clack/core@0.3.5", "", { "dependencies": { "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-5cfhQNH+1VQ2xLQlmzXMqUoiaH0lRBq9/CLW9lTyMbuKLC3+xEK01tHVvyut++mLOn5urSHmkm6I0Lg9MaJSTQ=="], + + "@clack/prompts": ["@clack/prompts@0.8.2", "", { "dependencies": { "@clack/core": "0.3.5", "picocolors": "^1.0.0", "sisteransi": "^1.0.5" } }, "sha512-6b9Ab2UiZwJYA9iMyboYyW9yJvAO9V753ZhS+DHKEjZRKAxPPOb7MXXu84lsPFG+vZt6FRFniZ8rXi+zCIw4yQ=="], + "@coinbase/wallet-sdk": ["@coinbase/wallet-sdk@4.3.0", "", { "dependencies": { "@noble/hashes": "^1.4.0", "clsx": "^1.2.1", "eventemitter3": "^5.0.1", "preact": "^10.24.2" } }, "sha512-T3+SNmiCw4HzDm4we9wCHCxlP0pqCiwKe4sOwPH3YAK2KSKjxPRydKu6UQJrdONFVLG7ujXvbd/6ZqmvJb8rkw=="], "@cosmjs/amino": ["@cosmjs/amino@0.33.0", "", { "dependencies": { "@cosmjs/crypto": "^0.33.0", "@cosmjs/encoding": "^0.33.0", "@cosmjs/math": "^0.33.0", "@cosmjs/utils": "^0.33.0" } }, "sha512-a4qnWGzuM2IrlkDTFQmU7bDd+wNIzyvfcRIZ43i00ZHvTEtrCcWopT94rIv/Zy6fdgkhQ3HWrsGVlIPDT/ibRw=="], @@ -797,6 +805,8 @@ "@passkeys/react": ["@passkeys/react@2.5.3", "", { "peerDependencies": { "react": "^18.2.0 || ^19.0.0", "react-dom": "^18.2.0 || ^19.0.0" } }, "sha512-CoI2p5jgGl22u3pnslw4MLVWUDEggJWEppcFjoITfxMp5RBQk2DsF9N+beesflwQJFZ0BoVvPdnKrVknLr3/4g=="], + "@pivanov/utils": ["@pivanov/utils@0.0.1", "", { "peerDependencies": { "react": ">=18", "react-dom": ">=18" } }, "sha512-JQ/pXeG9/Yq3UuwH2Xp4F6bSAIDGzbxT0Vrg/82tMi3Yp+Ps9AYzjSDE+zfvBRqc7J11V6MMonUrWj4+2dYgrg=="], + "@polkadot-api/json-rpc-provider": ["@polkadot-api/json-rpc-provider@0.0.1", "", {}, "sha512-/SMC/l7foRjpykLTUTacIH05H3mr9ip8b5xxfwXlVezXrNVLp3Cv0GX6uItkKd+ZjzVPf3PFrDF2B2/HLSNESA=="], "@polkadot-api/json-rpc-provider-proxy": ["@polkadot-api/json-rpc-provider-proxy@0.1.0", "", {}, "sha512-8GSFE5+EF73MCuLQm8tjrbCqlgclcHBSRaswvXziJ0ZW7iw3UEMsKkkKvELayWyBuOPa2T5i1nj6gFOeIsqvrg=="], @@ -871,6 +881,10 @@ "@polkadot/x-ws": ["@polkadot/x-ws@13.4.3", "", { "dependencies": { "@polkadot/x-global": "13.4.3", "tslib": "^2.8.0", "ws": "^8.18.0" } }, "sha512-GS0I6MYLD/xNAAjODZi/pbG7Ba0e/5sbvDIrT01iKH3SPGN+PZoyAsc04t2IOXA6QmPa1OBHnaU3N4K8gGmJ+w=="], + "@preact/signals": ["@preact/signals@1.3.2", "", { "dependencies": { "@preact/signals-core": "^1.7.0" }, "peerDependencies": { "preact": "10.x" } }, "sha512-naxcJgUJ6BTOROJ7C3QML7KvwKwCXQJYTc5L/b0eEsdYgPB6SxwoQ1vDGcS0Q7GVjAenVq/tXrybVdFShHYZWg=="], + + "@preact/signals-core": ["@preact/signals-core@1.8.0", "", {}, "sha512-OBvUsRZqNmjzCZXWLxkZfhcgT+Fk8DDcT/8vD6a1xhDemodyy87UJRJfASMuSD8FaAIeGgGm85ydXhm7lr4fyA=="], + "@protobufjs/aspromise": ["@protobufjs/aspromise@1.1.2", "", {}, "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ=="], "@protobufjs/base64": ["@protobufjs/base64@1.1.2", "", {}, "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="], @@ -993,6 +1007,8 @@ "@radixdlt/wallet-sdk": ["@radixdlt/wallet-sdk@1.0.1", "", { "dependencies": { "neverthrow": "^6.0.0", "rxjs": "^7.8.1", "tslog": "^4.8.2", "zod": "^3.21.4" } }, "sha512-g6TY1kUihJrECKBKs+dbTFrfzUU3bj1H2ySeaiHRNs/40eRH2Vw6heyb8DRHSkfhTzhPxXBzQxQdk908RgktUA=="], + "@react-scan/vite-plugin-react-scan": ["@react-scan/vite-plugin-react-scan@0.1.3", "", { "dependencies": { "@babel/core": "^7.26.0", "@babel/plugin-transform-react-jsx": "^7.25.9", "@babel/preset-typescript": "^7.23.3", "babel-plugin-add-react-displayname": "^0.0.5", "cheerio": "^1.0.0" }, "peerDependencies": { "react-scan": "^0.1.0", "vite": "^2 || ^3 || ^4 || ^5 || ^6" } }, "sha512-cQLvTSePL6T+58u5HON2vBL53C7REPodrK9M7totyyD5+Vv5vTBGjQZC1o2iPSv62VgeUwueYnzhqAdTHlEc6A=="], + "@rollup/plugin-inject": ["@rollup/plugin-inject@5.0.5", "", { "dependencies": { "@rollup/pluginutils": "^5.0.1", "estree-walker": "^2.0.2", "magic-string": "^0.30.3" }, "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg=="], "@rollup/plugin-virtual": ["@rollup/plugin-virtual@3.0.2", "", { "peerDependencies": { "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "optionalPeers": ["rollup"] }, "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A=="], @@ -1397,7 +1413,7 @@ "@walletconnect/time": ["@walletconnect/time@1.0.2", "", { "dependencies": { "tslib": "1.14.1" } }, "sha512-uzdd9woDcJ1AaBZRhqy5rNC9laqWGErfc4dxA9a87mPdKOgWMD85mcFo9dIYIts/Jwocfwn07EC6EzclKubk/g=="], - "@walletconnect/types": ["@walletconnect/types@2.13.3", "", { "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-types": "1.0.4", "@walletconnect/keyvaluestorage": "1.1.1", "@walletconnect/logger": "2.1.2", "events": "3.3.0" } }, "sha512-9UdtLoQqwGFfepCPprUAXeUbKg9zyDarPRmEJVco51OWXHCOpvRgroWk54fQHDhCUIfDELjObY6XNAzNrmNYUA=="], + "@walletconnect/types": ["@walletconnect/types@2.18.1", "", { "dependencies": { "@walletconnect/events": "1.0.1", "@walletconnect/heartbeat": "1.2.2", "@walletconnect/jsonrpc-types": "1.0.4", "@walletconnect/keyvaluestorage": "1.1.1", "@walletconnect/logger": "2.1.2", "events": "3.3.0" } }, "sha512-GJs//PzR9CAQ4vsTe6FiwbmyYD4Pr0OS4FHZQe6p2+Fo5wRzEs6otOx0BwNM67CEEHxdT4LqDOWzE0cSoZhpcw=="], "@walletconnect/utils": ["@walletconnect/utils@2.10.0", "", { "dependencies": { "@stablelib/chacha20poly1305": "1.0.1", "@stablelib/hkdf": "1.0.1", "@stablelib/random": "^1.0.2", "@stablelib/sha256": "1.0.1", "@stablelib/x25519": "^1.0.3", "@walletconnect/relay-api": "^1.0.9", "@walletconnect/safe-json": "^1.0.2", "@walletconnect/time": "^1.0.2", "@walletconnect/types": "2.10.0", "@walletconnect/window-getters": "^1.0.1", "@walletconnect/window-metadata": "^1.0.1", "detect-browser": "5.3.0", "query-string": "7.1.3", "uint8arrays": "^3.1.0" } }, "sha512-9GRyEz/7CJW+G04RvrjPET5k7hOEsB9b3fF9cWDk/iDCxSWpbkU/hv/urRB36C+gvQMAZgIZYX3dHfzJWkY/2g=="], @@ -1519,6 +1535,8 @@ "axios": ["axios@1.7.9", "", { "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", "proxy-from-env": "^1.1.0" } }, "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw=="], + "babel-plugin-add-react-displayname": ["babel-plugin-add-react-displayname@0.0.5", "", {}, "sha512-LY3+Y0XVDYcShHHorshrDbt4KFWL4bSeniCtl4SYZbask+Syngk1uMPCeN9+nSiZo6zX5s0RTq/J9Pnaaf/KHw=="], + "balanced-match": ["balanced-match@1.0.2", "", {}, "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="], "base-x": ["base-x@3.0.10", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ=="], @@ -1555,6 +1573,8 @@ "bip66": ["bip66@1.1.5", "", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw=="], + "bippy": ["bippy@0.2.7", "", {}, "sha512-LTCos3SmOJHrag0qF91tLUZMMw6wA+i15ESRBp71pvfNlTMYcxYoJHJ/pvFhd+29Wm5vfgVxBHV7kP5OKUUipg=="], + "bitcoin-address-validation": ["bitcoin-address-validation@2.2.3", "", { "dependencies": { "base58-js": "^1.0.0", "bech32": "^2.0.0", "sha256-uint8array": "^0.10.3" } }, "sha512-1uGCGl26Ye8JG5qcExtFLQfuib6qEZWNDo1ZlLlwp/z7ygUFby3IxolgEfgMGaC+LG9csbVASLcH8fRLv7DIOg=="], "bitcoin-ops": ["bitcoin-ops@1.4.1", "", {}, "sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow=="], @@ -1567,6 +1587,8 @@ "bn.js": ["bn.js@5.2.1", "", {}, "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="], + "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], + "borsh": ["borsh@0.7.0", "", { "dependencies": { "bn.js": "^5.2.0", "bs58": "^4.0.0", "text-encoding-utf-8": "^1.0.2" } }, "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA=="], "bowser": ["bowser@2.11.0", "", {}, "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA=="], @@ -1647,6 +1669,10 @@ "check-error": ["check-error@1.0.3", "", { "dependencies": { "get-func-name": "^2.0.2" } }, "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg=="], + "cheerio": ["cheerio@1.0.0", "", { "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", "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" } }, "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww=="], + + "cheerio-select": ["cheerio-select@2.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-select": "^5.1.0", "css-what": "^6.1.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.0.1" } }, "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g=="], + "chokidar": ["chokidar@4.0.3", "", { "dependencies": { "readdirp": "^4.0.1" } }, "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA=="], "chrome-trace-event": ["chrome-trace-event@1.0.4", "", {}, "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ=="], @@ -1665,7 +1691,7 @@ "client-only": ["client-only@0.0.1", "", {}, "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="], - "cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="], + "cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], @@ -1731,6 +1757,10 @@ "crypto-js": ["crypto-js@4.2.0", "", {}, "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="], + "css-select": ["css-select@5.1.0", "", { "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", "domhandler": "^5.0.2", "domutils": "^3.0.1", "nth-check": "^2.0.1" } }, "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg=="], + + "css-what": ["css-what@6.1.0", "", {}, "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw=="], + "csstype": ["csstype@3.1.3", "", {}, "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw=="], "data-uri-to-buffer": ["data-uri-to-buffer@4.0.1", "", {}, "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A=="], @@ -1757,6 +1787,8 @@ "define-data-property": ["define-data-property@1.1.4", "", { "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", "gopd": "^1.0.1" } }, "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A=="], + "define-lazy-prop": ["define-lazy-prop@2.0.0", "", {}, "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og=="], + "define-properties": ["define-properties@1.2.1", "", { "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" } }, "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg=="], "defu": ["defu@6.1.4", "", {}, "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg=="], @@ -1789,10 +1821,18 @@ "dir-glob": ["dir-glob@3.0.1", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="], + "dom-serializer": ["dom-serializer@2.0.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", "entities": "^4.2.0" } }, "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg=="], + "dom-walk": ["dom-walk@0.1.2", "", {}, "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w=="], "domain-browser": ["domain-browser@4.22.0", "", {}, "sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw=="], + "domelementtype": ["domelementtype@2.3.0", "", {}, "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw=="], + + "domhandler": ["domhandler@5.0.3", "", { "dependencies": { "domelementtype": "^2.3.0" } }, "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w=="], + + "domutils": ["domutils@3.2.2", "", { "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", "domhandler": "^5.0.3" } }, "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw=="], + "dotenv": ["dotenv@8.6.0", "", {}, "sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g=="], "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="], @@ -1813,12 +1853,16 @@ "encode-utf8": ["encode-utf8@1.0.3", "", {}, "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw=="], + "encoding-sniffer": ["encoding-sniffer@0.2.0", "", { "dependencies": { "iconv-lite": "^0.6.3", "whatwg-encoding": "^3.1.1" } }, "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg=="], + "end-of-stream": ["end-of-stream@1.4.4", "", { "dependencies": { "once": "^1.4.0" } }, "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q=="], "enhanced-resolve": ["enhanced-resolve@5.18.1", "", { "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" } }, "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg=="], "enquirer": ["enquirer@2.4.1", "", { "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" } }, "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ=="], + "entities": ["entities@4.5.0", "", {}, "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw=="], + "env-paths": ["env-paths@2.2.1", "", {}, "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A=="], "es-define-property": ["es-define-property@1.0.1", "", {}, "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g=="], @@ -1851,7 +1895,7 @@ "estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="], - "estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "estree-walker": ["estree-walker@3.0.3", "", { "dependencies": { "@types/estree": "^1.0.0" } }, "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g=="], "esutils": ["esutils@2.0.3", "", {}, "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g=="], @@ -1953,6 +1997,8 @@ "get-proto": ["get-proto@1.0.1", "", { "dependencies": { "dunder-proto": "^1.0.1", "es-object-atoms": "^1.0.0" } }, "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g=="], + "get-tsconfig": ["get-tsconfig@4.10.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A=="], + "ghost-testrpc": ["ghost-testrpc@0.0.2", "", { "dependencies": { "chalk": "^2.4.2", "node-emoji": "^1.10.0" }, "bin": { "testrpc-sc": "./index.js" } }, "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ=="], "glob": ["glob@7.1.7", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ=="], @@ -2007,6 +2053,8 @@ "hmac-drbg": ["hmac-drbg@1.0.1", "", { "dependencies": { "hash.js": "^1.0.3", "minimalistic-assert": "^1.0.0", "minimalistic-crypto-utils": "^1.0.1" } }, "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg=="], + "htmlparser2": ["htmlparser2@9.1.0", "", { "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", "domutils": "^3.1.0", "entities": "^4.5.0" } }, "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ=="], + "http-basic": ["http-basic@8.1.3", "", { "dependencies": { "caseless": "^0.12.0", "concat-stream": "^1.6.2", "http-response-object": "^3.0.1", "parse-cache-control": "^1.0.1" } }, "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw=="], "http-errors": ["http-errors@2.0.0", "", { "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": "2.0.1", "toidentifier": "1.0.1" } }, "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ=="], @@ -2061,6 +2109,8 @@ "is-callable": ["is-callable@1.2.7", "", {}, "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA=="], + "is-docker": ["is-docker@2.2.1", "", { "bin": { "is-docker": "cli.js" } }, "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ=="], + "is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="], "is-fullwidth-code-point": ["is-fullwidth-code-point@3.0.0", "", {}, "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg=="], @@ -2089,6 +2139,8 @@ "is-windows": ["is-windows@1.0.2", "", {}, "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA=="], + "is-wsl": ["is-wsl@2.2.0", "", { "dependencies": { "is-docker": "^2.0.0" } }, "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww=="], + "isarray": ["isarray@1.0.0", "", {}, "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="], "isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="], @@ -2139,7 +2191,7 @@ "kind-of": ["kind-of@6.0.3", "", {}, "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw=="], - "kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], + "kleur": ["kleur@4.1.5", "", {}, "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ=="], "lefthook": ["lefthook@1.10.10", "", { "optionalDependencies": { "lefthook-darwin-arm64": "1.10.10", "lefthook-darwin-x64": "1.10.10", "lefthook-freebsd-arm64": "1.10.10", "lefthook-freebsd-x64": "1.10.10", "lefthook-linux-arm64": "1.10.10", "lefthook-linux-x64": "1.10.10", "lefthook-openbsd-arm64": "1.10.10", "lefthook-openbsd-x64": "1.10.10", "lefthook-windows-arm64": "1.10.10", "lefthook-windows-x64": "1.10.10" }, "bin": { "lefthook": "bin/index.js" } }, "sha512-YW0fTONgOXsephvXq2gIFbegCW19MHCyKYX7JDWmzVF1ZiVMnDBYUL/SP3i0RtFvlCmqENl4SgKwYYQGUMnvig=="], @@ -2311,6 +2363,8 @@ "npm-check-updates": ["npm-check-updates@17.1.14", "", { "bin": { "npm-check-updates": "build/cli.js", "ncu": "build/cli.js" } }, "sha512-dr4bXIxETubLI1tFGeock5hN8yVjahvaVpx+lPO4/O2md3zJuxB7FgH3MIoTvQSCgsgkIRpe0skti01IEAA5tA=="], + "nth-check": ["nth-check@2.1.1", "", { "dependencies": { "boolbase": "^1.0.0" } }, "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w=="], + "number-to-bn": ["number-to-bn@1.7.0", "", { "dependencies": { "bn.js": "4.11.6", "strip-hex-prefix": "1.0.0" } }, "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig=="], "object-assign": ["object-assign@4.1.1", "", {}, "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg=="], @@ -2333,6 +2387,8 @@ "once": ["once@1.4.0", "", { "dependencies": { "wrappy": "1" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="], + "open": ["open@8.4.2", "", { "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", "is-wsl": "^2.2.0" } }, "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ=="], + "optionator": ["optionator@0.8.3", "", { "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "word-wrap": "~1.2.3" } }, "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA=="], "ordinal": ["ordinal@1.0.3", "", {}, "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ=="], @@ -2361,6 +2417,12 @@ "parse-cache-control": ["parse-cache-control@1.0.1", "", {}, "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg=="], + "parse5": ["parse5@7.2.1", "", { "dependencies": { "entities": "^4.5.0" } }, "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ=="], + + "parse5-htmlparser2-tree-adapter": ["parse5-htmlparser2-tree-adapter@7.1.0", "", { "dependencies": { "domhandler": "^5.0.3", "parse5": "^7.0.0" } }, "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g=="], + + "parse5-parser-stream": ["parse5-parser-stream@7.1.2", "", { "dependencies": { "parse5": "^7.0.0" } }, "sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow=="], + "path-browserify": ["path-browserify@1.0.1", "", {}, "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="], "path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="], @@ -2391,11 +2453,15 @@ "pkg-dir": ["pkg-dir@5.0.0", "", { "dependencies": { "find-up": "^5.0.0" } }, "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA=="], + "playwright": ["playwright@1.50.1", "", { "dependencies": { "playwright-core": "1.50.1" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw=="], + + "playwright-core": ["playwright-core@1.50.1", "", { "bin": { "playwright-core": "cli.js" } }, "sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ=="], + "pngjs": ["pngjs@5.0.0", "", {}, "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw=="], "possible-typed-array-names": ["possible-typed-array-names@1.1.0", "", {}, "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg=="], - "postcss": ["postcss@8.5.2", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA=="], + "postcss": ["postcss@8.5.3", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A=="], "postcss-value-parser": ["postcss-value-parser@4.2.0", "", {}, "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ=="], @@ -2465,6 +2531,8 @@ "react-remove-scroll-bar": ["react-remove-scroll-bar@2.3.8", "", { "dependencies": { "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "optionalPeers": ["@types/react"] }, "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q=="], + "react-scan": ["react-scan@0.1.3", "", { "dependencies": { "@babel/core": "^7.26.0", "@babel/generator": "^7.26.2", "@babel/types": "^7.26.0", "@clack/core": "^0.3.5", "@clack/prompts": "^0.8.2", "@pivanov/utils": "^0.0.1", "@preact/signals": "^1.3.1", "@rollup/pluginutils": "^5.1.3", "@types/node": "^20.17.9", "bippy": "0.2.7", "esbuild": "^0.24.0", "estree-walker": "^3.0.3", "kleur": "^4.1.5", "mri": "^1.2.0", "playwright": "^1.49.0", "preact": "^10.25.1", "tsx": "^4.0.0" }, "optionalDependencies": { "unplugin": "2.1.0" }, "peerDependencies": { "@remix-run/react": ">=1.0.0", "next": ">=13.0.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", "react-router": "^5.0.0 || ^6.0.0 || ^7.0.0", "react-router-dom": "^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@remix-run/react", "next", "react-router", "react-router-dom"], "bin": { "react-scan": "bin/cli.js" } }, "sha512-mPhceIDUm6KugQPOF6PcQWBxo49/ZX7TnP5+/f/wbz7/36sM1A3ESAIAOXe+Leha30AJPriG1U4nABnEF4N8vQ=="], + "react-style-singleton": ["react-style-singleton@2.2.3", "", { "dependencies": { "get-nonce": "^1.0.0", "tslib": "^2.0.0" }, "peerDependencies": { "@types/react": "*", "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "optionalPeers": ["@types/react"] }, "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ=="], "read-yaml-file": ["read-yaml-file@1.1.0", "", { "dependencies": { "graceful-fs": "^4.1.5", "js-yaml": "^3.6.1", "pify": "^4.0.1", "strip-bom": "^3.0.0" } }, "sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA=="], @@ -2503,6 +2571,8 @@ "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], + "resolve-pkg-maps": ["resolve-pkg-maps@1.0.0", "", {}, "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw=="], + "reusify": ["reusify@1.0.4", "", {}, "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw=="], "ripemd160": ["ripemd160@2.0.2", "", { "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" } }, "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA=="], @@ -2525,6 +2595,8 @@ "rollup-plugin-node-polyfills": ["rollup-plugin-node-polyfills@0.2.1", "", { "dependencies": { "rollup-plugin-inject": "^3.0.0" } }, "sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA=="], + "rollup-plugin-visualizer": ["rollup-plugin-visualizer@5.14.0", "", { "dependencies": { "open": "^8.4.0", "picomatch": "^4.0.2", "source-map": "^0.7.4", "yargs": "^17.5.1" }, "peerDependencies": { "rolldown": "1.x", "rollup": "2.x || 3.x || 4.x" }, "optionalPeers": ["rolldown", "rollup"], "bin": { "rollup-plugin-visualizer": "dist/bin/cli.js" } }, "sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA=="], + "rollup-pluginutils": ["rollup-pluginutils@2.8.2", "", { "dependencies": { "estree-walker": "^0.6.1" } }, "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ=="], "rpc-websockets": ["rpc-websockets@9.0.4", "", { "dependencies": { "@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" }, "optionalDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": "^5.0.2" } }, "sha512-yWZWN0M+bivtoNLnaDbtny4XchdAIF5Q4g/ZsC5UC61Ckbp0QczwO8fg44rV3uYmY4WHd+EZQbn90W1d8ojzqQ=="], @@ -2617,7 +2689,7 @@ "sonner": ["sonner@2.0.0", "", { "peerDependencies": { "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "sha512-3WeSl3WrEdhmdiTniT8JsCiVRVDOdn7k+4MG2drqzSMOeqrExm03HIwDBPKuq52JBqL7wRLG17QBIiSleUbljw=="], - "source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "source-map": ["source-map@0.7.4", "", {}, "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA=="], "source-map-js": ["source-map-js@1.2.1", "", {}, "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA=="], @@ -2737,6 +2809,8 @@ "tsort": ["tsort@0.0.1", "", {}, "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw=="], + "tsx": ["tsx@4.19.3", "", { "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "bin": { "tsx": "dist/cli.mjs" } }, "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ=="], + "tty-browserify": ["tty-browserify@0.0.1", "", {}, "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw=="], "tweetnacl": ["tweetnacl@1.0.3", "", {}, "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw=="], @@ -2779,6 +2853,8 @@ "unpipe": ["unpipe@1.0.0", "", {}, "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ=="], + "unplugin": ["unplugin@2.1.0", "", { "dependencies": { "acorn": "^8.14.0", "webpack-virtual-modules": "^0.6.2" } }, "sha512-us4j03/499KhbGP8BU7Hrzrgseo+KdfJYWcbcajCOqsAyb8Gk0Yn2kiUIcZISYCb1JFaZfIuG3b42HmguVOKCQ=="], + "unstorage": ["unstorage@1.14.4", "", { "dependencies": { "anymatch": "^3.1.3", "chokidar": "^3.6.0", "destr": "^2.0.3", "h3": "^1.13.0", "lru-cache": "^10.4.3", "node-fetch-native": "^1.6.4", "ofetch": "^1.4.1", "ufo": "^1.5.4" }, "peerDependencies": { "@azure/app-configuration": "^1.8.0", "@azure/cosmos": "^4.2.0", "@azure/data-tables": "^13.3.0", "@azure/identity": "^4.5.0", "@azure/keyvault-secrets": "^4.9.0", "@azure/storage-blob": "^12.26.0", "@capacitor/preferences": "^6.0.3", "@deno/kv": ">=0.8.4", "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0", "@planetscale/database": "^1.19.0", "@upstash/redis": "^1.34.3", "@vercel/blob": ">=0.27.0", "@vercel/kv": "^1.0.1", "aws4fetch": "^1.0.20", "db0": ">=0.2.1", "idb-keyval": "^6.2.1", "ioredis": "^5.4.2", "uploadthing": "^7.4.1" }, "optionalPeers": ["@azure/app-configuration", "@azure/cosmos", "@azure/data-tables", "@azure/identity", "@azure/keyvault-secrets", "@azure/storage-blob", "@capacitor/preferences", "@deno/kv", "@netlify/blobs", "@planetscale/database", "@upstash/redis", "@vercel/blob", "@vercel/kv", "aws4fetch", "db0", "idb-keyval", "ioredis", "uploadthing"] }, "sha512-1SYeamwuYeQJtJ/USE1x4l17LkmQBzg7deBJ+U9qOBoHo15d1cDxG4jM31zKRgF7pG0kirZy4wVMX6WL6Zoscg=="], "update-browserslist-db": ["update-browserslist-db@1.1.2", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg=="], @@ -2837,8 +2913,14 @@ "webpack-sources": ["webpack-sources@3.2.3", "", {}, "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w=="], + "webpack-virtual-modules": ["webpack-virtual-modules@0.6.2", "", {}, "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ=="], + + "whatwg-encoding": ["whatwg-encoding@3.1.1", "", { "dependencies": { "iconv-lite": "0.6.3" } }, "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ=="], + "whatwg-fetch": ["whatwg-fetch@3.6.20", "", {}, "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg=="], + "whatwg-mimetype": ["whatwg-mimetype@4.0.0", "", {}, "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg=="], + "whatwg-url": ["whatwg-url@5.0.0", "", { "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw=="], "which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="], @@ -2873,9 +2955,9 @@ "yallist": ["yallist@3.1.1", "", {}, "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="], - "yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="], + "yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - "yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="], + "yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], "yargs-unparser": ["yargs-unparser@2.0.0", "", { "dependencies": { "camelcase": "^6.0.0", "decamelize": "^4.0.0", "flat": "^5.0.2", "is-plain-obj": "^2.1.0" } }, "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA=="], @@ -3063,6 +3145,10 @@ "@radixdlt/wallet-sdk/neverthrow": ["neverthrow@6.2.2", "", {}, "sha512-POR1FACqdK9jH0S2kRPzaZEvzT11wsOxLW520PQV/+vKi9dQe+hXq19EiOvYx7lSRaF5VB9lYGsPInynrnN05w=="], + "@rollup/plugin-inject/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + + "@rollup/pluginutils/estree-walker": ["estree-walker@2.0.2", "", {}, "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="], + "@sats-connect/make-default-provider-config/@sats-connect/ui": ["@sats-connect/ui@0.0.6", "", {}, "sha512-H3bFFhr9CcY1oNosNi/QJszmMHSht4U19bUWfM3vzayAKgV4ebY6iUnRK5g3p2rVLLWVzlpaw1J9m+7JWwyBfA=="], "@scure/bip32/@noble/curves": ["@noble/curves@1.8.1", "", { "dependencies": { "@noble/hashes": "1.7.1" } }, "sha512-warwspo+UYUPep0Q+vtdVB4Ugn8GGQj8iyB3gnRWsztmUHTI3S1nhdiWNsPUGL0vud7JlRRk1XEu7Lq1KGTnMQ=="], @@ -3253,8 +3339,6 @@ "abi-wan-kanabi/fs-extra": ["fs-extra@10.1.0", "", { "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" } }, "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ=="], - "abi-wan-kanabi/yargs": ["yargs@17.7.2", "", { "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", "yargs-parser": "^21.1.1" } }, "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w=="], - "ansi-escapes/type-fest": ["type-fest@0.21.3", "", {}, "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w=="], "ansi-styles/color-convert": ["color-convert@1.9.3", "", { "dependencies": { "color-name": "1.1.3" } }, "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="], @@ -3297,6 +3381,8 @@ "chalk/supports-color": ["supports-color@5.5.0", "", { "dependencies": { "has-flag": "^3.0.0" } }, "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow=="], + "cheerio/undici": ["undici@6.21.1", "", {}, "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ=="], + "cli-table3/string-width": ["string-width@2.1.1", "", { "dependencies": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" } }, "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw=="], "command-line-usage/array-back": ["array-back@4.0.2", "", {}, "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg=="], @@ -3313,6 +3399,8 @@ "elliptic/bn.js": ["bn.js@4.12.1", "", {}, "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg=="], + "encoding-sniffer/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "escodegen/estraverse": ["estraverse@1.9.3", "", {}, "sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA=="], "escodegen/source-map": ["source-map@0.2.0", "", { "dependencies": { "amdefine": ">=0.0.4" } }, "sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA=="], @@ -3345,6 +3433,8 @@ "global-prefix/which": ["which@1.3.1", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "which": "./bin/which" } }, "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ=="], + "handlebars/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "hardhat/ci-info": ["ci-info@2.0.0", "", {}, "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ=="], "hardhat/semver": ["semver@6.3.1", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="], @@ -3383,6 +3473,10 @@ "mocha/glob": ["glob@8.1.0", "", { "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^5.0.1", "once": "^1.3.0" } }, "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ=="], + "mocha/yargs": ["yargs@16.2.0", "", { "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" } }, "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw=="], + + "mocha/yargs-parser": ["yargs-parser@20.2.9", "", {}, "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w=="], + "ndjson/split2": ["split2@3.2.2", "", { "dependencies": { "readable-stream": "^3.0.0" } }, "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg=="], "next/postcss": ["postcss@8.4.31", "", { "dependencies": { "nanoid": "^3.3.6", "picocolors": "^1.0.0", "source-map-js": "^1.0.2" } }, "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ=="], @@ -3395,6 +3489,10 @@ "p-locate/p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="], + "playwright/fsevents": ["fsevents@2.3.2", "", { "os": "darwin" }, "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA=="], + + "prompts/kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="], + "psl/punycode": ["punycode@2.3.1", "", {}, "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg=="], "public-encrypt/bn.js": ["bn.js@4.12.1", "", {}, "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg=="], @@ -3405,6 +3503,8 @@ "react-remove-scroll-bar/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "react-scan/@types/node": ["@types/node@20.17.19", "", { "dependencies": { "undici-types": "~6.19.2" } }, "sha512-LEwC7o1ifqg/6r2gn9Dns0f1rhK+fPFDoMiceTJ6kWmVk6bgXBI/9IOWfVan4WiAavK9pIVWdX0/e3J+eEUh5A=="], + "react-style-singleton/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], "read-yaml-file/js-yaml": ["js-yaml@3.14.1", "", { "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g=="], @@ -3465,6 +3565,8 @@ "solidity-coverage/globby": ["globby@10.0.2", "", { "dependencies": { "@types/glob": "^7.1.1", "array-union": "^2.1.0", "dir-glob": "^3.0.1", "fast-glob": "^3.0.3", "glob": "^7.1.3", "ignore": "^5.1.1", "merge2": "^1.2.3", "slash": "^3.0.0" } }, "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg=="], + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], + "stacktrace-parser/type-fest": ["type-fest@0.7.1", "", {}, "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg=="], "starknet/@noble/curves": ["@noble/curves@1.7.0", "", { "dependencies": { "@noble/hashes": "1.6.0" } }, "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw=="], @@ -3489,6 +3591,8 @@ "ts-command-line-args/chalk": ["chalk@4.1.2", "", { "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="], + "tsx/esbuild": ["esbuild@0.25.0", "", { "optionalDependencies": { "@esbuild/aix-ppc64": "0.25.0", "@esbuild/android-arm": "0.25.0", "@esbuild/android-arm64": "0.25.0", "@esbuild/android-x64": "0.25.0", "@esbuild/darwin-arm64": "0.25.0", "@esbuild/darwin-x64": "0.25.0", "@esbuild/freebsd-arm64": "0.25.0", "@esbuild/freebsd-x64": "0.25.0", "@esbuild/linux-arm": "0.25.0", "@esbuild/linux-arm64": "0.25.0", "@esbuild/linux-ia32": "0.25.0", "@esbuild/linux-loong64": "0.25.0", "@esbuild/linux-mips64el": "0.25.0", "@esbuild/linux-ppc64": "0.25.0", "@esbuild/linux-riscv64": "0.25.0", "@esbuild/linux-s390x": "0.25.0", "@esbuild/linux-x64": "0.25.0", "@esbuild/netbsd-arm64": "0.25.0", "@esbuild/netbsd-x64": "0.25.0", "@esbuild/openbsd-arm64": "0.25.0", "@esbuild/openbsd-x64": "0.25.0", "@esbuild/sunos-x64": "0.25.0", "@esbuild/win32-arm64": "0.25.0", "@esbuild/win32-ia32": "0.25.0", "@esbuild/win32-x64": "0.25.0" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw=="], + "unstorage/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], "unstorage/lru-cache": ["lru-cache@10.4.3", "", {}, "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ=="], @@ -3499,8 +3603,12 @@ "use-sidecar/tslib": ["tslib@2.8.1", "", {}, "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w=="], + "vite/postcss": ["postcss@8.5.2", "", { "dependencies": { "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" } }, "sha512-MjOadfU3Ys9KYoX0AdkBlFEF1Vx37uCCeN4ZHnmwm9FfpbsGWMZeBLMmmpY+6Ocqod7mkdZ0DT31OlbsFrLlkA=="], + "web3-utils/ethereum-cryptography": ["ethereum-cryptography@2.2.1", "", { "dependencies": { "@noble/curves": "1.4.2", "@noble/hashes": "1.4.0", "@scure/bip32": "1.4.0", "@scure/bip39": "1.3.0" } }, "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg=="], + "whatwg-encoding/iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw=="], + "wif/bs58check": ["bs58check@2.1.2", "", { "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", "safe-buffer": "^5.1.2" } }, "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA=="], "wordwrapjs/typical": ["typical@5.2.0", "", {}, "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg=="], @@ -3721,10 +3829,6 @@ "abi-wan-kanabi/fs-extra/universalify": ["universalify@2.0.1", "", {}, "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw=="], - "abi-wan-kanabi/yargs/cliui": ["cliui@8.0.1", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" } }, "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ=="], - - "abi-wan-kanabi/yargs/yargs-parser": ["yargs-parser@21.1.1", "", {}, "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw=="], - "ansi-styles/color-convert/color-name": ["color-name@1.1.3", "", {}, "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw=="], "bitcoinjs-lib/bs58check/bs58": ["bs58@5.0.0", "", { "dependencies": { "base-x": "^4.0.0" } }, "sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ=="], @@ -3771,6 +3875,8 @@ "mocha/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], + "mocha/yargs/cliui": ["cliui@7.0.4", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ=="], + "qrcode/yargs/cliui": ["cliui@6.0.0", "", { "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^6.2.0" } }, "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ=="], "qrcode/yargs/decamelize": ["decamelize@1.2.0", "", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="], @@ -3781,6 +3887,8 @@ "qrcode/yargs/yargs-parser": ["yargs-parser@18.1.3", "", { "dependencies": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } }, "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ=="], + "react-scan/@types/node/undici-types": ["undici-types@6.19.8", "", {}, "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="], + "read-yaml-file/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="], "read-yaml-file/js-yaml/esprima": ["esprima@4.0.1", "", { "bin": { "esparse": "./bin/esparse.js", "esvalidate": "./bin/esvalidate.js" } }, "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A=="], @@ -3803,6 +3911,56 @@ "ts-command-line-args/chalk/supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], + "tsx/esbuild/@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.0", "", { "os": "aix", "cpu": "ppc64" }, "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ=="], + + "tsx/esbuild/@esbuild/android-arm": ["@esbuild/android-arm@0.25.0", "", { "os": "android", "cpu": "arm" }, "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g=="], + + "tsx/esbuild/@esbuild/android-arm64": ["@esbuild/android-arm64@0.25.0", "", { "os": "android", "cpu": "arm64" }, "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g=="], + + "tsx/esbuild/@esbuild/android-x64": ["@esbuild/android-x64@0.25.0", "", { "os": "android", "cpu": "x64" }, "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg=="], + + "tsx/esbuild/@esbuild/darwin-arm64": ["@esbuild/darwin-arm64@0.25.0", "", { "os": "darwin", "cpu": "arm64" }, "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw=="], + + "tsx/esbuild/@esbuild/darwin-x64": ["@esbuild/darwin-x64@0.25.0", "", { "os": "darwin", "cpu": "x64" }, "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg=="], + + "tsx/esbuild/@esbuild/freebsd-arm64": ["@esbuild/freebsd-arm64@0.25.0", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w=="], + + "tsx/esbuild/@esbuild/freebsd-x64": ["@esbuild/freebsd-x64@0.25.0", "", { "os": "freebsd", "cpu": "x64" }, "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A=="], + + "tsx/esbuild/@esbuild/linux-arm": ["@esbuild/linux-arm@0.25.0", "", { "os": "linux", "cpu": "arm" }, "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg=="], + + "tsx/esbuild/@esbuild/linux-arm64": ["@esbuild/linux-arm64@0.25.0", "", { "os": "linux", "cpu": "arm64" }, "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg=="], + + "tsx/esbuild/@esbuild/linux-ia32": ["@esbuild/linux-ia32@0.25.0", "", { "os": "linux", "cpu": "ia32" }, "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg=="], + + "tsx/esbuild/@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw=="], + + "tsx/esbuild/@esbuild/linux-mips64el": ["@esbuild/linux-mips64el@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ=="], + + "tsx/esbuild/@esbuild/linux-ppc64": ["@esbuild/linux-ppc64@0.25.0", "", { "os": "linux", "cpu": "ppc64" }, "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw=="], + + "tsx/esbuild/@esbuild/linux-riscv64": ["@esbuild/linux-riscv64@0.25.0", "", { "os": "linux", "cpu": "none" }, "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA=="], + + "tsx/esbuild/@esbuild/linux-s390x": ["@esbuild/linux-s390x@0.25.0", "", { "os": "linux", "cpu": "s390x" }, "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA=="], + + "tsx/esbuild/@esbuild/linux-x64": ["@esbuild/linux-x64@0.25.0", "", { "os": "linux", "cpu": "x64" }, "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw=="], + + "tsx/esbuild/@esbuild/netbsd-arm64": ["@esbuild/netbsd-arm64@0.25.0", "", { "os": "none", "cpu": "arm64" }, "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw=="], + + "tsx/esbuild/@esbuild/netbsd-x64": ["@esbuild/netbsd-x64@0.25.0", "", { "os": "none", "cpu": "x64" }, "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA=="], + + "tsx/esbuild/@esbuild/openbsd-arm64": ["@esbuild/openbsd-arm64@0.25.0", "", { "os": "openbsd", "cpu": "arm64" }, "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw=="], + + "tsx/esbuild/@esbuild/openbsd-x64": ["@esbuild/openbsd-x64@0.25.0", "", { "os": "openbsd", "cpu": "x64" }, "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg=="], + + "tsx/esbuild/@esbuild/sunos-x64": ["@esbuild/sunos-x64@0.25.0", "", { "os": "sunos", "cpu": "x64" }, "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg=="], + + "tsx/esbuild/@esbuild/win32-arm64": ["@esbuild/win32-arm64@0.25.0", "", { "os": "win32", "cpu": "arm64" }, "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw=="], + + "tsx/esbuild/@esbuild/win32-ia32": ["@esbuild/win32-ia32@0.25.0", "", { "os": "win32", "cpu": "ia32" }, "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA=="], + + "tsx/esbuild/@esbuild/win32-x64": ["@esbuild/win32-x64@0.25.0", "", { "os": "win32", "cpu": "x64" }, "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ=="], + "unstorage/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], "web3-utils/ethereum-cryptography/@noble/curves": ["@noble/curves@1.4.2", "", { "dependencies": { "@noble/hashes": "1.4.0" } }, "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw=="], diff --git a/packages/core/src/helpers/walletAddressValidator.ts b/packages/core/src/helpers/walletAddressValidator.ts index ffd48c1c5..2d0a0abd3 100644 --- a/packages/core/src/helpers/walletAddressValidator.ts +++ b/packages/core/src/helpers/walletAddressValidator.ts @@ -5,9 +5,11 @@ export async function getAddressValidator() { const { evmValidateAddress } = await import("@swapkit/toolboxes/evm"); const { substrateValidateAddress } = await import("@swapkit/toolboxes/substrate"); const { utxoValidateAddress } = await import("@swapkit/toolboxes/utxo"); - const { validateAddress: solanaValidateAddress } = await import("@swapkit/toolboxes/solana"); + const { getAddressValidator: getSolValidator } = await import("@swapkit/toolboxes/solana"); const { validateAddress: validateRadixAddress } = await import("@swapkit/toolboxes/radix"); + const solanaValidateAddress = await getSolValidator(); + return function validateAddress({ address, chain }: { address: string; chain: Chain }) { switch (chain) { case Chain.Arbitrum: diff --git a/packages/plugins/src/chainflip/broker.ts b/packages/plugins/src/chainflip/broker.ts index 53cfd17f4..e1b9f5d34 100644 --- a/packages/plugins/src/chainflip/broker.ts +++ b/packages/plugins/src/chainflip/broker.ts @@ -1,4 +1,3 @@ -import { Assets, Chains } from "@chainflip/sdk/swap"; import { decodeAddress } from "@polkadot/keyring"; import { isHex, u8aToHex } from "@polkadot/util"; import { AssetValue, Chain, SwapKitError, wrapWithThrow } from "@swapkit/helpers"; @@ -8,25 +7,6 @@ import type { ChainflipToolbox } from "@swapkit/toolboxes/substrate"; import type { WithdrawFeeResponse } from "./types"; -export const chainToChainflipChain = new Map([ - [Chain.Arbitrum, Chains.Arbitrum], - [Chain.Bitcoin, Chains.Bitcoin], - [Chain.Ethereum, Chains.Ethereum], - [Chain.Polkadot, Chains.Polkadot], - [Chain.Solana, Chains.Solana], - [Chain.Polkadot, Chains.Polkadot], -]); - -export const assetTickerToChainflipAsset = new Map([ - ["FLIP", Assets.FLIP], - ["BTC", Assets.BTC], - ["ETH", Assets.ETH], - ["USDC", Assets.USDC], - ["USDT", Assets.USDT], - ["DOT", Assets.DOT], - ["SOL", Assets.SOL], -]); - export const assetIdentifierToChainflipTicker = new Map([ ["ARB.ETH", "ArbEth"], ["ARB.USDC-0XAF88D065E77C8CC2239327C5EDB3A432268E5831", "ArbUsdc"], diff --git a/packages/toolboxes/package.json b/packages/toolboxes/package.json index c6b9a8049..0d3d0b267 100644 --- a/packages/toolboxes/package.json +++ b/packages/toolboxes/package.json @@ -1,105 +1,102 @@ { - "description": "SwapKit - Toolboxes", - "files": [ - "src/", - "dist/" - ], - "dependencies": { - "@bitcoinerlab/secp256k1": "1.2.0", - "@cosmjs/amino": "0.33.0", - "@cosmjs/crypto": "0.33.0", - "@cosmjs/encoding": "0.33.0", - "@cosmjs/proto-signing": "0.33.0", - "@cosmjs/stargate": "0.33.0", - "@polkadot/api": "15.6.1", - "@polkadot/api-base": "15.6.1", - "@polkadot/keyring": "13.4.3", - "@polkadot/util": "13.4.3", - "@polkadot/util-crypto": "13.4.3", - "@psf/bitcoincashjs-lib": "4.0.3", - "@radixdlt/babylon-gateway-api-sdk": "1.9.2", - "@radixdlt/radix-dapp-toolkit": "2.2.1", - "@radixdlt/wallet-sdk": "1.0.1", - "@scure/base": "1.2.4", - "@scure/bip32": "1.6.2", - "@scure/bip39": "1.5.4", - "@solana/spl-memo": "0.2.5", - "@solana/spl-token": "0.4.12", - "@solana/spl-token-registry": "0.2.4574", - "@solana/web3.js": "1.98.0", - "@swapkit/helpers": "workspace:*", - "base64-js": "1.5.1", - "bitcoinjs-lib": "6.1.7", - "bs58check": "4.0.0", - "cashaddrjs": "0.4.4", - "coininfo": "5.2.1", - "cosmjs-types": "0.9.0", - "ecpair": "2.1.0", - "ethers": "6.13.5", - "micro-key-producer": "0.7.5", - "protobufjs": "7.4.0" - }, - "devDependencies": { - "@nomicfoundation/hardhat-ethers": "3.0.8", - "@nomicfoundation/hardhat-toolbox": "5.0.0", - "@polkadot/types": "15.6.1", - "@types/bn.js": "5.1.6", - "@types/crypto-js": "4.2.2", - "@types/elliptic": "6.4.18", - "hardhat": "2.22.18" - }, - "exports": { - ".": { - "default": "./dist/index.js", - "require": "./dist/index.cjs", - "types": "./src/index.ts" - }, - "./cosmos": { - "default": "./dist/cosmos/index.js", - "require": "./dist/cosmos/index.cjs", - "types": "./src/cosmos/index.ts" - }, - "./evm": { - "default": "./dist/evm/index.js", - "require": "./dist/evm/index.cjs", - "types": "./src/evm/index.ts" - }, - "./radix": { - "default": "./dist/radix/index.js", - "require": "./dist/radix/index.cjs", - "types": "./src/radix/index.ts" - }, - "./solana": { - "default": "./dist/solana/index.js", - "require": "./dist/solana/index.cjs", - "types": "./src/solana/index.ts" - }, - "./substrate": { - "default": "./dist/substrate/index.js", - "require": "./dist/substrate/index.cjs", - "types": "./src/substrate/index.ts" - }, - "./utxo": { - "default": "./dist/utxo/index.js", - "require": "./dist/utxo/index.cjs", - "types": "./src/utxo/index.ts" - } - }, - "homepage": "https://github.com/thorswap/SwapKit", - "license": "Apache-2.0", - "name": "@swapkit/toolboxes", - "repository": { - "type": "git", - "url": "git+https://github.com/thorswap/SwapKit.git" - }, - "scripts": { - "build": "bun run ./build.ts", - "clean": "rm -rf dist node_modules *.tsbuildinfo", - "lint": "biome check --write ./src", - "test": "echo 'bun test'", - "test:coverage": "bun test --coverage", - "type-check": "tsc --noEmit" - }, - "type": "module", - "version": "0.1.0" + "description": "SwapKit - Toolboxes", + "files": ["src/", "dist/"], + "dependencies": { + "@bitcoinerlab/secp256k1": "1.2.0", + "@cosmjs/amino": "0.33.0", + "@cosmjs/crypto": "0.33.0", + "@cosmjs/encoding": "0.33.0", + "@cosmjs/proto-signing": "0.33.0", + "@cosmjs/stargate": "0.33.0", + "@polkadot/api": "15.6.1", + "@polkadot/api-base": "15.6.1", + "@polkadot/keyring": "13.4.3", + "@polkadot/util": "13.4.3", + "@polkadot/util-crypto": "13.4.3", + "@psf/bitcoincashjs-lib": "4.0.3", + "@radixdlt/babylon-gateway-api-sdk": "1.9.2", + "@radixdlt/radix-dapp-toolkit": "2.2.1", + "@radixdlt/wallet-sdk": "1.0.1", + "@scure/base": "1.2.4", + "@scure/bip32": "1.6.2", + "@scure/bip39": "1.5.4", + "@solana/spl-memo": "0.2.5", + "@solana/spl-token": "0.4.12", + "@solana/spl-token-registry": "0.2.4574", + "@solana/web3.js": "1.98.0", + "@swapkit/helpers": "workspace:*", + "base64-js": "1.5.1", + "bitcoinjs-lib": "6.1.7", + "bs58check": "4.0.0", + "cashaddrjs": "0.4.4", + "coininfo": "5.2.1", + "cosmjs-types": "0.9.0", + "ecpair": "2.1.0", + "ethers": "6.13.5", + "micro-key-producer": "0.7.5", + "protobufjs": "7.4.0" + }, + "devDependencies": { + "@nomicfoundation/hardhat-ethers": "3.0.8", + "@nomicfoundation/hardhat-toolbox": "5.0.0", + "@polkadot/types": "15.6.1", + "@types/bn.js": "5.1.6", + "@types/crypto-js": "4.2.2", + "@types/elliptic": "6.4.18", + "hardhat": "2.22.18" + }, + "exports": { + ".": { + "default": "./dist/index.js", + "require": "./dist/index.cjs", + "types": "./src/index.ts" + }, + "./cosmos": { + "default": "./dist/cosmos/index.js", + "require": "./dist/cosmos/index.cjs", + "types": "./src/cosmos/index.ts" + }, + "./evm": { + "default": "./dist/evm/index.js", + "require": "./dist/evm/index.cjs", + "types": "./src/evm/index.ts" + }, + "./radix": { + "default": "./dist/radix/index.js", + "require": "./dist/radix/index.cjs", + "types": "./src/radix/index.ts" + }, + "./solana": { + "default": "./dist/solana/index.js", + "require": "./dist/solana/index.cjs", + "types": "./src/solana/index.ts" + }, + "./substrate": { + "default": "./dist/substrate/index.js", + "require": "./dist/substrate/index.cjs", + "types": "./src/substrate/index.ts" + }, + "./utxo": { + "default": "./dist/utxo/index.js", + "require": "./dist/utxo/index.cjs", + "types": "./src/utxo/index.ts" + } + }, + "homepage": "https://github.com/thorswap/SwapKit", + "license": "Apache-2.0", + "name": "@swapkit/toolboxes", + "repository": { + "type": "git", + "url": "git+https://github.com/thorswap/SwapKit.git" + }, + "scripts": { + "build": "bun run ./build.ts", + "clean": "rm -rf dist node_modules *.tsbuildinfo", + "lint": "biome check --write ./src", + "test": "echo 'bun test'", + "test:coverage": "bun test --coverage", + "type-check": "tsc --noEmit" + }, + "type": "module", + "version": "0.1.0" } diff --git a/packages/toolboxes/src/cosmos/thorchainUtils/messages.ts b/packages/toolboxes/src/cosmos/thorchainUtils/messages.ts index eee319b02..3cc16edfd 100644 --- a/packages/toolboxes/src/cosmos/thorchainUtils/messages.ts +++ b/packages/toolboxes/src/cosmos/thorchainUtils/messages.ts @@ -93,11 +93,11 @@ export const buildAminoMsg = ({ }; // TODO I think the msg typing is wrong it should be not prepared for broadcast -export const convertToSignable = ( +export const convertToSignable = async ( msg: DirectMsgDepositForBroadcast | DirectMsgSendForBroadcast | MsgSend | MsgDeposit, chain: Chain.THORChain | Chain.Maya, ) => { - const aminoTypes = createDefaultAminoTypes(chain); + const aminoTypes = await createDefaultAminoTypes(chain); return aminoTypes.fromAmino(msg); }; @@ -141,7 +141,7 @@ export const buildTransferTx = }); const msg = asSignable - ? convertToSignable( + ? await convertToSignable( asAminoMessage ? transferMsg : parseAminoMessageForDirectSigning(transferMsg), chain, ) @@ -174,7 +174,7 @@ export const buildDepositTx = const depositMsg = depositMsgAmino({ from, assetValue, memo, chain }); const msg = asSignable - ? convertToSignable( + ? await convertToSignable( asAminoMessage ? depositMsg : parseAminoMessageForDirectSigning(depositMsg), chain, ) @@ -223,7 +223,7 @@ export function parseAminoMessageForDirectSigning { - const registry = createDefaultRegistry(); - const aminoTypes = createDefaultAminoTypes(chain); +}) { + const registry = await createDefaultRegistry(); + const aminoTypes = await createDefaultAminoTypes(chain); const signedTxBody: TxBodyEncodeObject = { typeUrl: "/cosmos.tx.v1beta1.TxBody", @@ -241,4 +241,4 @@ export const buildEncodedTxBody = ({ }; return registry.encode(signedTxBody); -}; +} diff --git a/packages/toolboxes/src/cosmos/thorchainUtils/registry.ts b/packages/toolboxes/src/cosmos/thorchainUtils/registry.ts index c468d2791..b4657dab9 100644 --- a/packages/toolboxes/src/cosmos/thorchainUtils/registry.ts +++ b/packages/toolboxes/src/cosmos/thorchainUtils/registry.ts @@ -1,18 +1,21 @@ -import { Registry } from "@cosmjs/proto-signing"; -import { AminoTypes, defaultRegistryTypes } from "@cosmjs/stargate"; import { Chain } from "@swapkit/helpers"; import * as types from "../thorchainUtils/types/proto/MsgCompiled"; import { base64ToBech32, bech32ToBase64 } from "./addressFormat"; -export const createDefaultRegistry = () => { +export async function createDefaultRegistry() { + const { Registry } = await import("@cosmjs/proto-signing"); + const { defaultRegistryTypes } = await import("@cosmjs/stargate"); + return new Registry([ ...defaultRegistryTypes, ["/types.MsgSend", { ...types.default.types.MsgSend }], ["/types.MsgDeposit", { ...types.default.types.MsgDeposit }], ]); -}; +} + +export async function createDefaultAminoTypes(chain: Chain.THORChain | Chain.Maya) { + const { AminoTypes } = await import("@cosmjs/stargate"); -export const createDefaultAminoTypes = (chain: Chain.THORChain | Chain.Maya) => { return new AminoTypes({ "/types.MsgSend": { aminoType: `${chain === Chain.Maya ? "mayachain" : "thorchain"}/MsgSend`, @@ -41,4 +44,4 @@ export const createDefaultAminoTypes = (chain: Chain.THORChain | Chain.Maya) => }), }, }); -}; +} diff --git a/packages/toolboxes/src/cosmos/toolbox/thorchain.ts b/packages/toolboxes/src/cosmos/toolbox/thorchain.ts index 94cac41a2..b40eadc7d 100644 --- a/packages/toolboxes/src/cosmos/toolbox/thorchain.ts +++ b/packages/toolboxes/src/cosmos/toolbox/thorchain.ts @@ -1,12 +1,5 @@ -import { - type Pubkey, - Secp256k1HdWallet, - createMultisigThresholdPubkey, - encodeSecp256k1Pubkey, - pubkeyToAddress, -} from "@cosmjs/amino"; -import { Secp256k1, Secp256k1Signature, stringToPath } from "@cosmjs/crypto"; -import { type Account, makeMultisignedTxBytes } from "@cosmjs/stargate"; +import type { Pubkey, Secp256k1HdWallet } from "@cosmjs/amino"; +import type { Account } from "@cosmjs/stargate"; import { base64 } from "@scure/base"; import { BaseDecimal, @@ -42,14 +35,16 @@ import { createStargateClient, getDefaultChainFee, } from "../util"; - import { BaseCosmosToolbox } from "./BaseCosmosToolbox"; function secp256k1HdWalletFromMnemonic({ prefix, derivationPath, }: { prefix: string; derivationPath: string }) { - return function secp256k1HdWalletFromMnemonic(mnemonic: string, index = 0) { + return async function secp256k1HdWalletFromMnemonic(mnemonic: string, index = 0) { + const { Secp256k1HdWallet } = await import("@cosmjs/amino"); + const { stringToPath } = await import("@cosmjs/crypto"); + return Secp256k1HdWallet.fromMnemonic(mnemonic, { hdPaths: [stringToPath(`${derivationPath}/${index}`)], prefix, @@ -83,13 +78,13 @@ async function signMultisigTx( } = JSON.parse(tx); const address = (await wallet.getAccounts())?.[0]?.address || ""; - const aminoTypes = createDefaultAminoTypes(chain); - const registry = createDefaultRegistry(); + const aminoTypes = await createDefaultAminoTypes(chain); + const registry = await createDefaultRegistry(); const signingClient = await createOfflineStargateClient(wallet, { registry, aminoTypes }); const msgForSigning = []; for (const msg of msgs) { - const signMsg = convertToSignable(msg, chain); + const signMsg = await convertToSignable(msg, chain); msgForSigning.push(signMsg); } @@ -101,7 +96,7 @@ async function signMultisigTx( chainId, }); - const bodyBytes = buildEncodedTxBody({ + const bodyBytes = await buildEncodedTxBody({ chain, memo, msgs: msgs.map(parseAminoMessageForDirectSigning), @@ -118,6 +113,9 @@ function broadcastMultisigTx({ prefix, rpcUrl }: { prefix: string; rpcUrl: strin threshold: number, bodyBytes: Uint8Array, ) { + const { encodeSecp256k1Pubkey, pubkeyToAddress } = await import("@cosmjs/amino"); + const { makeMultisignedTxBytes } = await import("@cosmjs/stargate"); + const { sequence, fee } = JSON.parse(tx); const multisigPubkey = await createMultisig(membersPubKeys, threshold); @@ -143,6 +141,7 @@ function broadcastMultisigTx({ prefix, rpcUrl }: { prefix: string; rpcUrl: strin } async function createMultisig(pubKeys: string[], threshold: number, noSortPubKeys = true) { + const { createMultisigThresholdPubkey, encodeSecp256k1Pubkey } = await import("@cosmjs/amino"); return createMultisigThresholdPubkey( pubKeys.map((pubKey) => encodeSecp256k1Pubkey(base64.decode(pubKey))), threshold, @@ -154,16 +153,12 @@ function importSignature(signature: string) { return base64.decode(signature); } -function __REEXPORT__pubkeyToAddress(prefix: string) { - return function __pubkeyToAddress(pubkey: Pubkey) { - return pubkeyToAddress(pubkey, prefix); - }; -} - async function signWithPrivateKey({ privateKey, message, }: { privateKey: Uint8Array; message: string }) { + const { Secp256k1 } = await import("@cosmjs/crypto"); + const signature = await Secp256k1.createSignature(base64.decode(message), privateKey); return base64.encode(Buffer.concat([signature.r(32), signature.s(32)])); } @@ -180,6 +175,7 @@ function verifySignature(getAccount: (address: string) => Promise transfer(params), + pubkeyToAddress: async (pubkey: Pubkey) => { + const { pubkeyToAddress } = await import("@cosmjs/amino"); + return pubkeyToAddress(pubkey, chainPrefix); + }, transfer, getFees, buildAminoMsg, @@ -304,7 +302,6 @@ export function BaseThorchainToolbox(chain: Chain.THORChain | Chain.Maya) { createMultisig, importSignature, loadAddressBalances, - pubkeyToAddress: __REEXPORT__pubkeyToAddress(chainPrefix), signWithPrivateKey, verifySignature: verifySignature(cosmosToolbox.getAccount), }; diff --git a/packages/toolboxes/src/cosmos/util.ts b/packages/toolboxes/src/cosmos/util.ts index f2d29e079..23435088a 100644 --- a/packages/toolboxes/src/cosmos/util.ts +++ b/packages/toolboxes/src/cosmos/util.ts @@ -1,10 +1,5 @@ import type { OfflineSigner } from "@cosmjs/proto-signing"; -import { - GasPrice, - SigningStargateClient, - type SigningStargateClientOptions, - StargateClient, -} from "@cosmjs/stargate"; +import type { SigningStargateClientOptions } from "@cosmjs/stargate"; import { AssetValue, Chain, @@ -126,15 +121,18 @@ export const getAssetFromDenom = (denom: string, amount: string) => { } }; -export const createStargateClient = (url: string) => { +export async function createStargateClient(url: string) { + const { StargateClient } = await import("@cosmjs/stargate"); + return StargateClient.connect({ url, headers: defaultRequestHeaders }); -}; +} -export const createSigningStargateClient = ( +export async function createSigningStargateClient( url: string, signer: any, optionsOrBaseGas: string | SigningStargateClientOptions = {}, -) => { +) { + const { SigningStargateClient, GasPrice } = await import("@cosmjs/stargate"); const gasPrice = typeof optionsOrBaseGas === "string" ? optionsOrBaseGas : "0.0003uatom"; const options = typeof optionsOrBaseGas === "string" ? {} : optionsOrBaseGas; @@ -142,14 +140,16 @@ export const createSigningStargateClient = ( gasPrice: GasPrice.fromString(gasPrice), ...options, }); -}; +} -export const createOfflineStargateClient = ( +export async function createOfflineStargateClient( wallet: OfflineSigner, registry?: SigningStargateClientOptions, -) => { +) { + const { SigningStargateClient } = await import("@cosmjs/stargate"); + return SigningStargateClient.offline(wallet, registry); -}; +} export const getRPC = (chainId: ChainId) => { const { isStagenet } = SKConfig.get("envs"); diff --git a/packages/toolboxes/src/solana/index.ts b/packages/toolboxes/src/solana/index.ts index 6d3198d6e..5a407668c 100644 --- a/packages/toolboxes/src/solana/index.ts +++ b/packages/toolboxes/src/solana/index.ts @@ -20,14 +20,12 @@ interface ConnectOpts { onlyIfTrusted: boolean; } -export { SOLToolbox, validateAddress, createSolanaTokenTransaction } from "./toolbox"; +export * from "./toolbox"; export type SolanaWallets = { [Chain.Solana]: ReturnType; }; -export type { PublicKey, Transaction, VersionedTransaction } from "@solana/web3.js"; - export interface SolanaProvider { connect: (opts?: Partial) => Promise<{ publicKey: PublicKey }>; disconnect: () => Promise; diff --git a/packages/toolboxes/src/solana/toolbox.ts b/packages/toolboxes/src/solana/toolbox.ts index bbfe6d67f..40e55c80c 100644 --- a/packages/toolboxes/src/solana/toolbox.ts +++ b/packages/toolboxes/src/solana/toolbox.ts @@ -1,5 +1,5 @@ import type { TokenInfo } from "@solana/spl-token-registry"; -import { Connection, type Keypair, PublicKey, type Transaction } from "@solana/web3.js"; +import type { Connection, Keypair, PublicKey, Transaction } from "@solana/web3.js"; import { AssetValue, Chain, @@ -10,86 +10,16 @@ import { type WalletTxParams, } from "@swapkit/helpers"; -export function validateAddress(address: string) { - try { - const pubkey = new PublicKey(address); - return PublicKey.isOnCurve(pubkey.toBytes()); - } catch (_) { - return false; - } -} - -async function createKeysForPath({ - phrase, - derivationPath = DerivationPath.SOL, -}: { phrase: string; derivationPath?: string }) { - const { HDKey } = await import("micro-key-producer/slip10.js"); - const { mnemonicToSeedSync } = await import("@scure/bip39"); - const { Keypair } = await import("@solana/web3.js"); - const seed = mnemonicToSeedSync(phrase); - const hdKey = HDKey.fromMasterSeed(seed); - - return Keypair.fromSeed(hdKey.derive(derivationPath, true).privateKey); -} - -function getAddressFromKeys(keypair: Keypair) { - return keypair.publicKey.toString(); -} +export async function getAddressValidator() { + const { PublicKey } = await import("@solana/web3.js"); -async function getTokenBalances({ - connection, - address, -}: { connection: Connection; address: string }) { - const { TOKEN_PROGRAM_ID } = await import("@solana/spl-token"); - const { TokenListProvider } = await import("@solana/spl-token-registry"); - const tokenAccounts = await connection.getParsedTokenAccountsByOwner(new PublicKey(address), { - programId: TOKEN_PROGRAM_ID, - }); - const tokenListProvider = new TokenListProvider(); - const tokenListContainer = await tokenListProvider.resolve(); - const tokenList = tokenListContainer.filterByChainId(101).getList(); - - // Group token balances by mint address - const tokenBalanceMap = new Map(); - - for await (const tokenAccountInfo of tokenAccounts.value) { - const accountInfo = tokenAccountInfo.account.data.parsed.info; - const mintAddress = accountInfo.mint; - const decimal = accountInfo.tokenAmount.decimals; - const amount = BigInt(accountInfo.tokenAmount.amount); - - if (amount <= BigInt(0)) continue; - - const tokenInfo = tokenList.find((token: TokenInfo) => token.address === mintAddress); - const tokenSymbol = tokenInfo?.symbol ?? "UNKNOWN"; - const existing = tokenBalanceMap.get(mintAddress); - - tokenBalanceMap.set(mintAddress, { - amount: existing ? existing.amount + amount : amount, - decimal, - symbol: tokenSymbol, - }); - } - - // Convert grouped balances to AssetValue array - const tokenBalances: AssetValue[] = Array.from(tokenBalanceMap.entries()).map( - ([mintAddress, { amount, decimal, symbol }]) => - new AssetValue({ - value: SwapKitNumber.fromBigInt(amount, decimal), - decimal, - identifier: `${Chain.Solana}.${symbol}${mintAddress ? `-${mintAddress.toString()}` : ""}`, - }), - ); - - return tokenBalances; -} - -function getBalance(connection: Connection) { - return async (address: string) => { - const SOLBalance = await connection.getBalance(new PublicKey(address)); - const tokenBalances = await getTokenBalances({ connection, address }); - - return [AssetValue.from({ chain: Chain.Solana, value: BigInt(SOLBalance) }), ...tokenBalances]; + return (address: string) => { + try { + const pubkey = new PublicKey(address); + return PublicKey.isOnCurve(pubkey.toBytes()); + } catch (_) { + return false; + } }; } @@ -156,7 +86,25 @@ export async function createSolanaTokenTransaction({ return transaction; } -function createSolanaTransaction(connection: Connection) { +export const SOLToolbox = () => { + async function getConnection() { + const { Connection } = await import("@solana/web3.js"); + return new Connection(SKConfig.get("rpcUrls").SOL, "confirmed"); + } + + return { + getConnection, + createKeysForPath, + getAddressFromKeys, + createSolanaTransaction: createSolanaTransaction(getConnection), + getBalance: getBalance(getConnection), + transfer: transfer(getConnection), + broadcastTransaction: broadcastTransaction(getConnection), + getAddressValidator + }; +}; + +function createSolanaTransaction(getConnection: () => Promise) { return async ({ recipient, assetValue, @@ -169,12 +117,15 @@ function createSolanaTransaction(connection: Connection) { isProgramDerivedAddress?: boolean; }) => { const { createMemoInstruction } = await import("@solana/spl-memo"); - const { Transaction, SystemProgram } = await import("@solana/web3.js"); + const { Transaction, PublicKey, SystemProgram } = await import("@solana/web3.js"); + const validateAddress = await getAddressValidator(); if (!(isProgramDerivedAddress || validateAddress(recipient))) { throw new SwapKitError("core_transaction_invalid_recipient_address"); } + const connection = await getConnection(); + const transaction = assetValue.isGasAsset ? new Transaction().add( SystemProgram.transfer({ @@ -208,7 +159,7 @@ function createSolanaTransaction(connection: Connection) { }; } -function transfer(connection: Connection) { +function transfer(getConnection: () => Promise) { return async ({ recipient, assetValue, @@ -221,8 +172,9 @@ function transfer(connection: Connection) { isProgramDerivedAddress?: boolean; }) => { const { sendAndConfirmTransaction } = await import("@solana/web3.js"); + const connection = await getConnection(); - const transaction = await createSolanaTransaction(connection)({ + const transaction = await createSolanaTransaction(getConnection)({ recipient, assetValue, memo, @@ -234,23 +186,87 @@ function transfer(connection: Connection) { }; } -function broadcastTransaction(connection: Connection) { - return (transaction: Transaction) => { +function broadcastTransaction(getConnection: () => Promise) { + return async (transaction: Transaction) => { + const connection = await getConnection(); return connection.sendRawTransaction(transaction.serialize()); }; } -export const SOLToolbox = () => { - const connection = new Connection(SKConfig.get("rpcUrls").SOL, "confirmed"); +async function createKeysForPath({ + phrase, + derivationPath = DerivationPath.SOL, +}: { phrase: string; derivationPath?: string }) { + const { HDKey } = await import("micro-key-producer/slip10.js"); + const { mnemonicToSeedSync } = await import("@scure/bip39"); + const { Keypair } = await import("@solana/web3.js"); + const seed = mnemonicToSeedSync(phrase); + const hdKey = HDKey.fromMasterSeed(seed); - return { - connection, - createKeysForPath, - getAddressFromKeys, - createSolanaTransaction: createSolanaTransaction(connection), - getBalance: getBalance(connection), - transfer: transfer(connection), - broadcastTransaction: broadcastTransaction(connection), - validateAddress, + return Keypair.fromSeed(hdKey.derive(derivationPath, true).privateKey); +} + +function getAddressFromKeys(keypair: Keypair) { + return keypair.publicKey.toString(); +} + +async function getTokenBalances({ + connection, + address, +}: { connection: Connection; address: string }) { + const { PublicKey } = await import("@solana/web3.js"); + const { TOKEN_PROGRAM_ID } = await import("@solana/spl-token"); + const { TokenListProvider } = await import("@solana/spl-token-registry"); + + const tokenAccounts = await connection.getParsedTokenAccountsByOwner(new PublicKey(address), { + programId: TOKEN_PROGRAM_ID, + }); + const tokenListProvider = new TokenListProvider(); + const tokenListContainer = await tokenListProvider.resolve(); + const tokenList = tokenListContainer.filterByChainId(101).getList(); + + // Group token balances by mint address + const tokenBalanceMap = new Map(); + + for await (const tokenAccountInfo of tokenAccounts.value) { + const accountInfo = tokenAccountInfo.account.data.parsed.info; + const mintAddress = accountInfo.mint; + const decimal = accountInfo.tokenAmount.decimals; + const amount = BigInt(accountInfo.tokenAmount.amount); + + if (amount <= BigInt(0)) continue; + + const tokenInfo = tokenList.find((token: TokenInfo) => token.address === mintAddress); + const tokenSymbol = tokenInfo?.symbol ?? "UNKNOWN"; + const existing = tokenBalanceMap.get(mintAddress); + + tokenBalanceMap.set(mintAddress, { + amount: existing ? existing.amount + amount : amount, + decimal, + symbol: tokenSymbol, + }); + } + + // Convert grouped balances to AssetValue array + const tokenBalances: AssetValue[] = Array.from(tokenBalanceMap.entries()).map( + ([mintAddress, { amount, decimal, symbol }]) => + new AssetValue({ + value: SwapKitNumber.fromBigInt(amount, decimal), + decimal, + identifier: `${Chain.Solana}.${symbol}${mintAddress ? `-${mintAddress.toString()}` : ""}`, + }), + ); + + return tokenBalances; +} + +function getBalance(getConnection: () => Promise) { + return async (address: string) => { + const { PublicKey } = await import("@solana/web3.js"); + const connection = await getConnection(); + const SOLBalance = await connection.getBalance(new PublicKey(address)); + const tokenBalances = await getTokenBalances({ connection, address }); + + return [AssetValue.from({ chain: Chain.Solana, value: BigInt(SOLBalance) }), ...tokenBalances]; }; -}; +} diff --git a/packages/wallets/package.json b/packages/wallets/package.json index 6c68213d0..ec2a3751f 100644 --- a/packages/wallets/package.json +++ b/packages/wallets/package.json @@ -36,7 +36,7 @@ "devDependencies": { "@types/ripemd160": "2.0.3", "@walletconnect/logger": "2.1.2", - "@walletconnect/types": "2.13.3" + "@walletconnect/types": "2.18.1" }, "exports": { ".": { diff --git a/packages/wallets/src/bitget/helpers.ts b/packages/wallets/src/bitget/helpers.ts index 7a505bd34..0e587e8f8 100644 --- a/packages/wallets/src/bitget/helpers.ts +++ b/packages/wallets/src/bitget/helpers.ts @@ -137,6 +137,7 @@ export async function getWalletMethods(chain: Chain) { const { PublicKey } = await import("@solana/web3.js"); const fromPublicKey = new PublicKey(address); + const connection = await toolbox.getConnection(); const transaction = await toolbox.createSolanaTransaction({ recipient, assetValue, @@ -145,7 +146,7 @@ export async function getWalletMethods(chain: Chain) { isProgramDerivedAddress, }); - const blockHash = await toolbox.connection.getLatestBlockhash(); + const blockHash = await connection.getLatestBlockhash(); transaction.recentBlockhash = blockHash.blockhash; transaction.feePayer = fromPublicKey; diff --git a/packages/wallets/src/ctrl/walletHelpers.ts b/packages/wallets/src/ctrl/walletHelpers.ts index 35b0f8351..604c2e641 100644 --- a/packages/wallets/src/ctrl/walletHelpers.ts +++ b/packages/wallets/src/ctrl/walletHelpers.ts @@ -1,4 +1,5 @@ import type { Keplr } from "@keplr-wallet/types"; +import type { PublicKey } from "@solana/web3.js"; import { type AssetValue, Chain, @@ -12,7 +13,7 @@ import { import { erc20ABI } from "@swapkit/helpers/contracts"; import type { TransferParams } from "@swapkit/toolboxes/cosmos"; import type { ApproveParams, CallParams, EVMTxParams } from "@swapkit/toolboxes/evm"; -import type { PublicKey, SOLToolbox, SolanaProvider } from "@swapkit/toolboxes/solana"; +import type { SOLToolbox, SolanaProvider } from "@swapkit/toolboxes/solana"; import type { BrowserProvider, Eip1193Provider } from "ethers"; type TransactionMethod = "transfer" | "deposit"; diff --git a/packages/wallets/src/ledger/index.ts b/packages/wallets/src/ledger/index.ts index 2289b5454..d4825e912 100644 --- a/packages/wallets/src/ledger/index.ts +++ b/packages/wallets/src/ledger/index.ts @@ -235,7 +235,7 @@ async function getWalletMethods({ const pubkey = encodePubkey({ type: "tendermint/PubKeySecp256k1", value }); const msgs = orderedMessages.map(parseAminoMessageForDirectSigning); - const bodyBytes = buildEncodedTxBody({ msgs, chain, memo }); + const bodyBytes = await buildEncodedTxBody({ msgs, chain, memo }); const authInfoBytes = makeAuthInfoBytes( [{ pubkey, sequence: Number(sequence) }], diff --git a/packages/wallets/src/phantom/index.ts b/packages/wallets/src/phantom/index.ts index 507d57191..f61eac8d8 100644 --- a/packages/wallets/src/phantom/index.ts +++ b/packages/wallets/src/phantom/index.ts @@ -103,6 +103,7 @@ async function getWalletMethods(chain: PhantomSupportedChain) { const fromPubkey = new PublicKey(address); const amount = assetValue.getBaseValue("number"); + const connection = await toolbox.getConnection(); const transaction = assetValue.isGasAsset ? new Transaction().add( @@ -115,7 +116,7 @@ async function getWalletMethods(chain: PhantomSupportedChain) { : assetValue.address ? await createSolanaTokenTransaction({ amount, - connection: toolbox.connection, + connection, decimals: assetValue.decimal as number, from: fromPubkey, recipient, @@ -127,13 +128,13 @@ async function getWalletMethods(chain: PhantomSupportedChain) { throw new SwapKitError("core_transaction_invalid_sender_address"); } - const blockHash = await toolbox.connection.getLatestBlockhash(); + const blockHash = await connection.getLatestBlockhash(); transaction.recentBlockhash = blockHash.blockhash; transaction.feePayer = fromPubkey; const signedTransaction = await provider.signTransaction(transaction); - const txid = await toolbox.connection.sendRawTransaction(signedTransaction.serialize()); + const txid = await connection.sendRawTransaction(signedTransaction.serialize()); return txid; }; diff --git a/packages/wallets/src/walletconnect/index.ts b/packages/wallets/src/walletconnect/index.ts index d71d3920d..00dcf24cb 100644 --- a/packages/wallets/src/walletconnect/index.ts +++ b/packages/wallets/src/walletconnect/index.ts @@ -204,7 +204,7 @@ async function getToolbox({ const signature: any = await signRequest(signDoc); - const bodyBytes = buildEncodedTxBody({ + const bodyBytes = await buildEncodedTxBody({ chain: Chain.THORChain, msgs: msgs.map(parseAminoMessageForDirectSigning), memo: memo || "", diff --git a/playgrounds/nextjs/package.json b/playgrounds/nextjs/package.json index 7a45b9187..de2ee180c 100644 --- a/playgrounds/nextjs/package.json +++ b/playgrounds/nextjs/package.json @@ -65,7 +65,7 @@ "autoprefixer": "10.4.20", "global": "4.4.0", "node-polyfill-webpack-plugin": "4.1.0", - "postcss": "8.5.2", + "postcss": "8.5.3", "tailwindcss": "4.0.7", "typescript": "5.7.3" }, diff --git a/playgrounds/vite/package.json b/playgrounds/vite/package.json index 898c05440..e05b5b189 100644 --- a/playgrounds/vite/package.json +++ b/playgrounds/vite/package.json @@ -19,7 +19,10 @@ "vite-plugin-node-polyfills": "0.23.0" }, "devDependencies": { + "@react-scan/vite-plugin-react-scan": "0.1.3", "@vitejs/plugin-react": "4.3.4", + "react-scan": "0.1.3", + "rollup-plugin-visualizer": "5.14.0", "typescript": "5.7.3", "vite-plugin-top-level-await": "1.5.0", "vite-plugin-wasm": "3.4.1" @@ -29,7 +32,7 @@ "type": "module", "scripts": { "build-playground": "NODE_OPTIONS=--max_old_space_size=65536 vite build", - "bundle": "bunx vite-bundle-visualizer", + "visualise": "VISUALISE=true bun build-playground", "dev": "vite", "lint": "biome check --write ./src", "type-check": "tsc --noEmit", diff --git a/playgrounds/vite/src/App.tsx b/playgrounds/vite/src/App.tsx index 13ff26eab..7526d37bc 100644 --- a/playgrounds/vite/src/App.tsx +++ b/playgrounds/vite/src/App.tsx @@ -1,5 +1,5 @@ -import { AssetValue, type Chain, type FullWallet, SKConfig } from "@swapkit/core"; -import { useCallback, useEffect, useMemo, useState } from "react"; +import { type AssetValue, type Chain, type FullWallet, SKConfig } from "@swapkit/core"; +import { useCallback, useMemo, useState } from "react"; import { WalletWidget } from "@swapkit/wallets/exodus"; import Liquidity from "./Liquidity"; @@ -20,8 +20,6 @@ const App = () => { const [wallet, setWallet] = useState(null); const [phrase, setPhrase] = useState(""); const [stagenet, setStagenet] = useState(false); - const [assetListLoaded, setAssetListLoaded] = useState(false); - /** * NOTE: Test API keys - please use your own API keys in app as those will timeout, reach limits, etc. */ @@ -50,12 +48,6 @@ const App = () => { }); }, []); - useEffect(() => { - AssetValue.loadStaticAssets().then((ok) => { - setAssetListLoaded(ok); - }); - }, []); - const setAsset = useCallback( (asset: AssetValue) => { if (!inputAsset) { @@ -105,7 +97,6 @@ const App = () => {

SwapKit Playground -{" "} - {assetListLoaded ? "🚀 Asset List Loaded 🚀" : "🔄 Loading Asset List..."}
{apiKeys.map((key) => ( { const pubkey = await toolbox.createMultisig(Object.values(pubkeys), threshold); - const address = toolbox.pubkeyToAddress(pubkey); + const address = await toolbox.pubkeyToAddress(pubkey); + setAddress(address); }, [toolbox, pubkeys, threshold]); diff --git a/playgrounds/vite/vite.config.ts b/playgrounds/vite/vite.config.ts index 56fd34f82..27b2250b1 100644 --- a/playgrounds/vite/vite.config.ts +++ b/playgrounds/vite/vite.config.ts @@ -1,5 +1,7 @@ import { resolve } from "path"; +import reactScan from "@react-scan/vite-plugin-react-scan"; import react from "@vitejs/plugin-react"; +import { visualizer } from "rollup-plugin-visualizer"; import { defineConfig } from "vite"; import { nodePolyfills } from "vite-plugin-node-polyfills"; import topLevelAwait from "vite-plugin-top-level-await"; @@ -26,9 +28,21 @@ export default defineConfig({ }, }), react(), + reactScan({ autoDisplayNames: true, debug: true }), wasm(), topLevelAwait(), - ], + ].concat( + process.env.VISUALISE === "true" + ? [ + visualizer({ + gzipSize: true, + open: true, + sourcemap: true, + filename: "dist/stats.html", + }), + ] + : [], + ), resolve: { alias: { "@swapkit/core": resolve("../../packages/core/src"),