var _ = require('lodash'); var moment = require('moment'); var async = require('async'); var os = require('os'); var util = require('../../util'); var dirs = util.dirs(); var dateRangeScan = require('../dateRangeScan/parent'); module.exports = function(config, done) { util.setConfig(config); var adapter = config[config.adapter]; var scan = require(dirs.gekko + adapter.path + '/scanner'); scan((err, markets) => { if(err) return done(err); let numCPUCores = os.cpus().length; if(numCPUCores === undefined) numCPUCores = 1; async.eachLimit(markets, numCPUCores, (market, next) => { let marketConfig = _.clone(config); marketConfig.watch = market; dateRangeScan(marketConfig, (err, ranges) => { if(err) return next(); market.ranges = ranges; next(); }); }, err => { let resp = { datasets: [], errors: [] } markets.forEach(market => { if(market.ranges) resp.datasets.push(market); else resp.errors.push(market); }) done(err, resp); }) }); }