From c8763d81acf42618c34f1bba4d0817197ca53d83 Mon Sep 17 00:00:00 2001 From: Sebastian Pape Date: Fri, 18 Aug 2023 11:14:13 +0200 Subject: [PATCH] v10.2.0: upgrade dependencies --- dist/esm/index.solana.js | 65 +++++++++++++++++++++---------- dist/umd/index.solana.js | 65 +++++++++++++++++++++---------- package.evm.json | 6 +-- package.json | 20 +++++----- package.solana.json | 8 ++-- yarn.lock | 83 ++++++++++++++++++++++++---------------- 6 files changed, 156 insertions(+), 91 deletions(-) diff --git a/dist/esm/index.solana.js b/dist/esm/index.solana.js index 0f19d11..be59075 100644 --- a/dist/esm/index.solana.js +++ b/dist/esm/index.solana.js @@ -732,9 +732,17 @@ let paramsToContractArgs = ({ contract, method, params }) => { }; const contractCall = ({ address, api, method, params, provider, block }) => { - let contract = new ethers.Contract(address, api, provider); - let args = paramsToContractArgs({ contract, method, params }); - return contract[method](...args, { blockTag: block }) + const contract = new ethers.Contract(address, api, provider); + const args = paramsToContractArgs({ contract, method, params }); + const fragment = contract.interface.fragments.find((fragment)=>fragment.name === method); + if(contract[method] === undefined) { + method = `${method}(${fragment.inputs.map((input)=>input.type).join(',')})`; + } + if(fragment && fragment.stateMutability === 'nonpayable') { + return contract.callStatic[method](...args, { blockTag: block }) + } else { + return contract[method](...args, { blockTag: block }) + } }; const balance$1 = ({ address, provider }) => { @@ -764,17 +772,25 @@ var requestEVM = async ({ blockchain, address, api, method, params, block, timeo if(strategy === 'fastest') { - return Promise.race((await EVM.getProviders(blockchain)).map((provider)=>{ + const providers = await EVM.getProviders(blockchain); + + let allRequestsFailed = []; - const request = singleRequest$1({ blockchain, address, api, method, params, block, provider }); + const allRequestsInParallel = providers.map((provider)=>{ + return new Promise((resolve)=>{ + allRequestsFailed.push( + singleRequest$1({ blockchain, address, api, method, params, block, provider }).then(resolve) + ); + }) + }); - if(timeout) { - const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout)); - return Promise.race([request, timeoutPromise]) - } else { - return request - } - })) + const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000)); + + allRequestsFailed = Promise.all(allRequestsFailed.map((request)=>{ + return new Promise((resolve)=>{ request.catch(resolve); }) + })).then(()=>{ return }); + + return Promise.race([...allRequestsInParallel, timeoutPromise, allRequestsFailed]) } else { // failover @@ -849,17 +865,24 @@ var requestSolana = async ({ blockchain, address, api, method, params, block, ti if(strategy === 'fastest') { - return Promise.race(providers.map((provider)=>{ + let allRequestsFailed = []; - const succeedingRequest = new Promise((resolve)=>{ - singleRequest({ blockchain, address, api, method, params, block, provider }).then(resolve); - }); // failing requests are ignored during race/fastest - - const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000)); - - return Promise.race([succeedingRequest, timeoutPromise]) - })) + const allRequestsInParallel = providers.map((provider)=>{ + return new Promise((resolve)=>{ + allRequestsFailed.push( + singleRequest({ blockchain, address, api, method, params, block, provider }).then(resolve) + ); + }) + }); + const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000)); + + allRequestsFailed = Promise.all(allRequestsFailed.map((request)=>{ + return new Promise((resolve)=>{ request.catch(resolve); }) + })).then(()=>{ return }); + + return Promise.race([...allRequestsInParallel, timeoutPromise, allRequestsFailed]) + } else { // failover const provider = await Solana.getProvider(blockchain); diff --git a/dist/umd/index.solana.js b/dist/umd/index.solana.js index 09bc3a9..bc1225f 100644 --- a/dist/umd/index.solana.js +++ b/dist/umd/index.solana.js @@ -738,9 +738,17 @@ }; const contractCall = ({ address, api, method, params, provider, block }) => { - let contract = new ethers.ethers.Contract(address, api, provider); - let args = paramsToContractArgs({ contract, method, params }); - return contract[method](...args, { blockTag: block }) + const contract = new ethers.ethers.Contract(address, api, provider); + const args = paramsToContractArgs({ contract, method, params }); + const fragment = contract.interface.fragments.find((fragment)=>fragment.name === method); + if(contract[method] === undefined) { + method = `${method}(${fragment.inputs.map((input)=>input.type).join(',')})`; + } + if(fragment && fragment.stateMutability === 'nonpayable') { + return contract.callStatic[method](...args, { blockTag: block }) + } else { + return contract[method](...args, { blockTag: block }) + } }; const balance$1 = ({ address, provider }) => { @@ -770,17 +778,25 @@ if(strategy === 'fastest') { - return Promise.race((await EVM.getProviders(blockchain)).map((provider)=>{ + const providers = await EVM.getProviders(blockchain); + + let allRequestsFailed = []; - const request = singleRequest$1({ blockchain, address, api, method, params, block, provider }); + const allRequestsInParallel = providers.map((provider)=>{ + return new Promise((resolve)=>{ + allRequestsFailed.push( + singleRequest$1({ blockchain, address, api, method, params, block, provider }).then(resolve) + ); + }) + }); - if(timeout) { - const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout)); - return Promise.race([request, timeoutPromise]) - } else { - return request - } - })) + const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000)); + + allRequestsFailed = Promise.all(allRequestsFailed.map((request)=>{ + return new Promise((resolve)=>{ request.catch(resolve); }) + })).then(()=>{ return }); + + return Promise.race([...allRequestsInParallel, timeoutPromise, allRequestsFailed]) } else { // failover @@ -855,17 +871,24 @@ if(strategy === 'fastest') { - return Promise.race(providers.map((provider)=>{ + let allRequestsFailed = []; - const succeedingRequest = new Promise((resolve)=>{ - singleRequest({ blockchain, address, api, method, params, block, provider }).then(resolve); - }); // failing requests are ignored during race/fastest - - const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000)); - - return Promise.race([succeedingRequest, timeoutPromise]) - })) + const allRequestsInParallel = providers.map((provider)=>{ + return new Promise((resolve)=>{ + allRequestsFailed.push( + singleRequest({ blockchain, address, api, method, params, block, provider }).then(resolve) + ); + }) + }); + const timeoutPromise = new Promise((_, reject)=>setTimeout(()=>{ reject(new Error("Web3ClientTimeout")); }, timeout || 10000)); + + allRequestsFailed = Promise.all(allRequestsFailed.map((request)=>{ + return new Promise((resolve)=>{ request.catch(resolve); }) + })).then(()=>{ return }); + + return Promise.race([...allRequestsInParallel, timeoutPromise, allRequestsFailed]) + } else { // failover const provider = await Solana.getProvider(blockchain); diff --git a/package.evm.json b/package.evm.json index d9094a0..ac64e09 100644 --- a/package.evm.json +++ b/package.evm.json @@ -1,7 +1,7 @@ { "name": "@depay/web3-tokens-evm", "moduleName": "Web3Tokens", - "version": "10.1.0", + "version": "10.2.0", "description": "JavaScript library providing basic functionalities to interact with web3 tokens.", "main": "dist/umd/index.evm.js", "module": "dist/esm/index.evm.js", @@ -24,8 +24,8 @@ "private": false, "dependencies": {}, "peerDependencies": { - "@depay/web3-blockchains": "^8.1.1", - "@depay/web3-client-evm": "^10.15.1", + "@depay/web3-blockchains": "^9.0.0", + "@depay/web3-client-evm": "^10.17.0", "ethers": "^5.7.1" }, "engines": { diff --git a/package.json b/package.json index 04e728e..d4239d9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@depay/web3-tokens", "moduleName": "Web3Tokens", - "version": "10.1.0", + "version": "10.2.0", "description": "JavaScript library providing basic functionalities to interact with web3 tokens.", "main": "dist/umd/index.js", "module": "dist/esm/index.js", @@ -33,9 +33,9 @@ "private": false, "dependencies": {}, "peerDependencies": { - "@depay/solana-web3.js": "^1.24.0", - "@depay/web3-blockchains": "^8.1.1", - "@depay/web3-client": "^10.14.0", + "@depay/solana-web3.js": "^1.25.1", + "@depay/web3-blockchains": "^9.0.0", + "@depay/web3-client": "^10.17.0", "ethers": "^5.7.1" }, "engines": { @@ -44,12 +44,12 @@ "devDependencies": { "@babel/core": "^7.12.9", "@babel/preset-env": "^7.12.7", - "@depay/solana-web3.js": "^1.24.0", - "@depay/web3-blockchains": "^8.1.1", - "@depay/web3-client": "^10.15.1", - "@depay/web3-client-evm": "^10.15.1", - "@depay/web3-client-solana": "^10.15.1", - "@depay/web3-mock": "^14.12.1", + "@depay/solana-web3.js": "^1.25.1", + "@depay/web3-blockchains": "^9.0.0", + "@depay/web3-client": "^10.17.0", + "@depay/web3-client-evm": "^10.17.0", + "@depay/web3-client-solana": "^10.17.0", + "@depay/web3-mock": "^14.16.2", "@peculiar/webcrypto": "^1.4.0", "@rollup/plugin-commonjs": "^18.0.0", "@rollup/plugin-node-resolve": "^11.2.1", diff --git a/package.solana.json b/package.solana.json index 485872f..1dfb5b7 100644 --- a/package.solana.json +++ b/package.solana.json @@ -1,7 +1,7 @@ { "name": "@depay/web3-tokens-solana", "moduleName": "Web3Tokens", - "version": "10.1.0", + "version": "10.2.0", "description": "JavaScript library providing basic functionalities to interact with web3 tokens.", "main": "dist/umd/index.solana.js", "module": "dist/esm/index.solana.js", @@ -24,9 +24,9 @@ "private": false, "dependencies": {}, "peerDependencies": { - "@depay/solana-web3.js": "^1.24.0", - "@depay/web3-blockchains": "^8.1.1", - "@depay/web3-client-solana": "^10.15.1", + "@depay/solana-web3.js": "^1.25.1", + "@depay/web3-blockchains": "^9.0.0", + "@depay/web3-client-solana": "^10.17.0", "ethers": "^5.7.1" }, "engines": { diff --git a/yarn.lock b/yarn.lock index d266edf..bacda1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1029,38 +1029,45 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" -"@depay/solana-web3.js@^1.24.0": - version "1.24.0" - resolved "https://registry.yarnpkg.com/@depay/solana-web3.js/-/solana-web3.js-1.24.0.tgz#f51f32042c6ffd573c12b5b0800f8303ae176996" - integrity sha512-lPVXkRjeZqVvNtsiV9CVa189bE1/YACQv4U4NMTP6zB9Bvutx93k69gC8pks0P0wCqsO6chLbXCB+Hq/NdASZA== - -"@depay/web3-blockchains@^8.1.1": - version "8.1.1" - resolved "https://registry.yarnpkg.com/@depay/web3-blockchains/-/web3-blockchains-8.1.1.tgz#1de5dff71ead45bde57a1d8e0374d24aadde6533" - integrity sha512-wrtCFNH726Y+xX1+EtzhILMfhLcPEzuaBV3oCef97eJsht0PYjEWpzqB48LwHpY9adwzjarG1dSJIR2VAWpmUA== - -"@depay/web3-client-evm@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@depay/web3-client-evm/-/web3-client-evm-10.15.1.tgz#634439827b6e9b6b0fca1e51b3a857366fa785f1" - integrity sha512-xPhrdHXbPdJYG7yh60MJn4zMe5ub+RF/GrUZUCB8vB5c2MKJrxIagrPxe9q0PNFuIfuPdY/z6/eUYr/07TI9SA== - -"@depay/web3-client-solana@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@depay/web3-client-solana/-/web3-client-solana-10.15.1.tgz#11fa3cfedaf8c78898ca40b051514c3a6aef053b" - integrity sha512-7NvAIMdKXJHRxNK8V9EMsBN33bnUY7GaswJcUBKRnIVAw6mxuN7zBkRevQdcnSOkwkjoxWggtFUTHC2H5eLWyA== - -"@depay/web3-client@^10.15.1": - version "10.15.1" - resolved "https://registry.yarnpkg.com/@depay/web3-client/-/web3-client-10.15.1.tgz#03041c0cb3d8f27f89b42c3af9b1da626c6d87e4" - integrity sha512-jSDdtdhrLkmAWUV89qWTGRx0DOxccasziYA1PuKNrIF1y/KYQyjv94uZ1DzXLLO2PdaF959RN+wy0VhFymNaog== - -"@depay/web3-mock@^14.12.1": - version "14.12.1" - resolved "https://registry.yarnpkg.com/@depay/web3-mock/-/web3-mock-14.12.1.tgz#55380f08c0bb303a2d4dd6e25ee608a5f2830fe9" - integrity sha512-25w7+yFBd2qlzndXbRofBKEv60gjb3GmcHMO7mzduO7egW1Qp0+84r+FJm33Gt987DASsCynHgrm7nrfpIEIRA== - dependencies: - "@depay/solana-web3.js" "^1.24.0" - "@depay/web3-blockchains" "^8.1.1" +"@depay/solana-web3.js@^1.25.1": + version "1.25.1" + resolved "https://registry.yarnpkg.com/@depay/solana-web3.js/-/solana-web3.js-1.25.1.tgz#2f4725007ff4cfc14af2606eb3d333e68097e13f" + integrity sha512-tKCHHQVoZV85wZ8r3ZuxuQlejBcVolIUf52Bq2Pne3KR1BpxYJF2/9XRTH9qCrLZMQsgsQHikQEH5eglDCKJkA== + dependencies: + bs58 "^5.0.0" + +"@depay/web3-blockchains@^8.4.2": + version "8.4.2" + resolved "https://registry.yarnpkg.com/@depay/web3-blockchains/-/web3-blockchains-8.4.2.tgz#3f5f072f337acc334e5f0f097627dd85af85848c" + integrity sha512-kvzTy0R7zBqL6w2CSRGm3SO1K9QuYpuOCa0BTMt4O7ATqxFg+uXor3uWjS8oWvlQwOdqLl8WT7aaKT8OD63KXw== + +"@depay/web3-blockchains@^9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@depay/web3-blockchains/-/web3-blockchains-9.0.0.tgz#eaac5491e8f2c0dea84474af7db1a6af4f8cfb35" + integrity sha512-E1LhENbPbJ5JtQ1Im2ojwVPsqCM9H/VT937ZEXC2gs12M9NnzRM6XqvFsyhLh2zH4VnCDDbkyNYFvfigdn0HaA== + +"@depay/web3-client-evm@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@depay/web3-client-evm/-/web3-client-evm-10.17.0.tgz#13550b05d38d18dc55231a2b580ad5af9e4c6855" + integrity sha512-HSJZXVtAe8IdD4Yh0+/5XacfwW7F9eI7PsZbRhTigXY6sds6MY5E+W+qzkYSmAcbCMffRE6GO08VK1MPqBq6Rw== + +"@depay/web3-client-solana@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@depay/web3-client-solana/-/web3-client-solana-10.17.0.tgz#30b446145f47e684686dd35f185aaee9582ff0ff" + integrity sha512-0kgGGpR+eaYCM9b5plJ6olx2zCIo69e/Q6RqX0N2K/INY0oNpmshnTCjw7evTlnJQB3GnWTIg8JOgXgWvRnMQQ== + +"@depay/web3-client@^10.17.0": + version "10.17.0" + resolved "https://registry.yarnpkg.com/@depay/web3-client/-/web3-client-10.17.0.tgz#54ca046ef87e4783cbbdae55193da3ce4f1fed0c" + integrity sha512-iBq+ou6hebC+ezP/OhApcj9k4vIkcugytjF7DWSI9mWxmoTTCfx1sQpZPSGyY+oHLH0LBmQbDk4QiG/reEh/Pg== + +"@depay/web3-mock@^14.16.2": + version "14.16.2" + resolved "https://registry.yarnpkg.com/@depay/web3-mock/-/web3-mock-14.16.2.tgz#a97dcd022f0fa3c3b23e6e1f29f90c20580bb8ae" + integrity sha512-Zf1oqve/mLXaslZNSp0qLE9CBnfzGgJ3m86lVBrCMKJxFi0lV8NKGVhRDIzWCfxv3e5Zx3/dNOgyoaxAvj3RIw== + dependencies: + "@depay/solana-web3.js" "^1.25.1" + "@depay/web3-blockchains" "^8.4.2" ethers "^5.7.1" "@eslint/eslintrc@^0.4.3": @@ -2584,6 +2591,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== +base-x@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-4.0.0.tgz#d0e3b7753450c73f8ad2389b5c018a4af7b2224a" + integrity sha512-FuwxlW4H5kh37X/oW59pwTzzTKRzfrrQwhmyspRM7swOEZcHtDZSCt45U6oKgtuFE+WYPblePMVIPR4RZrh/hw== + bech32@1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" @@ -2652,6 +2664,13 @@ browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.21.4: node-releases "^2.0.6" update-browserslist-db "^1.0.9" +bs58@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-5.0.0.tgz#865575b4d13c09ea2a84622df6c8cbeb54ffc279" + integrity sha512-r+ihvQJvahgYT50JD05dyJNKlmmSlMoOGwn1lCcEzanPglg7TxYjioQUYehQ9mAR/+hOSd2jRc/Z2y5UxBymvQ== + dependencies: + base-x "^4.0.0" + buffer-from@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"