@phiresky/eth-scan
Version:
An efficient Ether and token balance scanner
10 lines • 1.43 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.send=exports.call=exports.getProvider=void 0;var _abi=require("@findeth/abi"),_eip=_interopRequireDefault(require("./eip-1193")),_ethers=_interopRequireDefault(require("./ethers")),_http=_interopRequireDefault(require("./http")),_web=_interopRequireDefault(require("./web3"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}const providers=[_eip.default,_ethers.default,_http.default,_web.default],getProvider=a=>{const b=providers.find(b=>b.isProvider(a));if(!b)throw new Error("Invalid provider type");return b};exports.getProvider=getProvider;/**
* Send a call with the data, using the specified provider. If the provider is not a valid provider type (e.g. not a
* Ethers.js provider, URL or Web3 provider), this will throw an error.
*
* @param {ProviderLike} providerLike
* @param {string} contractAddress
* @param {string} data
* @return {Promise<Uint8Array>}
*/const call=async(a,b,c)=>{try{const d=await send(a,"eth_call",[{to:b,data:c},"latest"]);if((0,_abi.stripPrefix)(d).startsWith("08c379a"))throw new Error("Call reverted");return(0,_abi.fromHex)(d)}catch(a){var d;throw new Error(`Failed to get data from contract: ${null!==(d=a.stack)&&void 0!==d?d:a.toString()}`)}};exports.call=call;const send=async(a,b,c)=>{const d=getProvider(a);return d.send(a,b,c)};exports.send=send;
//# sourceMappingURL=provider.js.map