131 lines
3.6 KiB
JavaScript
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');
|