{"version":3,"sources":["components/methodList.js","components/needMethodMessage.js","components/methodCall.js","components/pageTitle.js","components/searchBar.js","helpers/libs/ethers.js","helpers/libs/web3js.js","helpers/web3Config.js","components/responseSample.js","context/appProvider.js","context/logProvider.js","context/web3Provider.js","context/index.js","helpers/contracts.js","containers/methodCallContainer.js","helpers/buildProvider.js","containers/pageTitleContainer.js","containers/searchBarContainer.js","containers/responseSampleContainer.js","index.js"],"names":["MethodItem","index","methodName","web3URL","web3Lib","to","class","MethodList","availableMethods","useState","foundmethods","setFoundMethods","type","onChange","e","search","target","value","searchMethods","filter","user","toLowerCase","includes","placeholder","style","backgroundColor","className","length","map","key","NeedMethodMessage","argLength","useParams","currentMethod","TextArea","updateValue","initialVal","defaultValue","Textfield","BooleanSelect","for","disabled","id","Dropdown","dropdownOptions","val","option","name","Field","actualField","description","MethodCall","args","runRequest","argumentList","onUpdateArguments","arg","i","onClick","PageTitle","href","rel","icon","faExternalLinkAlt","SearchBar","setWeb3URL","autoFocus","ethersTemplate","methodCall","varName","url","contractTemplate","address","abi","method","methodArgumentsString","JSON","stringify","contractTraceTemplate","traceTypeList","block","from","contract","filterTemplate","filterMethod","EthersCalls","web3_clientVersion","exec","provider","proto","send","codeSample","web3_sha3","net_version","net_listening","net_peerCount","eth_protocolVersion","eth_syncing","eth_coinbase","eth_mining","eth_hashrate","eth_gasPrice","getGasPrice","then","resp","BigNumber","_hex","toString","eth_accounts","eth_blockNumber","getBlockNumber","eth_getBalance","getBalance","eth_getStorageAt","getStorageAt","eth_getTransactionCount","getTransactionCount","eth_getBlockTransactionCountByHash","eth_getBlockTransactionCountByNumber","eth_getUncleCountByBlockHash","eth_getUncleCountByBlockNumber","eth_getCode","getCode","eth_sign","Promise","resolve","reject","eth_signTransaction","eth_sendTransaction","eth_sendRawTransaction","sendTransaction","eth_call","rest","ethers","Contract","functions","eth_estimateGas","eth_getBlockByHash","getBlockWithTransactions","getBlock","eth_getBlockByNumber","eth_getTransactionByHash","eth_getTransactionByBlockHashAndIndex","eth_getTransactionByBlockNumberAndIndex","eth_getTransactionReceipt","waitForTransaction","eth_getUncleByBlockHashAndIndex","eth_getUncleByBlockNumberAndIndex","eth_getCompilers","eth_compileSolidity","eth_compileSerpent","eth_newFilter","a","topics","split","x","fromBlock","toBlock","filterId","eth_newBlockFilter","eth_newPendingTransactionFilter","eth_uninstallFilter","eth_getFilterChanges","eth_getFilterLogs","eth_getLogs","eth_getWork","trace_block","trace_transaction","trace_get","join","trace_rawTransaction","trace_replayBlockTransactions","trace_replayTransaction","trace_filter","fromAddress","toAddress","after","count","trace_call","traceType","iface","utils","Interface","data","encodeFunctionData","transaction","web3Template","param1","param2","param3","String","Web3JSCalls","eth","isSyncing","getHashrate","getAccounts","getBlockTransactionCount","sendSignedTransaction","getTransaction","getTransactionFromBlock","getTransactionReceipt","getUncle","getBlockUncleCount","Web3RpcCalls","web3","calls","default","ResponseSample","hideCodeSample","NodeResponse","visible","web3RequestTemplate","web3ResponseTemplate","faCopy","RequestIcon","setRequestIcon","ResponseIcon","setResponseIcon","faCheckCircle","navigator","clipboard","writeText","setTimeout","fontSize","color","language","docco","showLineNumbers","wrapLines","customStyle","AppContext","createContext","AppProvider","children","codeSampleVisible","setCodeSampleVisible","toggleSampleCode","useCallback","setAbi","Provider","LogContext","LogProvider","logs","setLogs","contextObject","addToLog","log","currLogs","useEffect","Hook","window","console","Unhook","Web3Context","Web3Provider","web3ContextObject","providerObject","setProviderObject","WrappedProvider","getMethodDisplayName","inputs","inputTypesText","input","getMethodId","getFragmentFromMethodId","methodId","argTypes","typesList","find","element","inputTypes","every","PLACEHOLDER_BASE_TYPE","int","bool","string","byte","isValidUrl","URL","getFilteredMethods","isWriteAllowed","stateMutability","fetchOrParseAbi","abiVal","error","response","fetch","json","Array","isArray","parse","getContractFriendlyArguments","argOffset","list","traceArgs","splice","methodSpecificArgs","abiFragment","push","types","test","formatContractArgs","concat","getCodeSampleFriendlyArguments","cleanAbi","abiObj","codeFriendlyArguments","replace","getFormInputsFromMethod","formInputs","newFormInputs","rawArgs","baseType","getArgumentsFromMethodId","slice","ETH_CALL","TRACE_CALL","MethodCallContainer","setNodeResponse","params","useContext","logItem","formArgs","web3Method","initialFormInputs","setFormInputs","setArgumentList","isContractMethod","updateURL","argsList","joinedArgs","navigate","btoa","loadURL","atob","filteredMethods","formInputsCopy","newUrl","onUpdateAbi","contextProps","startsWith","providers","WebSocketProvider","JsonRpcProvider","Web3","buildProvider","undefined","catch","err","PageTitleContainer","SearchBarContainer","b64url","ResponseSampleContainer","Wrapper","nodeResponse","App","path","ReactDOM","render","document","querySelector"],"mappings":"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","file":"static/js/main.06becf31.chunk.js","sourcesContent":["import React, { useState } from 'react';\r\nimport { Link } from '@reach/router';\r\n\r\nconst MethodItem = ({ index, methodName, web3URL, web3Lib }) => {\r\n\r\n return (\r\n\r\n \r\n \r\n

{methodName}

\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst MethodList = ({ web3Lib, web3URL }) => {\r\n\r\n const availableMethods = [\r\n 'eth_hashrate',\r\n 'eth_gasPrice',\r\n 'eth_blockNumber',\r\n 'eth_getBalance',\r\n 'eth_syncing',\r\n 'eth_getStorageAt',\r\n 'eth_getTransactionCount',\r\n 'eth_getBlockTransactionCountByHash',\r\n 'eth_getBlockTransactionCountByNumber',\r\n 'eth_getCode',\r\n 'eth_sendRawTransaction',\r\n 'eth_getBlockByHash',\r\n 'eth_getBlockByNumber',\r\n 'eth_getTransactionByHash',\r\n 'eth_getTransactionByBlockHashAndIndex',\r\n 'eth_getTransactionByBlockNumberAndIndex',\r\n 'eth_getTransactionReceipt',\r\n 'eth_getUncleByBlockHashAndIndex',\r\n 'eth_getUncleByBlockNumberAndIndex',\r\n 'eth_getUncleCountByBlockHash',\r\n 'eth_getUncleCountByBlockNumber',\r\n ];\r\n\r\n const [foundmethods, setFoundMethods] = useState(availableMethods);\r\n\r\n const filter = (e) => {\r\n const search = e.target.value;\r\n\r\n if (search !== '') {\r\n const searchMethods = availableMethods.filter((user) => {\r\n return user.toLowerCase().includes(search.toLowerCase());\r\n });\r\n setFoundMethods(searchMethods);\r\n } else {\r\n setFoundMethods(availableMethods);\r\n }\r\n\r\n };\r\n\r\n return (\r\n
\r\n\r\n {/* Search bar */}\r\n \r\n\r\n {/* Method list */}\r\n
\r\n
\r\n
\r\n {foundmethods && foundmethods.length > 0 ? (\r\n foundmethods.map((user) => (\r\n \r\n \r\n \r\n ))\r\n ) : (\r\n

No search methods found.

\r\n )}\r\n
\r\n
\r\n
\r\n\r\n
\r\n );\r\n};\r\n\r\nexport { MethodList };\r\n","import React from 'react';\r\nimport { useParams } from '@reach/router';\r\n\r\n\r\nconst NeedMethodMessage = ({\r\n argLength\r\n}) => {\r\n\r\n const params = useParams();\r\n\r\n const {\r\n currentMethod = '',\r\n } = params;\r\n\r\n // Check for zero parameters or no method selected\r\n\r\n if (!currentMethod) {\r\n return (\r\n

Select a method to show available parameters.

\r\n );\r\n } else if (argLength === 0) {\r\n return (\r\n

No parameters required.

\r\n );\r\n } else {\r\n return (\r\n // Return param list\r\n
\r\n );\r\n }\r\n\r\n};\r\n\r\nexport { NeedMethodMessage };\r\n","import React from 'react';\r\nimport { MethodList } from './methodList';\r\nimport { NeedMethodMessage } from './needMethodMessage';\r\n\r\n\r\nconst TextArea = ({ placeholder, updateValue, initialVal }) => {\r\n return (\r\n updateValue(e.target.value)}\r\n defaultValue={initialVal}\r\n placeholder={placeholder} />\r\n );\r\n};\r\n\r\nconst Textfield = ({ placeholder, updateValue, initialVal }) => {\r\n return (\r\n updateValue(e.target.value)}\r\n defaultValue={initialVal}\r\n placeholder={placeholder} />\r\n );\r\n};\r\n\r\nconst BooleanSelect = ({ initialVal, updateValue }) => {\r\n\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nconst Dropdown = ({ dropdownOptions = [], updateValue, disabled, val }) => {\r\n\r\n return (\r\n updateValue(e.target.value)}\r\n disabled={disabled}\r\n >\r\n {dropdownOptions.length !== 1 && (\r\n \r\n )}\r\n {dropdownOptions.map((option, index) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nconst Field = ({\r\n description,\r\n placeholder,\r\n type,\r\n val,\r\n updateValue,\r\n dropdownOptions,\r\n disabled,\r\n}) => {\r\n let actualField;\r\n switch (type) {\r\n case 'dropdown':\r\n actualField = (\r\n \r\n );\r\n break;\r\n case 'textfield':\r\n actualField = (\r\n \r\n );\r\n break;\r\n case 'boolean':\r\n actualField = (\r\n \r\n );\r\n break;\r\n default:\r\n actualField = (\r\n \r\n );\r\n }\r\n\r\n return (\r\n
\r\n
\r\n\r\n

{description}

\r\n {actualField}\r\n\r\n
\r\n );\r\n};\r\n\r\nconst MethodCall = ({\r\n web3URL,\r\n args,\r\n runRequest,\r\n argumentList,\r\n onUpdateArguments,\r\n}) => {\r\n\r\n return (\r\n
\r\n\r\n
\r\n
Method
\r\n
\r\n\r\n
\r\n\r\n {/* List of supported methods */}\r\n\r\n \r\n\r\n {/* Method parameters */}\r\n\r\n
Parameters
\r\n
\r\n\r\n \r\n\r\n
\r\n {args.length > 0}\r\n {args.map((arg, i) => (\r\n {\r\n onUpdateArguments(val, i);\r\n }}\r\n />\r\n ))}\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport { MethodCall };\r\n","import React from 'react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faExternalLinkAlt } from '@fortawesome/free-solid-svg-icons'\r\n\r\nconst PageTitle = () => {\r\n\r\n return (\r\n
\r\n\r\n
\r\n\r\n {/* Page title & subtitle */}\r\n\r\n
\r\n

Composer

\r\n

Configure JSON-RPC requests.

\r\n
\r\n\r\n {/* Gitbook API docs */}\r\n\r\n \r\n\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport { PageTitle };","import React from 'react';\r\n\r\nconst SearchBar = ({ web3URL, setWeb3URL }) => {\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n setWeb3URL(e.target.value)}\r\n defaultValue={web3URL}\r\n autoFocus={true} />\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport { SearchBar };\r\n","import { ethers, BigNumber } from 'ethers';\r\n\r\nconst ethersTemplate = (methodCall, varName, url) => {\r\n return `const ethers = require(\"ethers\");\r\n// OR import ethers from 'ethers';\r\n\r\n// HTTP version\r\n(async () => {\r\n const provider = new ethers.providers.JsonRpcProvider('${url}');\r\n const ${varName} = await provider.${methodCall};\r\n console.log(${varName});\r\n})();\r\n\r\n\r\n// WebSocket version\r\n(async () => {\r\n const provider = new ethers.providers.WebSocketProvider('${url}');\r\n const ${varName} = await provider.${methodCall};\r\n console.log(${varName});\r\n})();\r\n`;\r\n};\r\n\r\n// TODO: Add Websocket example?\r\nconst contractTemplate = (url, args) => {\r\n const [address, abi, method, methodArgumentsString] = args;\r\n return `const ethers = require(\"ethers\");\r\n// OR import ethers from 'ethers';\r\n\r\n// HTTP version\r\n(async () => {\r\n const abi = ${abi && JSON.stringify(abi)}\r\n const provider = new ethers.providers.JsonRpcProvider('${url}');\r\n const contract = new ethers.Contract('${address}', abi, provider);\r\n const response = await contract.functions.${method}(${methodArgumentsString});\r\n console.log(response);\r\n})()\r\n `;\r\n};\r\n\r\nconst contractTraceTemplate = (url, args) => {\r\n const [\r\n traceTypeList,\r\n block,\r\n from,\r\n value,\r\n contract,\r\n abi,\r\n method,\r\n methodArgumentsString,\r\n ] = args;\r\n return `const ethers = require(\"ethers\");\r\n// OR import ethers from 'ethers';\r\n\r\n// HTTP version\r\n(async () => {\r\n const abi = ${abi && JSON.stringify(abi)}\r\n const provider = new ethers.providers.JsonRpcProvider('${url}');\r\n const iface = new ethers.utils.Interface(abi);\r\n const data = iface.encodeFunctionData(\"${method}\"${\r\n methodArgumentsString ? ` , [${methodArgumentsString}]` : ''\r\n }); ${from ? `\\n const from = \"${from}\";` : ''}\r\n const to = \"${contract}\"; ${value ? `\\n const value = \"${value}\";` : ''}\r\n const transaction = { ${from ? `\\n from,` : ''}\r\n to,${value ? `\\n value,` : ''}\r\n data,\r\n };\r\n const response = await provider.send('trace_call', [transaction, ${traceTypeList}, ${block}]);\r\n console.log(response);\r\n})();\r\n `;\r\n};\r\n\r\nconst filterTemplate = (url, filterMethod, filter) => {\r\n return `const ethers = require(\"ethers\");\r\n// OR import ethers from 'ethers';\r\n${filter ? `\\n${filter}\\n` : ''}\r\n// HTTP version\r\n(async () => {\r\n const provider = new ethers.providers.JsonRpcProvider('${url}');\r\n const filterId = await provider.send('${filterMethod}'${\r\n filter ? ', [filter]' : ''\r\n })\r\n console.log(filterId);\r\n const logs = await provider.send('eth_getFilterChanges', [filterId]);\r\n console.log(logs);\r\n})();\r\n\r\n// WebSocket version\r\n(async () => {\r\n const provider = new ethers.providers.WebSocketProvider('${url}');\r\n const filterId = await provider.send('${filterMethod}'${\r\n filter ? ', [filter]' : ''\r\n })\r\n console.log(filterId);\r\n const logs = await provider.send('eth_getFilterChanges', [filterId]);\r\n console.log(logs);\r\n})();\r\n`;\r\n};\r\n\r\nconst EthersCalls = {\r\n web3_clientVersion: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('web3_clientVersion');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('web3_clientVersion')\", 'version', url);\r\n },\r\n args: [],\r\n },\r\n web3_sha3: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('web3_sha3', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(`send('web3_sha3', ['${args[0]}'])`, 'hash', url);\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'The hexified data to convert into a SHA3 hash',\r\n placeholder: 'i.e. 0x68656c6c6f20776f726c64',\r\n },\r\n ],\r\n },\r\n net_version: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('net_version');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(`send('net_version')`, 'network', url);\r\n },\r\n args: [],\r\n },\r\n net_listening: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('net_listening');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('net_listening')\", 'listening', url);\r\n },\r\n args: [],\r\n },\r\n net_peerCount: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('net_peerCount');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('net_peerCount')\", 'peers', url);\r\n },\r\n args: [],\r\n },\r\n eth_protocolVersion: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_protocolVersion');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('eth_protocolVersion')\", 'version', url);\r\n },\r\n args: [],\r\n },\r\n eth_syncing: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_syncing');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('eth_syncing')\", 'isSyncing', url);\r\n },\r\n args: [],\r\n },\r\n eth_coinbase: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_coinbase');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('eth_coinbase')\", 'coinbase', url);\r\n },\r\n args: [],\r\n },\r\n eth_mining: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_mining');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('eth_mining')\", 'isMining', url);\r\n },\r\n args: [],\r\n },\r\n eth_hashrate: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_hashrate');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('eth_hashrate')\", 'hashRate', url);\r\n },\r\n args: [],\r\n },\r\n eth_gasPrice: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.getGasPrice().then(resp => BigNumber.from(resp._hex).toString());\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate('getGasPrice()', 'gasPrice', url);\r\n },\r\n args: [],\r\n },\r\n eth_accounts: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_accounts');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('eth_accounts')\", 'accts', url);\r\n },\r\n args: [],\r\n },\r\n eth_blockNumber: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.getBlockNumber();\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate('getBlockNumber()', 'blockNum', url);\r\n },\r\n args: [],\r\n },\r\n eth_getBalance: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.getBalance(...args).then(resp => BigNumber.from(resp._hex).toString());\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `getBalance('${args[0]}', '${args[1]}')`,\r\n 'balance',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address to check for balance',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_getStorageAt: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.getStorageAt(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `getStorageAt('${args[0]}', '${args[1]}', '${args[2]}')`,\r\n 'storage',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address of the storage',\r\n placeholder: 'i.e. 0x91b51c173a4... or ENS domain',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Hex of the position in the storage',\r\n placeholder: 'i.e. 0x0, 0x1, 0x2...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_getTransactionCount: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.getTransactionCount(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `getTransactionCount('${args[0]}', '${args[1]}')`,\r\n 'txCount',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address to check for balance',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_getBlockTransactionCountByHash: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getBlockTransactionCountByHash', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getBlockTransactionCountByHash', ['${args[0]}'])`,\r\n 'txCount',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get transaction count from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n ],\r\n },\r\n eth_getBlockTransactionCountByNumber: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getBlockTransactionCountByNumber', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getBlockTransactionCountByNumber', ['${args[0]}'])`,\r\n 'txCount',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hex of a block to get transaction count from',\r\n placeholder: 'i.e. 0x9C6EFE',\r\n },\r\n ],\r\n },\r\n eth_getUncleCountByBlockHash: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getUncleCountByBlockHash', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getUncleCountByBlockHash', ['${args[0]}'])`,\r\n 'uncleCount',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get uncle count from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n ],\r\n },\r\n eth_getUncleCountByBlockNumber: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getUncleCountByBlockNumber', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getUncleCountByBlockNumber', ['${args[0]}'])`,\r\n 'uncleCount',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hex of a block to get uncle count from',\r\n placeholder: 'i.e. 0x9C6EFE',\r\n },\r\n ],\r\n },\r\n eth_getCode: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.getCode(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(`getCode('${args[0]}', '${args[1]}')`, 'code', url);\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address to fetch code from',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_sign: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject('EtherFlow does not support this method.')\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* Not Supported by EtherFlow */';\r\n },\r\n args: [],\r\n },\r\n eth_signTransaction: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject('EtherFlow does not support this method.')\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* Not Supported by EtherFlow */';\r\n },\r\n args: [],\r\n },\r\n eth_sendTransaction: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject('EtherFlow does not support this method.')\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* Not Supported by EtherFlow */';\r\n },\r\n args: [],\r\n },\r\n eth_sendRawTransaction: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.sendTransaction(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(`sendTransaction('${args[0]}')`, 'tx', url);\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'The previously signed transaction data',\r\n placeholder:\r\n 'i.e. 0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675',\r\n },\r\n ],\r\n },\r\n eth_call: {\r\n exec: (provider, proto, ...args) => {\r\n const [address, abi, method, ...rest] = args;\r\n const contract = new ethers.Contract(address, abi, provider);\r\n return contract.functions[method](...rest);\r\n },\r\n codeSample: (url, ...args) => {\r\n return contractTemplate(url, args);\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address of contract',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textarea',\r\n description: 'Contract ABI (URL or single function object)',\r\n placeholder:\r\n 'i.e. [{\"inputs\":[{\"name\":\"chainId...\\nOR\\nhttps://raw.githubusercontent.com/.../build/contracts/ERC20.json',\r\n },\r\n {\r\n type: 'dropdown',\r\n description: 'Function name (READ only)',\r\n },\r\n ],\r\n },\r\n eth_estimateGas: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject('EtherFlow does not support this method.')\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* Not Supported by EtherFlow */';\r\n },\r\n args: [],\r\n },\r\n eth_getBlockByHash: {\r\n exec: (provider, proto, ...args) => {\r\n if (args[1] === 'true') {\r\n return provider.getBlockWithTransactions(args[0]);\r\n } else {\r\n return provider.getBlock(args[0]);\r\n }\r\n },\r\n codeSample: (url, ...args) => {\r\n if (args[1] === 'true') {\r\n return ethersTemplate(\r\n `getBlockWithTransactions('${args[0]}')`,\r\n 'blockData',\r\n url\r\n );\r\n } else {\r\n return ethersTemplate(`getBlock('${args[0]}')`, 'blockData', url);\r\n }\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get information from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n {\r\n type: 'boolean',\r\n description: 'Return full transaction objects',\r\n placeholder: '',\r\n },\r\n ],\r\n },\r\n eth_getBlockByNumber: {\r\n exec: (provider, proto, ...args) => {\r\n if (args[1] === 'true') {\r\n return provider.getBlockWithTransactions(args[0]);\r\n } else {\r\n return provider.getBlock(args[0]);\r\n }\r\n },\r\n codeSample: (url, ...args) => {\r\n if (args[1] === 'true') {\r\n return ethersTemplate(\r\n `getBlockWithTransactions('${args[0]}')`,\r\n 'blockData',\r\n url\r\n );\r\n } else {\r\n return ethersTemplate(`getBlock('${args[0]}')`, 'blockData', url);\r\n }\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hex of a block number to get information from',\r\n placeholder: 'i.e. 0x9C6EFE',\r\n },\r\n {\r\n type: 'boolean',\r\n description: 'Return full transaction objects',\r\n placeholder: '',\r\n },\r\n ],\r\n },\r\n eth_getTransactionByHash: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getTransactionByHash', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getTransactionByHash', ['${args[0]}'])`,\r\n 'txInfo',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a transaction to get information for',\r\n placeholder:\r\n 'i.e. 0x95575ee5f6cdb3907cd2983516f33828855ed4f12320103dc8524b96a5a5414b',\r\n },\r\n ],\r\n },\r\n eth_getTransactionByBlockHashAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getTransactionByBlockHashAndIndex', [...args]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getTransactionByBlockHashAndIndex', ['${args[0]}', '${args[1]}'])`,\r\n 'txInfo',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get information from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Hex of tx position in the block',\r\n placeholder: 'i.e. 0x0, 0x1, 0x2...',\r\n },\r\n ],\r\n },\r\n eth_getTransactionByBlockNumberAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getTransactionByBlockNumberAndIndex', [\r\n ...args,\r\n ]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getTransactionByBlockNumberAndIndex', ['${args[0]}', '${args[1]}'])`,\r\n 'txInfo',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Hex of tx position in the block',\r\n placeholder: 'i.e. 0x0, 0x1, 0x2...',\r\n },\r\n ],\r\n },\r\n eth_getTransactionReceipt: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.waitForTransaction(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `waitForTransaction('${args[0]}')`,\r\n 'txReceipt',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a transaction to get information for',\r\n placeholder:\r\n 'i.e. 0x95575ee5f6cdb3907cd2983516f33828855ed4f12320103dc8524b96a5a5414b',\r\n },\r\n ],\r\n },\r\n eth_getUncleByBlockHashAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getUncleByBlockHashAndIndex', args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getUncleByBlockHashAndIndex', ['${args[0]}', '${args[1]}'])`,\r\n 'blockUncle',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get information from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'The uncle’s index position.',\r\n placeholder: 'i.e. 0x0',\r\n },\r\n ],\r\n },\r\n eth_getUncleByBlockNumberAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getUncleByBlockNumberAndIndex', args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_getUncleByBlockNumberAndIndex', ['${args[0]}', '${args[1]}']`,\r\n 'blockUncle',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. 0x29c',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'The uncle’s index position.',\r\n placeholder: 'i.e. 0x0',\r\n },\r\n ],\r\n },\r\n eth_getCompilers: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getCompilers');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\"send('eth_getCompilers')\", 'compilerList', url);\r\n },\r\n args: [],\r\n },\r\n eth_compileSolidity: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_compileSolidity', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_compileSolidity', ['${args[0]}'])`,\r\n 'compiledCode',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'The source code you wish to compile.',\r\n placeholder:\r\n 'i.e. contract test { function multiply(uint a) returns(uint d) { return a * 7; } }',\r\n },\r\n ],\r\n },\r\n eth_compileSerpent: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_compileSerpent', args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('eth_compileSerpent', ['${args[0]}'])`,\r\n 'compiledCode',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'The source code you wish to compile.',\r\n placeholder: 'i.e. /* some serpent */',\r\n },\r\n ],\r\n },\r\n eth_newFilter: {\r\n exec: async (provider, proto, ...args) => {\r\n const filter = {};\r\n filter.topics = args[3]\r\n ? args[3].split(',').map((x) => (x === 'null' ? null : x.split('||')))\r\n : [];\r\n filter.fromBlock = args[0] ? args[0] : 'latest';\r\n filter.toBlock = args[1] ? args[1] : 'latest';\r\n filter.address = args[2] ? args[2] : null;\r\n\r\n const filterId = await provider.send('eth_newFilter', [filter]);\r\n return provider.send('eth_getFilterChanges', [filterId]);\r\n },\r\n codeSample: (url, ...args) => {\r\n const filter = `const filter = {\r\n ${args[0] ? \"fromBlock: '\" + args[0] + \"'\" : \"fromBlock: 'latest'\"},\r\n ${args[1] ? \"toBlock: '\" + args[1] + \"'\" : \"toBlock: 'latest'\"},${\r\n args[2] ? \"\\n address: '\" + args[2] + \"',\" : ''\r\n }\r\n topics: ${\r\n args[3]\r\n ? JSON.stringify(\r\n args[3].split(',').map((x) => (x === 'null' ? null : x.split('||')))\r\n )\r\n : '[]'\r\n }\r\n};`;\r\n return filterTemplate(url, 'eth_newFilter', filter);\r\n },\r\n args: [\r\n {\r\n type: 'textfield',\r\n description:\r\n 'fromBlock: Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. 0x29c',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'toBlock: Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. 0x29c',\r\n },\r\n {\r\n type: 'textarea',\r\n description:\r\n 'address: (optional) Contract address or a list of addresses from which logs should originate.',\r\n placeholder: 'i.e. 0x19624ffa41fe26744e74fdbba77bef967a222d4c',\r\n },\r\n {\r\n type: 'textarea',\r\n description:\r\n 'topics: (optional) Comma separated strings with filter topics, for \"or\" functionality use ||. Topics are order-dependent.',\r\n placeholder: 'i.e. 0x1962||0x16c4,null',\r\n },\r\n ],\r\n },\r\n eth_newBlockFilter: {\r\n exec: async (provider, proto, ...args) => {\r\n const filterId = await provider.send('eth_newBlockFilter');\r\n return provider.send('eth_getFilterChanges', [filterId]);\r\n },\r\n codeSample: (url) => filterTemplate(url, 'eth_newBlockFilter'),\r\n args: [],\r\n },\r\n eth_newPendingTransactionFilter: {\r\n exec: async (provider, proto, ...args) => {\r\n const filterId = await provider.send('eth_newPendingTransactionFilter');\r\n return provider.send('eth_getFilterChanges', [filterId]);\r\n },\r\n codeSample: (url) => filterTemplate(url, 'eth_newPendingTransactionFilter'),\r\n args: [],\r\n },\r\n eth_uninstallFilter: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject('EtherFlow does not support this method.')\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* Not Supported by EtherFlow */';\r\n },\r\n args: [],\r\n },\r\n eth_getFilterChanges: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject(\r\n 'EtherFlow covers this method via eth_newFilter, eth_newBlockFilter and eth_newPendingTransactionFilter.'\r\n )\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* EtherFlow covers this method via eth_newFilter, eth_newBlockFilter and eth_newPendingTransactionFilter */';\r\n },\r\n args: [],\r\n },\r\n eth_getFilterLogs: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject(\r\n 'EtherFlow covers this method via eth_newFilter, eth_newBlockFilter and eth_newPendingTransactionFilter.'\r\n )\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* EtherFlow covers this method via eth_newFilter, eth_newBlockFilter and eth_newPendingTransactionFilter */';\r\n },\r\n args: [],\r\n },\r\n eth_getLogs: {\r\n exec: (provider, proto, ...args) => {\r\n return new Promise((resolve, reject) =>\r\n reject(\r\n 'EtherFlow covers this method via eth_newFilter, eth_newBlockFilter and eth_newPendingTransactionFilter.'\r\n )\r\n );\r\n },\r\n codeSample: (url, ...args) => {\r\n return '/* EtherFlow covers this method via eth_newFilter, eth_newBlockFilter and eth_newPendingTransactionFilter */';\r\n },\r\n args: [],\r\n },\r\n eth_getWork: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('eth_getWork');\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(`send('eth_getWork')`, 'work', url);\r\n },\r\n args: [],\r\n },\r\n trace_block: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('trace_block', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('trace_block', ['${args[0]}'])`,\r\n 'trace',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n trace_transaction: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('trace_transaction', [args[0]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('trace_transaction', ['${args[0]}'])`,\r\n 'trace',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a transaction to get information for',\r\n placeholder:\r\n 'i.e. 0x95575ee5f6cdb3907cd2983516f33828855ed4f12320103dc8524b96a5a5414b',\r\n },\r\n ],\r\n },\r\n trace_get: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('trace_get', [args[0], (args[1] || '').split(',')]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('trace_get', ['${args[0]}', ['${(args[1] || '')\r\n .split(',')\r\n .join(', ')}']])`,\r\n 'trace',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a transaction to get information for',\r\n placeholder:\r\n 'i.e. 0x95575ee5f6cdb3907cd2983516f33828855ed4f12320103dc8524b96a5a5414b',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Index positions of the traces, separated by commas',\r\n placeholder: 'i.e. 0x0,0x2,0x4',\r\n },\r\n ],\r\n },\r\n trace_rawTransaction: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('trace_rawTransaction', [args[0], [args[1]]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('trace_rawTransaction', ['${args[0]}', ['${args[1]}']])`,\r\n 'trace',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Raw transaction data.',\r\n placeholder:\r\n 'i.e. 0xf86a8086d55698372431831e848094f0109fc8df283027b6285cc889f5aa624eac1f55843b9aca008025a009ebb6ca057a0535d6186462bc0b465b561c94a295bdb0621fc19208ab149a9ca0440ffd775ce91a833ab410777204d5341a6f9fa91216a6f3ee2c051fea6a0428',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Type of trace, one of: `vmTrace`, `trace`, `stateDiff`',\r\n placeholder: 'i.e. vmTrace',\r\n },\r\n ],\r\n },\r\n trace_replayBlockTransactions: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('trace_replayBlockTransactions', [\r\n args[0],\r\n [args[1]],\r\n ]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('trace_replayBlockTransactions', ['${args[0]}', ['${args[1]}']])`,\r\n 'trace',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Type of trace, one of: `vmTrace`, `trace`, `stateDiff`',\r\n placeholder: 'i.e. vmTrace',\r\n },\r\n ],\r\n },\r\n trace_replayTransaction: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.send('trace_replayTransaction', [args[0], [args[1]]]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('trace_replayTransaction', ['${args[0]}', ['${args[1]}']])`,\r\n 'trace',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a transaction to get trace for',\r\n placeholder:\r\n 'i.e. 0x02d4a872e096445e80d05276ee756cefef7f3b376bcec14246469c0cd97dad8f',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Type of trace, one of: `vmTrace`, `trace`, `stateDiff`',\r\n placeholder: 'i.e. vmTrace',\r\n },\r\n ],\r\n },\r\n trace_filter: {\r\n exec: (provider, proto, ...args) => {\r\n const filter = {\r\n ...(args[2] && { fromAddress: [args[2]] }),\r\n ...(args[3] && { toAddress: [args[3]] }),\r\n ...(args[4] && { after: args[4] }),\r\n ...(args[5] && { count: args[5] }),\r\n };\r\n filter.fromBlock = args[0] ? args[0] : 'latest';\r\n filter.toBlock = args[1] ? args[1] : 'latest';\r\n\r\n return provider.send('trace_filter', [filter]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return ethersTemplate(\r\n `send('trace_filter', [{\r\n \"fromBlock\": \"${args[0] || 'latest'}\",\r\n \"toBlock\": \"${args[1] || 'latest'}\",${\r\n args[2] ? '\\n\\t\"fromAddress\": [' + args[2] + '],' : ''\r\n }${args[3] ? '\\n\\t\"toAddress\": [' + args[3] + '],' : ''}${\r\n args[4] ? '\\n\\t\"after\": ' + args[3] + ',' : ''\r\n }${args[4] ? '\\n\\t\"count\": ' + args[4] + ',' : ''}\r\n}])`,\r\n 'trace',\r\n url\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textfield',\r\n description:\r\n 'fromBlock: Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. 0x29c',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'toBlock: Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. 0x29c',\r\n },\r\n {\r\n type: 'textarea',\r\n description:\r\n 'fromAddress: (optional) Contract address or a list of addresses from which logs should originate.',\r\n placeholder: 'i.e. 0x19624ffa41fe26744e74fdbba77bef967a222d4c',\r\n },\r\n {\r\n type: 'textarea',\r\n description:\r\n 'toAddress: (optional) Contract address or a list of addresses to which logs should terminate.',\r\n placeholder: 'i.e. 0x19624ffa41fe26744e74fdbba77bef967a222d4c',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'topics: (optional) The offset trace number as an integer.',\r\n placeholder: 'i.e. 1000',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'topics: (optional) The number of traces to display in a batch as an integer.',\r\n placeholder: 'i.e. 10',\r\n },\r\n ],\r\n },\r\n trace_call: {\r\n exec: (provider, proto, ...args) => {\r\n let [\r\n traceType,\r\n block,\r\n from,\r\n value,\r\n contract,\r\n abi,\r\n method,\r\n ...rest\r\n ] = args;\r\n let iface = new ethers.utils.Interface(abi);\r\n const data = iface.encodeFunctionData(method, rest);\r\n if (value === '') value = null;\r\n if (from === '') from = null;\r\n const transaction = {\r\n from,\r\n to: contract,\r\n value,\r\n data,\r\n };\r\n return provider.send('trace_call', [\r\n transaction,\r\n traceType.split(', '),\r\n block,\r\n ]);\r\n },\r\n codeSample: (url, ...args) => {\r\n const [traceType, block, ...rest] = args;\r\n return contractTraceTemplate(url, [\r\n JSON.stringify(traceType.split(', ')),\r\n JSON.stringify(block),\r\n ...rest,\r\n ]);\r\n },\r\n args: [\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Type of trace, one or more of: `vmTrace`, `trace`, `stateDiff`',\r\n placeholder: 'i.e. vmTrace, trace',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n {\r\n type: 'textarea',\r\n description:\r\n 'address: (optional) The address the transaction is sent from',\r\n placeholder: 'i.e. 0x19624ffa41f...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'value: (optional) Integer formatted as a hex string of the value sent with this transaction',\r\n placeholder: 'i.e. 0x19624ffa41f...',\r\n },\r\n {\r\n type: 'textarea',\r\n description: 'Address of contract',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textarea',\r\n description: 'Contract ABI (URL or single function object)',\r\n placeholder:\r\n 'i.e. [{\"inputs\":[{\"name\":\"chainId...\\nOR\\nhttps://raw.githubusercontent.com/.../build/contracts/ERC20.json',\r\n },\r\n {\r\n type: 'dropdown',\r\n description: 'Function name (READ only)',\r\n },\r\n ],\r\n },\r\n};\r\n\r\nexport default EthersCalls;\r\n","// import { method } from \"lodash\";\r\n\r\nconst web3Template = (methodCall, param1, param2, param3) => {\r\n return `{\r\n \"jsonrpc\":\"2.0\",\r\n \"method\":\"${methodCall}\",\r\n \"params\":[\r\n ${String(param1) === \"\" || String(param1) === \"undefined\" ? `` : `\"${param1}\",`}\r\n ${String(param2) === \"undefined\" ? `` : `\"${param2}\",`}\r\n ${String(param3) === \"undefined\" ? `` : `\"${param3}\",`}\r\n ],\r\n \"id\":1\r\n}`;\r\n};\r\n\r\n// const web3TraceTemplate = (\r\n// rpcMethod,\r\n// methodCall,\r\n// args,\r\n// formatters,\r\n// varName,\r\n// url\r\n// ) => {\r\n// return `const Web3 = require(\"web3\");\r\n// // OR import Web3 from 'web3';\r\n\r\n// // HTTP version\r\n// (async () => {\r\n// const web3 = new Web3('${url}');\r\n// web3.extend({\r\n// methods: [\r\n// {\r\n// name: '${methodCall}',\r\n// call: '${rpcMethod}',\r\n// params: ${formatters.length},\r\n// inputFormatter: [${formatters.join(', ')}],\r\n// },\r\n// ],\r\n// });\r\n// const ${varName} = await web3.${methodCall}('${args.join(\"', '\")}');\r\n// console.log(${varName});\r\n// })();\r\n// `;\r\n// };\r\n\r\n// const contractTemplate = (url, args) => {\r\n// const [address, abi, method, methodArgumentsString] = args;\r\n// return `const Web3 = require(\"web3\");\r\n// // OR import Web3 from 'web3';\r\n\r\n// // HTTP version\r\n// (async () => {\r\n// const abi = ${abi && JSON.stringify(abi)}\r\n// const web3 = new Web3('${url}');\r\n// const contract = new web3.eth.Contract(abi, '${address}');\r\n// const response = await contract.methods.${method}(${methodArgumentsString});\r\n// console.log(response);\r\n// })();`;\r\n// };\r\n\r\n// const contractTraceTemplate = (url, args) => {\r\n// const [\r\n// traceTypeList,\r\n// block,\r\n// from,\r\n// value,\r\n// contract,\r\n// abi,\r\n// method,\r\n// methodArgumentsString,\r\n// ] = args;\r\n// return `const Web3 = require(\"web3\");\r\n// // OR import Web3 from 'web3';\r\n\r\n// // HTTP version\r\n// (async () => {\r\n// const abiFragment = ${abi && JSON.stringify(abi[0])}\r\n// const web3 = new Web3('${url}');\r\n// const data = web3.eth.abi.encodeFunctionCall(abiFragment, [${methodArgumentsString}]);${from ? `\\n const from = \"${from}\";` : ''\r\n// }\r\n// const to = \"${contract}\"; ${value ? `\\n const value = \"${value}\";` : ''}\r\n// const transaction = { ${from ? `\\n from,` : ''}\r\n// to,${value ? `\\n value,` : ''}\r\n// data,\r\n// };\r\n// web3.extend({\r\n// methods: [\r\n// {\r\n// name: 'parityTraceCall',\r\n// call: 'trace_call',\r\n// params: 3,\r\n// inputFormatter: [null, null, null],\r\n// },\r\n// ],\r\n// });\r\n// const response = await web3.parityTraceCall(transaction, ${traceTypeList}, ${block});\r\n// console.log(response);\r\n// })();`;\r\n// };\r\n\r\n// const filterTemplate = (url, filterMethod, filter) => {\r\n// return `const Web3 = require(\"web3\");\r\n// // OR import Web3 from 'web3';\r\n// ${filter ? `\\n${filter}\\n` : ''}\r\n// // HTTP version\r\n// (async () => {\r\n// const web3 = new Web3('${url}');\r\n// web3.extend({\r\n// methods: [\r\n// {\r\n// name: '${filterMethod}',\r\n// call: '${filterMethod}',\r\n// params: ${filter ? 1 : 0},\r\n// inputFormatter: [${filter ? 'null' : ''}],\r\n// },\r\n// ],\r\n// });\r\n// web3.extend({\r\n// methods: [\r\n// {\r\n// name: 'eth_getFilterChanges',\r\n// call: 'eth_getFilterChanges',\r\n// params: 1,\r\n// inputFormatter: [null],\r\n// },\r\n// ],\r\n// });\r\n// const filterId = await web3.${filterMethod}(${filter ? 'filter' : ''});\r\n// console.log(filterId);\r\n// const response = await web3.eth_getFilterChanges(filterId);\r\n// console.log(response);\r\n// })();`;\r\n// };\r\n\r\nconst Web3JSCalls = {\r\n eth_syncing: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.isSyncing();\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_syncing`,\r\n );\r\n },\r\n args: [],\r\n },\r\n eth_hashrate: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getHashrate();\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_hashrate`);\r\n },\r\n args: [],\r\n },\r\n eth_gasPrice: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getGasPrice();\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(`eth_gasPrice`);\r\n },\r\n args: [],\r\n },\r\n eth_accounts: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getAccounts();\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(`eth_accounts`);\r\n },\r\n args: [],\r\n },\r\n eth_blockNumber: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBlockNumber();\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(`eth_blockNumber`);\r\n },\r\n args: [],\r\n },\r\n eth_getBalance: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBalance(args[0], args[1]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getBalance`,\r\n `${args[0]}`,\r\n `${args[1]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address to check for balance',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_getStorageAt: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getStorageAt(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getStorageAt`,\r\n `${args[0]}`,\r\n `${args[1]}`,\r\n `${args[2]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address of the storage',\r\n placeholder: 'i.e. 0x91b51c173a4... or ENS domain',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Hex of the position in the storage',\r\n placeholder: 'i.e. 0x0, 0x1, 0x2...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_getTransactionCount: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getTransactionCount(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getTransactionCount`,\r\n `${args[0]}`,\r\n `${args[1]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address to check for balance',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Hex block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_getBlockTransactionCountByHash: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBlockTransactionCount(args[0]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getBlockTransactionCountByHash`,\r\n `${args[0]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get transaction count from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n ],\r\n },\r\n eth_getBlockTransactionCountByNumber: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBlockTransactionCount(args[0]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getBlockTransactionCountByNumber`,\r\n `${args[0]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description:\r\n 'Integer in decimal format of a block to get transaction count from',\r\n placeholder: 'i.e. 10674793',\r\n },\r\n ],\r\n },\r\n eth_getCode: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getCode(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getCode`,\r\n `${args[0]}`,\r\n `${args[1]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Address to fetch code from',\r\n placeholder: 'i.e. 0x91b51c173a4...',\r\n },\r\n {\r\n type: 'textfield',\r\n description:\r\n 'Integer block number, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. latest or pending',\r\n },\r\n ],\r\n },\r\n eth_sendRawTransaction: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.sendSignedTransaction(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_sendRawTransaction`,\r\n `${args[0]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'The previously signed transaction data',\r\n placeholder:\r\n 'i.e. 0xd46e8dd67c5d32be8d46e8dd67c5d32be8058bb8eb970870f072445675058bb8eb970870f072445675',\r\n },\r\n ],\r\n },\r\n\r\n // Supported in Web3API, but doesn't work here\r\n\r\n // eth_call: {\r\n // exec: (provider, proto, ...args) => {\r\n // const [address, abi, method, ...rest] = args;\r\n // try {\r\n // const contract = new provider.eth.Contract(JSON.parse(abi), address);\r\n // return contract.methods[method](...rest).call();\r\n // } catch (e) {\r\n // console.log(e);\r\n // }\r\n // },\r\n // codeSample: (url, ...args) => {\r\n // return contractTemplate(url, args);\r\n // },\r\n // args: [\r\n // {\r\n // type: 'textarea',\r\n // description: 'Address of contract',\r\n // placeholder: 'i.e. 0x91b51c173a4...',\r\n // },\r\n // {\r\n // type: 'textarea',\r\n // description: 'Contract ABI (URL or single function object)',\r\n // placeholder:\r\n // 'i.e. [{\"inputs\":[{\"name\":\"chainId...\\nOR\\nhttps://raw.githubusercontent.com/.../build/contracts/ERC20.json',\r\n // },\r\n // {\r\n // type: 'dropdown',\r\n // description: 'Function name (READ only)',\r\n // },\r\n // ],\r\n // },\r\n\r\n // Supported in Web3API, but doesn't work here\r\n\r\n // eth_estimateGas: {\r\n // exec: (provider, proto, ...args) => {\r\n // return new Promise((resolve, reject) =>\r\n // reject('EtherFlow does not support this method.')\r\n // );\r\n // },\r\n // codeSample: (url, ...args) => {\r\n // return '/* Not Supported by EtherFlow */';\r\n // },\r\n // args: [],\r\n // },\r\n\r\n eth_getBlockByHash: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBlock(args[0], args[1] === 'true');\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getBlockByHash`,\r\n `${args[0]}`,\r\n `false`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get information from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n {\r\n type: 'boolean',\r\n description: 'Return full transaction objects',\r\n placeholder: '',\r\n },\r\n ],\r\n },\r\n eth_getBlockByNumber: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBlock(args[0], args[1] === 'true');\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getBlockByNumber`,\r\n `${args[0]}`,\r\n `false`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description:\r\n 'Integer in decimal format of a block number to get information from',\r\n placeholder: 'i.e. 10674793',\r\n },\r\n {\r\n type: 'boolean',\r\n description: 'Return full transaction objects',\r\n placeholder: '',\r\n },\r\n ],\r\n },\r\n eth_getTransactionByHash: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getTransaction(args[0]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getTransactionByHash`,\r\n `${args[0]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a transaction to get information for',\r\n placeholder:\r\n 'i.e. 0x95575ee5f6cdb3907cd2983516f33828855ed4f12320103dc8524b96a5a5414b',\r\n },\r\n ],\r\n },\r\n eth_getTransactionByBlockHashAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getTransactionFromBlock(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getTransactionByBlockHashAndIndex`,\r\n `${args[0]}`,\r\n `${args[1]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get information from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Integer in decimal format of tx position in the block',\r\n placeholder: 'i.e. 0, 1, 2...',\r\n },\r\n ],\r\n },\r\n eth_getTransactionByBlockNumberAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getTransactionFromBlock(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getTransactionByBlockNumberAndIndex`,\r\n `${args[0]}`,\r\n `${args[1]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description:\r\n 'Integer in decimal format, or the string \"latest\", \"earliest\" or \"pending\"',\r\n placeholder: 'i.e. 10674793',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'Integer in decimal format of tx position in the block',\r\n placeholder: 'i.e. 0, 1, 2...',\r\n },\r\n ],\r\n },\r\n eth_getTransactionReceipt: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getTransactionReceipt(args[0]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getTransactionReceipt`,\r\n `${args[0]}`, \r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a transaction to get information for',\r\n placeholder:\r\n 'i.e. 0x95575ee5f6cdb3907cd2983516f33828855ed4f12320103dc8524b96a5a5414b',\r\n },\r\n ],\r\n },\r\n eth_getUncleByBlockHashAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getUncle(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getUncleByBlockHashAndIndex`,\r\n `${args[0]}`, \r\n `${args[1]}`, \r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get information from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'The uncle’s index position as an integer.',\r\n placeholder: 'i.e. 0, 1, 2...',\r\n },\r\n ],\r\n },\r\n eth_getUncleByBlockNumberAndIndex: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getUncle(...args);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getUncleByBlockNumberAndIndex`,\r\n `${args[0]}`, \r\n `${args[1]}`, \r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description:\r\n 'Integer in decimal format of a block to get transaction count from',\r\n placeholder: 'i.e. 10674793',\r\n },\r\n {\r\n type: 'textfield',\r\n description: 'The uncle’s index position as an integer.',\r\n placeholder: 'i.e. 0, 1, 2...',\r\n },\r\n ],\r\n },\r\n eth_getUncleCountByBlockHash: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBlockUncleCount(args[0]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getUncleCountByBlockHash`,\r\n `${args[0]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description: 'Hash of a block to get uncle count from',\r\n placeholder: 'i.e. 0x16c4e370736...',\r\n },\r\n ],\r\n },\r\n eth_getUncleCountByBlockNumber: {\r\n exec: (provider, proto, ...args) => {\r\n return provider.eth.getBlockUncleCount(args[0]);\r\n },\r\n codeSample: (url, ...args) => {\r\n return web3Template(\r\n `eth_getUncleCountByBlockNumber`,\r\n `${args[0]}`,\r\n );\r\n },\r\n args: [\r\n {\r\n type: 'textarea',\r\n description:\r\n 'Integer in decimal format of a block to get uncle count from',\r\n placeholder: 'i.e. 10674793',\r\n },\r\n ],\r\n },\r\n};\r\n\r\nexport default Web3JSCalls;\r\n","import * as calls from './libs';\r\n\r\nconst Web3RpcCalls = {\r\n eth_syncing: {\r\n description:\r\n 'Returns an object with data about the sync status or false.',\r\n web3: calls.web3.default.eth_syncing,\r\n ethers: calls.ethers.default.eth_hashrate,\r\n },\r\n eth_hashrate: {\r\n description:\r\n 'Returns the number of hashes per second that the node is mining with.',\r\n web3: calls.web3.default.eth_hashrate,\r\n ethers: calls.ethers.default.eth_hashrate,\r\n },\r\n eth_gasPrice: {\r\n description: 'Returns the current price per gas in wei.',\r\n web3: calls.web3.default.eth_gasPrice,\r\n ethers: calls.ethers.default.eth_gasPrice,\r\n },\r\n eth_accounts: {\r\n description: 'Returns a list of addresses owned by client.',\r\n web3: calls.web3.default.eth_accounts,\r\n ethers: calls.ethers.default.eth_accounts,\r\n },\r\n eth_blockNumber: {\r\n description: 'Returns the number of most recent block.',\r\n web3: calls.web3.default.eth_blockNumber,\r\n ethers: calls.ethers.default.eth_blockNumber,\r\n },\r\n eth_getBalance: {\r\n description: 'Returns the balance of the account of given address.',\r\n web3: calls.web3.default.eth_getBalance,\r\n ethers: calls.ethers.default.eth_getBalance,\r\n },\r\n eth_getStorageAt: {\r\n description:\r\n 'Returns the value from a storage position at a given address.',\r\n web3: calls.web3.default.eth_getStorageAt,\r\n ethers: calls.ethers.default.eth_getStorageAt,\r\n },\r\n eth_getTransactionCount: {\r\n description: 'Returns the number of transactions sent from an address.',\r\n web3: calls.web3.default.eth_getTransactionCount,\r\n ethers: calls.ethers.default.eth_getTransactionCount,\r\n },\r\n eth_getBlockTransactionCountByHash: {\r\n description:\r\n 'Returns the number of transactions in a block from a block matching the given block hash.',\r\n web3: calls.web3.default.eth_getBlockTransactionCountByHash,\r\n ethers: calls.ethers.default.eth_getBlockTransactionCountByHash,\r\n },\r\n eth_getBlockTransactionCountByNumber: {\r\n description:\r\n 'Returns the number of transactions in a block matching the given block number.',\r\n web3: calls.web3.default.eth_getBlockTransactionCountByNumber,\r\n ethers: calls.ethers.default.eth_getBlockTransactionCountByNumber,\r\n },\r\n eth_getCode: {\r\n description: 'Returns code at a given address.',\r\n web3: calls.web3.default.eth_getCode,\r\n ethers: calls.ethers.default.eth_getCode,\r\n },\r\n eth_sendRawTransaction: {\r\n description:\r\n 'Creates new message call transaction or a contract creation for signed transactions.',\r\n web3: calls.web3.default.eth_sendRawTransaction,\r\n ethers: calls.ethers.default.eth_sendRawTransaction,\r\n },\r\n\r\n // Supported in Web3API, but doesn't work here\r\n\r\n // eth_call: {\r\n // description: 'Call any read-only function on a deployed contract',\r\n // web3: calls.web3.default.eth_call,\r\n // ethers: calls.ethers.default.eth_call,\r\n // },\r\n // eth_estimateGas: {\r\n // disabled: true,\r\n // description: '🚫 This method is not YET supported in Web3API!',\r\n // web3: calls.web3.default.eth_estimateGas,\r\n // ethers: calls.ethers.default.eth_estimateGas,\r\n // },\r\n \r\n eth_getBlockByHash: {\r\n description: 'Returns information about a block by hash.',\r\n web3: calls.web3.default.eth_getBlockByHash,\r\n ethers: calls.ethers.default.eth_getBlockByHash,\r\n },\r\n eth_getBlockByNumber: {\r\n description: 'Returns information about a block by block number.',\r\n web3: calls.web3.default.eth_getBlockByNumber,\r\n ethers: calls.ethers.default.eth_getBlockByNumber,\r\n },\r\n eth_getTransactionByHash: {\r\n description:\r\n 'Returns the information about a transaction requested by transaction hash.',\r\n web3: calls.web3.default.eth_getTransactionByHash,\r\n ethers: calls.ethers.default.eth_getTransactionByHash,\r\n },\r\n eth_getTransactionByBlockHashAndIndex: {\r\n description:\r\n 'Returns information about a transaction by block hash and transaction index position.',\r\n web3: calls.web3.default.eth_getTransactionByBlockHashAndIndex,\r\n ethers: calls.ethers.default.eth_getTransactionByBlockHashAndIndex,\r\n },\r\n eth_getTransactionByBlockNumberAndIndex: {\r\n description:\r\n 'Returns information about a transaction by block number and transaction index position.',\r\n web3: calls.web3.default.eth_getTransactionByBlockNumberAndIndex,\r\n ethers: calls.ethers.default.eth_getTransactionByBlockNumberAndIndex,\r\n },\r\n eth_getTransactionReceipt: {\r\n description: 'Returns the receipt of a transaction by transaction hash.',\r\n web3: calls.web3.default.eth_getTransactionReceipt,\r\n ethers: calls.ethers.default.eth_getTransactionReceipt,\r\n },\r\n eth_getUncleByBlockHashAndIndex: {\r\n description:\r\n 'Returns information about a uncle of a block by hash and uncle index position.',\r\n web3: calls.web3.default.eth_getUncleByBlockHashAndIndex,\r\n ethers: calls.ethers.default.eth_getUncleByBlockHashAndIndex,\r\n },\r\n eth_getUncleByBlockNumberAndIndex: {\r\n description:\r\n 'Returns information about a uncle of a block by number and uncle index position.',\r\n web3: calls.web3.default.eth_getUncleByBlockNumberAndIndex,\r\n ethers: calls.ethers.default.eth_getUncleByBlockNumberAndIndex,\r\n },\r\n eth_getUncleCountByBlockHash: {\r\n description:\r\n 'Returns the number of uncles in a block from a block matching the given block hash.',\r\n web3: calls.web3.default.eth_getUncleCountByBlockHash,\r\n ethers: calls.ethers.default.eth_getUncleCountByBlockHash,\r\n },\r\n eth_getUncleCountByBlockNumber: {\r\n description:\r\n 'Returns the number of uncles in a block from a block matching the given block number.',\r\n web3: calls.web3.default.eth_getUncleCountByBlockNumber,\r\n ethers: calls.ethers.default.eth_getUncleCountByBlockNumber,\r\n },\r\n};\r\n\r\nexport default Web3RpcCalls;\r\n","import React, { useState } from 'react';\r\nimport Web3RpcCalls from '../helpers/web3Config';\r\nimport SyntaxHighlighter from 'react-syntax-highlighter';\r\nimport { docco } from 'react-syntax-highlighter/dist/esm/styles/hljs';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome'\r\nimport { faCopy } from '@fortawesome/free-solid-svg-icons'\r\nimport { faCheckCircle } from '@fortawesome/free-solid-svg-icons'\r\n\r\n\r\nconst ResponseSample = ({\r\n web3Lib,\r\n args,\r\n currentMethod,\r\n hideCodeSample,\r\n url,\r\n visible,\r\n NodeResponse\r\n}) => {\r\n\r\n const web3RequestTemplate =\r\n currentMethod &&\r\n web3Lib &&\r\n url &&\r\n Web3RpcCalls[currentMethod][web3Lib]['codeSample'](url, ...args);\r\n\r\n const web3ResponseTemplate =\r\n `{\r\n \"jsonrpc\": \"2.0\",\r\n \"id\": 1,\r\n \"result\": ${NodeResponse}\r\n}`\r\n\r\n const [RequestIcon, setRequestIcon] = useState(faCopy);\r\n const [ResponseIcon, setResponseIcon] = useState(faCopy);\r\n\r\n\r\n return (\r\n
\r\n\r\n {/* Sample JSON Request */}\r\n\r\n
\r\n\r\n
\r\n
\r\n
Request
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {currentMethod ? web3RequestTemplate : \"*Sample JSON request*\"}\r\n \r\n
\r\n\r\n
\r\n\r\n {/* Sample JSON Response */}\r\n\r\n
\r\n\r\n
\r\n
\r\n
Response
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n {NodeResponse ? web3ResponseTemplate : \"*Sample JSON response*\"}\r\n \r\n
\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nexport { ResponseSample };","import React, { createContext, useCallback, useState } from 'react';\r\n\r\nconst AppContext = createContext({});\r\n\r\nconst AppProvider = ({ children }) => {\r\n // should we be showing the code sample?\r\n const [codeSampleVisible, setCodeSampleVisible] = useState(false);\r\n const toggleSampleCode = useCallback(() => {\r\n setCodeSampleVisible(!codeSampleVisible);\r\n }, [codeSampleVisible]);\r\n const [abi, setAbi] = useState(null);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport { AppContext, AppProvider };\r\n","import React, { createContext, useEffect, useState } from 'react';\r\nimport { Hook, Unhook } from 'console-feed';\r\n\r\nconst LogContext = createContext({});\r\n\r\nconst LogProvider = ({ children }) => {\r\n // logs\r\n const [logs, setLogs] = useState([]);\r\n const addToLog = (log) => setLogs((currLogs) => [...currLogs, log]);\r\n // bundle it up for use\r\n const contextObject = {\r\n logs,\r\n addToLog,\r\n };\r\n\r\n // run once!\r\n useEffect(() => {\r\n Hook(\r\n window.console,\r\n (log) => setLogs((currLogs) => [...currLogs, log]),\r\n false\r\n );\r\n\r\n return () => Unhook(window.console);\r\n }, []);\r\n\r\n return (\r\n {children}\r\n );\r\n};\r\n\r\nexport { LogContext, LogProvider };\r\n","import React, { createContext, useState } from 'react';\r\n// import ethers from 'ethers';\r\n\r\nconst Web3Context = createContext({});\r\n\r\nconst Web3Provider = ({ children }) => {\r\n const [providerObject, setProviderObject] = useState(null);\r\n // bundle it up for use\r\n const web3ContextObject = {\r\n providerObject,\r\n setProviderObject,\r\n };\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport { Web3Context, Web3Provider };\r\n","import React from 'react';\r\nimport { AppContext, AppProvider } from './appProvider';\r\nimport { LogContext, LogProvider } from './logProvider';\r\nimport { Web3Context, Web3Provider } from './web3Provider';\r\n\r\nconst WrappedProvider = ({ children }) => {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nexport { WrappedProvider as AppProvider, AppContext, LogContext, Web3Context };\r\n","const ERROR_MESSAGE_NO_ABI = 'No ABI provided';\r\nconst ERROR_MESSAGE_PARSE_ABI =\r\n 'Error parsing ABI. Please ensure valid JSON format. Example: [{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]';\r\nconst ERROR_MESSAGE_ABI_TOO_LONG = 'Please only pass one function object.';\r\nconst ERROR_MESSAGE_ABI_NO_READ_FUNCTIONS =\r\n 'The ABI does not contain any READ functions.';\r\nconst ERROR_MESSAGE_FETCH = 'Error fetching ABI. CORS header may not be set.';\r\n\r\nconst getMethodDisplayName = ({ name, inputs }) => {\r\n // Convert a function entity to a human-friendly string\r\n const inputTypesText = inputs.map((input, index) => input.type);\r\n return `${name}${inputs.length > 0 ? ` (${inputTypesText})` : ''}`;\r\n};\r\n\r\nconst getMethodId = ({ name, inputs }) => {\r\n // Convert a function to a unique ID\r\n const inputTypesText = inputs.map((input, index) => input.type);\r\n return `${name}${inputs.length > 0 ? `-${inputTypesText}` : ''}`;\r\n};\r\n\r\nconst getFragmentFromMethodId = (abi, methodId) => {\r\n const [methodName, argTypes] = methodId.split('-');\r\n const typesList = argTypes ? argTypes.split(',') : [];\r\n if (abi.length === 1) return abi[0];\r\n return abi.find((element) => {\r\n if (element.name !== methodName) return false;\r\n const inputTypes = element.inputs.map((input) => input.type);\r\n return (\r\n inputTypes.length === typesList.length &&\r\n inputTypes.every((value, i) => value === typesList[i])\r\n );\r\n });\r\n};\r\n\r\nconst PLACEHOLDER_BASE_TYPE = {\r\n int: '255',\r\n bool: 'true',\r\n address: '0x261b45d85ccfeabb11f022eba346ee8d1cd488c0',\r\n string: 'example text',\r\n byte: '01',\r\n};\r\n\r\nexport const getArgumentsFromMethodId = (abi, methodId) => {\r\n /* eslint-disable-next-line no-unused-vars*/\r\n const [_, rawArgs] = methodId.split('-');\r\n if (!rawArgs) return;\r\n const args = rawArgs.split(',');\r\n const abiFragment = getFragmentFromMethodId(abi, methodId);\r\n return args.map((arg, index) => {\r\n const baseType = arg\r\n .replace(/(uint|int)[0-9]*/, 'int')\r\n .replace(/(byte|bytes)[0-9]*/, 'byte')\r\n .replace(/\\[\\]/, '');\r\n let placeholder = PLACEHOLDER_BASE_TYPE[baseType];\r\n const isArray = /\\[\\]/.test(arg);\r\n if (isArray) placeholder = `${placeholder}, ${placeholder}`;\r\n return {\r\n type: isArray ? 'textarea' : 'textfield',\r\n description: abiFragment.inputs[index].name || arg,\r\n placeholder: `i.e. ${placeholder}`,\r\n };\r\n });\r\n};\r\n\r\nconst isValidUrl = (string) => {\r\n try {\r\n new URL(string);\r\n } catch (e) {\r\n return false;\r\n }\r\n return true;\r\n};\r\n\r\nexport const getFilteredMethods = (abi, isWriteAllowed) => {\r\n try {\r\n return abi\r\n .filter((method) => isWriteAllowed || method.stateMutability === 'view')\r\n .map((method) => ({\r\n value: getMethodId(method),\r\n name: getMethodDisplayName(method),\r\n }));\r\n } catch (e) {\r\n console.log(e);\r\n return [];\r\n }\r\n};\r\n\r\nexport const fetchOrParseAbi = async (abiVal, isWriteAllowed) => {\r\n if (!abiVal) return { error: ERROR_MESSAGE_NO_ABI };\r\n try {\r\n let abi = abiVal;\r\n if (isValidUrl(abiVal)) {\r\n let response = null;\r\n try {\r\n response = await fetch(abiVal);\r\n } catch (e) {\r\n return { error: ERROR_MESSAGE_FETCH };\r\n }\r\n const json = await response.json();\r\n if (Array.isArray(json)) abi = json;\r\n else abi = json.abi;\r\n }\r\n if (typeof abi !== 'object') abi = JSON.parse(abiVal);\r\n if (!isValidUrl(abiVal) && abi.length > 1)\r\n return { error: ERROR_MESSAGE_ABI_TOO_LONG };\r\n // Handle edge case when single function entity is passed\r\n if (!abi.length) abi = [abi];\r\n const filteredMethods = getFilteredMethods(abi, isWriteAllowed);\r\n if (filteredMethods.length === 0)\r\n return { error: ERROR_MESSAGE_ABI_NO_READ_FUNCTIONS };\r\n return { abi };\r\n } catch (e) {\r\n console.log(e);\r\n return { error: ERROR_MESSAGE_PARSE_ABI };\r\n }\r\n};\r\n\r\nexport const formatContractArgs = (args, types) => {\r\n if (!args || !types) return null;\r\n return args.map((arg) => {\r\n if (/,/.test(arg)) {\r\n // Array value\r\n\r\n return arg.split(',');\r\n }\r\n return `${arg}`;\r\n });\r\n};\r\n\r\nexport const getContractFriendlyArguments = (argumentList, abi, argOffset) => {\r\n /* eslint-disable-next-line no-unused-vars*/\r\n let list = argumentList;\r\n const traceArgs = list.splice(0, argOffset); // remove trace arguments (if any)\r\n let [address, methodId, ...methodSpecificArgs] = list;\r\n if (!methodId || !abi) return list;\r\n const [methodName, argTypes] = methodId.split('-');\r\n const typesList = argTypes ? argTypes.split(',') : [];\r\n // Pick out the relevant function fragment\r\n const abiFragment = [getFragmentFromMethodId(abi, methodId)];\r\n let args = [address, JSON.stringify(abiFragment), methodName];\r\n if (argTypes) args.push(...formatContractArgs(methodSpecificArgs, typesList));\r\n return traceArgs.concat(args); // add back trace arguments\r\n};\r\n\r\nexport const getCodeSampleFriendlyArguments = (\r\n argumentList,\r\n abi,\r\n argOffset\r\n) => {\r\n let list = argumentList;\r\n const traceArgs = list.splice(0, argOffset); // remove trace arguments (if any)\r\n const [\r\n contract,\r\n cleanAbi,\r\n methodId,\r\n ...methodSpecificArgs\r\n ] = getContractFriendlyArguments(list, abi);\r\n let abiObj = cleanAbi;\r\n try {\r\n abiObj = JSON.parse(cleanAbi);\r\n } catch (e) {\r\n // do nothing\r\n }\r\n let codeFriendlyArguments = [\r\n contract,\r\n abiObj,\r\n methodId,\r\n JSON.stringify(methodSpecificArgs).replace(/^\\[/, '').replace(/\\]$/, ''),\r\n ];\r\n if (traceArgs) codeFriendlyArguments.splice(0, 0, ...traceArgs);\r\n return codeFriendlyArguments;\r\n};\r\n\r\nexport const getFormInputsFromMethod = (\r\n abi,\r\n methodId,\r\n formInputs,\r\n argOffset\r\n) => {\r\n const newFormInputs = getArgumentsFromMethodId(abi, methodId);\r\n if (newFormInputs)\r\n return [\r\n ...formInputs.slice(0, 3 + argOffset), // Discard existing method-specific inputs\r\n ...newFormInputs,\r\n ];\r\n else return [...formInputs.slice(0, 3 + argOffset)];\r\n};\r\n\r\nexport const onUpdateAbi = (abi, formInputs, argOffset) => {\r\n const isWriteAllowed = argOffset > 0;\r\n const filteredMethods = getFilteredMethods(abi, isWriteAllowed);\r\n const formInputsCopy = formInputs;\r\n formInputsCopy[2 + argOffset] = {\r\n ...formInputs[2 + argOffset],\r\n dropdownOptions: filteredMethods,\r\n disabled: abi.length === 1,\r\n };\r\n let newUrl = null;\r\n if (abi.length === 1) newUrl = filteredMethods[0].value;\r\n return { newFormInputs: formInputsCopy, newUrl };\r\n};\r\n","import React, { useContext, useCallback, useState, useEffect } from 'react';\r\nimport { MethodCall } from '../components';\r\nimport { AppContext, LogContext } from '../context';\r\nimport Web3RpcCalls from '../helpers/web3Config';\r\nimport buildProvider from '../helpers/buildProvider';\r\nimport {\r\n fetchOrParseAbi,\r\n getContractFriendlyArguments,\r\n getFormInputsFromMethod,\r\n onUpdateAbi,\r\n} from '../helpers/contracts';\r\nimport { navigate, useParams } from '@reach/router';\r\n\r\nconst ETH_CALL = 'eth_call';\r\nconst TRACE_CALL = 'trace_call';\r\nconst TRACE_ARGS_OFFSET = 4;\r\n\r\nconst MethodCallContainer = ({\r\n setNodeResponse,\r\n}) => {\r\n const params = useParams();\r\n const { codeSampleVisible, toggleSampleCode, abi, setAbi } = useContext(\r\n AppContext\r\n );\r\n const { addToLog } = useContext(LogContext);\r\n const logItem = useCallback(addToLog, []);\r\n\r\n const {\r\n web3URL = '',\r\n web3Lib = '',\r\n currentMethod = '',\r\n formArgs = '',\r\n } = params;\r\n\r\n const web3Method = Web3RpcCalls[currentMethod] || {};\r\n const { description, disabled } = web3Method || {};\r\n const { args: initialFormInputs, exec } = web3Method[web3Lib] || {};\r\n\r\n const [formInputs, setFormInputs] = useState([]);\r\n const [argumentList, setArgumentList] = useState([]);\r\n\r\n // Logic when using contract method (eth_call, trace_call)\r\n const isContractMethod = [ETH_CALL, TRACE_CALL].includes(currentMethod);\r\n const argOffset = currentMethod === TRACE_CALL ? TRACE_ARGS_OFFSET : 0;\r\n const isWriteAllowed = argOffset > 0;\r\n\r\n const updateURL = (val, index) => {\r\n let argsList = formArgs.split('/').slice(0, formInputs.length); // Remove dangling arguments\r\n argsList[index] = val;\r\n let joinedArgs = argsList.join('/');\r\n let url = `/${web3URL}/${web3Lib}/`;\r\n if (currentMethod) url += `${currentMethod}/`;\r\n if (formInputs.length > 0) url += `${joinedArgs}`;\r\n navigate(url);\r\n };\r\n\r\n const onUpdateArguments = async (val, index) => {\r\n if (isContractMethod && index === 1 + argOffset) {\r\n // Prevent updating URL if ABI error\r\n const { error } = await fetchOrParseAbi(val, isWriteAllowed);\r\n if (error)\r\n return logItem({\r\n method: 'error',\r\n data: ['🚨 Error:', error],\r\n });\r\n return updateURL(btoa(val), index);\r\n }\r\n updateURL(val, index);\r\n };\r\n\r\n const runRequest = () => {\r\n setNodeResponse('querying node...')\r\n try {\r\n const [provider, proto] = buildProvider(web3Lib, atob(web3URL));\r\n let args = argumentList.slice();\r\n // Pre-flight conversion for contract calls\r\n if (isContractMethod)\r\n args = getContractFriendlyArguments(args, abi, argOffset);\r\n exec(provider, proto, ...args)\r\n .then((response) => {\r\n setNodeResponse(JSON.stringify(response, undefined, 6));\r\n })\r\n .catch((err) => {\r\n setNodeResponse(JSON.stringify(err, undefined, 6));\r\n });\r\n } catch (error) {\r\n setNodeResponse(JSON.stringify('Invalid request', undefined, 6));\r\n };\r\n\r\n };\r\n\r\n const loadURL = async () => {\r\n const list = formArgs.split('/');\r\n if (isContractMethod && list[1 + argOffset]) {\r\n // Load ABI\r\n try {\r\n list[1 + argOffset] = atob(list[1 + argOffset]);\r\n const { error, abi } = await fetchOrParseAbi(\r\n list[1 + argOffset],\r\n isWriteAllowed\r\n );\r\n if (error)\r\n return logItem({\r\n method: 'error',\r\n data: ['🚨 Error:', error],\r\n });\r\n setAbi(abi);\r\n } catch (e) {\r\n console.log(e);\r\n }\r\n }\r\n setArgumentList(list);\r\n };\r\n\r\n // Load URL arguments\r\n useEffect(() => {\r\n loadURL();\r\n // eslint-disable-next-line\r\n }, [formArgs, currentMethod, formInputs]);\r\n\r\n useEffect(() => {\r\n if (!abi) return;\r\n const { newFormInputs, newUrl } = onUpdateAbi(abi, formInputs, argOffset);\r\n setFormInputs(newFormInputs);\r\n if (newUrl) updateURL(newUrl, 2 + argOffset);\r\n // eslint-disable-next-line\r\n }, [abi, formInputs]);\r\n\r\n // Update the form inputs whenever a new contract method is selected\r\n useEffect(() => {\r\n if (!argumentList) return;\r\n const methodId = argumentList[2 + argOffset];\r\n if (!methodId || !abi) return;\r\n setFormInputs(\r\n // eslint-disable-next-line\r\n getFormInputsFromMethod(abi, methodId, formInputs, argOffset)\r\n );\r\n // eslint-disable-next-line\r\n }, [argumentList[2 + argOffset]]);\r\n\r\n useEffect(() => {\r\n if (!initialFormInputs) return;\r\n setFormInputs(initialFormInputs);\r\n }, [initialFormInputs]);\r\n\r\n const contextProps = {\r\n codeSampleVisible,\r\n toggleSampleCode,\r\n currentMethod,\r\n web3Lib,\r\n web3URL,\r\n description,\r\n disabled,\r\n args: formInputs,\r\n runRequest,\r\n onUpdateArguments,\r\n argumentList,\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport { MethodCallContainer };\r\n","import { ethers } from 'ethers';\r\nimport Web3 from 'web3';\r\n\r\nexport default (web3Lib, web3URL) => {\r\n let provider;\r\n const proto = web3URL.startsWith('wss') ? 'wss' : 'https';\r\n if (web3Lib === 'ethers') {\r\n provider =\r\n proto === 'wss'\r\n ? new ethers.providers.WebSocketProvider(web3URL)\r\n : new ethers.providers.JsonRpcProvider(web3URL);\r\n } else if (web3Lib === 'web3') {\r\n provider = new Web3(web3URL);\r\n }\r\n\r\n return [provider, proto];\r\n};\r\n","import React from 'react';\r\nimport { PageTitle } from '../components';\r\n\r\nconst PageTitleContainer = () => {\r\n return ( \r\n \r\n );\r\n}\r\n \r\nexport { PageTitleContainer };","import React from 'react';\r\nimport { navigate, useParams } from '@reach/router';\r\nimport { SearchBar } from '../components/searchBar';\r\n\r\nconst SearchBarContainer = () => {\r\n const params = useParams();\r\n const web3URL = atob(params.web3URL || '');\r\n const setWeb3URL = (url) => {\r\n const b64url = btoa(url);\r\n navigate(`/${b64url}`);\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport { SearchBarContainer };\r\n","import React, { useContext } from 'react';\r\nimport { ResponseSample } from '../components';\r\nimport { AppContext } from '../context';\r\nimport { useParams } from '@reach/router';\r\nimport { getCodeSampleFriendlyArguments } from '../helpers/contracts';\r\n\r\n\r\nconst TRACE_CALL = 'trace_call';\r\nconst TRACE_ARGS_OFFSET = 4;\r\n\r\nconst ResponseSampleContainer = ({\r\n NodeResponse\r\n}) => {\r\n\r\n const { codeSampleVisible, toggleSampleCode, abi } = useContext(AppContext);\r\n const params = useParams();\r\n const {\r\n web3URL = '',\r\n web3Lib = '',\r\n currentMethod = '',\r\n formArgs = '',\r\n } = params;\r\n const argumentList = formArgs.split('/');\r\n const hideCodeSample = () => {\r\n toggleSampleCode();\r\n };\r\n\r\n const argOffset = currentMethod === TRACE_CALL ? TRACE_ARGS_OFFSET : 0;\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nexport { ResponseSampleContainer };","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport {\r\n MethodCallContainer,\r\n PageTitleContainer,\r\n SearchBarContainer,\r\n ResponseSampleContainer,\r\n} from './containers';\r\nimport { AppProvider } from './context';\r\nimport { Router } from '@reach/router';\r\nimport { useState } from 'react';\r\n\r\n\r\nfunction Wrapper() {\r\n\r\n const [nodeResponse, setNodeResponse] = useState('')\r\n\r\n return (\r\n \r\n\r\n
\r\n\r\n {/* Title and node URL bar */}\r\n\r\n \r\n \r\n\r\n
\r\n\r\n {/* Method and parameters */}\r\n\r\n
\r\n \r\n
\r\n\r\n {/* Sample code */}\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n )\r\n};\r\n\r\nconst App = () => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n);\r\n\r\nReactDOM.render(, document.querySelector('#root'));\r\n"],"sourceRoot":""}