'use strict'; var bitcore = require('bitcore'); function builder(options) { /* jshint maxstatements: 20 */ /* jshint maxcomplexity: 10 */ if (!options) { options = {}; } if (!options.magicNumber) { options.magicNumber = bitcore.Networks.defaultNetwork.networkMagic.readUInt32LE(0); } options.Block = options.Block || bitcore.Block; options.BlockHeader = options.BlockHeader || bitcore.BlockHeader; options.Transaction = options.Transaction || bitcore.Transaction; options.MerkleBlock = options.MerkleBlock || bitcore.MerkleBlock; options.protocolVersion = options.protocolVersion || 70000; var exported = { constructors: { Block: options.Block, BlockHeader: options.BlockHeader, Transaction: options.Transaction, MerkleBlock: options.MerkleBlock }, defaults: { protocolVersion: options.protocolVersion, magicNumber: options.magicNumber }, commandsMap: { version: 'Version', verack: 'VerAck', ping: 'Ping', pong: 'Pong', block: 'Block', tx: 'Transaction', getdata: 'GetData', headers: 'Headers', notfound: 'NotFound', inv: 'Inventory', addr: 'Address', alert: 'Alert', reject: 'Reject', merkleblock: 'MerkleBlock', filterload: 'FilterLoad', filteradd: 'FilterAdd', filterclear: 'FilterClear', getblocks: 'GetBlocks', getheaders: 'GetHeaders', mempool: 'MemPool', getaddr: 'GetAddr' }, commands: {} }; for (var key in exported.commandsMap) { exported.commands[key] = require('./commands/' + key)(options); } return exported; } module.exports = builder;