diff --git a/Gruntfile.js b/Gruntfile.js index b7ad6c2..dc737c8 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -3,26 +3,28 @@ module.exports = function(grunt) { //Load NPM tasks - grunt.loadNpmTasks('grunt-browserify'); grunt.loadNpmTasks('grunt-contrib-watch'); grunt.loadNpmTasks('grunt-mocha-test'); grunt.loadNpmTasks('grunt-markdown'); + grunt.loadNpmTasks('grunt-shell'); // Project Configuration grunt.initConfig({ - browserify: { - client: { - src: ['bitcore.js'], - dest: 'browser/bundle.js', + shell: { + browserify: { options: { - debug: true, - alias: [ - 'browserify-bignum/bignumber.js:bignum', - 'browserify-buffertools/buffertools.js:buffertools' - ], - standalone: 'bitcore', - } + stdout: true + }, + command: 'node ./browserify.js > browser/bundle.js', }, + browserifyData: { + options: { + stdout: true + }, + command: 'browserify -t brfs test/testdata.js > browser/testdata.js' + }, + }, + browserify: { test_data: { src: ['test/testdata.js'], dest: 'browser/testdata.js', @@ -40,7 +42,7 @@ module.exports = function(grunt) { }, scripts: { files: ['**/*.js', '**/*.html', '!**/node_modules/**', '!browser/bundle.js', '!browser/testdata.js'], - tasks: ['browserify' /*, 'mochaTest'*/ ], + tasks: ['shell' /*, 'mochaTest'*/ ], }, }, mochaTest: { diff --git a/PeerManager.js b/PeerManager.js index 4dc8804..e7b6bdc 100644 --- a/PeerManager.js +++ b/PeerManager.js @@ -3,8 +3,10 @@ var imports = require('soop').imports(); var config = imports.config || require('./config'); var log = imports.log || require('./util/log'); var network = imports.network || require('./networks')[config.network]; -var Connection = imports.Connection || - require('soop').load('./Connection', {config: config, network: network}); + +var Connection = imports.Connection || + require('soop').load('Connection', {config: config, network: network}) || + require ('./Connection'); var Peer = imports.Peer || require('./Peer'); diff --git a/bitcore.js b/bitcore.js index fc15e54..b55dc7b 100644 --- a/bitcore.js +++ b/bitcore.js @@ -3,25 +3,27 @@ */ + module.exports.bignum = require('bignum'); module.exports.base58 = require('base58-native'); module.exports.buffertools = require('buffertools'); + module.exports.config = require('./config'); module.exports.const = require('./const'); module.exports.Deserialize = require('./Deserialize'); module.exports.log = require('./util/log'); module.exports.networks = require('./networks'); module.exports.util = require('./util/util'); + module.exports.EncodedData = require('./util/EncodedData'); module.exports.VersionedData = require('./util/VersionedData'); module.exports.Address = require('./Address'); module.exports.Opcode = require('./Opcode'); module.exports.Script = require('./Script'); module.exports.Transaction = require('./Transaction'); -module.exports.Peer = require('./Peer'); -module.exports.PeerManager = require('./PeerManager'); -module.exports.Block = require('./Block'); module.exports.Connection = require('./Connection'); +module.exports.Peer = require('./Peer'); +module.exports.Block = require('./Block'); module.exports.ScriptInterpreter = require('./ScriptInterpreter'); module.exports.Bloom = require('./Bloom'); module.exports.KeyModule = require('./Key'); @@ -34,6 +36,14 @@ module.exports.WalletKey = require('./WalletKey'); module.exports.Buffer = Buffer; if (typeof process.versions === 'undefined') { + // Browser specific module.exports.bignum.config({EXPONENTIAL_AT: 9999999, DECIMAL_PLACES: 0, ROUNDING_MODE: 1}); + // module.exports.PeerManager = function () { + // throw new Error('PeerManager not availabe in browser Bitcore, under .bitcore. Use it with: require(\'PeerManager\');'); + // }; +} +else { + // Nodejs specific + module.exports.PeerManager = require('./PeerManager'); } diff --git a/browser/bignum_config.js b/browser/bignum_config.js new file mode 100644 index 0000000..1710d22 --- /dev/null +++ b/browser/bignum_config.js @@ -0,0 +1,6 @@ +require('bignum').config({ + EXPONENTIAL_AT: 9999999, + DECIMAL_PLACES: 0, + ROUNDING_MODE: 1, +}); + diff --git a/browserify.js b/browserify.js new file mode 100644 index 0000000..cbc8941 --- /dev/null +++ b/browserify.js @@ -0,0 +1,88 @@ +'use strict'; + +/* + * Example for usage of browserify with soop + * + * The key parameter 'pack' + * The supplied 'custom_prelude.js' file is needed for + * .load function of soop. + */ + +var fs = require('fs'); +var browserify = require('browserify'); +var browserPack = require('browser-pack'); +var opts = {}; + + +var preludePath = 'node_modules/soop/example/custom_prelude.js'; + +var pack = function (params) { + params.raw = true; + params.sourceMapPrefix = '//#'; + params.prelude= fs.readFileSync(preludePath, 'utf8'); + params.preludePath= preludePath; + return browserPack(params); +}; + +opts.pack = pack; +opts.debug = true; + +var modules = [ + 'Address', + 'Block', + 'Bloom', + 'Buffers.monkey', + 'Connection', + 'Deserialize', + 'Gruntfile', + 'Number.monkey', + 'Opcode', + 'Peer', + 'PeerManager', + 'PrivateKey', + 'RpcClient', + 'SIN', + 'SINKey', + 'Script', + 'ScriptInterpreter', + 'Sign', + 'Transaction', + 'Wallet', + 'WalletKey', + 'config', + 'const', + 'networks', + 'bitcore', +]; + +var b = browserify(opts); +b.require('browserify-bignum/bignumber.js', {expose: 'bignum'} ); +b.require('browserify-buffertools/buffertools.js', {expose:'buffertools'}); +b.require('buffer', {expose: 'buffer'}); +b.require('base58-native'); +b.require('./Key.js', {expose: 'KeyModule'}); +b.require('./util/log'); +b.require('./util/util'); +b.require('./util/EncodedData'); +b.require('./util/VersionedData'); +b.add('./browser/bignum_config.js'); + +modules.forEach(function(m) { + b.require('./' + m + '.js' ,{expose:m} ); + }); + +var bopts = { + // detectGlobals: true, + // insertGlobals: 'Buffer', + // insertGlobalVars: { + // Buffer: function () { + // return 'require("buffer").Buffer'; + // }, + // }, +}; + +b.bundle(bopts).pipe(process.stdout); + + + + diff --git a/examples/example.html b/examples/example.html index 79438ee..40a993c 100644 --- a/examples/example.html +++ b/examples/example.html @@ -6,18 +6,19 @@ -
+
+      
+
diff --git a/package.json b/package.json index 4939200..9b2a1e7 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,8 @@ "devDependencies": { "grunt-contrib-watch": "~0.5.3", "grunt-mocha-test": "~0.8.2", - "grunt-browserify": "~1.3.0", + "grunt-shell": "~0.6.4", + "browser-pack": "*", "grunt-markdown": "~0.5.0", "mocha": ">=1.15.1", "browserify-bignum": "git://github.com/maraoz/browserify-bignum.git", diff --git a/test/index.html b/test/index.html index bbd0d61..9946f5c 100644 --- a/test/index.html +++ b/test/index.html @@ -13,7 +13,14 @@ - + + + + + diff --git a/test/test.Address.js b/test/test.Address.js index 8c2be1a..758440e 100644 --- a/test/test.Address.js +++ b/test/test.Address.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.Block.js b/test/test.Block.js index 3ae7704..f159f43 100644 --- a/test/test.Block.js +++ b/test/test.Block.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); var BlockModule = bitcore.Block; diff --git a/test/test.Bloom.js b/test/test.Bloom.js index cb6c8f6..80504ac 100644 --- a/test/test.Bloom.js +++ b/test/test.Bloom.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.Connection.js b/test/test.Connection.js index acc41e2..8682973 100644 --- a/test/test.Connection.js +++ b/test/test.Connection.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.EncodedData.js b/test/test.EncodedData.js index e1a809a..e269661 100644 --- a/test/test.EncodedData.js +++ b/test/test.EncodedData.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.Key.js b/test/test.Key.js index 975964d..3029008 100644 --- a/test/test.Key.js +++ b/test/test.Key.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var buffertools = require('buffertools'); diff --git a/test/test.Opcode.js b/test/test.Opcode.js index 967123e..4c9a5e9 100644 --- a/test/test.Opcode.js +++ b/test/test.Opcode.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.Peer.js b/test/test.Peer.js index ff8f212..0a0f0fd 100644 --- a/test/test.Peer.js +++ b/test/test.Peer.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.PeerManager.js b/test/test.PeerManager.js index 0870267..b60de02 100644 --- a/test/test.PeerManager.js +++ b/test/test.PeerManager.js @@ -1,11 +1,12 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); -var PeerManagerModule = bitcore.PeerManager; +var PeerManagerModule = bitcore.PeerManager || require('PeerManager'); + var PeerManager; describe('PeerManager', function() { diff --git a/test/test.PrivateKey.js b/test/test.PrivateKey.js index f862763..f6508e5 100644 --- a/test/test.PrivateKey.js +++ b/test/test.PrivateKey.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.RpcClient.js b/test/test.RpcClient.js index 79d0de6..13ed435 100644 --- a/test/test.RpcClient.js +++ b/test/test.RpcClient.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.SIN.js b/test/test.SIN.js index 3348763..b71dadf 100644 --- a/test/test.SIN.js +++ b/test/test.SIN.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.SINKey.js b/test/test.SINKey.js index 80e9454..3b66308 100644 --- a/test/test.SINKey.js +++ b/test/test.SINKey.js @@ -1,10 +1,7 @@ 'use strict'; - - -var chai = require('chai'); -var bitcore = require('../bitcore'); - +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); var SINKeyModule = bitcore.SINKey; diff --git a/test/test.Script.js b/test/test.Script.js index 4addf33..fca353d 100644 --- a/test/test.Script.js +++ b/test/test.Script.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.ScriptInterpreter.js b/test/test.ScriptInterpreter.js index 3c07dcd..e6d1746 100644 --- a/test/test.ScriptInterpreter.js +++ b/test/test.ScriptInterpreter.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.Transaction.js b/test/test.Transaction.js index f11138f..96694ad 100644 --- a/test/test.Transaction.js +++ b/test/test.Transaction.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.VersionedData.js b/test/test.VersionedData.js index 52160aa..b554ea3 100644 --- a/test/test.VersionedData.js +++ b/test/test.VersionedData.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.Wallet.js b/test/test.Wallet.js index a8f1222..f589662 100644 --- a/test/test.Wallet.js +++ b/test/test.Wallet.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.WalletKey.js b/test/test.WalletKey.js index 37ea72b..eb29ce0 100644 --- a/test/test.WalletKey.js +++ b/test/test.WalletKey.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.basic.js b/test/test.basic.js index d21b49c..e728542 100644 --- a/test/test.basic.js +++ b/test/test.basic.js @@ -1,7 +1,20 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); + +var test_data; +if (typeof dataValid !== 'undefined' ) { + test_data = { + dataValid: dataValid, + dataInvalid: dataInvalid, + }; + +} +else { + test_data = require('./testdata'); +} + var should = chai.should(); var Address = bitcore.Address; @@ -9,7 +22,6 @@ var PrivateKey = bitcore.PrivateKey; var networks = bitcore.networks; var KeyModule = bitcore.KeyModule; -var test_data = require('./testdata'); function test_encode_priv(b58, payload, isTestnet, isCompressed) { diff --git a/test/test.main.js b/test/test.main.js index aa6e8a2..ea4a9bc 100644 --- a/test/test.main.js +++ b/test/test.main.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var expect = chai.expect; var should = chai.should(); diff --git a/test/test.misc.js b/test/test.misc.js index 58720e1..a9bd3e7 100644 --- a/test/test.misc.js +++ b/test/test.misc.js @@ -1,7 +1,7 @@ 'use strict'; -var chai = require('chai'); -var bitcore = require('../bitcore'); +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var should = chai.should(); diff --git a/test/test.util.js b/test/test.util.js index e8b9186..f91111e 100644 --- a/test/test.util.js +++ b/test/test.util.js @@ -1,5 +1,6 @@ -var chai = require('chai'); -var bitcore = require('../bitcore'); + +var chai = chai || require('chai'); +var bitcore = bitcore || require('../bitcore'); var coinUtil = bitcore.util; var should = chai.should(); var buffertools = require('buffertools'); diff --git a/test/testdata.js b/test/testdata.js index ecbd663..e673bda 100644 --- a/test/testdata.js +++ b/test/testdata.js @@ -2,8 +2,9 @@ var fs = require('fs'); -var dataValid = JSON.parse(fs.readFileSync('test/data/base58_keys_valid.json')); -var dataInvalid = JSON.parse(fs.readFileSync('test/data/base58_keys_invalid.json')); +// Defined as global for Browser testing support +dataValid = JSON.parse(fs.readFileSync('test/data/base58_keys_valid.json')); +dataInvalid = JSON.parse(fs.readFileSync('test/data/base58_keys_invalid.json')); module.exports.dataValid = dataValid; module.exports.dataInvalid = dataInvalid;