fix conflics
This commit is contained in:
commit
cd71ce4421
25 changed files with 268 additions and 122 deletions
8
copay.js
8
copay.js
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
// core
|
// core
|
||||||
module.exports.PublicKeyRing = require('./js/models/core/PublicKeyRing');
|
module.exports.PublicKeyRing = require('./js/models/core/PublicKeyRing');
|
||||||
module.exports.TxProposals = require('./js/models/core/TxProposals');
|
module.exports.TxProposals = require('./js/models/core/TxProposals');
|
||||||
|
|
@ -14,11 +13,6 @@ var Insight = module.exports.Insight = require('./js/models/blockchain/Insight')
|
||||||
var StorageLocalPlain = module.exports.StorageLocalPlain = require('./js/models/storage/LocalPlain');
|
var StorageLocalPlain = module.exports.StorageLocalPlain = require('./js/models/storage/LocalPlain');
|
||||||
var StorageLocalEncrypted = module.exports.StorageLocalEncrypted = require('./js/models/storage/LocalEncrypted');
|
var StorageLocalEncrypted = module.exports.StorageLocalEncrypted = require('./js/models/storage/LocalEncrypted');
|
||||||
|
|
||||||
var WalletFactory = require('soop').load('./js/models/core/WalletFactory',{
|
module.exports.WalletFactory = require('./js/models/core/WalletFactory');
|
||||||
Network: WebRTC,
|
|
||||||
Blockchain: Insight,
|
|
||||||
Storage: StorageLocalEncrypted,
|
|
||||||
});
|
|
||||||
module.exports.WalletFactory = WalletFactory;
|
|
||||||
module.exports.version = require('./version');
|
module.exports.version = require('./version');
|
||||||
module.exports.API = require('./API');
|
module.exports.API = require('./API');
|
||||||
|
|
|
||||||
|
|
@ -852,6 +852,7 @@ on supported browsers please check <a href="http://www.webrtc.org/">http://www.w
|
||||||
<script src="js/services/controllerUtils.js"></script>
|
<script src="js/services/controllerUtils.js"></script>
|
||||||
<script src="js/services/passphrase.js"></script>
|
<script src="js/services/passphrase.js"></script>
|
||||||
<script src="js/services/notifications.js"></script>
|
<script src="js/services/notifications.js"></script>
|
||||||
|
<script src="js/services/backupService.js"></script>
|
||||||
|
|
||||||
<script src="js/controllers/header.js"></script>
|
<script src="js/controllers/header.js"></script>
|
||||||
<script src="js/controllers/footer.js"></script>
|
<script src="js/controllers/footer.js"></script>
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,13 @@ var copayApp = window.copayApp = angular.module('copayApp',[
|
||||||
'monospaced.qrcode',
|
'monospaced.qrcode',
|
||||||
'notifications',
|
'notifications',
|
||||||
'copayApp.filters',
|
'copayApp.filters',
|
||||||
|
'copayApp.services',
|
||||||
'copayApp.controllers',
|
'copayApp.controllers',
|
||||||
'copayApp.directives',
|
'copayApp.directives',
|
||||||
'copayApp.services',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
angular.module('copayApp.filters', []);
|
angular.module('copayApp.filters', []);
|
||||||
|
angular.module('copayApp.services', []);
|
||||||
angular.module('copayApp.controllers', []);
|
angular.module('copayApp.controllers', []);
|
||||||
angular.module('copayApp.directives', []);
|
angular.module('copayApp.directives', []);
|
||||||
angular.module('copayApp.services', []);
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,32 +1,11 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('BackupController',
|
angular.module('copayApp.controllers').controller('BackupController',
|
||||||
function($scope, $rootScope, $location, $window, $timeout, $modal, controllerUtils, walletFactory) {
|
function($scope, $rootScope, $location, $window, $timeout, $modal, backupService, walletFactory, controllerUtils) {
|
||||||
$scope.title = 'Backup';
|
$scope.title = 'Backup';
|
||||||
|
|
||||||
var _getEncryptedWallet = function() {
|
|
||||||
var wallet = $rootScope.wallet.toEncryptedObj();
|
|
||||||
return wallet;
|
|
||||||
};
|
|
||||||
|
|
||||||
$scope.download = function() {
|
$scope.download = function() {
|
||||||
var timestamp = +(new Date);
|
backupService.download($rootScope.wallet);
|
||||||
var walletName = ($rootScope.wallet.name ? $rootScope.wallet.name : '') + '-' + $rootScope.wallet.id;
|
|
||||||
var filename = walletName + '-' + timestamp + '.json.aes';
|
|
||||||
var wallet = _getEncryptedWallet();
|
|
||||||
var blob = new Blob([wallet], {
|
|
||||||
type: 'text/plain;charset=utf-8'
|
|
||||||
});
|
|
||||||
// show a native save dialog if we are in the shell
|
|
||||||
// and pass the wallet to the shell to convert to node Buffer
|
|
||||||
if (window.cshell) {
|
|
||||||
return window.cshell.send('backup:download', {
|
|
||||||
name: walletName,
|
|
||||||
wallet: wallet
|
|
||||||
});
|
|
||||||
}
|
|
||||||
// otherwise lean on the browser implementation
|
|
||||||
saveAs(blob, filename);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.openModal = function() {
|
$scope.openModal = function() {
|
||||||
|
|
@ -35,7 +14,9 @@ angular.module('copayApp.controllers').controller('BackupController',
|
||||||
controller: ModalInstanceCtrl,
|
controller: ModalInstanceCtrl,
|
||||||
});
|
});
|
||||||
|
|
||||||
modalInstance.result.then(sendEmail);
|
modalInstance.result.then(function(email) {
|
||||||
|
backupService.sendEmail(email, $rootScope.wallet);
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$scope.deleteWallet = function() {
|
$scope.deleteWallet = function() {
|
||||||
|
|
@ -46,23 +27,6 @@ angular.module('copayApp.controllers').controller('BackupController',
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var sendEmail = function(email) {
|
|
||||||
var body = _getEncryptedWallet();
|
|
||||||
var subject = ($rootScope.wallet.name ? $rootScope.wallet.name + ' - ' : '') + $rootScope.wallet.id;
|
|
||||||
var href = 'mailto:' + email + '?' + 'subject=[Copay Backup] ' + subject + '&' + 'body=' + body;
|
|
||||||
|
|
||||||
if (window.cshell) {
|
|
||||||
return window.cshell.send('backup:email', href);
|
|
||||||
}
|
|
||||||
|
|
||||||
var newWin = $window.open(href, '_blank', 'scrollbars=yes,resizable=yes,width=10,height=10');
|
|
||||||
|
|
||||||
if (newWin) {
|
|
||||||
$timeout(function() {
|
|
||||||
newWin.close();
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var ModalInstanceCtrl = function($scope, $modalInstance) {
|
var ModalInstanceCtrl = function($scope, $modalInstance) {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('HeaderController',
|
angular.module('copayApp.controllers').controller('HeaderController',
|
||||||
function($scope, $rootScope, $location, $notification, $http, walletFactory, controllerUtils) {
|
function($scope, $rootScope, $location, $notification, $http, controllerUtils) {
|
||||||
$scope.menu = [
|
$scope.menu = [
|
||||||
{
|
{
|
||||||
'title': 'Addresses',
|
'title': 'Addresses',
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ var valid_pairs = {
|
||||||
};
|
};
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('SetupController',
|
angular.module('copayApp.controllers').controller('SetupController',
|
||||||
function($scope, $rootScope, $location, $timeout, walletFactory, controllerUtils, Passphrase) {
|
function($scope, $rootScope, $location, $timeout, walletFactory, controllerUtils, Passphrase, backupService) {
|
||||||
|
|
||||||
$rootScope.videoInfo = {};
|
$rootScope.videoInfo = {};
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
|
|
@ -84,6 +84,7 @@ angular.module('copayApp.controllers').controller('SetupController',
|
||||||
passphrase: passphrase,
|
passphrase: passphrase,
|
||||||
};
|
};
|
||||||
var w = walletFactory.create(opts);
|
var w = walletFactory.create(opts);
|
||||||
|
backupService.download(w);
|
||||||
controllerUtils.startNetwork(w, $scope);
|
controllerUtils.startNetwork(w, $scope);
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
angular.module('copayApp.controllers').controller('SigninController',
|
angular.module('copayApp.controllers').controller('SigninController',
|
||||||
function($scope, $rootScope, $location, walletFactory, controllerUtils, Passphrase) {
|
function($scope, $rootScope, $location, walletFactory, controllerUtils, Passphrase, backupService) {
|
||||||
var cmp = function(o1, o2){
|
var cmp = function(o1, o2) {
|
||||||
var v1 = o1.show.toLowerCase(), v2 = o2.show.toLowerCase();
|
var v1 = o1.show.toLowerCase(),
|
||||||
return v1 > v2 ? 1 : ( v1 < v2 ) ? -1 : 0;
|
v2 = o2.show.toLowerCase();
|
||||||
|
return v1 > v2 ? 1 : (v1 < v2) ? -1 : 0;
|
||||||
};
|
};
|
||||||
$rootScope.videoInfo = {};
|
$rootScope.videoInfo = {};
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
|
|
@ -14,23 +15,31 @@ angular.module('copayApp.controllers').controller('SigninController',
|
||||||
|
|
||||||
$scope.open = function(form) {
|
$scope.open = function(form) {
|
||||||
if (form && form.$invalid) {
|
if (form && form.$invalid) {
|
||||||
$rootScope.$flashMessage = { message: 'Please, enter required fields', type: 'error'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: 'Please, enter required fields',
|
||||||
|
type: 'error'
|
||||||
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.loading = true;
|
$scope.loading = true;
|
||||||
var password = form.openPassword.$modelValue;
|
var password = form.openPassword.$modelValue;
|
||||||
|
|
||||||
Passphrase.getBase64Async(password, function(passphrase){
|
Passphrase.getBase64Async(password, function(passphrase) {
|
||||||
var w, errMsg;
|
var w, errMsg;
|
||||||
try{
|
try {
|
||||||
var w = walletFactory.open($scope.selectedWalletId, { passphrase: passphrase});
|
var w = walletFactory.open($scope.selectedWalletId, {
|
||||||
} catch (e){
|
passphrase: passphrase
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
errMsg = e.message;
|
errMsg = e.message;
|
||||||
};
|
};
|
||||||
if (!w) {
|
if (!w) {
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
$rootScope.$flashMessage = { message: errMsg || 'Wrong password', type: 'error'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: errMsg || 'Wrong password',
|
||||||
|
type: 'error'
|
||||||
|
};
|
||||||
$rootScope.$digest();
|
$rootScope.$digest();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -40,31 +49,48 @@ angular.module('copayApp.controllers').controller('SigninController',
|
||||||
|
|
||||||
$scope.join = function(form) {
|
$scope.join = function(form) {
|
||||||
if (form && form.$invalid) {
|
if (form && form.$invalid) {
|
||||||
$rootScope.$flashMessage = { message: 'Please, enter required fields', type: 'error'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: 'Please, enter required fields',
|
||||||
|
type: 'error'
|
||||||
|
};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$scope.loading = true;
|
$scope.loading = true;
|
||||||
walletFactory.network.on('badSecret', function() {
|
walletFactory.network.on('badSecret', function() {});
|
||||||
});
|
|
||||||
|
|
||||||
Passphrase.getBase64Async($scope.joinPassword, function(passphrase){
|
Passphrase.getBase64Async($scope.joinPassword, function(passphrase) {
|
||||||
walletFactory.joinCreateSession($scope.connectionId, $scope.nickname, passphrase, function(err,w) {
|
walletFactory.joinCreateSession($scope.connectionId, $scope.nickname, passphrase, function(err, w) {
|
||||||
$scope.loading = false;
|
$scope.loading = false;
|
||||||
if (err || !w) {
|
if (err || !w) {
|
||||||
if (err === 'joinError')
|
if (err === 'joinError')
|
||||||
$rootScope.$flashMessage = { message: 'Can not find peer'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: 'Can\'t find peer'
|
||||||
|
};
|
||||||
else if (err === 'walletFull')
|
else if (err === 'walletFull')
|
||||||
$rootScope.$flashMessage = { message: 'The wallet is full', type: 'error'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: 'The wallet is full',
|
||||||
|
type: 'error'
|
||||||
|
};
|
||||||
else if (err === 'badNetwork')
|
else if (err === 'badNetwork')
|
||||||
$rootScope.$flashMessage = { message: 'The wallet your are trying to join uses a different Bitcoin Network. Check your settings.', type: 'error'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: 'The wallet your are trying to join uses a different Bitcoin Network. Check your settings.',
|
||||||
|
type: 'error'
|
||||||
|
};
|
||||||
else if (err === 'badSecret')
|
else if (err === 'badSecret')
|
||||||
$rootScope.$flashMessage = { message: 'Bad secret secret string', type: 'error'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: 'Bad secret secret string',
|
||||||
|
type: 'error'
|
||||||
|
};
|
||||||
else
|
else
|
||||||
$rootScope.$flashMessage = { message: 'Unknown error', type: 'error'};
|
$rootScope.$flashMessage = {
|
||||||
|
message: 'Unknown error',
|
||||||
|
type: 'error'
|
||||||
|
};
|
||||||
controllerUtils.onErrorDigest();
|
controllerUtils.onErrorDigest();
|
||||||
} else {
|
} else {
|
||||||
controllerUtils.startNetwork(w, $scope);
|
backupService.download(w);
|
||||||
|
controllerUtils.startNetwork(w, $scope);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,17 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
var imports = require('soop').imports();
|
var imports = require('soop').imports();
|
||||||
var Storage = imports.Storage;
|
|
||||||
var Network = imports.Network;
|
|
||||||
var Blockchain = imports.Blockchain;
|
|
||||||
|
|
||||||
var TxProposals = require('./TxProposals');
|
var TxProposals = require('./TxProposals');
|
||||||
var PublicKeyRing = require('./PublicKeyRing');
|
var PublicKeyRing = require('./PublicKeyRing');
|
||||||
var PrivateKey = require('./PrivateKey');
|
var PrivateKey = require('./PrivateKey');
|
||||||
var Wallet = require('./Wallet');
|
var Wallet = require('./Wallet');
|
||||||
|
|
||||||
|
var WebRTC = module.exports.WebRTC = require('../network/WebRTC');
|
||||||
|
var Insight = module.exports.Insight = require('../blockchain/Insight');
|
||||||
|
//var StorageLocalPlain = module.exports.StorageLocalPlain = require('../storage/LocalPlain');
|
||||||
|
var StorageLocalEncrypted = module.exports.StorageLocalEncrypted = require('../storage/LocalEncrypted');
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* WalletFactory
|
* WalletFactory
|
||||||
*
|
*
|
||||||
|
|
@ -19,9 +21,13 @@ function WalletFactory(config, version) {
|
||||||
var self = this;
|
var self = this;
|
||||||
config = config || {};
|
config = config || {};
|
||||||
|
|
||||||
this.storage = config.storageObj || new Storage(config.storage);
|
this.Storage = config.Storage || StorageLocalEncrypted;
|
||||||
this.network = config.networkObj || new Network(config.network);
|
this.Network = config.Network || WebRTC;
|
||||||
this.blockchain = config.blockchainObj || new Blockchain(config.blockchain);
|
this.Blockchain = config.Blockchain || Insight;
|
||||||
|
|
||||||
|
this.storage = new this.Storage(config.storage);
|
||||||
|
this.network = new this.Network(config.network);
|
||||||
|
this.blockchain = new this.Blockchain(config.blockchain);
|
||||||
|
|
||||||
this.networkName = config.networkName;
|
this.networkName = config.networkName;
|
||||||
this.verbose = config.verbose;
|
this.verbose = config.verbose;
|
||||||
|
|
|
||||||
47
js/services/backupService.js
Normal file
47
js/services/backupService.js
Normal file
|
|
@ -0,0 +1,47 @@
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
var BackupService = function() {};
|
||||||
|
|
||||||
|
BackupService.prototype.getName = function(wallet) {
|
||||||
|
return (wallet.name ? (wallet.name+'-') : '') + wallet.id;
|
||||||
|
};
|
||||||
|
|
||||||
|
BackupService.prototype.download = function(wallet) {
|
||||||
|
var ew = wallet.toEncryptedObj();
|
||||||
|
var timestamp = +(new Date());
|
||||||
|
var walletName = this.getName(wallet);
|
||||||
|
var filename = walletName + '-' + timestamp + '-keybackup.json.aes';
|
||||||
|
var blob = new Blob([ew], {
|
||||||
|
type: 'text/plain;charset=utf-8'
|
||||||
|
});
|
||||||
|
// show a native save dialog if we are in the shell
|
||||||
|
// and pass the wallet to the shell to convert to node Buffer
|
||||||
|
if (window.cshell) {
|
||||||
|
return window.cshell.send('backup:download', {
|
||||||
|
name: walletName,
|
||||||
|
wallet: ew
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// otherwise lean on the browser implementation
|
||||||
|
saveAs(blob, filename);
|
||||||
|
};
|
||||||
|
|
||||||
|
BackupService.prototype.sendEmail = function(email, wallet) {
|
||||||
|
var ew = wallet.toEncryptedObj();
|
||||||
|
var body = ew;
|
||||||
|
var subject = this.getName(wallet);
|
||||||
|
var href = 'mailto:' + email + '?' + 'subject=[Copay Backup] ' + subject + '&' + 'body=' + body;
|
||||||
|
|
||||||
|
if (window.cshell) {
|
||||||
|
return window.cshell.send('backup:email', href);
|
||||||
|
}
|
||||||
|
|
||||||
|
var newWin = window.open(href, '_blank', 'scrollbars=yes,resizable=yes,width=10,height=10');
|
||||||
|
if (newWin) {
|
||||||
|
setTimeout(function() {
|
||||||
|
newWin.close();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
angular.module('copayApp.services').value('backupService', new BackupService());
|
||||||
|
|
@ -14,9 +14,6 @@
|
||||||
<script>mocha.setup('bdd')</script>
|
<script>mocha.setup('bdd')</script>
|
||||||
<script src="../lib/bitcore/browser/bundle.js"></script>
|
<script src="../lib/bitcore/browser/bundle.js"></script>
|
||||||
<script src="../js/copayBundle.js"></script>
|
<script src="../js/copayBundle.js"></script>
|
||||||
<script>
|
|
||||||
var copay = require('copay');
|
|
||||||
</script>
|
|
||||||
<script src="test.blockchain.Insight.js"></script>
|
<script src="test.blockchain.Insight.js"></script>
|
||||||
<script src="test.PrivateKey.js"></script>
|
<script src="test.PrivateKey.js"></script>
|
||||||
<script src="test.PublicKeyRing.js"></script>
|
<script src="test.PublicKeyRing.js"></script>
|
||||||
|
|
@ -24,7 +21,7 @@
|
||||||
<script src="test.storage.LocalPlain.js"></script>
|
<script src="test.storage.LocalPlain.js"></script>
|
||||||
<script src="test.TxProposals.js"></script>
|
<script src="test.TxProposals.js"></script>
|
||||||
<script src="test.Wallet.js"></script>
|
<script src="test.Wallet.js"></script>
|
||||||
<script src="test.Walletfactory.js"></script>
|
<script src="test.WalletFactory.js"></script>
|
||||||
<script src="test.performance.js"></script>
|
<script src="test.performance.js"></script>
|
||||||
<!--
|
<!--
|
||||||
-->
|
-->
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ var FakeWallet = function() {
|
||||||
this.balanceByAddr = {
|
this.balanceByAddr = {
|
||||||
'1CjPR7Z5ZSyWk6WtXvSFgkptmpoi4UM9BC': 1000
|
'1CjPR7Z5ZSyWk6WtXvSFgkptmpoi4UM9BC': 1000
|
||||||
};
|
};
|
||||||
|
this.name = 'myTESTwullet';
|
||||||
};
|
};
|
||||||
|
|
||||||
FakeWallet.prototype.set = function(balance, safeBalance, balanceByAddr) {
|
FakeWallet.prototype.set = function(balance, safeBalance, balanceByAddr) {
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,11 @@
|
||||||
|
|
||||||
var chai = chai || require('chai');
|
var chai = chai || require('chai');
|
||||||
var should = chai.should();
|
var should = chai.should();
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var API = API || copay.API;
|
var API = API || copay.API;
|
||||||
var Storage = Storage || require('../test/mocks/FakeStorage');
|
var Storage = Storage || require('../test/mocks/FakeStorage');
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,11 @@ var should = chai.should();
|
||||||
var bitcore = bitcore || require('bitcore');
|
var bitcore = bitcore || require('bitcore');
|
||||||
var Address = bitcore.Address;
|
var Address = bitcore.Address;
|
||||||
var buffertools = bitcore.buffertools;
|
var buffertools = bitcore.buffertools;
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var PublicKeyRing = copay.PublicKeyRing;
|
var PublicKeyRing = copay.PublicKeyRing;
|
||||||
var AddressIndex = copay.AddressIndex;
|
var AddressIndex = copay.AddressIndex;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,11 @@ var chai = chai || require('chai');
|
||||||
var should = chai.should();
|
var should = chai.should();
|
||||||
var bitcore = bitcore || require('bitcore');
|
var bitcore = bitcore || require('bitcore');
|
||||||
var buffertools = bitcore.buffertools;
|
var buffertools = bitcore.buffertools;
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var Passphrase = copay.Passphrase;
|
var Passphrase = copay.Passphrase;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,11 +7,15 @@ var Transaction = bitcore.Transaction;
|
||||||
var buffertools = bitcore.buffertools;
|
var buffertools = bitcore.buffertools;
|
||||||
var WalletKey = bitcore.WalletKey;
|
var WalletKey = bitcore.WalletKey;
|
||||||
var Key = bitcore.Key;
|
var Key = bitcore.Key;
|
||||||
var bignum = bitcore.bignum;
|
var bignum = bitcore.Bignum;
|
||||||
var networks = bitcore.networks;
|
var networks = bitcore.networks;
|
||||||
var Address = bitcore.Address;
|
var Address = bitcore.Address;
|
||||||
var BitcorePrivateKey = bitcore.PrivateKey;
|
var BitcorePrivateKey = bitcore.PrivateKey;
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var PrivateKey = copay.PrivateKey || require('../js/models/core/PrivateKey');
|
var PrivateKey = copay.PrivateKey || require('../js/models/core/PrivateKey');
|
||||||
|
|
||||||
var config = {
|
var config = {
|
||||||
|
|
|
||||||
|
|
@ -5,16 +5,16 @@ var should = chai.should();
|
||||||
var bitcore = bitcore || require('bitcore');
|
var bitcore = bitcore || require('bitcore');
|
||||||
var Address = bitcore.Address;
|
var Address = bitcore.Address;
|
||||||
var buffertools = bitcore.buffertools;
|
var buffertools = bitcore.buffertools;
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var PublicKeyRing = copay.PublicKeyRing;
|
var PublicKeyRing = copay.PublicKeyRing;
|
||||||
|
|
||||||
var aMasterPubKey = 'tprv8ZgxMBicQKsPdSVTiWXEqCCzqRaRr9EAQdn5UVMpT9UHX67Dh1FmzEMbavPumpAicsUm2XvC6NTdcWB89yN5DUWx5HQ7z3KByUg7Ht74VRZ';
|
var aMasterPubKey = 'tprv8ZgxMBicQKsPdSVTiWXEqCCzqRaRr9EAQdn5UVMpT9UHX67Dh1FmzEMbavPumpAicsUm2XvC6NTdcWB89yN5DUWx5HQ7z3KByUg7Ht74VRZ';
|
||||||
|
|
||||||
|
|
||||||
var config = {
|
|
||||||
networkName:'livenet',
|
|
||||||
};
|
|
||||||
|
|
||||||
var createW = function (networkName) {
|
var createW = function (networkName) {
|
||||||
var config = {
|
var config = {
|
||||||
networkName: networkName || 'livenet',
|
networkName: networkName || 'livenet',
|
||||||
|
|
@ -37,6 +37,10 @@ var createW = function (networkName) {
|
||||||
describe('PublicKeyRing model', function() {
|
describe('PublicKeyRing model', function() {
|
||||||
|
|
||||||
it('should create an instance (livenet)', function () {
|
it('should create an instance (livenet)', function () {
|
||||||
|
var config = {
|
||||||
|
networkName:'livenet',
|
||||||
|
};
|
||||||
|
|
||||||
var w = new PublicKeyRing({
|
var w = new PublicKeyRing({
|
||||||
networkName: config.networkName
|
networkName: config.networkName
|
||||||
});
|
});
|
||||||
|
|
@ -50,6 +54,9 @@ describe('PublicKeyRing model', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should fail to generate shared pub keys wo extended key', function () {
|
it('should fail to generate shared pub keys wo extended key', function () {
|
||||||
|
var config = {
|
||||||
|
networkName:'livenet',
|
||||||
|
};
|
||||||
var w2 = new PublicKeyRing(config);
|
var w2 = new PublicKeyRing(config);
|
||||||
should.exist(w2);
|
should.exist(w2);
|
||||||
|
|
||||||
|
|
@ -235,6 +242,9 @@ describe('PublicKeyRing model', function() {
|
||||||
|
|
||||||
|
|
||||||
it('#merge pubkey tests', function () {
|
it('#merge pubkey tests', function () {
|
||||||
|
var config = {
|
||||||
|
networkName:'livenet',
|
||||||
|
};
|
||||||
var w = new PublicKeyRing(config);
|
var w = new PublicKeyRing(config);
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
var copayers = [];
|
var copayers = [];
|
||||||
|
|
@ -264,6 +274,9 @@ describe('PublicKeyRing model', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('#merge pubkey tests (case 2)', function () {
|
it('#merge pubkey tests (case 2)', function () {
|
||||||
|
var config = {
|
||||||
|
networkName:'livenet',
|
||||||
|
};
|
||||||
var w = new PublicKeyRing(config);
|
var w = new PublicKeyRing(config);
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
|
|
||||||
|
|
@ -281,6 +294,9 @@ describe('PublicKeyRing model', function() {
|
||||||
|
|
||||||
|
|
||||||
it('#merge with nickname', function () {
|
it('#merge with nickname', function () {
|
||||||
|
var config = {
|
||||||
|
networkName:'livenet',
|
||||||
|
};
|
||||||
var w = new PublicKeyRing(config);
|
var w = new PublicKeyRing(config);
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
for(var i=0; i<3; i++) {
|
for(var i=0; i<3; i++) {
|
||||||
|
|
@ -315,6 +331,9 @@ describe('PublicKeyRing model', function() {
|
||||||
|
|
||||||
|
|
||||||
it('#toObj #fromObj with nickname', function () {
|
it('#toObj #fromObj with nickname', function () {
|
||||||
|
var config = {
|
||||||
|
networkName:'livenet',
|
||||||
|
};
|
||||||
var w = new PublicKeyRing(config);
|
var w = new PublicKeyRing(config);
|
||||||
should.exist(w);
|
should.exist(w);
|
||||||
for(var i=0; i<3; i++) {
|
for(var i=0; i<3; i++) {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,11 @@
|
||||||
var chai = chai || require('chai');
|
var chai = chai || require('chai');
|
||||||
var should = chai.should();
|
var should = chai.should();
|
||||||
var bitcore = bitcore || require('bitcore');
|
var bitcore = bitcore || require('bitcore');
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var Structure = require('../js/models/core/Structure');
|
var Structure = require('../js/models/core/Structure');
|
||||||
|
|
||||||
describe('Structure model', function() {
|
describe('Structure model', function() {
|
||||||
|
|
|
||||||
|
|
@ -7,20 +7,24 @@ var Transaction = bitcore.Transaction;
|
||||||
var buffertools = bitcore.buffertools;
|
var buffertools = bitcore.buffertools;
|
||||||
var WalletKey = bitcore.WalletKey;
|
var WalletKey = bitcore.WalletKey;
|
||||||
var Key = bitcore.Key;
|
var Key = bitcore.Key;
|
||||||
var bignum = bitcore.bignum;
|
var bignum = bitcore.Bignum;
|
||||||
var Script = bitcore.Script;
|
var Script = bitcore.Script;
|
||||||
var Builder = bitcore.TransactionBuilder;
|
var Builder = bitcore.TransactionBuilder;
|
||||||
var util = bitcore.util;
|
var util = bitcore.util;
|
||||||
var networks = bitcore.networks;
|
var networks = bitcore.networks;
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var fakeStorage = copay.FakeStorage;
|
var fakeStorage = copay.FakeStorage;
|
||||||
var PrivateKey = copay.PrivateKey || require('../js/models/PrivateKey');
|
var PrivateKey = copay.PrivateKey || require('../js/models/PrivateKey');
|
||||||
var TxProposals = copay.TxProposals || require('../js/models/TxProposal');
|
var TxProposals = copay.TxProposals || require('../js/models/TxProposal');
|
||||||
|
var is_browser = (typeof process == 'undefined' || typeof process.versions === 'undefined')
|
||||||
var PublicKeyRing = is_browser ? copay.PublicKeyRing :
|
var PublicKeyRing = is_browser ? copay.PublicKeyRing :
|
||||||
require('soop').load('../js/models/core/PublicKeyRing', {
|
require('soop').load('../js/models/core/PublicKeyRing', {
|
||||||
Storage: fakeStorage
|
Storage: fakeStorage
|
||||||
});
|
});
|
||||||
var is_browser = (typeof process.versions === 'undefined')
|
|
||||||
|
|
||||||
var config = {
|
var config = {
|
||||||
networkName: 'testnet',
|
networkName: 'testnet',
|
||||||
|
|
@ -102,7 +106,7 @@ describe('TxProposals model', function() {
|
||||||
tx = b.build();
|
tx = b.build();
|
||||||
tx.isComplete().should.equal(true);
|
tx.isComplete().should.equal(true);
|
||||||
|
|
||||||
var s = new Script(new Buffer(unspentTest[0].scriptPubKey, 'hex'));
|
var s = new Script(new bitcore.Buffer(unspentTest[0].scriptPubKey, 'hex'));
|
||||||
|
|
||||||
tx.verifyInput(0, s, {
|
tx.verifyInput(0, s, {
|
||||||
verifyP2SH: true,
|
verifyP2SH: true,
|
||||||
|
|
@ -126,7 +130,7 @@ describe('TxProposals model', function() {
|
||||||
var createTx = function(toAddress, amountSatStr, utxos, opts, priv, pkr) {
|
var createTx = function(toAddress, amountSatStr, utxos, opts, priv, pkr) {
|
||||||
opts = opts || {};
|
opts = opts || {};
|
||||||
|
|
||||||
var amountSat = bitcore.bignum(amountSatStr);
|
var amountSat = bitcore.Bignum(amountSatStr);
|
||||||
|
|
||||||
if (!pkr.isComplete()) {
|
if (!pkr.isComplete()) {
|
||||||
throw new Error('publicKeyRing is not complete');
|
throw new Error('publicKeyRing is not complete');
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,11 @@
|
||||||
var chai = chai || require('chai');
|
var chai = chai || require('chai');
|
||||||
var should = chai.should();
|
var should = chai.should();
|
||||||
var sinon = require('sinon');
|
var sinon = require('sinon');
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var Wallet = require('../js/models/core/Wallet');
|
var Wallet = require('../js/models/core/Wallet');
|
||||||
var Storage = require('./mocks/FakeStorage');
|
var Storage = require('./mocks/FakeStorage');
|
||||||
var Network = require('./mocks/FakeNetwork');
|
var Network = require('./mocks/FakeNetwork');
|
||||||
|
|
@ -77,7 +81,7 @@ describe('Wallet model', function() {
|
||||||
should.exist(w.privateKey);
|
should.exist(w.privateKey);
|
||||||
should.exist(w.txProposals);
|
should.exist(w.txProposals);
|
||||||
should.exist(w.netKey);
|
should.exist(w.netKey);
|
||||||
var b = new Buffer(w.netKey, 'base64');
|
var b = new bitcore.Buffer(w.netKey, 'base64');
|
||||||
b.toString('hex').length.should.equal(16);
|
b.toString('hex').length.should.equal(16);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -287,6 +291,7 @@ describe('Wallet model', function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
it('call reconnect after interval', function(done) {
|
it('call reconnect after interval', function(done) {
|
||||||
|
this.timeout(10000);
|
||||||
var w = createW2();
|
var w = createW2();
|
||||||
var testTime = 1000;
|
var testTime = 1000;
|
||||||
var callCount = 0;
|
var callCount = 0;
|
||||||
|
|
@ -539,6 +544,7 @@ describe('Wallet model', function() {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
it('should create & sign transaction from received funds', function(done) {
|
it('should create & sign transaction from received funds', function(done) {
|
||||||
|
this.timeout(10000);
|
||||||
var w = createW2();
|
var w = createW2();
|
||||||
var pk = w.privateKey;
|
var pk = w.privateKey;
|
||||||
w.privateKey = null;
|
w.privateKey = null;
|
||||||
|
|
|
||||||
|
|
@ -10,13 +10,17 @@ var FakeBlockchain = require('./mocks/FakeBlockchain');
|
||||||
var FakeStorage = require('./mocks/FakeStorage');
|
var FakeStorage = require('./mocks/FakeStorage');
|
||||||
var WalletFactory = require('../js/models/core/WalletFactory');
|
var WalletFactory = require('../js/models/core/WalletFactory');
|
||||||
|
|
||||||
describe.only('WalletFactory model', function() {
|
describe('WalletFactory model', function() {
|
||||||
var config = {
|
var config = {
|
||||||
|
Network: FakeNetwork,
|
||||||
|
Blockchain: FakeBlockchain,
|
||||||
|
Storage: FakeStorage,
|
||||||
wallet: {
|
wallet: {
|
||||||
requiredCopayers: 3,
|
requiredCopayers: 3,
|
||||||
totalCopayers: 5,
|
totalCopayers: 5,
|
||||||
spendUnconfirmed: 1,
|
spendUnconfirmed: 1,
|
||||||
reconnectDelay: 100,
|
reconnectDelay: 100,
|
||||||
|
|
||||||
},
|
},
|
||||||
blockchain: {
|
blockchain: {
|
||||||
host: 'test.insight.is',
|
host: 'test.insight.is',
|
||||||
|
|
@ -90,6 +94,9 @@ describe.only('WalletFactory model', function() {
|
||||||
|
|
||||||
it('BIP32 length problem', function() {
|
it('BIP32 length problem', function() {
|
||||||
var sconfig = {
|
var sconfig = {
|
||||||
|
Network: FakeNetwork,
|
||||||
|
Blockchain: FakeBlockchain,
|
||||||
|
Storage: FakeStorage,
|
||||||
"networkName": "testnet",
|
"networkName": "testnet",
|
||||||
"network": {
|
"network": {
|
||||||
"key": "g23ihfh82h35rf",
|
"key": "g23ihfh82h35rf",
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,11 @@
|
||||||
var chai = chai || require('chai');
|
var chai = chai || require('chai');
|
||||||
var should = chai.should();
|
var should = chai.should();
|
||||||
var bitcore = bitcore || require('bitcore');
|
var bitcore = bitcore || require('bitcore');
|
||||||
var copay = copay || require('../copay');
|
try {
|
||||||
|
var copay = require('copay'); //browser
|
||||||
|
} catch (e) {
|
||||||
|
var copay = require('../copay'); //node
|
||||||
|
}
|
||||||
var Insight = copay.Insight || require('../js/models/blockchain/Insight');
|
var Insight = copay.Insight || require('../js/models/blockchain/Insight');
|
||||||
|
|
||||||
var ID = '933bf321393459b7';
|
var ID = '933bf321393459b7';
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,10 @@ if (typeof process === 'undefined' || !process.version) {
|
||||||
var copay = copay || require('../copay');
|
var copay = copay || require('../copay');
|
||||||
var LocalEncrypted = copay.StorageLocalEncrypted;
|
var LocalEncrypted = copay.StorageLocalEncrypted;
|
||||||
|
|
||||||
|
var fakeWallet = 'fake-wallet-id';
|
||||||
|
var timeStamp = Date.now();
|
||||||
|
|
||||||
describe('Storage/LocalEncrypted model', function() {
|
describe('Storage/LocalEncrypted model', function() {
|
||||||
var wid = 'fake-wallet-id';
|
|
||||||
var s = new LocalEncrypted();
|
var s = new LocalEncrypted();
|
||||||
s._setPassphrase('mysupercoolpassword');
|
s._setPassphrase('mysupercoolpassword');
|
||||||
|
|
||||||
|
|
@ -18,14 +20,19 @@ if (typeof process === 'undefined' || !process.version) {
|
||||||
});
|
});
|
||||||
it('should fail when encrypting without a password', function() {
|
it('should fail when encrypting without a password', function() {
|
||||||
var s = new LocalEncrypted();
|
var s = new LocalEncrypted();
|
||||||
(function(){s.set(wid, 'x', 1);}).should.throw();
|
(function(){
|
||||||
|
s.set(fakeWallet, timeStamp, 1);
|
||||||
|
localStorage.removeItem(fakeWallet +'::'+ timeStamp);
|
||||||
|
}).should.throw();
|
||||||
});
|
});
|
||||||
it('should be able to encrypt and decrypt', function() {
|
it('should be able to encrypt and decrypt', function() {
|
||||||
s._write('key', 'value');
|
s._write(fakeWallet+timeStamp, 'value');
|
||||||
s._read('key').should.equal('value');
|
s._read(fakeWallet+timeStamp).should.equal('value');
|
||||||
|
localStorage.removeItem(fakeWallet+timeStamp);
|
||||||
});
|
});
|
||||||
it('should be able to set a value', function() {
|
it('should be able to set a value', function() {
|
||||||
s.set(wid, 'x', 1);
|
s.set(fakeWallet, timeStamp, 1);
|
||||||
|
localStorage.removeItem(fakeWallet +'::'+ timeStamp);
|
||||||
});
|
});
|
||||||
var getSetData = [
|
var getSetData = [
|
||||||
1,1000,-15, -1000,
|
1,1000,-15, -1000,
|
||||||
|
|
@ -40,22 +47,24 @@ if (typeof process === 'undefined' || !process.version) {
|
||||||
];
|
];
|
||||||
getSetData.forEach(function(obj) {
|
getSetData.forEach(function(obj) {
|
||||||
it('should be able to set a value and get it for '+JSON.stringify(obj), function() {
|
it('should be able to set a value and get it for '+JSON.stringify(obj), function() {
|
||||||
s.set(wid, 'x', obj);
|
s.set(fakeWallet, timeStamp, obj);
|
||||||
var obj2 = s.get(wid, 'x');
|
var obj2 = s.get(fakeWallet, timeStamp);
|
||||||
JSON.stringify(obj2).should.equal(JSON.stringify(obj));
|
JSON.stringify(obj2).should.equal(JSON.stringify(obj));
|
||||||
|
localStorage.removeItem(fakeWallet +'::'+ timeStamp);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('#export', function() {
|
describe('#export', function() {
|
||||||
it('should export the encrypted wallet', function() {
|
it('should export the encrypted wallet', function() {
|
||||||
localStorage.clear();
|
|
||||||
var storage = new LocalEncrypted({password: 'password'});
|
var storage = new LocalEncrypted({password: 'password'});
|
||||||
storage.set('walletId', 'test', 'testval');
|
storage.set(fakeWallet, timeStamp, 'testval');
|
||||||
var obj = {test:'testval'};
|
var obj = {test:'testval'};
|
||||||
var encrypted = storage.export(obj);
|
var encrypted = storage.export(obj);
|
||||||
encrypted.length.should.be.greaterThan(10);
|
encrypted.length.should.be.greaterThan(10);
|
||||||
|
localStorage.removeItem(fakeWallet +'::'+ timeStamp);
|
||||||
//encrypted.slice(0,6).should.equal("53616c");
|
//encrypted.slice(0,6).should.equal("53616c");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ if (typeof process === 'undefined' || !process.version) {
|
||||||
var copay = copay || require('../copay');
|
var copay = copay || require('../copay');
|
||||||
var LocalPlain = copay.StorageLocalPlain;
|
var LocalPlain = copay.StorageLocalPlain;
|
||||||
|
|
||||||
describe.skip('Storage/LocalPlain model', function() {
|
describe('Storage/LocalPlain model', function() {
|
||||||
|
|
||||||
it('should create an instance', function() {
|
it('should create an instance', function() {
|
||||||
var s = new LocalPlain();
|
var s = new LocalPlain();
|
||||||
|
|
@ -16,7 +16,9 @@ if (typeof process === 'undefined' || !process.version) {
|
||||||
|
|
||||||
describe('#setFromObj', function() {
|
describe('#setFromObj', function() {
|
||||||
it('should set keys from an object', function() {
|
it('should set keys from an object', function() {
|
||||||
localStorage.clear();
|
var fakeWallet = 'fake-wallet-id';
|
||||||
|
var timeStamp = Date.now();
|
||||||
|
|
||||||
var obj = {
|
var obj = {
|
||||||
test: 'testval',
|
test: 'testval',
|
||||||
opts: {
|
opts: {
|
||||||
|
|
@ -24,8 +26,13 @@ if (typeof process === 'undefined' || !process.version) {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var storage = new LocalPlain();
|
var storage = new LocalPlain();
|
||||||
storage.setFromObj('walletId', obj);
|
storage.setFromObj(fakeWallet+timeStamp, obj);
|
||||||
storage.get('walletId', 'test').should.equal('testval');
|
storage.get(fakeWallet+timeStamp, 'test').should.equal('testval');
|
||||||
|
|
||||||
|
// Clean data used in localstorage
|
||||||
|
localStorage.removeItem(fakeWallet+timeStamp+'::test');
|
||||||
|
localStorage.removeItem(fakeWallet+timeStamp+'::opts');
|
||||||
|
localStorage.removeItem('nameFor::'+fakeWallet+timeStamp);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -87,3 +87,24 @@ describe("Unit: controllerUtils", function() {
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
describe("Unit: Backup Service", function() {
|
||||||
|
var sinon = require('sinon');
|
||||||
|
beforeEach(angular.mock.module('copayApp.services'));
|
||||||
|
it('should contain a backup service', inject(function(backupService) {
|
||||||
|
expect(backupService).not.to.equal(null);
|
||||||
|
}));
|
||||||
|
it('should backup in file', inject(function(backupService) {
|
||||||
|
var mock = sinon.mock(window);
|
||||||
|
var expectation = mock.expects('saveAs');
|
||||||
|
backupService.download(new FakeWallet());
|
||||||
|
expectation.once();
|
||||||
|
}));
|
||||||
|
it('should backup by email', inject(function(backupService) {
|
||||||
|
var mock = sinon.mock(window);
|
||||||
|
var expectation = mock.expects('open');
|
||||||
|
backupService.sendEmail('fake@test.com', new FakeWallet());
|
||||||
|
expectation.once();
|
||||||
|
}));
|
||||||
|
});
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,9 @@ var createBundle = function(opts) {
|
||||||
});
|
});
|
||||||
b.require('./version');
|
b.require('./version');
|
||||||
// b.external('bitcore');
|
// b.external('bitcore');
|
||||||
b.require('./js/models/core/WalletFactory');
|
b.require('./js/models/core/WalletFactory', {
|
||||||
|
expose: '../js/models/core/WalletFactory'
|
||||||
|
});
|
||||||
b.require('./js/models/core/Wallet');
|
b.require('./js/models/core/Wallet');
|
||||||
b.require('./js/models/core/Wallet', {
|
b.require('./js/models/core/Wallet', {
|
||||||
expose: '../js/models/core/Wallet'
|
expose: '../js/models/core/Wallet'
|
||||||
|
|
@ -58,6 +60,9 @@ var createBundle = function(opts) {
|
||||||
b.require('./test/mocks/FakeStorage', {
|
b.require('./test/mocks/FakeStorage', {
|
||||||
expose: './mocks/FakeStorage'
|
expose: './mocks/FakeStorage'
|
||||||
});
|
});
|
||||||
|
b.require('./test/mocks/FakeBlockchain', {
|
||||||
|
expose: './mocks/FakeBlockchain'
|
||||||
|
});
|
||||||
b.require('./js/models/core/Wallet', {
|
b.require('./js/models/core/Wallet', {
|
||||||
expose: '../js/models/core/Wallet'
|
expose: '../js/models/core/Wallet'
|
||||||
});
|
});
|
||||||
|
|
@ -80,6 +85,13 @@ var createBundle = function(opts) {
|
||||||
expose: '../js/models/core/Passphrase'
|
expose: '../js/models/core/Passphrase'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (opts.dontminify) {
|
||||||
|
//include dev dependencies
|
||||||
|
b.require('sinon');
|
||||||
|
b.require('blanket');
|
||||||
|
b.require('soop');
|
||||||
|
}
|
||||||
|
|
||||||
if (!opts.dontminify) {
|
if (!opts.dontminify) {
|
||||||
b.transform({
|
b.transform({
|
||||||
global: true
|
global: true
|
||||||
|
|
@ -96,7 +108,7 @@ if (require.main === module) {
|
||||||
var program = require('commander');
|
var program = require('commander');
|
||||||
program
|
program
|
||||||
.version('0.0.1')
|
.version('0.0.1')
|
||||||
.option('-d, --dontminify', 'Don\'t minify the code.')
|
.option('-d, --dontminify', 'Development. Don\'t minify the code.')
|
||||||
.option('-o, --stdout', 'Specify output as stdout')
|
.option('-o, --stdout', 'Specify output as stdout')
|
||||||
.parse(process.argv);
|
.parse(process.argv);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue