* Update subgraph watcher demo readme
* Pass extra block data required in subgraph block handler (#486)
* Use codegen config directory name instead of file path
* Get block data from extra event data
* Add extra event data in processBlockAfterEvents
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Update example subgraph mapping code for graph-cli upgrade
* Return 0 value for block size in ipld-eth-client
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
* Fill watcher start block only in active mode
* Fix sync status update in historical processing
* Upgrade package versions
* Upgrade package versions in codegen template
* Fix graph-node test indexer
* Add check for from and to block in eventsInRange query
* Update sync status query for more fields
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Find minimum start block number
* Perform fill if db is empty
* Make getStartBlock method public in GraphWatcher
* Use dataSources property
* Update server template to fill block on start
* Avoid passing graphWatcher from generated watcher
* Ensure block filling for non-subgraph watchers as well
* Remove getStartBlock method from GraphWatcher
* Remove graphWatcher property from ServerCmd
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Use shelljs to run graph-cli codegen command
* Replace graph-cli and graph-ts with cerc-io forks
* Add steps to build subgraph
* Add config packageManager for different subgraph repo setup
* Copy over the subgraph build to generated watcher
* Remove TODO
* Change subgraph path in generated watcher config
* Implement host api for big decimal equals
* Add test cases for big decimal equals
* Use boolean type conversion
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add where filter equals fields based on entity fields
* Add different where filter operations for entity fields
* Add nested where filter for relation fields and filter params or & and
* Remove filters not required for derived fields
* Add nested order by params in schema
* Throw error on trying to sort by array or derived type fields
* Handle array fields while generating order by and where clauses
* Upgrade package versions
---------
Co-authored-by: Prathamesh Musale <prathamesh.musale0@gmail.com>
* Use topic hash of events from config file
* Add eventSignaturesMap field in IndexerInterface
* Add eventSignaturesMap property in Indexer class
---------
Co-authored-by: neeraj <neeraj.rtly@gmail.com>
* Add lower case method for camel case entity names
* Add BlockChangedFilter required in where filter
* Use lower camel case in resolvers and fix lower case transformation
* Throw error in job-runner events processing queue for retry
* Restart block processing after completion of retried events queue job
* Check events queue size in retry state from active historical processing job
* Clear watched contracts from memory map on reset
* Update sync status with zero hash during historical processing
* Update codegen for changes
* Add clearProcessedBlockData in graph-node test dummy indexer
* Fix duplicate historical processing jobs created on template create
* Fix switch from historical to realtime processing when template create block is near head
* Set gzip true in ethersjs provider
* Add timer logs and use StaticJsonRpcProvider
* Fetch block data in historical processing and cache in map
* Fetch txs required for event logs in historical processing
* Process events with prefetched block and txs data in realtime processing
* Clear old TODOs
* Reset to latest processed block on restarting job-runner
* Update sync status during historical processing in job-runner
* Codegen changes
* Use sync status latest processed block for subgraph _meta GQL query
* Set job per interval for subscribing events queue to 1
* Fix events processing skipped for blocks after template create
* Wait for events queue to be empty before continuing historical processing
* Make historicalLogsBlockRange and historicalMaxFetchAhead configurable
* Perform single RPC request for multiple addresses
* Handle subgraph template create when filterLogsByAddresses set to true
* Fix historical processing stopping after running for multiple batches
* Add new method in graph-node test dummy indexer
* Fix async block size caching for missing blocks in historical processing
* Start historical block processing only if filter logs is set to true
* Fetch filtered logs by topics and save required blocks
* Fix realtime processing start block after historical processing
* Avoid publishing events and blocks in historical processing
* Add new method to graph-node test indexer
* Get full block data for subgraph block handler only if configured
* Add useBlockRanges flag for switching between historical and realtime processing
* Add TODOs for historical blocks processing
* Add new job for historical blocks processing
* Handle historical job completion
* Fetch latest block in chain and start historical block processing
* Fix starting realtime block processing from latest canonical block
* Refactor historical block processing method and add logs
* Add dummy indexer methods in graph-node to pass test
* Changes in codegen for historical processing in generated watcher
* Skip log index order in events processing
* Use json-bigint stringify in processBatchEvents
* Set eventSignature in event processing for contracts watched later
* Check for null block in async caching of block sizes
* Update subgraph readme to run fill before job-runner
* Fix getContractEntitiesMap incase of template data sources
* Use rpcSupportsBlockHashParam flag to use blockNumber for rpc client eth_call
* Fix optional baseFeePerGas in rpc-eth-client
* Fix graph-node tests after changes
* Remove completed TODO
* Add validation for config file
* Add support for websocket endpoints to be checked for contract deployment
* Add flag to toggle validation
* Update log message for paid rpc method validation
* Update log message for validation
* Rename enableValidation to enableConfigValidation
* Check deployment only if contract address is in a valid format
* Update httpValidateEndpoint method to check if endpoint is up instead of response as ok
* Update log messages
* Update log messages
---------
Co-authored-by: Shreerang Kale <shreerangkale@gmail.com>
* Implement rpc-eth-client with getStorageAt method
* Add test for comparing RPC and GQL eth-client getStorageAt method
* Add getBlockWithTransactions and getBlocks method
* Implement getFullBlocks with RLP encoded data
* Implement getFullTransaction method with raw tx
* Implement getBlockByHash and getLogs methods
* Add flag and interface to switch between RPC and GQL eth clients
* Fix getBlocks to return empty array when block not present
* Return empty array in getBlocks for missing block and use blockNumber in getLogs
* Fix getRawTransaction method for zero signature.v value
* Remove duplicate util from rpc-eth-client
* Wait for receiving voucher on GQL query
* Add timeout while authenticating voucher and remove listener channel
* Clear timeout after payment received
* Rename variable to paymentListener
* Upgrade package versions
* Add rpcSupportsBlockHashParam flag in config
* Add util method for preparing state from GQL response entity
* Refactor method to create or update state data
* Fix typeorm bigint transformer and convert to checksum contract address
* Skip resetting to previous block in job-runner if isComplete set to true
* Fix creating subgraph event with struct params
* Use quotes for table names in custom queries
* Fix indexer prepareStateEntry method
* Fix toEthereumValue method when used with ethereum.decode
* Add CLI for creating snapshot checkpoint state from GQL endpoint
* Skip import-state if block is already indexed
* Review changes
* Generate indexer and entities with DB caching for multiple return types
* Generate database file code for multiple return types
* Remove returnType from client codegen as not required
* Changes for fixing lint warnings
* Handle mapping type values in storage mode
* Generate entities for array return type queries
* Refactor visitor for DB caching of array return types
* Fix saving bigint array type in DB
* Fix ValueTransformers to check for undefined value
* Create Result types if needed
* Update codegen to include array return type queries in schema
* Update codegen to include array return type queries in resolvers
* Update codegen to include array return type queries in indexers
* Codegen skip db caching methods for queries returning unhandled types
* Codegen handle bigint array in indexer
* Update codegen to handle basic array types
* Remove redundant code and refactor
* Codegen map Solidity types directly to GraphQL types
* Codegen get TS from GQL types
* Codegen handle ethers BigNumber array in indexer template
* Fix GQL type returned in client queries
* Codegen unused method isElementaryType should not be exported
* Codegen update README with solc version in config
* Codegen update README with continue-on-error flag
* Codegen add continue-on-error flag for storage mode
* Codegen generate gitignore and license for watchers
* Codegen refactor gitignore and license generation utils
---------
Co-authored-by: Dhruv Srivastava <dhruvdhs.ds@gmail.com>
* Add --continue-on-error flag to codegen for skipping unhandled data types
* Use solc version defined in config
* Fix codegen log for unhandled array types
* Log solc compilation errors
---------
Co-authored-by: Dhruv Srivastava <dhruvdhs.ds@gmail.com>
* Use laconic ETH RPC endpoint for querying
* Run peer with message handler to send tx to laconic
* Handle revoke messages in mobymask p2p
* Set tx gasLimit explicitly for slow eth_estimateGas call
* Convert delegationHash to hex string before broadcasting json
* Improve connection check with peers by retrying ping on failures
* Use DEFAULT_PING_INTERVAL in cli
* Log only error message
* Add config option to pass peer id file path
* Finish retrying pings before connection check interval duration
* Handle duplicate connections to relay nodes
* Increase default max dial retries from one relay to another
* Update connection manager config for relay nodes
* Use debug for logs in relay node
---------
Co-authored-by: prathamesh0 <prathamesh.musale0@gmail.com>
* Use browser metrics package
* Get latency from heartbeat check
* Use metrics in nodejs CLI
* Avoid disconnect from primary relay on reaching limit
* Fix relay connections count
* Redial relay node on failure and after going offline
* Redial only relay node if not connected
* Refactor and rename methods
* Only close existing connection to relay node
* Hearbeat check only for relay node
* Refactor startHeartbeatCheck method