deps: browser transform.

This commit is contained in:
Christopher Jeffrey 2016-10-03 01:45:06 -07:00
parent bb89d203c1
commit 3e59282c66
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
21 changed files with 188 additions and 191 deletions

75
browser/transform.js Normal file
View File

@ -0,0 +1,75 @@
var Transform = require('stream').Transform;
var path = require('path');
var assert = require('assert');
var fs = require('fs');
var StringDecoder = require('string_decoder').StringDecoder;
function nil() {
var stream = new Transform();
stream._transform = function(chunk, encoding, callback) {
callback(null, chunk);
};
stream._flush = function(callback) {
callback();
};
return stream;
}
function processEnv(str) {
return str.replace(
/^( *)this\.require\('(\w+)', '([^']+)'\)/gm,
'$1this.$2 = require(\'$3\')');
}
function processLazy(str) {
str.replace(
/^( *)lazy\('(\w+)', '([^']+)'\)/gm,
function(_, sp, w1, w2) {
str += sp + 'if (0) require(\'' + w2 + '\');\n';
return '';
}
);
return str;
}
function transformer(file, process) {
var stream = new Transform();
var decoder = new StringDecoder('utf8');
var str = '';
stream._transform = function(chunk, encoding, callback) {
assert(Buffer.isBuffer(chunk));
str += decoder.write(chunk);
callback(null, new Buffer(0));
};
stream._flush = function(callback) {
str = process(str);
stream.push(new Buffer(str, 'utf8'));
callback();
};
return stream;
}
function end(file, offset) {
return path.normalize(file).split(path.sep).slice(-offset).join('/');
}
module.exports = function(file) {
if (end(file, 3) === 'lib/utils/utils.js')
return transformer(file, processLazy);
if (end(file, 3) === 'lib/crypto/crypto.js')
return transformer(file, processLazy);
if (end(file, 2) === 'lib/env.js')
return transformer(file, processEnv);
return nil();
};

View File

@ -1,17 +0,0 @@
/*!
* bip70.js - bip70 for bcoin
* Copyright (c) 2016, Christopher Jeffrey (MIT License).
* https://github.com/bcoin-org/bcoin
*/
'use strict';
var lazy = require('../utils/lazy')(require, exports);
lazy('PaymentRequest', './paymentrequest');
lazy('PaymentDetails', './paymentdetails');
lazy('Payment', './payment');
lazy('PaymentACK', './paymentack');
lazy('asn1', './asn1');
lazy('x509', './x509');
lazy('pk', './pk');

View File

@ -1,3 +1,15 @@
/*!
* bip70.js - bip70 for bcoin
* Copyright (c) 2016, Christopher Jeffrey (MIT License).
* https://github.com/bcoin-org/bcoin
*/
'use strict'; 'use strict';
module.exports = require('./bip70'); exports.PaymentRequest = require('./paymentrequest');
exports.PaymentDetails = require('./paymentdetails');
exports.Payment = require('./payment');
exports.PaymentACK = require('./paymentack');
exports.asn1 = require('./asn1');
exports.x509 = require('./x509');
exports.pk = require('./pk');

View File

@ -1,10 +1,8 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.Chain = require('./chain');
exports.ChainDB = require('./chaindb');
lazy('Chain', './chain'); exports.ChainEntry = require('./chainentry');
lazy('ChainDB', './chaindb'); exports.Coins = require('./coins');
lazy('ChainEntry', './chainentry'); exports.CoinView = require('./coinview');
lazy('Coins', './coins'); exports.compressor = require('./compress');
lazy('CoinView', './coinview');
lazy('compressor', './compress');

View File

@ -1,12 +1,11 @@
'use strict'; 'use strict';
var utils = require('../utils/utils'); var utils = require('../utils/utils');
var lazy = require('../utils/lazy')(require, exports);
lazy('ldb', './ldb'); exports.ldb = require('./ldb');
if (utils.isBrowser) if (utils.isBrowser)
lazy('level', './level'); exports.level = require('./level');
lazy('LowlevelUp', './lowlevelup'); exports.LowlevelUp = require('./lowlevelup');
lazy('RBT', './rbt'); exports.RBT = require('./rbt');

