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';
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';
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');

View File

@ -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');

View File

@ -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');
};
/*

View File

@ -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');
}

View File

@ -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');

View File

@ -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');

View File

@ -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');

View File

@ -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,

View File

@ -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');

View File

@ -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,

View File

@ -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');

View File

@ -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');

View File

@ -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');

View File

@ -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');

View File

@ -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');

View File

@ -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');

View File

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

View File

@ -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');