From 3e59282c66d943193d36ce2dad49c2bce1f5853c Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Mon, 3 Oct 2016 01:45:06 -0700 Subject: [PATCH] deps: browser transform. --- browser/transform.js | 75 +++++++++++++++++++++++++++++++++++++++ lib/bip70/bip70.js | 17 --------- lib/bip70/index.js | 14 +++++++- lib/chain/index.js | 14 ++++---- lib/db/index.js | 9 +++-- lib/env.js | 78 ++++------------------------------------- lib/http/index.js | 16 +++++---- lib/mempool/index.js | 8 ++--- lib/miner/index.js | 6 ++-- lib/net/index.js | 23 ++++++------ lib/node/fullnode.js | 10 ++++-- lib/node/index.js | 12 +++---- lib/node/spvnode.js | 10 ++++-- lib/primitives/index.js | 32 ++++++++--------- lib/protocol/index.js | 8 ++--- lib/script/index.js | 14 ++++---- lib/utils/utils.js | 2 +- lib/wallet/index.js | 15 ++++---- lib/workers/index.js | 12 +++---- package.json | 2 +- test/bip70-test.js | 2 +- 21 files changed, 188 insertions(+), 191 deletions(-) create mode 100644 browser/transform.js delete mode 100644 lib/bip70/bip70.js diff --git a/browser/transform.js b/browser/transform.js new file mode 100644 index 00000000..fcc4266a --- /dev/null +++ b/browser/transform.js @@ -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(); +}; diff --git a/lib/bip70/bip70.js b/lib/bip70/bip70.js deleted file mode 100644 index c801f766..00000000 --- a/lib/bip70/bip70.js +++ /dev/null @@ -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'); diff --git a/lib/bip70/index.js b/lib/bip70/index.js index 5ea10be4..a3c90fab 100644 --- a/lib/bip70/index.js +++ b/lib/bip70/index.js @@ -1,3 +1,15 @@ +/*! + * bip70.js - bip70 for bcoin + * Copyright (c) 2016, Christopher Jeffrey (MIT License). + * https://github.com/bcoin-org/bcoin + */ + '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'); diff --git a/lib/chain/index.js b/lib/chain/index.js index 3eac4bce..cfe2e3f2 100644 --- a/lib/chain/index.js +++ b/lib/chain/index.js @@ -1,10 +1,8 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('Chain', './chain'); -lazy('ChainDB', './chaindb'); -lazy('ChainEntry', './chainentry'); -lazy('Coins', './coins'); -lazy('CoinView', './coinview'); -lazy('compressor', './compress'); +exports.Chain = require('./chain'); +exports.ChainDB = require('./chaindb'); +exports.ChainEntry = require('./chainentry'); +exports.Coins = require('./coins'); +exports.CoinView = require('./coinview'); +exports.compressor = require('./compress'); diff --git a/lib/db/index.js b/lib/db/index.js index d2aae7a0..fba991a5 100644 --- a/lib/db/index.js +++ b/lib/db/index.js @@ -1,12 +1,11 @@ 'use strict'; var utils = require('../utils/utils'); -var lazy = require('../utils/lazy')(require, exports); -lazy('ldb', './ldb'); +exports.ldb = require('./ldb'); if (utils.isBrowser) - lazy('level', './level'); + exports.level = require('./level'); -lazy('LowlevelUp', './lowlevelup'); -lazy('RBT', './rbt'); +exports.LowlevelUp = require('./lowlevelup'); +exports.RBT = require('./rbt'); diff --git a/lib/env.js b/lib/env.js index 40efb72f..c7ab35a4 100644 --- a/lib/env.js +++ b/lib/env.js @@ -194,6 +194,7 @@ function Environment() { this.require('account', './wallet/account'); this.require('walletdb', './wallet/walletdb'); this.require('path', './wallet/path'); + this.require('masterkey', './wallet/masterkey'); this.require('walletkey', './wallet/walletkey'); // HTTP @@ -204,7 +205,7 @@ function Environment() { this.require('workers', './workers/workers'); // Horrible BIP - this.require('bip70', './bip70/bip70'); + this.require('bip70', './bip70'); } /** @@ -256,82 +257,15 @@ Environment.prototype.now = function now() { /** * Cache all necessary modules. - * Used for benchmarks and browserify. */ 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('./net/timedata'); - 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('./node/spvnode'); require('./http'); - require('./http/rpc'); - require('./workers/workers'); - require('./bip70/bip70'); + require('./crypto/schnorr'); + require('./utils/uri'); + require('./bip70'); }; /* diff --git a/lib/http/index.js b/lib/http/index.js index 6ea938c8..42f54310 100644 --- a/lib/http/index.js +++ b/lib/http/index.js @@ -8,13 +8,15 @@ 'use strict'; var utils = require('../utils/utils'); -var lazy = require('../utils/lazy')(require, exports); if (!utils.isBrowser) { - lazy('request', './request'); - lazy('Client', './client'); - lazy('RPCClient', './rpcclient'); - lazy('Wallet', './wallet'); - lazy('Base', './base'); - lazy('Server', './server'); + exports.request = require('./request'); + exports.Client = require('./client'); + exports.RPCClient = require('./rpcclient'); + exports.Wallet = require('./wallet'); + exports.Base = require('./base'); + exports.RPC = require('./rpc'); + exports.Server = require('./server'); +} else { + exports.RPC = require('./rpc'); } diff --git a/lib/mempool/index.js b/lib/mempool/index.js index 97aa6521..e7f1d57c 100644 --- a/lib/mempool/index.js +++ b/lib/mempool/index.js @@ -1,7 +1,5 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('Mempool', './mempool'); -lazy('MempoolEntry', './mempoolentry'); -lazy('Fees', './fees'); +exports.Mempool = require('./mempool'); +exports.MempoolEntry = require('./mempoolentry'); +exports.Fees = require('./fees'); diff --git a/lib/miner/index.js b/lib/miner/index.js index d888e015..7779ae5d 100644 --- a/lib/miner/index.js +++ b/lib/miner/index.js @@ -1,6 +1,4 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('Miner', './miner'); -lazy('MinerBlock', './minerblock'); +exports.Miner = require('./miner'); +exports.MinerBlock = require('./minerblock'); diff --git a/lib/net/index.js b/lib/net/index.js index d0ebdbfd..0c072e06 100644 --- a/lib/net/index.js +++ b/lib/net/index.js @@ -1,15 +1,12 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('bip150', './bip150'); -lazy('bip151', './bip151'); -lazy('bip152', './bip152'); -lazy('Framer', './framer'); -lazy('packets', './packets'); -lazy('Parser', './parser'); -lazy('Peer', './peer'); -lazy('Pool', './pool'); -lazy('ProxySocket', './proxysocket'); -lazy('time', './timedata'); -lazy('tcp', 'net'); +exports.bip150 = require('./bip150'); +exports.bip151 = require('./bip151'); +exports.bip152 = require('./bip152'); +exports.Framer = require('./framer'); +exports.packets = require('./packets'); +exports.Parser = require('./parser'); +exports.Peer = require('./peer'); +exports.Pool = require('./pool'); +exports.ProxySocket = require('./proxysocket'); +exports.time = require('./timedata'); diff --git a/lib/node/fullnode.js b/lib/node/fullnode.js index 80da1269..e92ea094 100644 --- a/lib/node/fullnode.js +++ b/lib/node/fullnode.js @@ -17,7 +17,13 @@ var Mempool = require('../mempool/mempool'); var Pool = require('../net/pool'); var Miner = require('../miner/miner'); 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, @@ -147,7 +153,7 @@ function Fullnode(options) { // HTTP needs access to the node. if (!utils.isBrowser) { - this.http = new http.Server({ + this.http = new HTTPServer({ network: this.network, logger: this.logger, node: this, diff --git a/lib/node/index.js b/lib/node/index.js index fc6b493c..dde64cf7 100644 --- a/lib/node/index.js +++ b/lib/node/index.js @@ -1,9 +1,7 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('config', './config'); -lazy('Fullnode', './fullnode'); -lazy('Logger', './logger'); -lazy('Node', './node'); -lazy('SPVNode', './spvnode'); +exports.config = require('./config'); +exports.Fullnode = require('./fullnode'); +exports.Logger = require('./logger'); +exports.Node = require('./node'); +exports.SPVNode = require('./spvnode'); diff --git a/lib/node/spvnode.js b/lib/node/spvnode.js index 11e0d46e..87be0fce 100644 --- a/lib/node/spvnode.js +++ b/lib/node/spvnode.js @@ -13,7 +13,13 @@ var Node = require('./node'); var Chain = require('../chain/chain'); var Pool = require('../net/pool'); 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 @@ -84,7 +90,7 @@ function SPVNode(options) { }); if (!utils.isBrowser) { - this.http = new http.Server({ + this.http = new HTTPServer({ network: this.network, logger: this.logger, node: this, diff --git a/lib/primitives/index.js b/lib/primitives/index.js index bf0f5d1c..f67150d8 100644 --- a/lib/primitives/index.js +++ b/lib/primitives/index.js @@ -1,19 +1,17 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('AbstractBlock', './abstractblock'); -lazy('Address', './address'); -lazy('Block', './block'); -lazy('Coin', './coin'); -lazy('Headers', './headers'); -lazy('Input', './input'); -lazy('InvItem', './invitem'); -lazy('KeyRing', './keyring'); -lazy('MemBlock', './memblock'); -lazy('MerkleBlock', './merkleblock'); -lazy('MTX', './mtx'); -lazy('NetworkAddress', './netaddress'); -lazy('Outpoint', './outpoint'); -lazy('Output', './output'); -lazy('TX', './tx'); +exports.AbstractBlock = require('./abstractblock'); +exports.Address = require('./address'); +exports.Block = require('./block'); +exports.Coin = require('./coin'); +exports.Headers = require('./headers'); +exports.Input = require('./input'); +exports.InvItem = require('./invitem'); +exports.KeyRing = require('./keyring'); +exports.MemBlock = require('./memblock'); +exports.MerkleBlock = require('./merkleblock'); +exports.MTX = require('./mtx'); +exports.NetworkAddress = require('./netaddress'); +exports.Outpoint = require('./outpoint'); +exports.Output = require('./output'); +exports.TX = require('./tx'); diff --git a/lib/protocol/index.js b/lib/protocol/index.js index 7c3e4dae..cf5a4c6a 100644 --- a/lib/protocol/index.js +++ b/lib/protocol/index.js @@ -1,7 +1,5 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('constants', './constants'); -lazy('network', './network'); -lazy('networks', './networks'); +exports.constants = require('./constants'); +exports.network = require('./network'); +exports.networks = require('./networks'); diff --git a/lib/script/index.js b/lib/script/index.js index ada86d01..7d380683 100644 --- a/lib/script/index.js +++ b/lib/script/index.js @@ -1,10 +1,8 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('Opcode', './opcode'); -lazy('Program', './program'); -lazy('Script', './script'); -lazy('SigCache', './sigcache'); -lazy('Stack', './stack'); -lazy('Witness', './witness'); +exports.Opcode = require('./opcode'); +exports.Program = require('./program'); +exports.Script = require('./script'); +exports.SigCache = require('./sigcache'); +exports.Stack = require('./stack'); +exports.Witness = require('./witness'); diff --git a/lib/utils/utils.js b/lib/utils/utils.js index 07b0ba9c..b27ba3ac 100644 --- a/lib/utils/utils.js +++ b/lib/utils/utils.js @@ -1948,7 +1948,7 @@ lazy('ip', './ip'); lazy('Locker', './locker'); lazy('LRU', './lru'); lazy('murmur3', './murmur3'); -lazy('spawn', './spawn'); +lazy('co', './co'); lazy('uri', './uri'); lazy('BufferReader', './reader'); lazy('BufferWriter', './writer'); diff --git a/lib/wallet/index.js b/lib/wallet/index.js index 2e62fee5..483c7cf8 100644 --- a/lib/wallet/index.js +++ b/lib/wallet/index.js @@ -1,10 +1,9 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('Account', './account'); -lazy('Path', './path'); -lazy('TXDB', './txdb'); -lazy('WalletDB', './walletdb'); -lazy('Wallet', './wallet'); -lazy('WalletKey', './walletkey'); +exports.Account = require('./account'); +exports.MasterKey = require('./masterkey'); +exports.Path = require('./path'); +exports.TXDB = require('./txdb'); +exports.WalletDB = require('./walletdb'); +exports.Wallet = require('./wallet'); +exports.WalletKey = require('./walletkey'); diff --git a/lib/workers/index.js b/lib/workers/index.js index f11a361e..fffe0191 100644 --- a/lib/workers/index.js +++ b/lib/workers/index.js @@ -1,9 +1,7 @@ 'use strict'; -var lazy = require('../utils/lazy')(require, exports); - -lazy('jobs', './jobs'); -lazy('Worker', './worker'); -lazy('Workers', './workers'); -lazy('Parser', './parser'); -lazy('Framer', './framer'); +exports.jobs = require('./jobs'); +exports.Worker = require('./worker'); +exports.Workers = require('./workers'); +exports.Parser = require('./parser'); +exports.Framer = require('./framer'); diff --git a/package.json b/package.json index b5608920..2c638e18 100644 --- a/package.json +++ b/package.json @@ -77,6 +77,6 @@ "secp256k1": "./browser/empty.js" }, "browserify": { - "transform": ["babelify"] + "transform": ["./browser/transform.js", "babelify"] } } diff --git a/test/bip70-test.js b/test/bip70-test.js index 8e894874..0af9ec60 100644 --- a/test/bip70-test.js +++ b/test/bip70-test.js @@ -8,7 +8,7 @@ var constants = bcoin.constants; var network = bcoin.networks; var assert = require('assert'); var tests = require('./data/bip70.json'); -var bip70 = require('../lib/bip70/bip70'); +var bip70 = require('../lib/bip70'); var x509 = bip70.x509; tests.valid = new Buffer(tests.valid, 'hex');