View File

@ -194,6 +194,7 @@ function Environment() {
this.require('account', './wallet/account'); this.require('account', './wallet/account');
this.require('walletdb', './wallet/walletdb'); this.require('walletdb', './wallet/walletdb');
this.require('path', './wallet/path'); this.require('path', './wallet/path');
this.require('masterkey', './wallet/masterkey');
this.require('walletkey', './wallet/walletkey'); this.require('walletkey', './wallet/walletkey');
// HTTP // HTTP
@ -204,7 +205,7 @@ function Environment() {
this.require('workers', './workers/workers'); this.require('workers', './workers/workers');
// Horrible BIP // Horrible BIP
this.require('bip70', './bip70/bip70'); this.require('bip70', './bip70');
} }
/** /**
@ -256,82 +257,15 @@ Environment.prototype.now = function now() {
/** /**
* Cache all necessary modules. * Cache all necessary modules.
* Used for benchmarks and browserify.
*/ */
Environment.prototype.cache = function cache() { Environment.prototype.cache = function cache() {
require('bn.js');
require('./protocol/constants');
require('./protocol/networks');
require('./protocol/network');
require('./utils/utils');
require('./utils/locker');
require('./utils/reader');
require('./utils/writer');
require('./utils/lru');
require('./utils/bloom');
require('./utils/uri');
require('./utils/errors');
require('./utils/co');
require('./crypto/ec');
require('./crypto/crypto');
require('./crypto/chachapoly');
require('./crypto/scrypt');
require('./crypto/siphash');
require('./db/lowlevelup');
require('./db/ldb');
require('./db/rbt');
require('./script/script');
require('./script/opcode');
require('./script/stack');
require('./script/witness');
require('./script/program');
require('./script/sigcache');
require('./primitives/address');
require('./primitives/outpoint');
require('./primitives/input');
require('./primitives/output');
require('./primitives/coin');
require('./primitives/invitem');
require('./primitives/tx');
require('./primitives/mtx');
require('./primitives/abstractblock');
require('./primitives/memblock');
require('./primitives/block');
require('./primitives/merkleblock');
require('./primitives/headers');
require('./primitives/keyring');
require('./primitives/netaddress');
require('./hd/hd');
require('./node/logger');
require('./node/config');
require('./node/node');
require('./node/spvnode');
require('./node/fullnode'); require('./node/fullnode');
require('./net/timedata'); require('./node/spvnode');
require('./net/packets');
require('./net/bip150');
require('./net/bip151');
require('./net/bip152');
require('./net/peer');
require('./net/pool');
require('./chain/coins');
require('./chain/coinview');
require('./chain/chainentry');
require('./chain/chaindb');
require('./chain/chain');
require('./mempool/fees');
require('./mempool/mempool');
require('./miner/miner');
require('./miner/minerblock');
require('./wallet/wallet');
require('./wallet/account');
require('./wallet/walletdb');
require('./wallet/path');
require('./http'); require('./http');
require('./http/rpc'); require('./crypto/schnorr');
require('./workers/workers'); require('./utils/uri');
require('./bip70/bip70'); require('./bip70');
}; };
/* /*

View File

@ -8,13 +8,15 @@
'use strict'; 'use strict';
var utils = require('../utils/utils'); var utils = require('../utils/utils');
var lazy = require('../utils/lazy')(require, exports);
if (!utils.isBrowser) { if (!utils.isBrowser) {
lazy('request', './request'); exports.request = require('./request');
lazy('Client', './client'); exports.Client = require('./client');
lazy('RPCClient', './rpcclient'); exports.RPCClient = require('./rpcclient');
lazy('Wallet', './wallet'); exports.Wallet = require('./wallet');
lazy('Base', './base'); exports.Base = require('./base');
lazy('Server', './server'); exports.RPC = require('./rpc');
exports.Server = require('./server');
} else {
exports.RPC = require('./rpc');
} }

View File

@ -1,7 +1,5 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.Mempool = require('./mempool');
exports.MempoolEntry = require('./mempoolentry');
lazy('Mempool', './mempool'); exports.Fees = require('./fees');
lazy('MempoolEntry', './mempoolentry');
lazy('Fees', './fees');

View File

@ -1,6 +1,4 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.Miner = require('./miner');
exports.MinerBlock = require('./minerblock');
lazy('Miner', './miner');
lazy('MinerBlock', './minerblock');

View File

@ -1,15 +1,12 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.bip150 = require('./bip150');
exports.bip151 = require('./bip151');
lazy('bip150', './bip150'); exports.bip152 = require('./bip152');
lazy('bip151', './bip151'); exports.Framer = require('./framer');
lazy('bip152', './bip152'); exports.packets = require('./packets');
lazy('Framer', './framer'); exports.Parser = require('./parser');
lazy('packets', './packets'); exports.Peer = require('./peer');
lazy('Parser', './parser'); exports.Pool = require('./pool');
lazy('Peer', './peer'); exports.ProxySocket = require('./proxysocket');
lazy('Pool', './pool'); exports.time = require('./timedata');
lazy('ProxySocket', './proxysocket');
lazy('time', './timedata');
lazy('tcp', 'net');

View File

@ -17,7 +17,13 @@ var Mempool = require('../mempool/mempool');
var Pool = require('../net/pool'); var Pool = require('../net/pool');
var Miner = require('../miner/miner'); var Miner = require('../miner/miner');
var WalletDB = require('../wallet/walletdb'); var WalletDB = require('../wallet/walletdb');
var http = require('../http'); var HTTPServer;
try {
HTTPServer = require('../http/server');
} catch (e) {
;
}
/** /**
* Create a fullnode complete with a chain, * Create a fullnode complete with a chain,
@ -147,7 +153,7 @@ function Fullnode(options) {
// HTTP needs access to the node. // HTTP needs access to the node.
if (!utils.isBrowser) { if (!utils.isBrowser) {
this.http = new http.Server({ this.http = new HTTPServer({
network: this.network, network: this.network,
logger: this.logger, logger: this.logger,
node: this, node: this,

View File

@ -1,9 +1,7 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.config = require('./config');
exports.Fullnode = require('./fullnode');
lazy('config', './config'); exports.Logger = require('./logger');
lazy('Fullnode', './fullnode'); exports.Node = require('./node');
lazy('Logger', './logger'); exports.SPVNode = require('./spvnode');
lazy('Node', './node');
lazy('SPVNode', './spvnode');

View File

@ -13,7 +13,13 @@ var Node = require('./node');
var Chain = require('../chain/chain'); var Chain = require('../chain/chain');
var Pool = require('../net/pool'); var Pool = require('../net/pool');
var WalletDB = require('../wallet/walletdb'); var WalletDB = require('../wallet/walletdb');
var http = require('../http'); var HTTPServer;
try {
HTTPServer = require('../http/server');
} catch (e) {
;
}
/** /**
* Create an spv node which only maintains * Create an spv node which only maintains
@ -84,7 +90,7 @@ function SPVNode(options) {
}); });
if (!utils.isBrowser) { if (!utils.isBrowser) {
this.http = new http.Server({ this.http = new HTTPServer({
network: this.network, network: this.network,
logger: this.logger, logger: this.logger,
node: this, node: this,

View File

@ -1,19 +1,17 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.AbstractBlock = require('./abstractblock');
exports.Address = require('./address');
lazy('AbstractBlock', './abstractblock'); exports.Block = require('./block');
lazy('Address', './address'); exports.Coin = require('./coin');
lazy('Block', './block'); exports.Headers = require('./headers');
lazy('Coin', './coin'); exports.Input = require('./input');
lazy('Headers', './headers'); exports.InvItem = require('./invitem');
lazy('Input', './input'); exports.KeyRing = require('./keyring');
lazy('InvItem', './invitem'); exports.MemBlock = require('./memblock');
lazy('KeyRing', './keyring'); exports.MerkleBlock = require('./merkleblock');
lazy('MemBlock', './memblock'); exports.MTX = require('./mtx');
lazy('MerkleBlock', './merkleblock'); exports.NetworkAddress = require('./netaddress');
lazy('MTX', './mtx'); exports.Outpoint = require('./outpoint');
lazy('NetworkAddress', './netaddress'); exports.Output = require('./output');
lazy('Outpoint', './outpoint'); exports.TX = require('./tx');
lazy('Output', './output');
lazy('TX', './tx');

View File

@ -1,7 +1,5 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.constants = require('./constants');
exports.network = require('./network');
lazy('constants', './constants'); exports.networks = require('./networks');
lazy('network', './network');
lazy('networks', './networks');

View File

@ -1,10 +1,8 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.Opcode = require('./opcode');
exports.Program = require('./program');
lazy('Opcode', './opcode'); exports.Script = require('./script');
lazy('Program', './program'); exports.SigCache = require('./sigcache');
lazy('Script', './script'); exports.Stack = require('./stack');
lazy('SigCache', './sigcache'); exports.Witness = require('./witness');
lazy('Stack', './stack');
lazy('Witness', './witness');

View File

@ -1948,7 +1948,7 @@ lazy('ip', './ip');
lazy('Locker', './locker'); lazy('Locker', './locker');
lazy('LRU', './lru'); lazy('LRU', './lru');
lazy('murmur3', './murmur3'); lazy('murmur3', './murmur3');
lazy('spawn', './spawn'); lazy('co', './co');
lazy('uri', './uri'); lazy('uri', './uri');
lazy('BufferReader', './reader'); lazy('BufferReader', './reader');
lazy('BufferWriter', './writer'); lazy('BufferWriter', './writer');

View File

@ -1,10 +1,9 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.Account = require('./account');
exports.MasterKey = require('./masterkey');
lazy('Account', './account'); exports.Path = require('./path');
lazy('Path', './path'); exports.TXDB = require('./txdb');
lazy('TXDB', './txdb'); exports.WalletDB = require('./walletdb');
lazy('WalletDB', './walletdb'); exports.Wallet = require('./wallet');
lazy('Wallet', './wallet'); exports.WalletKey = require('./walletkey');
lazy('WalletKey', './walletkey');

View File

@ -1,9 +1,7 @@
'use strict'; 'use strict';
var lazy = require('../utils/lazy')(require, exports); exports.jobs = require('./jobs');
exports.Worker = require('./worker');
lazy('jobs', './jobs'); exports.Workers = require('./workers');
lazy('Worker', './worker'); exports.Parser = require('./parser');
lazy('Workers', './workers'); exports.Framer = require('./framer');
lazy('Parser', './parser');
lazy('Framer', './framer');

View File

@ -77,6 +77,6 @@
"secp256k1": "./browser/empty.js" "secp256k1": "./browser/empty.js"
}, },
"browserify": { "browserify": {
"transform": ["babelify"] "transform": ["./browser/transform.js", "babelify"]
} }
} }

View File

@ -8,7 +8,7 @@ var constants = bcoin.constants;
var network = bcoin.networks; var network = bcoin.networks;
var assert = require('assert'); var assert = require('assert');
var tests = require('./data/bip70.json'); var tests = require('./data/bip70.json');
var bip70 = require('../lib/bip70/bip70'); var bip70 = require('../lib/bip70');
var x509 = bip70.x509; var x509 = bip70.x509;
tests.valid = new Buffer(tests.valid, 'hex'); tests.valid = new Buffer(tests.valid, 'hex');