bitcore-lib-cash
Advanced tools
Comparing version 10.0.28 to 10.0.36
'use strict'; | ||
var _ = require('lodash'); | ||
var BufferUtil = require('./util/buffer'); | ||
@@ -15,3 +13,3 @@ var JSUtil = require('./util/js'); | ||
*/ | ||
function Network() {} | ||
function Network() { } | ||
@@ -35,11 +33,8 @@ Network.prototype.toString = function toString() { | ||
if (keys) { | ||
if (!_.isArray(keys)) { | ||
if (!Array.isArray(keys)) { | ||
keys = [keys]; | ||
} | ||
for (var i = 0; i < networks.length; i++) { | ||
var network = networks[i]; | ||
var filteredNet = _.pick(network, keys); | ||
var netValues = _.values(filteredNet); | ||
if(~netValues.indexOf(arg)) { | ||
return network; | ||
for (const index in networks) { | ||
if (keys.some(key => networks[index][key] === arg)) { | ||
return networks[index]; | ||
} | ||
@@ -49,3 +44,3 @@ } | ||
} | ||
if(networkMaps[arg] && networkMaps[arg].length >= 1) { | ||
if (networkMaps[arg] && networkMaps[arg].length >= 1) { | ||
return networkMaps[arg][0]; | ||
@@ -57,2 +52,13 @@ } else { | ||
/** | ||
* @function | ||
* @member Networks#is | ||
* Returns true if the string is the network name or alias | ||
* @param {string} str - A string to check | ||
* @return boolean | ||
*/ | ||
function is(str) { | ||
return this.name == str || this.alias == str; | ||
} | ||
/*** | ||
@@ -66,3 +72,3 @@ * Derives an array from the given prefix to be used in the computation | ||
var result = []; | ||
for (var i=0; i < prefix.length; i++) { | ||
for (var i = 0; i < prefix.length; i++) { | ||
result.push(prefix.charCodeAt(i) & 31); | ||
@@ -85,9 +91,10 @@ } | ||
* @param {Number} data.xprivkey - The extended private key magic | ||
* @param {Number} data.networkMagic - The network magic number | ||
* @param {Number} data.port - The network port | ||
* @param {Array} data.dnsSeeds - An array of dns seeds | ||
* @param {Array} data.variants - An array of variants | ||
* @param {string} data.variants.name - The name of the variant | ||
* @param {Number} data.variants.networkMagic - The network magic number | ||
* @param {Number} data.variants.port - The network port | ||
* @param {Array} data.variants.dnsSeeds - An array of dns seeds | ||
* @return Network | ||
*/ | ||
function addNetwork(data) { | ||
var network = new Network(); | ||
@@ -98,2 +105,3 @@ | ||
alias: data.alias, | ||
is: data.is, | ||
pubkeyhash: data.pubkeyhash, | ||
@@ -106,6 +114,4 @@ privatekey: data.privatekey, | ||
var indexBy = data.indexBy || Object.keys(data); | ||
if (data.prefix) { | ||
_.extend(network, { | ||
JSUtil.defineImmutable(network, { | ||
prefix: data.prefix, | ||
@@ -117,3 +123,3 @@ prefixArray: prefixToArray(data.prefix), | ||
if (data.networkMagic) { | ||
_.extend(network, { | ||
JSUtil.defineImmutable(network, { | ||
networkMagic: BufferUtil.integerAsBuffer(data.networkMagic) | ||
@@ -124,3 +130,3 @@ }); | ||
if (data.port) { | ||
_.extend(network, { | ||
JSUtil.defineImmutable(network, { | ||
port: data.port | ||
@@ -131,25 +137,29 @@ }); | ||
if (data.dnsSeeds) { | ||
_.extend(network, { | ||
JSUtil.defineImmutable(network, { | ||
dnsSeeds: data.dnsSeeds | ||
}); | ||
} | ||
networks.push(network); | ||
indexNetworkBy(network, indexBy); | ||
return network; | ||
} | ||
function indexNetworkBy(network, keys) { | ||
for(var i = 0; i < keys.length; i++) { | ||
var key = keys[i]; | ||
var networkValue = network[key]; | ||
if(!_.isUndefined(networkValue) && !_.isObject(networkValue)) { | ||
if(!networkMaps[networkValue]) { | ||
networkMaps[networkValue] = []; | ||
for (const value of Object.values(network)) { | ||
if (value != null && typeof value !== 'object') { | ||
if (!networkMaps[value]) { | ||
networkMaps[value] = []; | ||
} | ||
networkMaps[networkValue].push(network); | ||
networkMaps[value].push(network); | ||
} | ||
}; | ||
networks.push(network); | ||
for (const variant of data.variants || []) { | ||
addNetwork({ | ||
...data, | ||
variants: undefined, | ||
...variant, | ||
}); | ||
} | ||
return network; | ||
} | ||
/** | ||
@@ -195,5 +205,6 @@ * @function | ||
var liveNetwork = { | ||
addNetwork({ | ||
name: 'livenet', | ||
alias: 'mainnet', | ||
is, | ||
prefix: 'bitcoincash', | ||
@@ -208,6 +219,14 @@ pubkeyhash: 28, | ||
dnsSeeds: dnsSeeds | ||
}; | ||
}); | ||
var testNetwork = { | ||
/** | ||
* @instance | ||
* @member Networks#livenet | ||
*/ | ||
var livenet = get('livenet'); | ||
addNetwork({ | ||
name: 'testnet', | ||
alias: 'testnet', | ||
is, | ||
prefix: 'bchtest', | ||
@@ -219,9 +238,41 @@ pubkeyhash: 0x6f, | ||
xprivkey: 0x04358394, | ||
networkMagic: 0xf4e5f3f4, | ||
port: 18333, | ||
dnsSeeds: dnsSeeds | ||
}; | ||
variants: [{ | ||
name: 'testnet3', | ||
networkMagic: 0xf4e5f3f4, | ||
port: 18333, | ||
dnsSeeds: dnsSeeds | ||
}, | ||
{ | ||
name: 'testnet4', | ||
networkMagic: 0xe2b7daaf, | ||
port: 28333, | ||
dnsSeeds: dnsSeeds | ||
}, | ||
{ | ||
name: 'scalenet', | ||
networkMagic: 0xc3afe1a2, | ||
port: 38333, | ||
dnsSeeds: dnsSeeds | ||
}, | ||
{ | ||
name: 'chipnet', | ||
networkMagic: 0xe2b7daaf, | ||
port: 48333, | ||
dnsSeeds: dnsSeeds | ||
}] | ||
}); | ||
var regtestNetwork = { | ||
/** | ||
* @instance | ||
* @member Networks#testnet | ||
*/ | ||
var testnet = get('testnet'); | ||
var testnet3 = get('testnet3'); | ||
var testnet4 = get('testnet4'); | ||
var scalenet = get('scalenet'); | ||
var chipnet = get('chipnet'); | ||
addNetwork({ | ||
name: 'regtest', | ||
is, | ||
prefix: 'bchreg', | ||
@@ -242,15 +293,9 @@ pubkeyhash: 0x6f, | ||
] | ||
}; | ||
}); | ||
// Add configurable values for testnet/regtest | ||
addNetwork(testNetwork); | ||
addNetwork(regtestNetwork); | ||
addNetwork(liveNetwork); | ||
var livenet = get('livenet'); | ||
/** | ||
* @instance | ||
* @member Networks#regtest | ||
*/ | ||
var regtest = get('regtest'); | ||
var testnet = get('testnet'); | ||
@@ -287,2 +332,6 @@ /** | ||
testnet: testnet, | ||
testnet3: testnet3, | ||
testnet4: testnet4, | ||
scalenet: scalenet, | ||
chipnet: chipnet, | ||
regtest: regtest, | ||
@@ -289,0 +338,0 @@ get: get, |
{ | ||
"name": "bitcore-lib-cash", | ||
"version": "10.0.28", | ||
"version": "10.0.36", | ||
"description": "A pure and powerful JavaScript Bitcoin Cash library.", | ||
@@ -54,3 +54,3 @@ "author": "BitPay <dev@bitpay.com>", | ||
"license": "MIT", | ||
"gitHead": "c47030e29c2ef353b41955d78fd0ca5c8422c590" | ||
"gitHead": "44397d0f60079b0d52a2d94cdb2923c0e783206e" | ||
} |
@@ -58,2 +58,26 @@ 'use strict'; | ||
it('should make a new private key from random for testnet with specific network "testnet3"', function() { | ||
var key = new HDPrivateKey('testnet3'); | ||
should.exist(key.xprivkey); | ||
key.network.name.should.equal('testnet'); | ||
}); | ||
it('should make a new private key from random for testnet with specific network "testnet4"', function() { | ||
var key = new HDPrivateKey('testnet4'); | ||
should.exist(key.xprivkey); | ||
key.network.name.should.equal('testnet'); | ||
}); | ||
it('should make a new private key from random for testnet with specific network "chipnet"', function() { | ||
var key = new HDPrivateKey('chipnet'); | ||
should.exist(key.xprivkey); | ||
key.network.name.should.equal('testnet'); | ||
}); | ||
it('should make a new private key from random for testnet with specific network "scalenet"', function() { | ||
var key = new HDPrivateKey('scalenet'); | ||
should.exist(key.xprivkey); | ||
key.network.name.should.equal('testnet'); | ||
}); | ||
it('should not be able to change read-only properties', function() { | ||
@@ -60,0 +84,0 @@ var hdkey = new HDPrivateKey(); |
@@ -46,8 +46,37 @@ 'use strict'; | ||
it('should have network magic for testnet', function() { | ||
it('should have not have network magic or port for testnet', function() { | ||
var testnet = networks.get('testnet'); | ||
var buffUtil = require('../lib/util/buffer'); | ||
buffUtil.isBuffer(testnet.networkMagic).should.equal(false); | ||
isNaN(testnet.port).should.equal(true); | ||
}); | ||
it('should have network magic and port for testnet variant "testnet3"', function() { | ||
var testnet = networks.get('testnet3'); | ||
var buffUtil = require('../lib/util/buffer'); | ||
buffUtil.isBuffer(testnet.networkMagic).should.equal(true); | ||
isNaN(testnet.port).should.equal(false); | ||
}); | ||
it('should have network magic and port for testnet variant "testnet4"', function() { | ||
var testnet = networks.get('testnet4'); | ||
var buffUtil = require('../lib/util/buffer'); | ||
buffUtil.isBuffer(testnet.networkMagic).should.equal(true); | ||
isNaN(testnet.port).should.equal(false); | ||
}); | ||
it('should have network magic and port for testnet variant "chipnet"', function() { | ||
var testnet = networks.get('chipnet'); | ||
var buffUtil = require('../lib/util/buffer'); | ||
buffUtil.isBuffer(testnet.networkMagic).should.equal(true); | ||
isNaN(testnet.port).should.equal(false); | ||
}); | ||
it('should have network magic and port for testnet variant "scalenet"', function() { | ||
var testnet = networks.get('scalenet'); | ||
var buffUtil = require('../lib/util/buffer'); | ||
buffUtil.isBuffer(testnet.networkMagic).should.equal(true); | ||
isNaN(testnet.port).should.equal(false); | ||
}); | ||
it('can remove a custom network', function() { | ||
@@ -117,2 +146,18 @@ networks.remove(customnet); | ||
it('should get testnet network with name "testnet3"', function() { | ||
expect(networks.get('testnet3').name).to.equal('testnet3'); | ||
}); | ||
it('should get testnet network with name "testnet"', function() { | ||
expect(networks.get('testnet').name).to.equal('testnet'); | ||
}); | ||
it('should get testnet network with name "chipnet"', function() { | ||
expect(networks.get('chipnet').name).to.equal('chipnet'); | ||
}); | ||
it('should get testnet network with name "scalenet"', function() { | ||
expect(networks.get('scalenet').name).to.equal('scalenet'); | ||
}); | ||
it('should have livenet network', function() { | ||
@@ -119,0 +164,0 @@ expect(networks.get('livenet').name).to.equal('livenet'); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
4378570
42602