fcoin/lib/bcoin.js
Christopher Jeffrey c543d205c0 workers parsing.
2016-03-21 21:06:29 -07:00

131 lines
3.6 KiB
JavaScript

/**
* bcoin - javascript bitcoin library
* Copyright (c) 2014-2015, Fedor Indutny (MIT License).
* https://github.com/indutny/bcoin
*/
var bcoin = exports;
var utils = require('./bcoin/utils');
var assert = utils.assert;
var fs;
try {
fs = require('f' + 's');
} catch (e) {
;
}
bcoin.isBrowser =
(typeof process !== 'undefined' && process.browser)
|| typeof window !== 'undefined';
bcoin.prefix = process.env.BCOIN_PREFIX || process.env.HOME + '/.bcoin';
bcoin.debugLogs = +process.env.BCOIN_DEBUG === 1;
bcoin.debugFile = +process.env.BCOIN_DEBUGFILE !== 0;
bcoin.profile = +process.env.BCOIN_PROFILE === 1;
bcoin.fresh = +process.env.BCOIN_FRESH === 1;
bcoin.useWorkers = +process.env.BCOIN_WORKERS > 0;
bcoin.ensurePrefix = function ensurePrefix() {
if (bcoin.isBrowser)
return;
if (bcoin._ensured)
return;
bcoin._ensured = true;
if (bcoin.fresh && bcoin.prefix.indexOf('bcoin') !== -1)
bcoin.rimraf(bcoin.prefix);
try {
fs.statSync(bcoin.prefix);
} catch (e) {
fs.mkdirSync(bcoin.prefix, 0750);
}
};
bcoin.rimraf = function rimraf(file) {
var cp;
if (bcoin.isBrowser)
return;
cp = require('child_' + 'process');
assert(typeof file === 'string');
assert(file !== '/');
assert(file !== process.env.HOME);
cp.execFileSync('rm', ['-rf', file], { stdio: 'ignore' });
};
bcoin.debug = function debug() {
var args = Array.prototype.slice.call(arguments);
var msg;
if (bcoin.debugLogs) {
msg = utils.format(args, true);
process.stdout.write(msg);
}
if (bcoin.debugFile && !bcoin.isBrowser) {
if (!bcoin._debug) {
bcoin.ensurePrefix();
bcoin._debug = fs.createWriteStream(
bcoin.prefix + '/debug.log', { flags: 'a' });
}
msg = utils.format(args, false);
bcoin._debug.write(process.pid + ': ' + msg);
}
};
bcoin.utils = utils;
bcoin.utils.debug = bcoin.debug;
bcoin.utils.ensurePrefix = bcoin.ensurePrefix;
bcoin.reader = require('./bcoin/reader');
bcoin.writer = require('./bcoin/writer');
bcoin.profiler = require('./bcoin/profiler');
bcoin.ec = require('./bcoin/ec');
bcoin.lru = require('./bcoin/lru');
bcoin.protocol = require('./bcoin/protocol');
bcoin.bloom = require('./bcoin/bloom');
bcoin.script = require('./bcoin/script');
bcoin.input = require('./bcoin/input');
bcoin.output = require('./bcoin/output');
bcoin.coin = require('./bcoin/coin');
bcoin.tx = require('./bcoin/tx');
bcoin.mtx = require('./bcoin/mtx');
bcoin.ldb = require('./bcoin/ldb');
bcoin.txpool = require('./bcoin/tx-pool');
bcoin.txdb = require('./bcoin/txdb');
bcoin.abstractblock = require('./bcoin/abstractblock');
bcoin.compactblock = require('./bcoin/compactblock');
bcoin.block = require('./bcoin/block');
bcoin.merkleblock = require('./bcoin/merkleblock');
bcoin.headers = require('./bcoin/headers');
bcoin.ramdisk = require('./bcoin/ramdisk');
bcoin.node = require('./bcoin/node');
bcoin.spvnode = require('./bcoin/spvnode');
bcoin.fullnode = require('./bcoin/fullnode');
bcoin.chainblock = require('./bcoin/chainblock');
bcoin.chaindb = require('./bcoin/chaindb');
bcoin.chain = require('./bcoin/chain');
bcoin.mempool = require('./bcoin/mempool');
bcoin.keypair = require('./bcoin/keypair');
bcoin.address = require('./bcoin/address');
bcoin.walletdb = require('./bcoin/walletdb');
bcoin.wallet = require('./bcoin/wallet');
bcoin.peer = require('./bcoin/peer');
bcoin.pool = require('./bcoin/pool');
bcoin.hd = require('./bcoin/hd');
bcoin.miner = require('./bcoin/miner');
bcoin.http = !bcoin.isBrowser
? require('./bcoin/ht' + 'tp')
: null;
bcoin.workers = bcoin.useWorkers && !bcoin.isBrowser
? require('./bcoin/work' + 'ers')
: null;
bcoin.protocol.network.set(process.env.BCOIN_NETWORK || 'main');