UNPKG

envio

Version:

A latency and sync speed optimized, developer friendly blockchain data indexer.

85 lines (78 loc) 3.77 kB
// Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; var Utils = require("./Utils.res.js"); var Js_exn = require("rescript/lib/js/js_exn.js"); var ChainMap = require("./ChainMap.res.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); function make(shouldRollbackOnReorgOpt, shouldSaveFullHistoryOpt, chainsOpt, enableRawEventsOpt, preloadHandlersOpt, ecosystemOpt, batchSizeOpt, lowercaseAddressesOpt, multichainOpt, shouldUseHypersyncClientDecoderOpt, maxAddrInPartitionOpt) { var shouldRollbackOnReorg = shouldRollbackOnReorgOpt !== undefined ? shouldRollbackOnReorgOpt : true; var shouldSaveFullHistory = shouldSaveFullHistoryOpt !== undefined ? shouldSaveFullHistoryOpt : false; var chains = chainsOpt !== undefined ? chainsOpt : []; var enableRawEvents = enableRawEventsOpt !== undefined ? enableRawEventsOpt : false; var preloadHandlers = preloadHandlersOpt !== undefined ? preloadHandlersOpt : false; var ecosystem = ecosystemOpt !== undefined ? ecosystemOpt : "evm"; var batchSize = batchSizeOpt !== undefined ? batchSizeOpt : 5000; var lowercaseAddresses = lowercaseAddressesOpt !== undefined ? lowercaseAddressesOpt : false; var multichain = multichainOpt !== undefined ? multichainOpt : "unordered"; var shouldUseHypersyncClientDecoder = shouldUseHypersyncClientDecoderOpt !== undefined ? shouldUseHypersyncClientDecoderOpt : true; var maxAddrInPartition = maxAddrInPartitionOpt !== undefined ? maxAddrInPartitionOpt : 5000; if (lowercaseAddresses && !shouldUseHypersyncClientDecoder) { Js_exn.raiseError("lowercase addresses is not supported when event_decoder is 'viem'. Please set event_decoder to 'hypersync-client' or change address_format to 'checksum'."); } var chainMap = ChainMap.fromArrayUnsafe(chains.map(function (n) { return [ ChainMap.Chain.makeUnsafe(n.id), n ]; })); var addContractNameToContractNameMapping = {}; Belt_Array.forEach(chains, (function (chainConfig) { Belt_Array.forEach(chainConfig.contracts, (function (contract) { var addKey = "add" + Utils.$$String.capitalize(contract.name); addContractNameToContractNameMapping[addKey] = contract.name; })); })); return { shouldRollbackOnReorg: shouldRollbackOnReorg, shouldSaveFullHistory: shouldSaveFullHistory, multichain: multichain, chainMap: chainMap, defaultChain: Belt_Array.get(chains, 0), ecosystem: ecosystem, enableRawEvents: enableRawEvents, preloadHandlers: preloadHandlers, maxAddrInPartition: maxAddrInPartition, batchSize: batchSize, lowercaseAddresses: lowercaseAddresses, addContractNameToContractNameMapping: addContractNameToContractNameMapping }; } function shouldSaveHistory(config, isInReorgThreshold) { if (config.shouldSaveFullHistory) { return true; } else if (config.shouldRollbackOnReorg) { return isInReorgThreshold; } else { return false; } } function shouldPruneHistory(config, isInReorgThreshold) { if (!config.shouldSaveFullHistory && config.shouldRollbackOnReorg) { return isInReorgThreshold; } else { return false; } } function getChain(config, chainId) { var chain = ChainMap.Chain.makeUnsafe(chainId); if (ChainMap.has(config.chainMap, chain)) { return chain; } else { return Js_exn.raiseError("No chain with id " + ChainMap.Chain.toString(chain) + " found in config.yaml"); } } exports.make = make; exports.shouldSaveHistory = shouldSaveHistory; exports.shouldPruneHistory = shouldPruneHistory; exports.getChain = getChain; /* Utils Not a pure module */