UNPKG

bitcore-node

Version:

A blockchain indexing node with extended capabilities using bitcore

70 lines 3.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Modules = exports.BaseModule = void 0; const logger_1 = __importDefault(require("../logger")); const chain_state_1 = require("../providers/chain-state"); const libs_1 = require("../providers/libs"); const api_1 = require("../services/api"); const config_1 = require("../services/config"); const event_1 = require("../services/event"); const p2p_1 = require("../services/p2p"); const storage_1 = require("../services/storage"); const verification_1 = require("../services/verification"); class BaseModule { constructor(bitcoreServices = { P2P: p2p_1.P2P, Storage: storage_1.Storage, Event: event_1.Event, Api: api_1.Api, Config: config_1.Config, CSP: chain_state_1.ChainStateProvider, Libs: libs_1.Libs, Verification: verification_1.Verification }) { this.bitcoreServices = bitcoreServices; this.internalServices = new Array(); } async start() { for (const service of this.internalServices) { await service.start(); } } async stop() { for (const service of this.internalServices.reverse()) { await service.stop(); } } } exports.BaseModule = BaseModule; class ModuleManager extends BaseModule { constructor() { super(...arguments); this.internalServices = new Array(); // Chain names -> module paths map this.DEFAULT_MODULE_PATHS = { BTC: './bitcoin', ETH: './ethereum', MATIC: './matic', BCH: './bitcoin-cash', DOGE: './dogecoin', LTC: './litecoin', XRP: './ripple' }; } loadConfigured(params = {}) { const chains = params.chain ? [params.chain] : config_1.Config.chains(); // Auto register known modules from config.chains for (const chain of chains) { let modulePath = this.DEFAULT_MODULE_PATHS[chain]; // Register for each const networks = params.network ? [params.network] : config_1.Config.networksFor(chain); for (const network of networks) { const config = config_1.Config.chainConfig({ chain, network }); modulePath = config.module || modulePath; // custom module path if (!modulePath) { logger_1.default.warn(`Module not found for ${chain}:${network}. Did you forget to specify 'module' in the config?`); continue; } logger_1.default.info(`Registering module for ${chain}:${network}: ${modulePath}`); const ModuleClass = require(modulePath).default || require(modulePath); this.internalServices.push(new ModuleClass(this.bitcoreServices, chain, network, config)); } } } } exports.Modules = new ModuleManager(); //# sourceMappingURL=index.js.map