UNPKG

bitquery-protobuf-schema

Version:

Returns Protobuf schemas for the data streamed and stored in S3 for a given topic

119 lines (110 loc) 5.03 kB
const protobuf = require('protobufjs'); const path = require('path'); const loadProto = async (topic) => { let evmFiles = [ 'evm/dex_block_message.proto', 'evm/token_block_message.proto', 'evm/block_message.proto', 'evm/parsed_abi_block_message.proto' ]; let evmMessages = [ 'evm_messages.DexBlockMessage', 'evm_messages.TokenBlockMessage', 'evm_messages.BlockMessage', 'evm_messages.ParsedAbiBlockMessage', ]; let tronFiles = [ 'tron/dex_block_message.proto', 'tron/token_block_message.proto', 'tron/block_message.proto', 'tron/parsed_abi_block_message.proto' ] let tronMessages = [ 'tron_messages.DexBlockMessage', 'tron_messages.TokenBlockMessage', 'tron_messages.BlockMessage', 'tron_messages.ParsedAbiBlockMessage', ]; let topicToPath = { 'bsc.dextrades.proto': evmFiles[0], 'bsc.tokens.proto': evmFiles[1], 'bsc.raw.proto': evmFiles[2], 'bsc.transactions.proto': evmFiles[3], 'bsc.broadcasted.dextrades.proto': evmFiles[0], 'bsc.broadcasted.tokens.proto': evmFiles[1], 'bsc.broadcasted.raw.proto': evmFiles[2], 'bsc.broadcasted.transactions.proto': evmFiles[3], 'eth.dextrades.proto': evmFiles[0], 'eth.tokens.proto': evmFiles[1], 'eth.raw.proto': evmFiles[2], 'eth.transactions.proto': evmFiles[3], 'eth.broadcasted.dextrades.proto': evmFiles[0], 'eth.broadcasted.tokens.proto': evmFiles[1], 'eth.broadcasted.raw.proto': evmFiles[2], 'eth.broadcasted.transactions.proto': evmFiles[3], 'base.dextrades.proto': evmFiles[0], 'base.tokens.proto': evmFiles[1], 'base.raw.proto': evmFiles[2], 'base.transactions.proto': evmFiles[3], 'arbitrum.dextrades.proto':evmFiles[0], 'arbitrum.tokens.proto':evmFiles[1], 'arbitrum.raw.proto':evmFiles[2], 'arbitrum.transactions.proto':evmFiles[3], 'solana.transactions.proto': 'solana/parsed_idl_block_message.proto', 'solana.tokens.proto': 'solana/token_block_message.proto', 'solana.dextrades.proto': 'solana/dex_block_message.proto', 'tron.dextrades.proto': tronFiles[0], 'tron.tokens.proto': tronFiles[1], 'tron.raw.proto': tronFiles[2], 'tron.transactions.proto': tronFiles[3], 'tron.broadcasted.dextrades.proto': tronFiles[0], 'tron.broadcasted.tokens.proto': tronFiles[1], 'tron.broadcasted.raw.proto': tronFiles[2], 'tron.broadcasted.transactions.proto': tronFiles[3], 'btc.transactions.proto': 'utxo/parsed_block_message.proto', 'trading.prices': 'market/price_index.proto' } let topicToMessage = { 'bsc.dextrades.proto': evmMessages[0], 'bsc.tokens.proto': evmMessages[1], 'bsc.raw.proto': evmMessages[2], 'bsc.transactions.proto': evmMessages[3], 'bsc.broadcasted.dextrades.proto': evmMessages[0], 'bsc.broadcasted.tokens.proto': evmMessages[1], 'bsc.broadcasted.raw.proto': evmMessages[2], 'bsc.broadcasted.transactions.proto': evmMessages[3], 'eth.dextrades.proto': evmMessages[0], 'eth.tokens.proto': evmMessages[1], 'eth.raw.proto': evmMessages[2], 'eth.transactions.proto': evmMessages[3], 'eth.broadcasted.dextrades.proto': evmMessages[0], 'eth.broadcasted.tokens.proto': evmMessages[1], 'eth.broadcasted.raw.proto': evmMessages[2], 'eth.broadcasted.transactions.proto': evmMessages[3], 'base.dextrades.proto': evmMessages[0], 'base.tokens.proto': evmMessages[1], 'base.raw.proto': evmMessages[2], 'base.transactions.proto': evmMessages[3], 'arbitrum.dextrades.proto':evmMessages[0], 'arbitrum.tokens.proto':evmMessages[1], 'arbitrum.raw.proto':evmMessages[2], 'arbitrum.transactions.proto':evmMessages[3], 'solana.transactions.proto': 'solana_messages.ParsedIdlBlockMessage', 'solana.tokens.proto': 'solana_messages.TokenBlockMessage', 'solana.dextrades.proto': 'solana_messages.DexParsedBlockMessage', 'tron.dextrades.proto': tronMessages[0], 'tron.tokens.proto': tronMessages[1], 'tron.raw.proto': tronMessages[2], 'tron.transactions.proto': tronMessages[3], 'tron.broadcasted.dextrades.proto': tronMessages[0], 'tron.broadcasted.tokens.proto': tronMessages[1], 'tron.broadcasted.raw.proto': tronMessages[2], 'tron.broadcasted.transactions.proto': tronMessages[3], 'btc.transactions.proto': 'utxo_messages.ParsedBlockMessage', 'trading.prices': 'marketdata_messages.PriceIndexMessage' } const filePath = path.join(__dirname, topicToPath[topic]) const root = await protobuf.load(filePath); return root.lookupType(topicToMessage[topic]); }; module.exports = {loadProto};